内连接
隐式内连接
SELECT
字段列表
FROM
表
1 ,
表
2
WHERE
条件
... ;
显式内连接
SELECT
字段列表
FROM
表
1 [ INNER ]
JOIN
表
2
ON
连接条件
... ;
外连接
外连接分为两种,分别是:左外连接 和 右外连接。具体的语法结构为:
左外连接
SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 条件 ... ;
左外连接相当于查询表
1(
左表
)
的所有数据,当然也包含表
1
和表
2
交集部分的数据。
右外连接
SELECT
字段列表
FROM
表
1 RIGHT [ OUTER ]
JOIN
表
2
ON
条件
... ;
右外连接相当于查询表
2(
右表
)
的所有数据,当然也包含表
1
和表
2
交集部分的数据。
项目开发中一般用左外连接,右外连接也可以转换成左外连接
自连接
自连接查询,顾名思义,就是自己连接自己,也就是把一张表连接查询多次。我们先来学习一下自连接的查询语法:
SELECT
字段列表
FROM
表
A
别名
A
JOIN
表
A
别名
B
ON
条件
... ;
而对于自连接查询,可以是内连接查询,也可以是外连接查询。
联合查询
对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。
SELECT
字段列表
FROM
表
A ...
UNION
[ ALL ]
SELECT
字段列表
FROM
表
B ....;
对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
union all
会将全部的数据直接合并在一起,
union
会对合并之后的数据去重。
子查询
SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。
SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2 );
子查询外部的语句可以是
INSERT / UPDATE / DELETE / SELECT
的任何一个。
分类
根据子查询结果不同,分为:
A.
标量子查询(子查询结果为单个值)
B.
列子查询
(
子查询结果为一列
)
C.
行子查询
(
子查询结果为一行
)
D.
表子查询
(
子查询结果为多行多列
)
根据子查询位置,分为:
A. WHERE
之后
B. FROM
之后
C. SELECT
之后