MYSQL-基本查询

275 阅读3分钟
  • 基本语法
SELECT 
{* | <字段列名>} 
[ 
FROM <表 1>, <表 2>… 
[WHERE <表达式> 
[GROUP BY <group by definition> 
[HAVING <expression> [{<operator> <expression>}…]] 
[ORDER BY <order by definition>] 
[LIMIT[<offset>,] <row count>] 
]
  • 其中,各条子句的含义如下:

    • {*|<字段列名>}包含星号通配符的字段列表,表示查询的字段,其中字段列至少包含一个字段名称,如果要查询多个字段,多个字段之间要用逗号隔开,最后一个字段后不要加逗号。
    • FROM<表1>,<表2>…,表1和表2表示查询数据的来源,可以是单个或多个。
    • WHERE子句是可选项,如果选择该项,将限定查询行必须满足的查询条件。
    • GROUP BY<字段>,该子句告诉MySQL如何显示查询出来的数据,并按照指定的字段分组。
    • [ORDER BY<字段>],该子句告诉MySQL按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)和降序(DESC)。
    • [LIMIT[,]],该子句告诉MySQL每次显示查询出来的数据条数。
  • 创建数据表tb_students_info

CREATE TABLE tb_students_info (id INT(11) PRIMARY KEY, deptId INT(11), age INT(11), gender VARCHAR(10), height INT(11), loginDate DATETIME);
  • 忘记添加name字段了...
ALTER TABLE tb_students_info ADD name VARCHAR(10) after id;
  • 插入一条记录
INSERT INTO tb_students_info VALUES (1, 'Dany', 1, 25, 'F', 160, '2015-03-10');

  • 继续新增多条记录(此操作同上)
  • 从tb_students_info表中检索所有字段的数据,执行结果如下所示。
SELECT * FROM tb_students_info;

  • 查询表中指定字段
SELECT id, name, age FROM tb_students_info;

  • 使用DISTINCT关键字去除结果中的重复行
SELECT DISTINCT <字段名> FROM <表名>;
  • 在查询时给表和字段设置别名
<表名> [AS] <别名>
SELECT stu.name, stu.age FROM tb_students_info AS stu;

  • 指定列的别名
<列名> [AS] <列表名>
SELECT name AS student_name, age AS student_age FROM tb_students_info;

  • 使用LIMIT关键字指定查询结果的行数
<LIMIT> [<位置偏移量>,] <行数>

第一个参数“位置偏移量”指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);第二个参数“行数”指示返回的记录条数。

SELECT * FROM tb_students_info LIMIT 3;

SELECT * FROM tb_students_info LIMIT 2, 2;

  • 使用ORDER BY对查询结果进行排序
  • 查询tb_students_info表的height字段值,并对其进行排序。
SELECT * FROM tb_students_info ORDER BY height;

  • 带WHERE关键字的条件查询
SELECT name, height FROM tb_students_info WHERE height=172;

select * FROM tb_students_info WHERE age>23;

  • 多条件的查询语句
SELECT * FROM tb_students_info WHERE age>23 AND height>170;

  • 使用LIKE的模糊查询
  • 查找所有以'J'字母开头的学生姓名
SELECT name FROM tb_students_info WHERE name LIKE 'J%';

  • 查找所有包含'a'字母的学生姓名
SELECT name FROM tb_students_info WHERE name LIKE '%a%';

  • 查找所有以'e'结尾,且'e'前面有3个字母的学生姓名
SELECT name FROM tb_students_info WHERE name LIKE '___e';

SELECT * FROM tb_students_info WHERE loginDate BETWEEN '2015-06-17' AND '2016-03-12';