MySQL数据库基础--多表查询

多表关系

        项目开发中,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本分为三种:

一对多(多对一)        实现:在多的一方建立外键,指向一的一方的主键

多对多        实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

一对一        实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)

多表查询

        指从多张表中查询数据

笛卡尔积:

        是指在数学中,两个集合,集合A和集合B的所有组合情况。(在多表查询时,需要消除无效的笛卡尔积)

内连接

        隐式内连接:

select 字段列表 from 表1,表2 where 条件...; 

        显式内连接:

select 字段列表 from 表1 [inner] 表2 on 连接条件...;

内连接查询的是两张表交集的部分

外连接

左外连接

相当于查询表1(左表)的所有数据,包含表1和表2交集部分的数据

右外连接

相当于查询表2(右表)的所有数据,包含表1和表2交集部分的数据。

自连接

自连接查询,可以是内连接查询,也可以是外连接查询

联合查询-union,union all

        对于union 查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。

对于联合的多张表的列数必须保持一致,字段类型也需要保持一致。

union all 会将全部的数据直接合并在一起,union 会对合并之后的数据去重。

子查询

        SQL 语句中嵌套 SELECT 语句,称为嵌套语句,又称子查询

子查询外部的语句可以是INSERT / UPDATE / SELECT 中的任何一个

根据子查询的结果不同分为:

1.标量子查询(自查询结果为单个值)

2.列子查询(子查询结果为一列)

3.行子查询(子查询结果为一行)

4.表子查询(子查询结果为多行多列)

根据自查询位置,分为:WHERE 之后,FROM 之后,SELECT 之后。

标量子查询

        子查询返回的结果是单个值(数字,字符串,日期等),最简单的形式,这种子查询称为标量子查询。

常用的操作符:=   <>   >   >=   <   <=

列子查询

        子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。

常用的操作符:IN   ,NOT IN   ,ANY   ,SOME   ,ALL

行子查询

子查询返回的结果是一行(可以是多列),这种子查询称为行子查询。

常用的操作符:=   ,<>   ,IN   ,NOT IN

表子查询   

子查询返回的结果是多行多列,这种子查询称为表子查询

常用的操作符:IN 

Ending: 

        OK,本篇文章就到此结束了,非常感谢你能看到这里,所以如果你觉得这篇文章对你有帮助的话,请点一个大大的赞,支持一下博主,若你觉得有什么问题或疑问,欢迎私信博主或在评论区指出~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值