当前位置: 首页 > news >正文

数据库之左连接,右连接和内连接

要想写出正确的结果,首先我们要知道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

相关文章:

  • C++ 引用
  • ES6 ...操作符
  • 2.Median of Two Sorted Arrays (两个排序数组的中位数)
  • 轻量级kotlin + Mvp + Rxjava + Retrofit框架
  • HDU 2722 Here We Go(relians) Again
  • yii2-queue一个好用的yii2队列操作扩展
  • ppwjs之bootstrap表格:响应式
  • [大牛翻译系列]Hadoop(22)附录D.2 复制连接框架
  • Java大小写转换
  • Transact-SQL语法速查手册
  • 开源地图数据可视化库——mapnik
  • IOS开发常用的linux命令
  • grep/字符/次数匹配/锚定符/小大括号/wc/tr/cut/sort/uniq
  • ajax跨域问题
  • 菜根谭#89
  • DataBase in Android
  • Docker: 容器互访的三种方式
  • IDEA 插件开发入门教程
  • JAVA SE 6 GC调优笔记
  • Laravel Telescope:优雅的应用调试工具
  • React Native移动开发实战-3-实现页面间的数据传递
  • Redis在Web项目中的应用与实践
  • SegmentFault 2015 Top Rank
  • select2 取值 遍历 设置默认值
  • vuex 笔记整理
  • vue的全局变量和全局拦截请求器
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 成为一名优秀的Developer的书单
  • 大快搜索数据爬虫技术实例安装教学篇
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 记一次和乔布斯合作最难忘的经历
  • 前端攻城师
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 时间复杂度与空间复杂度分析
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 算法---两个栈实现一个队列
  • 中文输入法与React文本输入框的问题与解决方案
  • 我们雇佣了一只大猴子...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #HarmonyOS:Web组件的使用
  • (52)只出现一次的数字III
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (done) 两个矩阵 “相似” 是什么意思?
  • (强烈推荐)移动端音视频从零到上手(下)
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (算法)前K大的和
  • (一) storm的集群安装与配置
  • (转)人的集合论——移山之道
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET 命令行参数包含应用程序路径吗?
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .Net8 Blazor 尝鲜