博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库之左连接,右连接和内连接
阅读量:6535 次
发布时间:2019-06-24

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

要想写出正确的结果,首先我们要知道LEFT JOIN 、RIGHT JOIN、INNER JOIN的语法:

LEFT JOIN:

左连接,会读取左表全部数据,即便右表没有对应数据。左连接从左表产生一套完整的记录,和右表匹配的记录 .如果右边没有匹配记录,右侧结果集字段将为null。结果集图示如下:

 图片5.png

RIGHT JOIN:

右连接,以右表为基础,与LEFT JOIN相反。结果集图示如下:

图片6.png

INNER JOIN :内连接,或等值连接,可以获取两个表中字段匹配关系的记录。结果集图示如下:

图片7.png

掌握了以上的语法,不难得到上面题目的查询结果。为了更方便大家理解,我们改造题目如下:

非诚勿扰节目来了6位女嘉宾和6位男嘉宾,他们的信息和配对情况分别保存在grils表和boys表中。其中id分别是两个表的主键,boyNum、girlNum分别男女嘉宾的编号,matchNum是男女嘉宾的配对编号,如果男生和女生的配对编号相对,则表示配对成功,表数据如下所示: 1.png

根据以上结构新建girls表和boys表并初始化两个表的数据: 初始化girls表:

1:创建girls表create table girls(id int(10) primary key auto_increment, girlNum varchar(20), matchNum int(10)); 2.初始化girls数据 insert into girls(girlNum,matchNum) values("girl001",1),("girl002",2),("girl003",3)("girl004",4),("girl005",5),("girl006",6); 3.创建boys表 create table boys (id int(10) primary key auto_increment, boyNum varchar(20), matchNum int(10)); 4.初始化boys数据 insert into boys (boyNum,matchnum) values ("boy001",1),("boy002",2),("boy003",3),("boy004",7)),("boy005",8),("boy006",9); 5

LEFT JOIN

 
SELECT * FROM girls LEFT  JOIN boys ON girls.matchNum = boys.matchNum;

图片8.png

6.

RIGHT JOIN

select * from girls right join boys on girls.matchNum = boys.matchNum;

图片9.png

INNER JOIN 

select * from girls inner join boys on girls.matchNum=boys.matchNum;

图片10.png

可以看到LEFT JOIN 和RIGHT JOIN对于没有匹配的记录行,字段会用NULL来表示。

转载于:https://www.cnblogs.com/wz123/p/9722759.html

你可能感兴趣的文章
ant
查看>>
设计模式 - 生产者/消费者模式
查看>>
CentOS搭建NodeJS+GitHub基础开发环境
查看>>
微信,想要说爱你,却没有那么容易!
查看>>
浅谈AngularJS--基础
查看>>
习题10.25
查看>>
有关sqlite与sql
查看>>
MapXtreme 2005 学习心得 概述(一)
查看>>
php进一法取整、四舍五入取整、忽略小数等的取整数方法大全
查看>>
Hibernate的拦截器和监听器
查看>>
游戏中学习Bash技能
查看>>
ubuntu 12.04系统托盘不显示ibus输入法图标的解决方法
查看>>
垂直分区和水平分区
查看>>
Tomcat LimitLatch
查看>>
WSDP
查看>>
Angularjs checkbox ng-true-value不支持中文
查看>>
Memory Management
查看>>
The Packaging Process in Yocto/OE
查看>>
golang--Redis最佳的Go语言驱动
查看>>
JQUERY 对 表格中的数据重排序
查看>>