多表查询分为以下几种:
合并结果集: UNION UNION ALL
连接查询
内连接[INNER] JOIN ON
外连接OUTER JOIN ON
左外连接LEFT [OUTER] JOIN
右外连接RIGHT [OUTER] JOIN
全外连接(MySQL不支持)FULL JOIN
自然连接NATURAL JOIN
子查询
1.合并结果集
a. 作用:合并结果集就是把两个select语句的查询结果合并到一起
b.合并结果集有两种方式:
UNION:去除重复记录,例如:SELECT* FROM t1 UNION SELECT * FROM t2;
UNIONALL:不去除重复记录,例如:SELECT * FROM t1 UNION ALL SELECT * FROM t2;
c.要求:被合并的两个结果:列数、列类型必须相同
2. 连接查询
使用主外键关系做为条件来去除无用信息
@内连接查询
语法:
select 表1.字段,表2.字段 。。。 from 表1,表2 where 表1.字段=表2.字段;
这个方法就是内连接查询 ,但不是标准的内连接查询 那标准的内连接查询
select *from 表1 a inner join 表2 b on a.字段=b.字段;
@外连接查询
@自然连接
@子查询
概述:一个select语句中包含另一个完整的select语句。子查询就是嵌套查询,即SELECT中 包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么就是子查询语句 了
子查询出现的位置:
where后,作为条为被查询的一条件的一部分;
from后,作表;
当子查询出现在where后作为条件时,还可以使用如下关键字:
any
all
子查询结果集的形式:
单行单列(用于条件)
单行多列(用于条件)
多行单列(用于条件)
多行多列(用于表)
@自连接查询