select基本语句
- select语句是用于查询表中数据的语句,它是SQL语句中的一部分。
- select的基本语句结构:
select 查询的结果列|*|列名
from 表名
where 条件
group by 分组依据列
having 以聚合函数的值为条件
order by 排序依据列
- SQL语句不区分大小写。
- SQL语句可以写成一行或多行。
- 在select语句中使用*查询效率低。
算术运算符
- +,-,*,/
select 100+200; -- 结果:300
select 100+'200'; -- 结果:300
select 100+'ABC'; -- 结果:100
select 100+null; -- 结果:NULL
select 100+'ABC'+null; -- 结果:NULL
- 在关系数据库中,当算术运算中出现NULL时,算术运算的结果一定为NULL。
列别名
- 关系数据库中设置别名的方式有两种方式:
- 列名 列别名
- 列名 as 列别名
- 当列名包含特殊字符时,或者列别名为关键字时,需要将列别名放在一对引号中。
- MySQL中双引号与单引号是等价的。
- 中文可以直接作为别名。
DISTINCT关键字
- 屏蔽查询结果中重复的行。
- 一个select语句中只能出现一个DISTINCT关键字,且必须出现在select与第一个列之间。
where
- 基本语法顺序:
select 3
from 1
[where 条件] 2 -- 条件的结果一定是boolean类型
- 条件为字符串类型,需要在值的两端添加引号。
- 条件为日期类型,需要在值的两端添加引号。
比较运算符
- >,>=,<,<=,=,!=,<>
特殊的比较运算符
- between...and...:查询指定范围内的数据(包含边界值)。
- in(值列表):查询与列表中任意一个值的匹配的数据,只能用于判断是否相等。
- like:模糊查询
- %:表示任意长度的任意字符。
- _:表示一个长度的任意字符。
- escape:用于声明一个符号,设置like查询的内容中此符号后面的一个_或%,不再是转义字符而是查询的内容。
- 例:查询课程名为DB_Design的课程。
select course
from s
where course like‘DB#_Design’ escape ‘#’;
- is null/is not null:判断列中的数据是否为NULL。
逻辑运算符
- and、or、not
- and与or的作用:连接条件。
- and的优先级大于or。
排序(order by子句)
- 基本语法顺序:
select 3
from 1
where 2
order by 列名 4
- 升序:从小到大顺序排序。升序排序关键字ASC,默认为升序排序(可省)。
- 降序:从大到小顺序排序,降序排序关键字DESC。
- 多列排序:order by 子句可以出现多个列,列之间使用逗号分隔。
Group By子句
group by子句作用:分组。
select 4
from 1
where 2
group by 3
order by 5
- 当select子句中一部分列为非聚合函数,一部分为聚合函数时,必须使用GROUP BY子句。
- 使用GROUP BY子句时,select子句中非聚合函数的列必须出现在group by子句中参加分组。
- group by 中可以出现多个列,列之间使用逗号分隔。
Having 子句
- having子句的作用:过滤分组的结果。使用having子句时需要使用group by子句。
- where子句与having子句的区别
- 使用WHERE子句时不需要使用GROUP BY子句 但使用HAVING子句时要用GROUP BY子句。
- WHERE子句中不能使用聚合函数作为过滤条件。HAVING子句中可以使用聚合函数作为过滤
条件。
select 5
from 1
where 2
group by 3
having 4
order by 6
- 当条件可以出现在WHERE子句或HAVING子句中时,建议将条件放在WHERE子句中,可以提高查
询的效率。