博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL表连接查询(inner join、full join、left join、right join)
阅读量:5213 次
发布时间:2019-06-14

本文共 930 字,大约阅读时间需要 3 分钟。

前提条件:假设有两个表,一个是学生表,一个是学生成绩表。

 表的数据有:

 

 

一、内连接-inner jion :

最常见的连接查询可能是这样,查出学生的名字和成绩:

select s.name,m.mark from student s,mark m where s.id=m.studentid

上面就是我们最常见的inner join,即内连接,把符合student.id=mark.studentid 条件的元组才选出来,也可以写成:

select s.name,m.mark from student s inner join mark m on s.id=m.studentid

符合条件的只有两条结果,查出结果为:

二、左连接-left join:

左连接是把左边的表的元组全部选出来:

select s.name,m.mark from student s left join mark m on s.id=m.studentid

上面语句就是把左边的表,即student表中的元组全部选出,尽管有些分数表是没数据的,也选了出来,选出的结果为:

三、右连接-right join:

右连接就是把右边表的数据全部取出,不管左边的表是否有匹配的数据:

select s.name,m.mark from student s right join mark m on s.id=m.studentid

上面的语句就是把mark分数表的数据全部取出来,不管student表中是否有数据匹配,如下图所示:

 

四、全连接-full join:

把左右两个表的数据都取出来,不管是否匹配:

select s.name,m.mark from student s full join mark m on s.id=m.studentid

如下图所示,学生表和成绩表的数据都取了出来:

 

 

比较常用的是第一种,内连接,而且是用这种写法:

select s.name,m.mark from student s,mark m where s.id=m.studentid

 

转载于:https://www.cnblogs.com/panxuejun/p/5886245.html

你可能感兴趣的文章
magento
查看>>
数据流-------C#文件和byte[]互换问题
查看>>
js知识梳理3:创建对象的模式探究
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
cookies相关概念
查看>>
angular2 formsModule 双向数据绑定
查看>>
android动态权限获取
查看>>
CAN总线波形中ACK位电平为什么会偏高?
查看>>
siebel 中 join 使用心得
查看>>
剑指Offer:重建二叉树
查看>>
MyBatis课程2
查看>>
css属性之统一设置文本及div之间的对齐方式
查看>>
PHP大批量更新数据,大批量插入数据,mysql批量更新与插入多种方法
查看>>
[转]如何循序渐进向dotnet架构师发展
查看>>
桥接模式-Bridge(Java实现)
查看>>
dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算(终结版)
查看>>
java面试题之hashcode相等两个类一定相等吗?equals呢?相反呢?
查看>>
[leetcode]Generate Parentheses
查看>>
常用的原生js兼容函数收集
查看>>
Python repr() 或str() 函数
查看>>