一. 连接查询
1.笛卡尔积
在数据库中的意义:没有连接条件表关系返回的结果
如:select * from 表1,表二
2.连接
在表关系的笛卡尔积数据记录中,按照相应字段的比较条件进行选择生成一个新的关系。
内连接:保留表关系中所有匹配条件的数据记录
外连接:除了匹配的记录,还有部分不匹配的记录
(1). 内连接
自然连接:相同名称的字段自动进行记录匹配,去掉重复字段
select * from 表1 natural join 表2
等值连接:匹配条件中含“=”,不会去掉重复字段
select 字段名 from 表1,表二 where ...=...
#推荐:
select 字段名 from 表1 (inner)join 表2,表3.. on ...=...
不等连接:匹配条件中含不等关系,不会去掉重复字段
select 字段名 from 表1 (inner)join 表2,表3.. on ...!=...
(2).外连接
左外连接:将左边不匹配的数据记录保留
select 字段名 from 表1 left join 表2,表3.. on 条件
右外连接:将右边不匹配的数据记录保留
select 字段名 from 表1 right join 表2,表3.. on 条件
全外连接:将所有不匹配的数据记录保留
select 字段名 from 表1 full join 表2,表3.. on 条件
3.并操作
将具有相同字段数目和字段类型的表合并到一起
select 字段名 from 表1 Union select 字段名 from 表2
或者
select 字段名 from 表1 Union All select 字段名 from 表2
Union All与Union的区别:Union没有重复数据记录
二. 子查询
1. in关键字
2. ANY关键字
=ANY
等于子查询结果集中的任意值,同in
>ANY
大于子查询结果集中的任意值,即只要大于子查询结果集中的最小值
<ANY
小于子查询结果集中的任意值,即只要小于子查询结果集中的最大值
>=ANY
大于或等于子查询结果集中的任意值
<=ANY
小于或等于子查询结果集中的任意值
3. ALL关键字
=ALL
等于子查询结果集中的所有值,同in
>ALL
大于子查询结果集中的所有值,即只要大于子查询结果集的最大值
<ALL
小于子查询结果集中的所有值,即只要小于子查询结果集的最小值
>=ALL
<=ALL
4. EXIST关键字
子查询是否存在
SELECT * FROM info WHERE EXISTS (SELECT * FROM friend WHERE info.`userID`=friend.`userID`)
5.FROM子句
select * from (SELECT * FROM 表名)a
a为别名