MySQL-多表查询
select 字段 from 表1,表2 where 条件;
-
分类:
-
连接查询
- 内连接:相当于查询A、B交集部分的数据
- 隐式内连接:
select 字段列表 from 表1,表2 where 条件 ...;
- 显式内连接:
select 字段列表 from 表1 [INNER] JOIN 表2 on 连接条件 ...;
- 隐式内连接:
- 外连接:
- 左外连接:查询左表所有数据,以及两张表交集部分数据
select 字段列表 from 表1 LEFT [OUTER] JOIN 表2 ON 条件...;
- 右外连接:查询右表所有数据,以及两张表交集部分数据
select 字段列表 from 表1 RIGHT [OUTER] JOIN 表2 ON 条件...;
- 左外连接:查询左表所有数据,以及两张表交集部分数据
- 自连接:当前表与自身的连接查询,自连接必须使用表别名
select 字段列表 from 表A 别名A JOIN 表A 别名B ON 条件 ...;
- 自连接查询,可以是内连接查询,也可以是外连接查询
- 内连接:相当于查询A、B交集部分的数据
-
联合查询-UNION,UNION ALL
-
对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集
-
select 字段列表 from 表A .... UNION [ALL] #ALL不加的话,则表示去除重复,加则不去重 select 字段列表 from 表B ....;
-
对于联合查询的多张表的列数必须保持一致 ,字段类型也需要保持一致
-
union all会将全部的数据直接合并在一起,union会对合并之后 的数据去重
-
-
子查询
-
概念:SQL语句中嵌套select语句,称为嵌套查询,又称子查询
-
select * from t1 where column1=(select column1 from t2);
-
子查询外部的语句可以是INSERT/UPDATE/DELETE/SELECT的任何一个
-
标量子查询
- 子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询称为标量子查询
- 常用的操作符:
= <> > <= < <=
-
列子查询
-
子查询返回的结果是一列(可以是多行),这种子查询称为列子查询
-
常用操作符 描述 IN 在指定的集合范围之内,多选一 NOT IN 不在指定的集合范围之内 ANY 子查询返回列表中,有任意一个满足即可 SOME 与ANY等同,使用SOME的地方都可以使用ANY ALL 子查询返回的所有值都必须满足
-
-
行子查询
- 子查询返回的结果是一行(可以是多列),这种子查询称为行子查询
- 常用的操作符:
= 、 <> 、 IN 、 NOT IN
-
表子查询
- 子查询返回的结果是多行多列,这种子查询称为表子查询
N 、 NOT IN`
- 子查询返回的结果是多行多列,这种子查询称为表子查询
-
表子查询
- 子查询返回的结果是多行多列,这种子查询称为表子查询
- 常用的操作符:
IN
-
-