MySQL·表的内外连接

目录

表的内连和外连

内连接

案例1:显示SMITH的名字和部门名

外连接

左外连接

案例2: 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来

右外连接

案例3:对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来

案例4:列出部门名称和这些部门的员工信息,同时列出没有员工的部门


注意本篇所用的表结构参考文章

MySQL·表数据的操作-CSDN博客

表的内连和外连

表的连接分为内连和外连

内连接

内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,上一篇的查询都是内连接,也是在开发过程中使用的最多的连接查询

语法如下

select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;
案例1:显示SMITH的名字和部门名
-- 用前面的写法
select ename, dname from EMP, DEPT where EMP.deptno=DEPT.deptno and
ename='SMITH';
-- 用标准的内连接写法
select ename, dname from EMP inner join DEPT on EMP.deptno=DEPT.deptno and
ename='SMITH';

第一种方法:先做笛卡尔积

再筛选需要的信息,并添加条件

方法二:内连接

外连接

外连接分为左外连接和右外连接

左外连接

如果联合查询,左侧的表完全显示我们就说是左外连接

语法如下

select 字段名 from 表名1 left join 表名2 on 连接条件

为了更好的演示,这里用一张新表

-- 建两张表
create table stu (id int, name varchar(30)); -- 学生表
insert into stu values(1,'jack'),(2,'tom'),(3,'kity'),(4,'nono');
create table exam (id int, grade int); -- 成绩表
insert into exam values(1, 56),(2,76),(11, 8);

表结构如下 

插入的数据如下

案例2: 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来
-- 当左边表和右边表没有匹配时,也会显示左边表的数据
select * from stu left join exam on stu.id=exam.id;

左外连接会保留左边那张表的数据,假如左边的那张表在右边那张表中没有出现,出来的大表则会被填充 

右外连接

如果联合查询,右侧的表完全显示我们就说是右外连接,就是反过来

语法如下 

select 字段 from 表名1 right join 表名2 on 连接条件;
案例3:对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来
select * from stu right join exam on stu.id=exam.id;

效果和左外连接是一样的,其实我们可以直接用左外连接来替代右外连接去实现相同的功能,它们之间的区别就是执行顺序的不一样 

案例4:列出部门名称和这些部门的员工信息,同时列出没有员工的部门
方法一:
select d.dname, e.* from dept d left join emp e on d.deptno=e.deptno;
方法二:
select d.dname, e.* from emp e right join dept d on d.deptno=e.deptno;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/687656.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】什么是进程?

一个正在执行的程序,我们称之为进程。 然后我们来顺着一条线来思考。 操作系统底层是用C语言编写的,而我们的进程,它会有各种属性,那么各种属性就可以用一个结构体来对进程的各个属性进行描述,然后这个结构体里面&…

linux安装clamav病毒扫描与删除

ClamAV介绍 ClamAV是Linux操作系统一款免费的杀毒工具,通过命令执行病毒库升级、查找病毒和删除病毒。 安装ClamAV 方法一💡 Tips:在CentOS操作系统上安装ClamAV,请分别执行以下命令 yum install epel-release -y yum install cla…

Python 运筹优化11 BernoulliBandit 解读

说明 以广告点击的案例继续MultiArmed Bandit的学习。 内容 1 概要 样例假设存在5个广告,通过伯努利分布来模拟广告的点击可能。 adA BernoulliBandit(0.004) adB BernoulliBandit(0.016) adC BernoulliBandit(0.02) adD BernoulliBandit(0.028) adE Bern…

sipeed 的 MaixCam UART操作

发现问题 根据sipeed MaixCam官方文档 使用MaixVision会报错。 正确的接线 1,usb转ttl的RX和TX与sipeed MaixCam官方赠送的usb转接头反向连接,GND互相连接。 2,再用一根tpyc-c为其供电。 连接WiFi路由器 MaixCam液晶屏输入WiFi名称和密…

requestAnimationFrame请求动画帧

一、前言 在Web应用中,实现动画效果的方法比较多: CSS3:Transition(过度) / Animation(动画) HTML5:Canvas JavaScript:setInterval(定时器) /…

腾讯云服务器部署前后端服务

服务器:OpenCloudOS (兼容centos8) 后端:javaSpringboot 前端:Vue 下载jdk 1)下载jdk11 wget https://download.java.net/openjdk/jdk11/ri/openjdk-1128_linux-x64_bin.tar.gz 2)解压jdk …

印象笔记大师:揭秘高效管理的终极技巧,让你的信息整理事半功倍!

印象笔记(Evernote)是一款功能强大的笔记应用,它可以帮助用户记录、整理和管理各种信息。无论是工作、学习还是日常生活,印象笔记都能为我们提供便捷的服务。本文将全面详细地介绍印象笔记的使用技巧,包括基本介绍、主…

Gartner发布降低企业软件供应链安全风险指南:全球软件供应链相关法规、指南以及企业需要开展的三个方面工作

软件供应链攻击呈三位数增长,但很少有企业机构采取措施对这些复杂攻击的风险进行评估。安全和风险管理领导者可参考本文,采用三种实践来检测和预防攻击,保护企业机构的安全。 主要发现 虽然软件供应链攻击频繁发生,但其安全评估尚…

2024数维杯B题详细思路代码数学建模高质量保姆级

2024年第九届数维杯大学生数学建模挑战赛题目 B 题 生物质和煤共热解问题的研究 (1)基于附件一,请分析正己烷不溶物(INS)对热解产率(主要 考虑焦油产率、水产率、焦渣产率)是否产生显著影响?并利用图像 加…

1689 ssm社区老人危机干预系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java ssm社区老人危机干预系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主…

从RAID 0到RAID 10:全面解析RAID技术与应用

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、磁盘阵列简介 2、磁盘阵列诞生背景 3、硬件RA…

无人播剧项目怎么做,快手无人播剧全攻略,版权难题一招破解!

相信大家比较关注的问题就是快手无人直播无人播剧到底是不是真的?是不是骗人的?靠不靠谱?是不是真的能赚钱?会不会涉及到版权问题?等等。接下来我就给大家一一做解答! 首先关于快手无人播剧是不是骗人的&a…