【数据库-----多表关系与多表查询】

本文详细介绍了数据库中的多表关系,包括一对一、一对多和多对多的关系,并探讨了多表查询的各种方式,如内连接、外连接(左连接、右连接、全连接)以及自连接。此外,还讲解了联合查询和子查询(嵌套查询)的应用,帮助读者深入理解数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多表关系

一对一

案例:用户与用户详情的关系
关系:	一对一关系,多用在单表拆分,将一个表的基础字段放在一张表中,其他
详情字段放在另一张表中,以提升操作效率。
实现:在任意一方加入外键,关联另一方主键,并且设置外键为唯一的(UNIQUE)。

一对多(多对一)

案例:部门与员工
关系:一个部门对应多个员工,一个员工对应一个部门。
实现:在多的一方建立外键,指向一的主键。

多对多

案例:学生与课程
关系:一个学生可以选多个课程,一个课程可以供多个学生选择。	
实现:建立第三张中间表,中间表至少包含两个外键,关联两方的主键。

多表查询

内连接

在这里插入图片描述

外连接分为左连接、右连接和全连接

				左连接:取左表A全部和A与B的交集

在这里插入图片描述
右连接:取右表B全部和A与B的交集
在这里插入图片描述
全连接:FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。
在这里插入图片描述

自连接:可以是内连接,也可以是外连接。必须取别名

语法:SELECT 字段列表 FROM 表A  别名a  join 表A  别名b ON  条件:

联合查询

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必 须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

 UNION 语法:SELECT column_name(s) FROM table1 
 			 UNION
			 SELECT column_name(s) FROM table2;

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

UNION ALL 语法:SELECT column_name(s) FROM table1
				UNION ALL
			    SELECT column_name(s) FROM table2;

注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

子查询——嵌套查询

SELECT * FROM t1 WHERE column1=(SELECT column1 FROM t2),

子查询外部语句可以是INSERT/UPDATE/DELETE/SELECT中任何一个。
根据结果,子查询分为标量子查询(结果为单个值)、列子查询(结果为一列)、行子查询(结果为一行)、表子查询(结果为多行多列)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值