DQL语言---连接查询

一、含义

当查询中涉及到了多个表的字段,就需要使用多表连接。

SELECT 字段1,字段2...
FROM1,2...;

当查询多个表时,没有添加有效的连接条件,会导致多个表所有行实现完全连接,这称为笛卡尔乘积。要想避免,就要添加有效的连接条件。

二、分类

按功能分类

  • 内连接

等值连接
非等值连接
自连接

  • 外连接

左外连接
右外连接
全外连接

  • 交叉连接

sql92标准

支持内连接,也支持一部分外连接(用于oracle、sqlserver,mysql不支持)

sql99标准

支持内连接+一部分外连接(左外和右外)+交叉连接
mysql不支持全外连接

三、sql92语法

1.等值连接

语法

SELECT 查询列表
FROM1 别名,2 别名
WHERE1.key=2.key
AND 筛选条件#非必需
GROUP BY 分组字段#非必需
HAVING 分组后的筛选#非必需
ORDER BY 排序字段#非必需

特点

  1. 一般为表起别名
  2. 多表的顺序可以调换
  3. n表连接至少需要n-1个连接条件
  4. 等值连接的结果是多表的交集部分

2.非等值连接

语法

SELECT 查询列表
FROM1 别名,2 别名
WHERE 非等值的连接条件
AND 筛选条件#非必需
GROUP BY 分组字段#非必需
HAVING 分组后的筛选#非必需
ORDER BY 排序字段#非必需

3.自连接

语法

SELECT 查询列表
FROM 表 别名1,表 别名2
WHERE 等值的连接条件#别名1.key=别名2.key
AND 筛选条件#非必需
GROUP BY 分组字段#非必需
HAVING 分组后的筛选#非必需
ORDER BY 排序字段#非必需

四、sql99语法

1.内连接

语法

SELECT 查询列表
FROM1 别名
INNER JOIN2 别名
ON 连接条件
WHERE 筛选条件#非必需
GROUP BY 分组字段#非必需
HAVING 分组后的筛选#非必需
ORDER BY 排序字段#非必需

特点

  1. 表的顺序可以调换
  2. 内连接的结果=多表的交集
  3. n表连接至少需要n-1个连接条件

分类

  • 等值连接
  • 非等值连接
  • 自连接

2.外连接

语法

SELECT 查询列表
FROM1 别名
LEFT/RIGHT/FULL OUTER JOIN2 别名 
ON 连接条件
WHERE 筛选条件#非必需
GROUP BY 分组字段#非必需
HAVING 分组后的筛选#非必需
ORDER BY 排序字段#非必需

特点

  1. 查询的结果=主表中所有的行。如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null
  2. left join左边的是主表,right join右边的是主表,full join两边都是主表
  3. 一般用于查询除了交集部分的剩余不匹配的行

交叉连接

特点:类似于笛卡尔乘积

SELECT 查询列表
FROM1 别名
CROSS JOIN2 别名;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值