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

2023-11-06

一、多表查询

在这里插入图片描述

二、在 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;

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解内连接中的隐式内连接、显式内连接和外连接中的左外连接、右外连接 的相关文章

  • 合并两个 MYSQL SELECT 查询[重复]

    这个问题在这里已经有答案了 可能的重复 如何将两个 Post Category 表 MYSQL SELECT 查询合并为一个 https stackoverflow com questions 12972130 how to combine
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • PHP MYSQL文件内容转义问题

    我正在尝试使用 php 将 pdf 文件上传到 mysql 数据库中 除了文件内容之外 一切都很好 无论我如何尝试转义特殊字符 查询总是失败 主要是 未知命令 n 我使用过addslashes mysql real escape strin
  • Android Realm.io:行/对象不再有效

    这是我的删除功能 它确实找到了workday1 object public static void delete Context context Workday workday Realm realm getRealm context re
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • 如何在 SEQUELIZE (nodeJS) 中创建触发器?

    我正在尝试使用sequelize 创建一个触发器 主要思想是创建一个实例CONFIG创建后USER USER MODEL module exports function sequelize DataTypes var User sequel
  • 在 SQL 中,如何从 SELECT * FROM ... 中排除结果?

    我知道我的标题不太具有描述性 让我在这里详细解释一下 假设一个表有 26 个字段 例如字段 a 字段 z 我只想要一个选择查询只返回 15 个字段 所以 通常 我会执行 SELECT field a field b field o FROM
  • 如何通过 SQL 表关联 SQL 中的实体

    我是数据库设计的初学者 我需要为项目创建数据库 我可以用面向对象的术语解释我想要做什么 值得庆幸的是 数据库专家会很友善地向我解释如何在数据库方面处理这个问题 我想创建一个与位置实体 州 城市 有关系的用户 ID 名称 实体 所以在编程语言
  • MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。添加了 11 条消息列表。使用emitter.setMaxListeners()来增加限制

    我知道这可能会标记为重复的解决方案 但堆栈溢出的解决方案对我不起作用 Problem node 5716 MaxListenersExceededWarning Possible EventEmitter memory leak detec
  • Mysql用in语句限制

    我正在写一个查询 SELECT user bookmarks id as user bookmark id bookmark id user bookmarks user id bookmark url bookmark website b
  • rake db:migrate db:reset 和 db:schema:load 之间的区别

    和 之间的不同rake db migrate and rake db reset我很清楚 我不明白的是如何rake db schema load与前两者不同 只是为了确保我在同一页面上 rake db migrate 运行尚未运行的迁移 r
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • MYSQL - 使用逗号分隔字符串作为变量输入的存储过程

    我希望有人能够提供帮助 我已经创建了我的第一个存储过程 没什么花哨的 但是我遇到了问题 我想给它一个字符串输入 例如 1 2 3 4 5 然后它执行一个简单的操作SELECT FROM TABLE WHERE EAN IN VAR 所以存储
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 无法在 Sqlite3 中添加默认值为 NULL 的 NOT NULL 列

    尝试将 NOT NULL 列添加到现有表时出现以下错误 为什么会发生这种情况 我尝试了 rake db reset 认为现有记录是问题所在 但即使重置数据库后 问题仍然存在 你能帮我解决这个问题吗 迁移文件 class AddDivisio
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • mysql排序和排名语句

    我需要一些 mysql 语句的帮助 我的表 1 有 7 列 表 2 有 8 列 额外的列名为排名 我的语句应该是这样的 从表 1 中选择全部 然后按 用户数 排序 将其插入表 2 中并排名开始 1 2 3 等 table 1 usernam
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • R语言基本数据结构

    R语言系列文章目录 文章目录 R语言系列文章目录 前言 一 向量 二 矩阵 三 数组 四 列表 五 数据框 前言 一篇技术博客的写作不可能面面俱到 那这就意味着必须抛弃一些内容 在R语言的书里对于R的基础知识的讲解很容易找到 因此 这一R语
  • qt文件操作

    第一步 手动获取文件路径 include
  • 动态代理简单实现

    动态代理简单实现 文章目录 动态代理简单实现 一 反射 二 反射机制提供的功能 1 相关API 2 Class类的理解 4 创建类的对象的方式 5 Class实例可以是那些结构的说明 三 类的加载过程 四 动态代理 反射的动态性 一 反射的
  • LeetCode:设计循环队列

    题目链接 622 设计循环队列 力扣 Leetcode https leetcode cn problems design circular queue 还是老套路二话不说 先上代码 typedef struct int front int
  • win11下经典jdk8的安装与环境变量的配置(一看就懂,超级详细!!!)

    1 安装jdk8 由于Oracle官网需要注册账号才能下载 不想注册的同学们可以直接通过下面的地址下载 因为新的jdk版本变化不是很大 所以初学者用1 8版本就足够啦 链接 https pan baidu com s 1HjoXGTlaPw
  • 函数栈帧的创建和销毁

    全文目录 前言 寄存器 main函数的调用 调用main函数的函数 main函数的栈帧如何开辟的 push 保存调用方的 ebp move 维护新开栈帧的栈底 sub 维护新开栈帧的栈顶 三连 push 添加栈帧的信息的变量 lea 存放栈
  • spring中的quartz调度问题

    1 SchedulerFactoryBean会自动启动 当在spring文件中定义了多个SchedulerFactoryBean实例时 一定要小心 因为这些ScheduleFactoryBean自从load进程序里 就会自动启动 如果要手动
  • Grafana

    一 Grafana 数据可视化 1 下载各种环境以及版本地址 https grafana com grafana download platform windows 2 windows下的安装并运行 https www jianshu co
  • Leetcode2488-统计中位数为 K 的子数组

    数组中的元素只有三种 等于k的 大于k 小于k的 首先找到k在数组中的位置p 分别统计p左侧和右侧的每个位置有多少个元素大于或小于k 假设向左开始记录 首先记c 0 遇到大于k的元素则c 否则c 表示这个位置到p之间净有c个元素大于k 同理
  • 科学计算库Numpy

    一 创建Numpy数组 创建一个一维数组 data1 np array 1 2 4 创建一个二维数组 data2 np array 1 2 3 4 5 6 1 2 3 创造元素值都是0的数组 np zeros 3 4 创建元素值全是1的数组
  • ai作文批改_好未来:AI智能批改中英文作文为老师“减负”

    开篇诗词点题 结尾升华主题 非常赞 细节上 人物描写方法多样 人物的性格特点描绘细致 整体上 内容凸显文章主题 语言新颖清爽 读来令人如沐春风 这是一份语文作文的批改反馈 不过 这份生动详细的批改反馈并不普通 它是利用好未来自主研发的 中英
  • vue动态渲染ref,获取this.$refs.xxx.style为undefined获取循环元素中的style

    正常情况下通过this refs xxx style获取是没问题的 本文遇到的是要获取循环列表中某一元素 并改变其样式 设置ref在v for列表上 直接获取this r e f s n a
  • antd4.x 使用setfieldsvalue动态修改表单值

    表单的默认值可以用 Form 里的 initialValues 来设置 但是 initialValues 不能被 setState 动态更新 因此需要用 setFieldsValue 来更新 1 创建ref实例 创建ref实例 export
  • 技术支持岗位面试问题汇总,绝对有你遇到的面试题!!

    交换机与路由器的区别 1 路由器能拨号 交换机不能 2 无线路由器能使无线设备WIFI上网 交换机不行 3 外形上 从外形上我们区分两者 交换机通常端口比较多看起来比较笨重 而路由器的端口就少得多体积也小得多 4 工作层次不同 最初的交换机
  • 2019最新计算机毕业设计-题目汇总大全-系列1

    课设题目 备注 基于NLP ASR及TTS技术的智能语音分析工具 负责语义分析部分 论文替代 基于SpringBoot的用户音乐平台 家装设计公司客户关系系统 基于机器学习的文本语义分析工具 基于微信小程序的私教预约系统 标准化轮胎仓库管理
  • (转)读源码品Caffe - 结构流程篇

    原文链接 https blog csdn net jinzhuojun article details 79834697 背景 本文主要介绍深度学习框架Caffe的工作原理和实现 时至今日 各种深度学习框架百花齐放 百家争鸣 从流行程度来说
  • R软件的rattle安装指南

    rattle安装问题 1 正常安装情况 2 无法正常安装情况 2 1版本号不对应 2 2网络不稳定 2 3文字乱码问题 1 正常安装情况 这是先基于R4 0 0 这个在3 6的版本都成功过 看到有人说4 0 0不能安装 因此特地去安装尝试下
  • maven环境变量配置(超详细!)

    下载地址 官网地址 建议不要下载在C盘 配置过程 1 解压下载好的压缩包 2 此电脑 右键 属性 高级系统设置 环境变量 3 新建一个系统变量 点击系统变量的新建 变量名 MAVEN HOME 变量值 maven解压的目录 通过浏览目录选择
  • pyspark访问hive数据实战

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 之前我们部门在数据分析这边每天的日报都是直接使用hive脚本进行调用 随着APP用户行为和日志数据量的逐渐累积 跑每天的脚本运行需要花的时间越来越长 虽然进行了sql优化
  • 理解内连接中的隐式内连接、显式内连接和外连接中的左外连接、右外连接

    一 多表查询 二 在 MySQL 中创建 book 和 actor 两张表 1 创建 book 表及添加数据 CREATE TABLE book id INT PRIMARY KEY NOT NULL AUTO INCREMEN bookN