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 表1cross 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 概念 【sql|Mysql数据库轻松学09—数据分析师常用(数据查询语言DQL之多表查询)】把多条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
推荐阅读
- JavaSwing项目|基于Eclipse+Java+Swing+Mysql实现旅游管理信息系统
- JDBC从入门到实战|如何通过JDBC访问MySQL数据库(手把手实现登录界面(图解+完整代码))
- 数据库|学生成绩管理系统 | 数据库设计2
- 课设|数据库课设之学生成绩管理系统
- mysql|数据库设计之学生成绩管理系统数据库设计
- 学生成绩管理系统|学生成绩管理系统 mysql_学生成绩管理系统(五)(系统的完善与数据库的链接...)
- 面试文|分布式id生成策略,我和面试官扯了一个半小时
- nosql|NoSQL之Redis配置与优化
- redis|Redis的主从复制、哨兵模式和集群