MySQL数据库演示内连接左外连接右外连接的区别

2023-05-16

sql中join的出现解决了from tableA a ,tableB b where a.id = b.id连接查询做笛卡尔积的问题,而join连接查询除了条件使用关键字on取代了where之外,他本身的连接又分为内连接,左外连接和右外连接三种,分别用inner join,left outer join,right outer join表示,因为不存在外连接、左内连接和右内连接的叫法,所以这三种连接可以简单的称为连接,左连接,右连接,分别用join,left join,right join表示,在实际的书写过程中,看个人的习惯而使用。

那么具体这三种连接有什么区别呢,我们先来看具体的规定:

  • 连接join:通过条件将两个表中符合条件的数据列出来。
  • 左连接left join:以左边的表为基准,列出左表所有记录,右表中若无记录,用NULL表示。
  • 右连接right join:和左连接相反,以右边的表为基准,列出满足条件的所有记录,左表中无记录,用NULL表示。

为了演示他们的区别,我们构建两个表,员工表emp,部门表dept,员工表中有21条记录,其中19条员工记录是有部门可查的,部门编号能对应部门表中的记录,有一条员工记录没有部门,还有一条记录的部门在部门表中不存在deptid=6,即查不到。 另外,部门表中有6条记录,代表六个部门,表结构和表数据如下所示:

直接使用内连接查询,我们只能查询到19条符合条件的记录,如下所示:

这个结果也说明了join就是inner join的简写,他们表示的含义是一样的。

当使用左连接查询的时候:

emp表有21条记录,以左表作参照,这里把员工信息全部查询出来,当deptid=null和deptid=6的时候,右表中无记录,这里就用NULL表示。 

当使用右连接查询的时候:

右连接查询的时候,以右表为参照,将右表中所有数据都查询出来了,左表中没有对应记录的就用NULL表示。

至此,三种连接的查询以及区别已经差不多清楚了,三种连接是有区别的,而且如果join两侧的表的顺序不一样,左右连接查询的结果也是不一样的。 

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

MySQL数据库演示内连接左外连接右外连接的区别 的相关文章

  • 外键和索引

    我有 2 张桌子 products and 类别 每个类别有很多产品 一个产品可以属于多个类别 products product id int primary auto increment name unique etc 类别 catego
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • 在一个后台为MYSQL的网站上集成搜索

    我有一个位置搜索website http www jammulinks com对于一个城市 我们首先收集该城市所有可能类别的数据 如学校 学院 百货商店等 并将其信息存储在单独的表中 因为每个条目除了名称 地址和电话号码外都有不同的详细信息
  • Laravel 5.4 升级 - 违反完整性约束 - 列不能为空

    奇怪的是 所有这些都在 5 2 中工作 但我不知道可以改变什么来实现这一点 下面是错误和正在插入的数组 SQLSTATE 23000 Integrity constraint violation 1048 Column gender can
  • 无法在 .net core 2 中从 MySQL 构建“日期”类型列

    我已经开始了一个新的 net core 2 项目 我正在尝试将 MySQL 数据库导入实体框架 我使用此命令来搭建数据库 Scaffold DbContext server localhost port 3306 user id user
  • 从 Grib 天气模型中提取数据

    我已经下载了grib1模型数据来自GFS http en wikipedia org wiki Global Forecast System 我使用的是 Mac OS X 并且能够构建wgrib2文件来自NOAA http en wikip
  • 如何为我的整个 Node.js 应用程序使用相同的 MySQL 连接?

    我有一个app js 我从那里运行我的整个应用程序 在 app js 内部 我require许多文件中都有代码 对于每个文件 我都这样做 var mysql require mysql var mclient mysql createCon
  • NHibernate - 无法执行查询 - 输入字符串的格式不正确

    我已经为此摸不着头脑有一段时间了 我不知道出了什么问题 概述 我的 MySQL 数据库中有两个表 两者都正确映射到数据库 我可以加载数据 并且我能够查询一个表 但不能查询另一个表 我研究过的解决方案 表和 C 代码之间的类型转换问题 映射问
  • meta_query,如何使用关系 OR 和 AND 进行搜索?

    已解决 请参阅下面的答案 我有一个名为的自定义帖子类型BOOKS 它有几个自定义字段 名称为 TITLE AUTHOR GENRE RATING 我该如何修复我的meta query下面的代码以便仅books在自定义字段中包含搜索词 tit
  • 如何删除 MySQL 数据库?

    你可能从我的上一个问题中注意到一个问题引发了更多的问题 在 MySQL 监视器中阅读 MySQL 手册 https stackoverflow com questions 1081399 我的数据库现在无法使用 部分原因是我想破坏东西并且无
  • 显示和随机化 php 数组

    我有一个显示结果的数组 如下所示 Array 0 gt 71 1 gt 56 2 gt 64 3 gt 82 4 gt 90 5 gt 80 6 gt 65 7 gt 62 8 gt 14 9 gt 3 我的代码是 while row my
  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • “修改列”与“更改列”

    我知道 我们不能使用重命名列MODIFY COLUMN语法 但我们可以使用CHANGE COLUMN syntax 我的问题是 主要用途是什么modify syntax 例如 ALATER TABLE tablename CHANGE co
  • 如何从表中检索特定列 --- JPA 或 CrudRepository?我只想从用户表中检索电子邮件列

    用户模型 Entity Table name user uniqueConstraints UniqueConstraint columnNames email public class User implements Serializab
  • jdbc4.MySQLSyntaxErrorException:数据库中不存在表

    我正在使用 SpringBoot 开发一个网络应用程序 这是我的application properties文件来指定访问数据库的凭据 spring datasource driverClassName com mysql jdbc Dri
  • MySQL“列计数与第 1 行的值计数不匹配”是什么意思

    这是我收到的消息 ER WRONG VALUE COUNT ON ROW 列计数与第 1 行的值计数不匹配 这是我的全部代码 我的错误在哪里 DROP TABLE student CREATE TABLE employee emp id I
  • 针对约 225 万行的单表选择查询的优化技术?

    我有一个在 InnoDB 引擎上运行的 MySQL 表 名为squares大约有 2 250 000 行 表结构如下 squares square id int 7 unsigned NOT NULL ref coord lat doubl
  • 使用 MYSQL 将 h:mm pm/am 时间格式插入数据库

    我正在尝试将以 h mm am pm 格式写入的时间插入到存储为标准 DATETIME 格式 hh mm ss 的数据库中 但我不知道如何将发布的时间转换为标准格式所以数据库会接受它 这是我到目前为止一直在尝试的 title POST in
  • 使用用户定义函数 MySql 时出错

    您好 请帮我解决这个问题 提前致谢 我在数据库中定义了这些函数 CREATE FUNCTION levenshtein s1 VARCHAR 255 s2 VARCHAR 255 RETURNS INT DETERMINISTIC BEGI

随机推荐

  • nodejs路由之代码分离

    nodejs提供了路由功能 xff0c 解决客户端各类请求对应的处理问题 xff0c 相当于springboot开发各个controller对应的方法 xff0c nodejs提供的路由 xff0c 也支持各种方法 xff1a get po
  • gcc编译c++文件

    gcc是编译c语言的 xff0c 默认情况下 xff0c 如果直接编译c 43 43 程序 xff0c 会报错 xff1a root 64 server demo2 ls hello cpp root 64 server demo2 cat
  • linux下C++连接mysql查询数据

    windows下使用C 43 43 连接mysql相对繁琐 xff0c 这里直接在linux下通过C 43 43 连接mysql xff0c 执行查询操作 linux下连接mysql xff0c 需要本机有libmysqlclient库文件
  • linux下C++连接redis

    linux下c 43 43 连接redis 需要安装redis 同时还需要安装hiredis xff0c hiredis是c 43 43 操作redis的api库 redis的安装这里不介绍了 xff0c 很多教程 这里直接从hiredis
  • sqlite3简单入门

    linux上一般默认是自带了sqlite3的 xff0c 所以学习sqlite3 xff0c 最好使用linux 这样可以跳过安装这一步 开始 xff0c 我们可以直接运行sqlite3 testsqlite3 db databases 可
  • linux下C++连接sqlite3

    linux下 xff0c c 43 43 连接sqlite3 xff0c 不需要额外的安装依赖库 xff0c linux自带了sqlite3 xff0c 在编译的时候 xff0c 只需要将sqlite3的库加入编译参数中即可 sqlite3
  • mongodb查询两个字段做加减乘除操作

    和使用关系型数据库一样 xff0c 我们在使用mongodb的时候 xff0c 我们希望有这样的操作 xff0c 就是查询两个字段的乘积或者和 xff0c 这就需要用到聚合查询了 xff0c 聚合查询的语法大致如下 xff1a db use
  • mongodb副本集oplogSize设置过小的问题

    mongodb副本集构建的高可用方案 xff0c 最少需要三个节点 xff0c 一个主节点master xff0c 一个从节点slave xff0c 一个选举仲裁节点arbiter 当主节点奔溃的时候 xff0c 仲裁节点选举从节点来接替主
  • mongodb开启安全认证

    默认 xff0c mongodb不开启安全认证 xff0c 通过mongo shell访问 xff0c 我们会看到mongo shell报出警告 xff1a 后面两个警告很好解决 xff1a 按照提示 xff0c 我们修改 sys kern
  • CCF-201809-3-元素选择器

    题目很长 xff0c 大家自行去官网看 第三题还是一如既往的是大模拟 xff0c 模拟css元素选择器 xff0c 有接触过前端的同学对此不陌生了吧 以前学css的时候就想过层叠样式表的实现 xff0c 但是也没细究 ccf第三题有出过ma
  • hbase shell命令行下常见操作

    hbase是基于hadoop的列簇数据库 xff0c 是nosql的一种 当我们搭建了hbase环境之后 xff0c 可以通过hbase shell命令 xff0c 进入hbase的命令行下 xff0c 可以进行创建表 xff0c 添加数据
  • redis高可用sentinel哨兵模式环境搭建

    redis高可用需要保证 xff0c 在主节点崩溃的时候 xff0c 从节点能够成为主节点 xff0c 继续提供服务 默认来说主从模式master slave就能做到这一点 xff0c 但是在实际环境中 xff0c 客户端连接的是指定的主机
  • win7笔记本电脑设置WiFi热点

    一般情况下 xff0c 我们是利用路由器设置WiFi热点 xff0c 但是如果没有路由器 xff0c 而有网线 xff0c 我们可以利用笔记本电脑来设置WiFi热点 xff0c 这里介绍如何通过笔记本电脑连接网线设置WiFi热点 笔记本电脑
  • 脚本之家上的一道题:如何通过findstr查找80和443端口记录

    一般来说 xff0c 我们都是在linux上编写bash脚本 xff0c 如果是在windows系统上 xff0c 我们就需要编写批处理脚本bat来处理相关业务逻辑 脚本之家上有这么一道题 xff1a 需要找到80 443端口的记录 xff
  • scylladb:利用java api操作scylladb数据库

    博客上全是关于scylladb的介绍和性能对比 xff0c 很少有scylladb方面的干货 xff0c 这里从scylladb官网各种文档里面整合出一个java版的例子 xff0c 例子中展示如何连接scylladb xff0c 如何加载
  • scylladb:设置监听主机IP为非默认localhost

    前面介绍了通过scylladb提供的driver xff0c 编写java代码 xff0c 然后操作scylladb数据库 但是因为scylladb默认采用的监听地址是localhost即127 0 0 1 xff0c 如果想从外部连接sc
  • mysql修改记录时update 字段=字段+字符串

    在有些场景下 xff0c 我们需要对我们的varchar类型的字段做修改 xff0c 而修改的结果为两个字段的拼接或者一个字段 43 字符串的拼接 如下所示 xff0c 我们希望将xx role表中的name修改为name 43 id 在m
  • MySQL存储过程入门

    存储过程是一种在数据库中存储复杂程序 xff0c 以便外部程序调用的一种数据库对象 存储过程是为了完成特定功能的SQL语句集 xff0c 经编译创建并保存在数据库中 xff0c 用户可以通过指定存储过程的名字并给定参数来调用执行 存储过程思
  • MySQL批量插入优化

    前面介绍了MySQL批量插入可以通过存储过程的方式来实现 xff0c 这里介绍批量插入100W记录 xff0c 并做一个优化 建表语句 xff1a create table sql drop table if exists xx user
  • MySQL数据库演示内连接左外连接右外连接的区别

    sql中join的出现解决了from tableA a tableB b where a id 61 b id连接查询做笛卡尔积的问题 xff0c 而join连接查询除了条件使用关键字on取代了where之外 xff0c 他本身的连接又分为