MySQL内外连接

article/2025/9/26 3:13:04

文章目录

  • MySQL内外连接
    • 内连接
    • 外连接
      • 左外连接
      • 右外连接
    • 简单案例

MySQL内外连接

表的连接分为内连接和外连接。

内连接

内连接

内连接的SQL如下:

SELECT ... FROM t1 INNER JOIN t2 ON 连接条件 [INNER JOIN t3 ON 连接条件] ... AND 其他条件;

说明一下:

  • SQL中大写的表示关键字,[ ]中代表的是可选项。
  • 内连接的条件通过连接条件指明,用户的其他筛选条件通过其他条件指明。

显示SMITH的名字和部门名称

给出一张员工表和一张部门表,员工表中的ename代表的是员工的姓名,deptno代表的是员工所在部门的部门号。如下:

在这里插入图片描述

部门表中的dname代表的是部门名,deptno代表的是部门的部门号。如下:

在这里插入图片描述

现在要显示SMITH的名字和其所在部门的名称,按照复合查询的做法就是,取员工表和部门表的笛卡尔积,在where子句中指明筛选条件为员工的部门号等于部门的部门号,筛选出每个员工匹配的部门信息,并指明员工姓名为SMITH,筛选出SMITH的信息和其所在部门的信息。如下:

在这里插入图片描述

实际上述多表查询的方式本质就是内连接,用标准的内连接SQL编写:

  • 将员工表和部门号放在from子句中并通过inner join关键字隔开。
  • 在on子句后指明内连接的条件为员工的部门号等于部门的部门号,保证筛选出来的数据是有意义的。
  • 在and之后指明筛选条件为员工的姓名为SMITH。

这样筛选出来的结果和多表查询筛选出来的结果是一样的,只不过是写法有一点不同而已。如下:

在这里插入图片描述

外连接

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

左外连接

左外连接

左外连接的SQL如下:

SELECT ... FROM t1 LEFT JOIN t2 ON 连接条件 [LEFT JOIN t3 ON 连接条件] ... AND 其他条件;

说明一下:

  • SQL中大写的表示关键字,[ ]中代表的是可选项。
  • 左外连接的条件通过连接条件指明,用户的其他筛选条件通过其他条件指明。

查询所有学生的成绩,就算这个学生没有成绩,也要将学生的个人信息显示出来

给出一张学生表和一张成绩表,学生表中的name代表的是学生的姓名,id代表的是学生的学号。如下:

在这里插入图片描述

成绩表中的id代表的是考试学生的学号,score代表的是学生的成绩。如下:

在这里插入图片描述

现在要显示所有学生的成绩,如果直接使用内连接将学生表和成绩表连接起来,然后筛选出学生学号等于考试学生学号的记录,那么只能筛选出有考试成绩的学生信息。如下:

在这里插入图片描述

而题目要求将没有成绩的学生的个人信息也要显示出来,也就是学生表当中的内容需要完全被显示出来。如果在连接学生表和成绩表时将学生表放在左侧,那么就可以使用左外连接,这时如果左侧表中的某条记录根据连接条件没有找到匹配的右侧表中的记录,就会直接显示左侧表中的记录信息,而其对应的右侧表中的列信息将会用NULL值进行填充。如下:

在这里插入图片描述

右外连接

右外连接

右外连接的SQL如下:

SELECT ... FROM t1 RIGHT JOIN t2 ON 连接条件 [RIGHT JOIN t3 ON 连接条件] ... AND 其他条件;

说明一下:

  • SQL中大写的表示关键字,[ ]中代表的是可选项。
  • 左外连接的条件通过连接条件指明,用户的其他筛选条件通过其他条件指明。

查询所有的成绩,就算这个成绩没有学生与它对应,也要将成绩信息显示出来

题目要求将没有学生与它对应的成绩信息也要显示出来,也就是成绩表当中的内容需要完全被显示出来。如果在连接学生表和成绩表时将成绩表放在右侧,那么就可以使用右外连接,这时如果右侧表中的某条记录根据连接条件没有找到匹配的左侧表中的记录,就会直接显示右侧表中的记录信息,而其对应的左侧表中的信息将会用NULL值进行填充。如下:

在这里插入图片描述

简单案例

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

由于题目要求同时列出部门名和员工信息,因此需要将部门表和员工表连接起来,连接条件就是部门的部门号要等于员工所在的部门号。如果直接使用内连接进行查询,那么将会显示出所有满足连接条件的记录。如下:

在这里插入图片描述

而题目要求同时列出没有员工的部门,也就是部门表当中的内容需要完全被显示出来,如果在连接部门表和员工表时将部门表放在左侧,那么就可以使用左外连接。如下:

在这里插入图片描述

当然,如果要使用右外连接,那么可以在连接部门表和员工表时将部门表放在右侧。如下:

在这里插入图片描述


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

相关文章

Sql语句查询之内连接与外连接

文章目录 一、连接查询1.什么是连接查询?2.连接查询的分类 二、内连接1.内连接之等值连接2.内连接之非等值连接3.内连接之自连接 三、外连接1.什么是外连接,和内连接有什么区别? 一、连接查询 1.什么是连接查询? 在实际开发中&am…

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

一、多表查询 二、在 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,水浒传,施耐庵); INS…

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 …