1 表之间的关系
1.1 一对一
按照连接条件连接两个表,返回满足条件的行
select 字段1[,…] from 表1[ inner] join 表2 on 连接条件;
2.1.2 左连接 left join
结果中除了包括满足连接条件的行外,还包括左表的所有行
select 字段1[,…] from 表1 left join 表2 on 连接条件;
2.1.3 右连接 right join
结果中除了包括满足连接条件的行外,还包括右表的所有行
select 字段1[,…] from 表1 right join 表2 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[,…] from 表1,表2[,…];
select 字段1[,…] from 表1 cross join 表2[,…];
消除笛卡尔积: 逐行判断,相等的留下,不相等的排除
select 字段1[,…] from 表1,表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