当前位置:网站首页>【MySQL】数据库多表链接的查询方式
【MySQL】数据库多表链接的查询方式
2022-08-05 05:13:00 【来一杯奶喵】
数据库的多表联查可以通过连接运算实现,即将多张表通过主外键关系关联在一起进行查询。
多表联查的方式主要分为两大类:非等值联查和等值联查。
首先先建立了两张表:student表、sc表。基于这两张表演示多表联查。
create table Student(
Sid int primary key auto_increment,
Sname varchar(10),
birthday datetime,
Ssex varchar(10),
classid int
);
create table SC(
Sid int,
Cid int,
score decimal(18,1),
foreign key(Sid) references Student(Sid),
foreign key(Cid) references Course(Cid)
);
非等值联查:
select * from student,sc
这种查询会产生笛卡尔积:也就是student表内所有数据以及sc表内所有数据的乘积。这种情况是由于没有有效的连接条件产生的,并不适用于表内存在大量数据的情况。为避免笛卡尔积的产生就需要用到等值联查。
等值联查:
select * from studend,sc where student.sid = sc.sid
这种使用where子句的等值查询方式只适用于表内数据量小的情况,且只能挑选一次
等值查询有内联查询和外联查询。
我们先来看看内联查询(数据量大时使用,虚拟表按照数据量最大的表创建):
语法:select * from 表1 inner join 表2 on 条件
select * from student inner join sc on student.sid = sc.sid
这条内联查询语句得到的数据是筛选两个表内相同sid的记录,至少有一行记录匹配,就能返回结果,如下图所示:
外联查询:左外联、右外联
左外联查询:显示主表全部信息,join左边为主查表
语法:select * from 表1 left join 表2 on 条件
select * from student left join sc on student.sid = sc.sid
以student表为主表查询记录,所以没有成绩的学生记录也在查询结果中,如下图所示:
右外联查询: 显示主表全部信息,join右边为主查表
语法:select * from 表1 right join 表2 on 条件
select * from student right join sc on student.sid = sc.sid
以sc表为主表查询记录,从sc中返回所有的记录,即便在student中没有匹配的行。
如下图所示:
总结:
多表联查的方式:
1.非等值联查,产生笛卡尔积,不适合数据量大时使用
2.等值查询,【单独where子句查询,内联查询,外联查询(左外联,右外联)】
①单纯使用where子句,同样不适合大量数据时使用
②内联查询 inner join
③左外联查询 left join (join左边为主表)
④右外联查询 right join (join右边为主表)
以上就是多表联查的几种方式,希望对看到这里的你有所帮助。与君共勉。
边栏推荐
- CAP+BASE
- 【过一下7】全连接神经网络视频第一节的笔记
- Calling Matlab configuration in pycharm: No module named 'matlab.engine'; 'matlab' is not a package
- Pandas(五)—— 分类数据、读取数据库
- server disk array
- Do you use tomatoes to supervise your peers?Add my study room, come on together
- Machine Learning (2) - Machine Learning Fundamentals
- SQL(二) —— join窗口函数视图
- 【过一下10】sklearn使用记录
- 1068找到更多的硬币
猜你喜欢
Algorithms - ones and zeros (Kotlin)
第四讲 反向传播随笔
2022 Hangzhou Electric Multi-School 1st Session 01
【过一下3】卷积&图像噪音&边缘&纹理
Convert the paper official seal in the form of a photo into an electronic official seal (no need to download ps)
DOM及其应用
第5讲 使用pytorch实现线性回归
Structured Light 3D Reconstruction (2) Line Structured Light 3D Reconstruction
将照片形式的纸质公章转化为电子公章(不需要下载ps)
SQL(二) —— join窗口函数视图
随机推荐
软件设计 实验四 桥接模式实验
2022 Hangzhou Electric Multi-School 1st Session 01
1.3 mysql批量插入数据
第四讲 反向传播随笔
day8字典作业
第四讲 back propagation 反向传播
Matplotlib(二)—— 子图
Develop a highly fault-tolerant distributed system
A blog clears the Redis technology stack
[Student Graduation Project] Design and Implementation of the Website Based on the Web Student Information Management System (13 pages)
02.01-----参数的引用的作用“ & ”
【记一下1】2022年6月29日 哥和弟 双重痛苦
02.01-----The role of parameter reference "&"
第5讲 使用pytorch实现线性回归
Redux
1068找到更多的硬币
【过一下11】随机森林和特征工程
【After a while 6】Machine vision video 【After a while 2 was squeezed out】
Pandas(五)—— 分类数据、读取数据库
Matplotlib(三)—— 实践