在关系型数据库中,我们用的最多的就是查询。
1.基本查询
SELECT * FROM <表名>;
2.条件查询
优先级按照NOT、AND、OR进行;
SELECT * FROM <表名> WHERE <条件表达式>;
SELECT * FROM <表名> WHERE NOT <条件表达式>;
SELECT * FROM <表名> WHERE <条件表达式1> AND <条件表达式2>;
SELECT * FROM <表名> WHERE <条件表达式1> OR <条件表达式2>;
3.投影查询
返回指定的列。
SELECT 列1 别名1, 列2 别名2, 列3 别名3 FROM ... WHERE ...;
4.排序
SELECT id, name, gender, score FROM students ORDER BY score;
SELECT id, name, gender, score FROM students ORDER BY DESC;
5.分页查询
每页3条记录,获取第一页的记录。
SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 0;
查询第二页的记录:
SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 3;
查询第三页的记录:
SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 6;
6.聚合查询
SELECT COUNT(*) FROM students;
SELECT COUNT(*) <别名> FROM students;
SELECT COUNT(*) boys FROM students WHERE gender = 'M';
其他的聚合函数有SUM AVG MAX MIN等。
还有常用的分组查询:
SELECT COUNT(*) num FROM students GROUP BY class_id;
7.多表查询
SELECT * FROM students, classes;
这种一次查询两个表的数据,查询的结果也是一个二维表,它是students
表和classes
表的“乘积”,即students
表的每一行与classes
表的每一行都两两拼在一起返回。结果集的列数是students
表和classes
表的列数之和,行数是students
表和classes
表的行数之积。(笛卡尔查询)
SELECT
students.id sid,
students.name,
students.gender,
students.score,
classes.id cid,
classes.name cname
FROM students, classes;
8.连接查询
连接查询是另一种类型的多表查询。连接查询对多个表进行JOIN运算,就是先确定一个主表作为结果集,然后,把其他表的行有选择地“连接”在主表结果集上。
SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;