1 表之间的关系
1.1 一对一
1.2 一对多
1.3 多对多
2 连接方式
2.1 横向连接
2.1.1 内连接 inner join
按照连接条件连接两个表,返回满足条件的行
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 * from t1 union select * from t2;
2.2.3 union all不去重:
select * from t1 union all select * from t2;
3 连接条件
3.1 等值连接
表1.id=表2.id
3.2 不等值连接
表1.id 比较 表2.id
|