SQL基础操作命令[2]

2、多表查询

2.1 表与表关系

2.1.1 一对一关系

在一对一关系中,A表中的一行最多只能匹配B表中的一行,反之亦然。
在这里插入图片描述

2.1.2 一对多关系

一对多关系是最普通一种关系,A表中的一行可以匹配B表中的多行,但是B表中的一行只能匹配A表中的一行。
例如:存在部门表和人员表之间具有一对多的关系,每个部门有很多的员工,但是每个员工只属于一个部门,
只有当一个相关列是一个主键或者具有唯一性约束时,才能创建一对多的关系
在这里插入图片描述

2.1.3 多对多关系

在多对多的关系中,A表中一行可以匹配B表中的多行,反之亦然。要创建这种关系,需要定义第三张表,称之为结合表,其主键由A表和B表外部件组成。
在这里插入图片描述

mysql> select * from student;
+-----+----------+------+------+
| SID | Sname    | Ssex | Sage |
+-----+----------+------+------+
|   1 | tulun    | nan  |   23 |
|   2 | qiandian | nan  |   20 |
|   3 | sunfen   | nan  |   21 |
|   4 | wulan    | nv   |   18 |
|   5 | CJ1210   | 1    |   11 |
|   6 | LG1213   | nan  |    2 |
|   7 | CJ1210   | 1    | NULL |
|   8 | GY1803   | NULL | NULL |
|  11 | TL       | nan  |   11 |
|  12 | TL12     | nan  |   12 |
|  13 | 13       | 13   |   13 |
|  17 | 18       | man  |   22 |
|  18 | tulun1   | man  |   23 |
+-----+----------+------+------+
13 rows in set (0.01 sec)

mysql> select * from SC;
+------+------+-------+
| SID  | CID  | score |
+------+------+-------+
|    1 |    1 |    80 |
|    1 |    3 |    87 |
|    2 |    2 |    89 |
|    6 |    1 |    66 |
|    3 |    3 |    88 |
|    2 |    2 |    98 |
|    9 |    2 |    99 |
+------+------+-------+
7 rows in set (0.00 sec)
## 学生表和成绩表是一个一对多关系

2.2 笛卡尔积

笛卡尔积的元素是元组,关系A和关系B的笛卡尔积可以记为(AXB),如果A表a条,B表为b条,那么A和B的笛卡尔积为(a+b)列数,(a*b)行的元素集合
检索出来的条目是将第一个表中的行数乘以第二个表中的行数

select <字段名称1>[字段名称2,字段名称3...字段名n] from  <1>,<2> where <检索条件>

2.3 内连接

按照连接条件,返回两张表中的满足条件的记录
在这里插入图片描述
内连接称之为普通连接或自然连接
等值连接:当条件为”=“的连接,称之为等值连接
在这里插入图片描述
在这里插入图片描述

2.4 外连接

外连接不仅包含符合条件的连接的行,而且还包含左表(左外连接)、右表(右外连接)中所有的数据行

2.5 左连接

在这里插入图片描述
左连接是以左表中的数据为基准,若左表中有数据而右表中没有数据,则显示左表中的数据,右表中的数据显示为空

select <字段名称1>[字段名称2,字段名称3...字段名n] 
from <表名1>
left join<表名2>
on  <连接条件>

在这里插入图片描述

2.6 右连接

在这里插入图片描述
右连接是以右表的数据为基准,若右表有数据且左表没有数据,则显示右表中的数据,左表中的数据则显示为空
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值