select结构
select 需要查询的字段
from 表名1 表别名1 join 表名2 别名2
on 链接条件
where 过滤条件
group by 分组
having 过滤条件
order by 排序
limit 分页
列名一般用""(双引号)
distanct 去掉重复行
SELECT DISTINCT department_id FROM employees;
空值参与运算
所有运算符或列值遇到 null 值,运算的结果都为 null
这里你一定要注意,在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长 度是空。而且,在 MySQL 里面,空值是占用空间的。
where 过滤数据
运算符
算数运算符
比较运算符
非符号运算符
逻辑运算符
排序
分页
多表查询
等值连接 vs 非等值连接
等值连接:
拓展1:多个连接条件与AND 操作符
拓展2:需要注意的是,如果我们使用了表的别名,在查询字段中、过滤条件中就只能使用别名进 行代替,不能使用原有的表名,否则就会报错。
非等值连接:
自连接 vs 非自连接
自连接:通常理解为自己连自己
非自连接:自己表连其他表
内连接 vs 外连接
内连接 : 合并具有同一列的两个以上的表的行 , 结果集中不包含一个表与另一个表不匹配的行
外连接 : 两个表在连接过程中除了返回满足连接条件的行以外 还返回左(或右)表中不满足条件的
行,这种连接称为左(或右)外连接 。没有匹配的行时 , 结果表中相应的列为空 (NULL) 。
如果是左外连接,则连接条件中左边的表也称为 主表 ,右边的表称为 从表。
如果是右外连接,则连接条件中右边的表也称为 主表 ,左边的表称为 从表。
SQL99:使用 join ... on ...
内连接:inner join【inner可以省略】
外链接:outer join
左外连接 left join
右外连接 right join
union 的使用
注意:执行UNION ALL语句时所需要的资源比UNION语句少。如果明确知道合并数据后的结果数据 不存在重复数据,或者不需要去除重复的数据,则尽量使用UNION ALL语句,以提高数据查询的效 率。
SQL99新特性
单行函数
数值函数
指数与对数
字符串函数
日期函数
加密函数
MySQL信息函数
聚合函数
count
group by:
having:
子查询
单行子查询 vs 多行子查询
关联子查询 VS 不关联子查询
单行子查询
where中子查询
having中子查询
case中子查询
多行子查询
相关子查询
from中的子查询
from型的子查询:子查询是作为from的一部分,子查询要用()引起来,并且要给这个子查询取别
名, 把它当成一张“临时的虚拟的表”来使用。
order by中子查询
EXISTS 与 NOT EXISTS关键字