MySQL多表查询大全(超精确)

目录

1、等值查询

2、内连接

3、外连接

3.1、左外连接

 3.2、右外连接

 3.3、完全外连接

4、交叉连接

5、自连接

6、联合查询


如果我们要查询的数据分布在不同的表时,那么需要连接多张表进行多表查询。

--而这些表当中,必须存在主外键关系(直接关联)

--如果不存在直接关系,则必定存在间接关系,否则业务上是没有意义的


1、等值查询

select 字段集合 from 表1,表2,...,表n
where 条件 (连接条件,一般使用主外键)

#注意:

条件一般是主键和外键的关联(可能包含筛选数据的条件);

一般给个表取别名,提高阅读性、性能以及解决字段冲突

(多次忘记):多(3个或以上)表关联查询时,关联条件用AND连接

create table 教师表
(
	编号 int auto_increment primary key not null ,
	姓名 char(30) ,
	性别 char(2) check(性别='男' or 性别='女') default '男',
	专业 char(30) 
)


create table 学生表
(
	学号 int auto_increment primary key not null ,
	姓名 char(30) ,
	性别 char(2) check(性别='男' or 性别='女') default '男',
	身高 float ,
	学分 float ,
	
	教师编号 int foreign key references 教师表(编号)
)


insert into 教师表 values ('张三','男','计算机')
insert into 教师表 values ('李四','男','日语')
insert into 教师表 values ('王五','女','英语')


insert into 学生表 values ('学生一','男',1.5,50,1)
insert into 学生表 values ('学生二','女',2.5,60,1)
insert into 学生表 values ('学生三','男',3.5,70,2)
insert into 学生表 values ('学生四','女',4.5,80,2)

select * from 教师表
select * from 学生表

2、内连接

-- 功能同等值连接
-- 好处:连接条件与筛选条件分离,简洁明了
select 字段集合 from 表1 [inner] join 表2 [inner join 表3] 
on 条件(主外键|相同数据类型)
where 条件

3、外连接

3.1、左外连接

以第一张表为基础向第二张表匹配,匹配成功则正常显示,匹配不成功,则第二张表以NULL值显示

select 字段集合 from 表1 left [outer] join 表2 on 条件

 3.2、右外连接

以第二张表为基础向第一张表匹配,匹配成功则正常显示,匹配不成功,则第一张表以NULL值显示

select 字段集合 from 表1 right [outer] join 表2 on 条件

 3.3、完全外连接

左、右的数据都要显示,如果能连接,则正常显示;如果不能连接,则以null值显示

# select 字段集合 from 表1 full [outer] join 表2 on 条件
# MySQL不支持,可以使用UNION实现
联合查询:实现完全外连接
SELECT * from 表1 LEFT JOIN 表2 on 条件
UNION
SELECT * from 表1 RIGHT JOIN 表2 on 条件;

#注意:一般表与表之间使用主外键关联数据表,确保数据的一致性

4、交叉连接

-- 语法一
select 字段集合 from 表1 [inner] join 表2	#sql server 使用关键字 cross

-- 语法二
select 字段集合 from 表1,表2

5、自连接

-- 语法一
select * from 表1 as 别名 join 表1 as 别名 on 条件

-- 语法二
select * from 表1 as 别名, 表1 as 别名 where 条件

6、联合查询

把多个查询的结果合并在一起

SELECT f1,f2 FROM T_1
UNION [ALL]
SELECT f1,f2 FROM T_2

  • 14
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL多表查询是指在MySQL数据库中同时操作多个表进行数据查询的过程。通过多表查询,可以将多个表的数据连接在一起,实现更复杂的查询功能。 多表查询的实验可以按照以下步骤进行: 1. 创建多个表:首先需要创建两个或多个关联的数据表,这些表可以通过外键进行关联。例如,可以创建一个学生表(Student)和一个课程表(Course),并且在课程表中添加一个外键来关联学生表中的学生ID。 2. 插入数据:在创建表后,需要向表中插入数据以便进行查询。通过插入数据,可以模拟真实的数据查询场景。 3. 编写查询语句:通过编写查询语句,可以实现多表查询的功能。多表查询可以使用关键字JOIN来连接多个表,并且可以根据需要使用不同的连接方式,如内连接(INNER JOIN)或外连接(LEFT JOIN、RIGHT JOIN)等。 4. 运行查询语句:将编写好的查询语句在MySQL数据库中运行,观察查询结果。如果查询结果符合预期,说明多表查询实验成功。 5. 进行数据分析:通过查询结果,可以进行数据分析和统计。可以使用聚合函数(如COUNT、SUM、AVG等)对查询结果进行计算,得出更有价值的数据分析结果。 在多表查询实验中,还可以使用子查询、嵌套查询、联合查询等更复杂的查询方式,以满足实际需求。 通过多表查询实验,可以帮助我们更好地理解多个表之间的关系,并且可以提高查询效率和准确性,为实际应用场景提供支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值