当前位置:网站首页>数据库多表链接查询的方式
数据库多表链接查询的方式
2022-08-09 14:51:00 【Ran959】
大家好,在日常学习中分享一下所学的笔记,希望可以帮助到大家~
本篇将多表联查分为三部分来介绍:
1. 通过Select子句进行查询
2. 通过内连接 inner join进行查询
3. 通过外连接left join,left outer join,right join,right outer join,union进行查询
一、通过SELECT子句进行多表查询
语法:
select 字段名
from表1,表2 …
where表1.字段 = 表2.字段
and 其它查询条件
例:以学生表student和班级表class为例
Select student.sid, student.sname, student.classid, class.classid, class.classname
from student,class
where student.classid = class.classid
注意:上面的代码中,以两张表相同的字段信息作为条件,进行两个表联查,但在实际开发中不建议这样使用,最好用主外键约束来实现。
二、通过内连接 inner join进行查询
语法:
select 字段名
from表1
inner join 表2
on 表1.字段 = 表2.字段
例:以学生表student和班级表class为例

select student.sid, student.sname, student.classid, class.classid, class.classname
from student
inner join class
on student.classid = class.classid

这种场景下得到的是满足某一条件的student,class内部的数据;正因为得到的是内部共有数据,所以连接方式称为内连接。
三、通过外连接left join,left outer join,right join,right outer join,union进行查询
1.left join
语法:
select 字段名
from表1
left join 表2
on 表1.字段 = 表2.字段
例:以学生表student和班级表class为例

select student.* , class.*
from student
left join class
on student.classid = class.classid
结果如下,class表中不存在的记录填充Null:

这种场景下得到的是student的所有数据,和满足某一条件的class的数据;
2.left outer join(相当于left join + [where 表2.字段 is null])
语法:
select字段名
from表1
left join 表2
on 表1.字段 = 表2.字段
where 表2.字段is null
例:以学生表student和班级表class为例

select student.sid,student.sname,class.classid,class.classname
from student
left join class
on student.classid = class.classid
where class.classid is null
![]()
这种场景下得到的是student中的所有数据减去"与class满足同一条件 的数据",然后得到的student剩余数据
3.right join
语法:
select 字段名
from 表1
right join表2
on 表1.字段 = 表2.字段
例:以学生表student和班级表class为例

select student.* , class.*
from student
right join class
on student.classid = class.classid

这种场景下得到的是class的所有数据,和满足某一条件的student的数据;
4.right outer join(相当于right join + [where 表1.字段 is null])
语法:
select字段名
from 表1
right join 表2
on 表1.字段 = 表2.字段
where 表1.字段is null
例:以学生表student和班级表class为例

select student.sid,student.sname,class.classid,class.classname
from student
right join class
on student.classid = class.classid
where student.classid is null
![]()
这种场景下得到的是class中的所有数据减去 "与student满足同一条件 的数据“,然后得到的class剩余数据;
4.left join union right join
语法:
select 字段名
from表1
left join 表2
on 表1.字段 = 表2.字段
union
select 字段名
from表1
right join表2
on 表1.字段 = 表2.字段
例:以学生表student和班级表class为例

select student.* , class.*
from student
left join class
on student.classid = class.classid
union
select student.* , class.*
from student
right join class
on student.classid = class.classid

这种场景下得到的是满足某一条件的公共记录,和独有的记录
以上分享希望能帮到你,有错误及时指正哦~
边栏推荐
猜你喜欢
随机推荐
JS 选项卡切换tab
C语言程序设计笔记(浙大翁恺版) 第七章:函数
卷积神经网络表征可视化研究综述(1)
Computer Graphics From Scratch - Chapter 5
OpenCV笔记整理【视频处理】
docker安装nacos并且指定容器数据卷,数据库连接等
各种程序员线学习学习教程收集
[Database] How does Sqlserver backup the database regularly and clear it regularly
golang中的select原理解析
Two-dimensional array to realize the eight queens problem
benchmark性能测试
JVM简学笔记
优化代码 —— 减少 if - else
代码随想录笔记_动态规划_377组合总和IV
C语言程序设计笔记(浙大翁恺版) 第十一周:结构类型
玩转云端 | 天翼云电脑的百变玩法
网站授权QQ登录
C语言程序设计笔记(浙大翁恺版) 第十二周:程序结构
经典面试题 之 TCP 三次握手/ 四次挥手
Selenium - 如何用xpath快速定位路径?









