条件查询
SELECT * FROM <表名> WHERE <条件表达式>
注:
-
WHERE 60 <= score <= 90,意思是score >=60 or score <=90
-
WHERE score IN (60, 90),意思是in (, , ,)和python中的in类似,和这里的or也类型,是指 是否在(, , ,)这个集合中。
-
若不加括号,运算按照NOT、AND、OR的优先级进行,即NOT优先级最高,其次是AND,最后是OR
##投影查询
-
SELECT 列1, 列2, 列3 FROM …
列的顺序可以不与原表相同
-
SELECT 列1 别名1, 列2 别名2, 列3 别名3 FROM …
给列重命名
-
如果有WHERE子句,那么ORDER BY子句要放到WHERE子句后面。
分页
SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 0;
LIMIT总是设定为pageSize;
OFFSET计算公式为pageSize * (pageIndex - 1);
pageSize :每页数据条数;pageIndex:当前页码。
OFFSET超过了查询的最大数量并不会报错,而是得到一个空的结果集。
聚合查询
对于统计总数、平均数这类计算,SQL提供了专门的聚合函数。
使用SQL提供的聚合查询,我们可以方便地计算总数COUNT()、合计值SUM()、平均值AVG()、最大值MAX()和最小值MIN();
聚合查询也可以添加WHERE条件。
多表查询
这种一次查询两个表的数据,查询的结果也是一个二维表,它是students表和classes表的“乘积”,即students表的每一行与classes表的每一行都两两拼在一起返回。
结果集的列数是students表和classes表的列数之和,行数是students表和classes表的行数之积。
注:
使用多表查询可以获取M x N行记录;
多表查询的结果集可能非常巨大,要小心使用。
连接查询
注意INNER JOIN查询的写法是:
- 先确定主表,仍然使用FROM <表1>的语法;
- 再确定需要连接的表,使用INNER JOIN <表2>的语法;
- 然后确定连接条件,使用ON <条件…>,这里的条件是 s.class_id = c.id,表示students表的class_id列与classes表的 id列相同的行需要连接;
- 可选:加上WHERE子句、ORDER BY等子句。
INNER JOIN是最常用的一种JOIN查询,
它的语法是SELECT … FROM <表1> INNER JOIN <表2> ON <条件…>;
JOIN查询仍然可以使用WHERE条件和ORDER BY排序。