Mysql数据库轻松学09—数据分析师常用:数据查询语言DQL之多表查询

发布时间:2023-05-08 18:30

1 表之间的关系

1.1 一对一

\"Mysql数据库轻松学09—数据分析师常用:数据查询语言DQL之多表查询_第1张图片\"

1.2 一对多

\"Mysql数据库轻松学09—数据分析师常用:数据查询语言DQL之多表查询_第2张图片\"

1.3 多对多

\"Mysql数据库轻松学09—数据分析师常用:数据查询语言DQL之多表查询_第3张图片\"

2 连接方式

2.1 横向连接

2.1.1 内连接 inner join

按照连接条件连接两个表,返回满足条件的行
\"Mysql数据库轻松学09—数据分析师常用:数据查询语言DQL之多表查询_第4张图片\"

select 字段1[,] from1[ inner] join2 on 连接条件; 

2.1.2 左连接 left join

结果中除了包括满足连接条件的行外,还包括左表的所有行
\"Mysql数据库轻松学09—数据分析师常用:数据查询语言DQL之多表查询_第5张图片\"

select 字段1[,] from1 left join2 on 连接条件; 

2.1.3 右连接 right join

结果中除了包括满足连接条件的行外,还包括右表的所有行
\"Mysql数据库轻松学09—数据分析师常用:数据查询语言DQL之多表查询_第6张图片\"

select 字段1[,] from1 right join2 on 连接条件; 
2.1.4 笛卡尔积 cross join

假设集合A={a,b},集合B={1,2,3},则两个集合的笛卡尔积为{(a,1),(a,2),(a,3),(b,1),(b,2),(b,3)}

select 字段1[,] from1,2[,]; 
select 字段1[,] from1  cross join2[,]; 		

消除笛卡尔积
逐行判断,相等的留下,不相等的排除

select 字段1[,] from1,2[,] where 筛选条件; 

2.1.5 自连接

通过设置表别名,将同一张表虚拟为多张表进行连接

select * from tabel a inner join table b
on a.id = b.id

2.2 纵向连接

2.2.1 概念

把多条select语句的查询结果合并为一个结果集
被合并的结果集的列数、顺序和数据类型必须完全一致

2.2.2 union去重:
#select 字段1[,字段2,…] from 表名 union select 字段1[,字段2,…] from 表名; 
select * from t1 union select * from t2;

2.2.3 union all不去重:

#select 字段1[,字段2,…] from 表名 union all select 字段1[,字段2,…] from 表名; 
select * from t1 union all select * from t2;

3 连接条件

3.1 等值连接

1.id=2.id

3.2 不等值连接

1.id 比较 表2.id

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号