MySQL之DQL(三)
Data Query Language,数据查询语言,常用于 select7.连接查询 含义:
多表连接查询
语法:
select 查询列表 from tableName1,tableName2;
特点:
Sql92:等值连接、非等值连接、自连接
- 会产生笛卡尔积 m*n
- t1的每条记录和t2的每一条记录连接
等值连接 【MySQL之DQL(三)】语法:
select 查询列表 from tableName1 t1,tableName2 t2 where t1.key=t2.key [and 筛选条件][group by 分组字段][having 分组后的筛选][order by 排序字段]
特点:
非等值连接 语法:
- 一般为表起别名
- 多表的顺序可以替换
- n表至少需要n-1个连接条件
- 等值连接的结果是多表的交集部分
select 查询列表 from tableName1 t1,tableName2 t2 where 非等值的连接条件 [and 筛选条件][group by 分组字段][having 分组后的筛选][order by 排序字段]
自连接 语法:
select 查询列表 from tableName t1,tableName t2 where 等值的连接条件 [and 筛选条件][group by 分组字段][having 分组后的筛选][order by 排序字段]
特点:
多表是同一个表,起不同的别名Sql99:内连接(等值连接、非等值连接、自连接)、外连接(左外、右外、全外)、交叉连接
语法:
select 查询列表 from tableName1 t1 连接类型 join tableName2 t2 on 连接条件
[where 筛选条件][group by 分组字段][having 分组后的筛选][order by 排序字段]
连接类型:
内连接:inner内连接 特点:
外连接:outer
交叉连接:cross
- 左外:left [outer]
- 右外:right [outer]
- 全外:full [outer]
inner 可以省略外连接 应用场景:用于查询一个表中有,另一个表中没有的记录
特点:
交叉连接
- 外连接查询的结果为主表中的所有记录
- 如果从表有匹配的记录,则显示匹配的值
- 如果没有,则显示null
- 外连接查询的结果=内连接结果+主表中有而从表中没有的记录
- 左外连接:left join左边的是主表;右外连接:right join右边的是主表
- 左外和右外交换两表的顺序,可以实现同样的效果
笛卡尔乘积
推荐阅读
- PMSJ寻平面设计师之现代(Hyundai)
- 太平之莲
- 闲杂“细雨”
- 七年之痒之后
- 深入理解Go之generate
- 由浅入深理解AOP
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 生活随笔|好天气下的意外之喜
- 感恩之旅第75天
- python学习之|python学习之 实现QQ自动发送消息