理解内连接中的隐式内连接、显式内连接和外连接中的左外连接、右外连接

article/2025/9/26 3:08:18

一、多表查询

在这里插入图片描述

二、在 MySQL 中创建 book 和 actor 两张表

1 创建 book 表及添加数据
CREATE TABLE `book` (`id` INT PRIMARY KEY NOT NULL AUTO_INCREMEN,`bookName` VARCHAR (60),`author` VARCHAR (60)
); 
INSERT INTO `book` (`id`, `bookName`, `author`) VALUES('1','水浒传','施耐庵');
INSERT INTO `book` (`id`, `bookName`, `author`) VALUES('2','三国演义','罗贯中');
INSERT INTO `book` (`id`, `bookName`, `author`) VALUES('3','西游记','吴承恩');
INSERT INTO `book` (`id`, `bookName`, `author`) VALUES('4','红楼梦','曹雪芹');

在这里插入图片描述

2 创建 actor 表及添加数据
CREATE TABLE `actor` (`id` INT PRIMARY KEY NOT NULL AUTO_INCREMENT,`actorName` VARCHAR (30),`gender` VARCHAR (3),`designation` VARCHAR (30),`bookId` INT 
); 
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('1','唐僧','男','旃檀功德佛','3');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('2','孙悟空','男','斗战胜佛','3');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('3','猪八戒','男','净坛使者','3');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('4','沙僧','男','金身罗汉','3');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('5','刘备','男','字玄德','2');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('6','关羽','男','字云长','2');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('7','张飞','男','字翼德','2');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('8','宋江','男','及时雨','1');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('9','林冲','男','豹子头','1');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('10','武松','男','行者','1');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('11','李逵','男','黑旋风','1');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('12','鲁智深','男','花和尚','1');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('13','贾宝玉','男','宝玉','4');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('14','林黛玉','女','黛玉','4');
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('15','薛宝钗','女','宝钗','4');

在这里插入图片描述

三、内连接

1 隐式内连接:没有JOIN关键字,条件使用WHERE指定
SELECT 字段 FROM1,2 WHERE 条件;
SELECT * FROM book b, actor a WHERE a.bookId = b.id AND a.bookId = 3;

在这里插入图片描述

2 显式内连接:使用INNER JOIN ... ON语句, 可以省略INNER
SELECT 字段 FROM 左表 INNER JOIN 右表 ON 表连接条件 WHERE 查询条件;
SELECT * FROM book b INNER JOIN actor a ON a.bookId = b.id WHERE a.bookId = 2;

在这里插入图片描述

四、左外连接

1 左外连接:使用LEFT OUTER JOIN ... ONOUTER可以省略
SELECT 字段 FROM 左表 LEFT OUTER JOIN 右表 ON 表连接条件 WHERE 查询条件;
左外连接可以理解为:将满足要求的数据显示,左表不满足要求的数据也显示(在内连接的基础上,保证左表的数据全部显示)
2 在 book 表中添加新的书籍
INSERT INTO `book` (`id`, `bookName`, `author`) VALUES('5','斗罗大陆','唐家三少');

在这里插入图片描述

3 使用内连接查询
SELECT * FROM book b INNER JOIN actor a ON a.bookId = b.id;

在这里插入图片描述

4 使用左外连接查询
SELECT * FROM book b LEFT OUTER JOIN actor a ON a.bookId = b.id;

在这里插入图片描述

五、右外连接

1 右外连接:使用RIGHT OUTER JOIN ... ONOUTER可以省略
SELECT 字段 FROM 左表 RIGHT OUTER JOIN 右表 ON 表连接条件 WHERE 查询条件;
右外连接可以理解为:满足要求的数据显示,并且右表不满足要求的数据也显示(在内连接的基础上保证右边的数据全部显示)
2 在 actor 表中添加新的人物
INSERT INTO `actor` (`id`, `actorName`, `gender`, `designation`, `bookId`) VALUES('16','史湘云','女','湘云',NULL);

在这里插入图片描述

3 使用内连接查询
SELECT * FROM book b INNER JOIN actor a ON a.bookId = b.id;

在这里插入图片描述

4 使用右外连接查询
SELECT * FROM book b LEFT OUTER JOIN actor a ON a.bookId = b.id;

在这里插入图片描述


http://chatgpt.dhexx.cn/article/UtVM1HyX.shtml

相关文章

SQL内连接与外连接

SQL内连接(INNER JOIN) 返回两张表中符合连接条件的数据行 内连接是从结果表中删除与被连接表中未匹配行的所有行,所以内连接可能会丢失信息 写法一: 语法:SELECT * FROM 表1 INNER JOIN 表2 ON 条件 eg:查询Student 表中学生的成…

SQL内连接、左连接、右连接的区别

SQL内连接、左连接、右连接的区别 前言:目前研究生已经毕业,刚刚找到了一份BA数据分析师的工作。目前的工作内容主要是指标的理解和使用SQL将代码写出来。在这里经常用到内连接(inner) join和左连接 left(outer&#…

【MySQL】MySQL内连接和外连接详细总结

目录 多表查询的分类3:内连接VS外连接(重难点)1. 内连接2.外连接3. SQL99语法实现多表查询3.1 SQL99实现内连接3.2 SQL99语法实现外连接3.2.1 左外连接3.2.2 右外连接3.2.3 满外连接 4.总结:七种SQL JOINS的实现4.1 内连接4.2 左外连接4.3 右外连接4.4 第…

数据库内连接和外连接

内连接 内连接使用关键字INNER JOIN 也可以简写成JOIN;内连接只返回两个表中匹配的数据。 SELECT a.id, a.name,b.price FROM table1 AS a INNER JOIN table2 AS b ON a.id b.id; 外连接 左外连接 用关键字LEFT OUTER JOIN 表示 也可以简写为LFFT JOIN。 以左边的…

oracle内连接和外连接

一、表的连接 1.内连接 (inner join) 做内连接得到的是a和b的关联关系的列同时存在的进行连接,内连后a和b关联列相同的a中数据和b中数据合在一起形成新的表数据。 内连接只有满足条件的数据才会显示 -- a 表和 b 表做内连接 -- a 表中的…

mysql内外三种连接,Mysql的内外连接方式

Mysql有很多种连接方式,其中有两大主要连接方式:内连接和外连接,其中外连接又可以分为左外连接和右外连接; 对于这三种连接方式,如何判断何时使用一直困扰着我,这里就做一下自己的总结: 1、内连…

SQL内连接

开发工具与关键技术: sql 撰写时间:2022/3/27 内连接(可多个表连接):两表合并为1表 内连接格式1: select 字段 from 表1,表2 where 连接条件 或者 : select 字段 from 表1…

MySql 内连接

三.内连接 内链接:两张或者多张表中按给定的连接条件查询满足条件的结果 -- 1.语法: select 查询内容 -- from table1,table2 where 关联条件 列如: 查询雇员信息级雇员所在部门信息 select * from emp,dept where emp.deptnodept.deptno 使用别名: 列如…

mysql内连接

文章目录 多表连接一、内连接初识(内连接两张表)二、内连接多张表三、为表起别名 题型综合 多表连接 多表连接的基础,要连接的表必须具有相同意义的字段(有关系的表); 多表连接什么时候用:顾名…

ClickHouse内连接

A内连接B>S2区域 SELECT date, ts, country, province, city,ye_no FROM (SELECT date, ts, country, province, city,0 AS yes_no FROM DBa.tba WHERE (date today()-1) ) ALL INNER JOIN (SELECT date, ts, country, province, city FROM DBb.tbb WHERE (date tod…

内连接,左连接,右连接作用及区别(数据库相关九)

我们来看个例子: 内连接就是普通的查询,例如 1.加inner join的: SELECT S.SName,C.CourseID,C.Grade From Sc AS C INNER JOIN Students AS S ON C.StudentID S.SNo 2.不加inner join的 SELECT Students.SName,…

知识点 左连接、右连接、内连接

为什么使用 这些X连接? 答:因为 我们想看到更多维度的数据,原本这些数据其实应该在一个表的,但为了避免数据冗余、面向对象(一张表一般对应一个实体类)等因素,我们把这些数据根据某个规则进行拆…

inner join 和outer join

内连接(INNER JOIN) 内连接也称为等同连接,返回的结果集是两个表中所有相匹配的数据,而舍弃不匹配的数据。也就是说,在这种查询中,DBMS只返回来自源表中的相关的行,即查询的结果表包含的两源表…

SQL连接表(内连接、左连接、右连接、交叉连接、全外连接)

分享一些自己的连表总结 什么是连接表? 多表查询原理:将多个表通过笛卡尔积形成一个虚表,再根据查询条件筛选符合条件的数据。 在关系数据库中,数据分布在多个逻辑表中。 要获得完整有意义的数据集,需要使用连接来查询…

内连接与外连接(全网最详细)

目录 前言 一、内连接 二、外连接 1.左外连接 2.右外连接 3.满外连接 三、UNION的使用 四、7种SQL JOINS的实现 前言 在学习内连接与外连接之前,你不妨思考为什么要引入这两种连接方式,带着问题去学习,更有助于我们对知识的学习。 其…

LDF explorer使用问题记录

本文章并不是使用教程! 问题1:信号必须要设置“Unit”值 当信号时枚举值或其他非物理信号,我们不为其设置Unit属性时,通过NCF工具生成源文件时,会报错,如下图所示: 通过文本方式打开ldf文件…

SqlServer如何导入mdf、ldf文件

1、sqlserver数据库中可以直接拷贝mdf和ldf文件对sqlserver数据库中的数据进行备份,然后通过数据库管理软件加载mdf和ldf文件加载数据库数据。 2、如果拷贝mdf和ldf文件失败时可以先在服务中停止SQL Server(MSSQLSERVER)服务 3、如下两种方法亲证都可行 第一种方法…

SqlServer2008Ldf文件过大处理

ldf文件是数据库的操作日志文件,用于数据库的数据恢复; 缩小体积的方法: 第一步:设置数据库成简单模式,在master下执行 ALTER DATABASE databasename SET RECOVERY SIMPLE; 第二步:缩小数据库体积到1024MB …

SqlServer怎么导入mdf、ldf文件

第一种方法: 1.打开SQL Server,写好登录名和密码点击连接. 2.打开数据库,右键某一个数据库,选择“新建查询(Q)”。 3.再代码界面输入如下代码,点击F5键或者点击运行按钮即可。 代码如下: EXEC…

sql server处理/压缩LDF文件

LDF/MDF文件太大了,要压缩处理 SELECT NAME, recovery_model_desc FROM sys.databases 查看是什么模式这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询 USE DNName GO SELECT file_id, nameFROM s…