【MySQL复习】SQL-DQL查询
查询语句
DISTINCT关键字
去除重复记录
Select distinct address FROM stu;
给列起别名 用AS
Select name, math as 数学成绩, english as 英语成绩 FROM stu;
过滤 WHERE
不进行过滤的数据非常大,导致通过网络传输了多余的数据,从而浪费了网络带宽。因此尽量使用 SQL 语句来过滤不必要的数据,而不是传输所有的数据到客户端中然后由客户端进行过滤。
SELECT *
FROM mytable
WHERE col IS NULL;
下表显示了 WHERE 子句可用的操作符
eg: select * from stu where age between 20 and 60;
select * from stu where age in (18,19,20);
应该注意到,NULL 与 0、空字符串都不同。"="表示等于时使用一个即可。<> / !=都可以用来表示“不等于”。NULL 要用 IS NULL / **IS NOT NULL **来查询。
AND 和 OR 用于连接多个过滤条件。优先处理 AND,当一个过滤表达式涉及到多个 AND 和 OR 时,可以使用 () 来决定优先级,使得优先级关系更清晰。
IN 操作符用于匹配一组值,其后也可以接一个 SELECT 子句,从而匹配子查询得到的一组值。
NOT 操作符用于否定一个条件。
模糊查询 LIKE
通配符也是用在过滤语句中,但它只能用于文本字段。
-
% 匹配 >=0 个任意字符;
-
_ 匹配 ==1 个任意字符;
-
[ ] 可以匹配集合内的字符,例如 [ab] 将匹配字符 a 或者 b。用脱字符 ^ 可以对其进行否定,也就是不匹配集合内的字符。
不要滥用通配符,通配符位于开头处匹配会非常慢。
排序查询
ASC:升序(默认)
DESC:降序
可以按多个列进行排序,并且为每个列指定不同的排序方式:
SELECT *
FROM mytable
ORDER BY col1 DESC, col2 ASC;
分组查询
聚合函数
将一列数据作为一个整体,纵向计算
函数 | 说明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值之和 |
AVG() 会忽略 NULL 行。