​MySQL数据库——基础(四):多表查询

 基础篇主要内容:MySQL概述、SQL语句、函数、约束、多表查询、事务。

多表查询

实际项目开发中,在进行数据库表结构设计时,会根据业务需求和业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,于是需要多表查询。

一、多表关系

各个表结构之间存在着各种联系,基本分为三类:一对多(多对一),多对多,一对一。

一对多关系:在多的一方建立外键,在一的一方建立主键

多对多关系:建立第三张表,设置至少两个外键,分别关联两方主键。

一对一关系:多用于单表拆分:在任意一方加入外键,关联另一方的主键,并将外键设置为唯一的(unique),从而保证不会存在多个数据对应同一记录的可能。

二、多表查询概述

即从多张表中查询数据。

笛卡尔积:
在数学上是指两个集合的所有组合情况,在多表查询中要消除无效的笛卡尔积。

如果直接使用  select  *  from 表1,表2; 则输出结果为笛卡尔积的形式,即没有考虑到两张表中的数据的关联。所以在多表查询中,需要通过设置条件来控制两张表的数据一一对应,即

select * from 表1,表2   where 表一某数据 = 表二某数据

多表查询分类:

1、连接查询:内连接(求两表的交集数据)、外连接(求某表的全部数据和两表的交集数据)、自连接(当前表与自身的连接查询,必须使用表别名)

2、子查询 

三、内连接

两种内连接效果相同,仅语法不同。

隐式内连接

select 查询列表  from 表1 ①表1别名,表2 ①表2别名   where 条件;

①常常通过设置别名来简化条件中表名的书写,但设置别名后,条件中不能在继续使用原表名了

显式内连接

select 查询列表 from 表1 ①表1别名inner join 表2 ①表2别名 on 条件  ;

②inner可以省略

四、外连接

左右其实相同,只要保证两张表的先后顺序正确即可,所以一般只用左外连接。

左外链接

得到表1的全部数据和两张表的交集数据
select 查询列表 from 表1 ①表1别名  left ③outer join 表2 ①表2别名 on 条件  ;
③outer可以省略

右外连接

得到表2的全部数据和两张表的交集数据
select 查询列表 from 表1 ①表1别名  right ③outer join 表2 ①表2别名 on 条件  ;
③outer可以省略

内连接与外连接的一大区别在于,如果是两个表的对应数据其中有空,则内连接不会显示,而外连接会显示。

五、自连接

自连接既可以是内连接,也可以是外连接,只要是一张表自己连接自己即可。

select  查询列表  from 表1 别名1 join 表1 别名2  on  条件;

六、联合查询

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

select  查询列表  from 表1····

union ①all

select  查询列表  from 表2····;

①all如果删去,则重复的数据会被删去。

注意:联合查询时,多张表的查询列表必须相同。

七、子查询

概念:SQL语句中嵌套select语句,即嵌套查询,又称子查询;子查询外部的语句为SQL语句,即可以是insert、select、update、delete中任意一个语句。

根据子查询结果不同,可以子查询分为

标量子查询:子查询结果为单个值
列子查询:子查询结果为一列
行子查询:子查询结果为一行
表子查询:子查询结果为多行多列

根据子查询位置又可以分为:where后子查询、from后子查询、select后子查询

1、标量子查询

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

2、列子查询

常用操作符:in 、not in 、any 、some 、all

3、行子查询

常用操作符:=、<>、in 、not in

4、表子查询

常用操作符:in

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值