Mysql数据库内联查询、左连接查询、右连接查询、自连接查询介绍

2023-10-27

目录

一.内联查询

1.inner join:只查询键值一致(交叉)的部分 

2.演示

二.左连接

1.left join:以左表为标准,查询输出左表中没有的字段信息

2.演示

三.右连接

1.right join:以右表为标准,查询输出右表中没有的字段信息

2.演示

四.自连接

将一张表通过别名虚拟为两张表,查询比较其中的不同字段


一.内联查询

1.inner join:只查询键值一致(交叉)的部分 

select (*|指定字段) from 表1 inner join 表2 on 匹配条件;

可以配合where语句、order by语句、逻辑语句等一起使用

2.演示

--t5的id和t6的id具有外键关系
mysql8.0 [SLB]>select * from t5;
+----+---------------+-----------+
| id | name          | major     |
+----+---------------+-----------+
|  1 | sulibao       | dianshang |
|  2 | lixinjin      | dianshang |
|  3 | zhanghongyuan | jike      |
+----+---------------+-----------+
3 rows in set (0.00 sec)

mysql8.0 [SLB]>select * from t6;
+------+--------+------+
| age  | weight | id   |
+------+--------+------+
|   18 |   75.5 |    1 |
|   19 |   75.5 |    2 |
|   25 |     90 |    3 |
+------+--------+------+
3 rows in set (0.00 sec)

mysql8.0 [SLB]>select * from t5 inner join t6 on t5.id=t6.id;  --联合查询所有字段
+----+---------------+-----------+------+--------+------+
| id | name          | major     | age  | weight | id   |
+----+---------------+-----------+------+--------+------+
|  1 | sulibao       | dianshang |   18 |   75.5 |    1 |
|  2 | lixinjin      | dianshang |   19 |   75.5 |    2 |
|  3 | zhanghongyuan | jike      |   25 |     90 |    3 |
+----+---------------+-----------+------+--------+------+
3 rows in set (0.00 sec)

mysql8.0 [SLB]>select t5.id,t5.name,t5.major,t6.age,t6.weight from t5 inner join t6 on t
5.id=t6.id;
--联合查询指定字段
+----+---------------+-----------+------+--------+
| id | name          | major     | age  | weight |
+----+---------------+-----------+------+--------+
|  1 | sulibao       | dianshang |   18 |   75.5 |
|  2 | lixinjin      | dianshang |   19 |   75.5 |
|  3 | zhanghongyuan | jike      |   25 |     90 |
+----+---------------+-----------+------+--------+
3 rows in set (0.00 sec)

mysql8.0 [SLB]>select a.id,a.name,a.major,b.age,b.weight from t5 a inner join t6 b on a.id=b.id;
--也可以为名称较长的表取别名
+----+---------------+-----------+------+--------+
| id | name          | major     | age  | weight |
+----+---------------+-----------+------+--------+
|  1 | sulibao       | dianshang |   18 |   75.5 |
|  2 | lixinjin      | dianshang |   19 |   75.5 |
|  3 | zhanghongyuan | jike      |   25 |     90 |
+----+---------------+-----------+------+--------+
3 rows in set (0.00 sec)

二.左连接

1.left join:以左表为标准,查询输出左表中没有的字段信息

select (*|指定字段) from 左表 left join 从表 on 匹配条件;

可以配合where语句、order by语句、逻辑语句等一起使用

2.演示

(1)

mysql8.0 [SLB]>select * from t5;
+----+---------------+-----------+
| id | name          | major     |
+----+---------------+-----------+
|  1 | sulibao       | dianshang |
|  2 | lixinjin      | dianshang |
|  3 | zhanghongyuan | jike      |
+----+---------------+-----------+
3 rows in set (0.00 sec)

mysql8.0 [SLB]>select * from t6;
+------+--------+------+
| age  | weight | id   |
+------+--------+------+
|   18 |   75.5 |    1 |
|   19 |   75.5 |    2 |
|   25 |     90 |    3 |
+------+--------+------+
3 rows in set (0.00 sec)

mysql8.0 [SLB]>select * from t5 left join t6 on t5.id=t6.id;
+----+---------------+-----------+------+--------+------+
| id | name          | major     | age  | weight | id   |
+----+---------------+-----------+------+--------+------+
|  1 | sulibao       | dianshang |   18 |   75.5 |    1 |
|  2 | lixinjin      | dianshang |   19 |   75.5 |    2 |
|  3 | zhanghongyuan | jike      |   25 |     90 |    3 |
+----+---------------+-----------+------+--------+------+
3 rows in set (0.01 sec)

mysql8.0 [SLB]>select * from t6 left join t5 on t5.id=t6.id;
+------+--------+------+------+---------------+-----------+
| age  | weight | id   | id   | name          | major     |
+------+--------+------+------+---------------+-----------+
|   18 |   75.5 |    1 |    1 | sulibao       | dianshang |
|   19 |   75.5 |    2 |    2 | lixinjin      | dianshang |
|   25 |     90 |    3 |    3 | zhanghongyuan | jike      |
+------+--------+------+------+---------------+-----------+
3 rows in set (0.00 sec)

(2)

左表有的字段而从表没有对应内容则映射为null

mysql8.0 [SLB]>insert t5 values(4,"niexincheng","dianshang");
Query OK, 1 row affected (0.00 sec)

mysql8.0 [SLB]>select * from t5 left join t6 on t5.id=t6.id;
+----+---------------+-----------+------+--------+------+
| id | name          | major     | age  | weight | id   |
+----+---------------+-----------+------+--------+------+
|  1 | sulibao       | dianshang |   18 |   75.5 |    1 |
|  2 | lixinjin      | dianshang |   19 |   75.5 |    2 |
|  3 | zhanghongyuan | jike      |   25 |     90 |    3 |
|  4 | niexincheng   | dianshang | NULL |   NULL | NULL |
+----+---------------+-----------+------+--------+------+
4 rows in set (0.00 sec)

左表没有的字段而从表有则不查询这些字段内容

mysql8.0 [SLB]>select * from t6 left join t5 on t5.id=t6.id;
+------+--------+------+------+---------------+-----------+
| age  | weight | id   | id   | name          | major     |
+------+--------+------+------+---------------+-----------+
|   18 |   75.5 |    1 |    1 | sulibao       | dianshang |
|   19 |   75.5 |    2 |    2 | lixinjin      | dianshang |
|   25 |     90 |    3 |    3 | zhanghongyuan | jike      |
+------+--------+------+------+---------------+-----------+
3 rows in set (0.00 sec)

三.右连接

1.right join:以右表为标准,查询输出右表中没有的字段信息

2.演示

用法同左连接类似

mysql8.0 [SLB]>select * from t6 right join t5 on t5.id=t6.id;
+------+--------+------+----+---------------+-----------+
| age  | weight | id   | id | name          | major     |
+------+--------+------+----+---------------+-----------+
|   18 |   75.5 |    1 |  1 | sulibao       | dianshang |
|   19 |   75.5 |    2 |  2 | lixinjin      | dianshang |
|   25 |     90 |    3 |  3 | zhanghongyuan | jike      |
| NULL |   NULL | NULL |  4 | niexincheng   | dianshang |
+------+--------+------+----+---------------+-----------+
4 rows in set (0.01 sec)

mysql8.0 [SLB]>select * from t5 right join t6 on t5.id=t6.id;
+------+---------------+-----------+------+--------+------+
| id   | name          | major     | age  | weight | id   |
+------+---------------+-----------+------+--------+------+
|    1 | sulibao       | dianshang |   18 |   75.5 |    1 |
|    2 | lixinjin      | dianshang |   19 |   75.5 |    2 |
|    3 | zhanghongyuan | jike      |   25 |     90 |    3 |
+------+---------------+-----------+------+--------+------+
3 rows in set (0.00 sec)

四.自连接

将一张表通过别名虚拟为两张表,查询比较其中的不同字段

示例:yl表中查询yage<lage的所有信息,yl表中查询yage>lage的所有信息

mysql8.0 [SLB]>select y1.* from yl y1 join yl y2 on y1.lname=y2.lname and y1.yage<y2.lage;
+----------+------+------+-------+
| name     | yage | lage | lname |
+----------+------+------+-------+
| sulibao  |   20 |   25 | lh    |
| lixinjin |   21 |   29 | cq    |
+----------+------+------+-------+
2 rows in set (0.00 sec)

mysql8.0 [SLB]>select * from yl;
+-------------+------+------+-------+
| name        | yage | lage | lname |
+-------------+------+------+-------+
| sulibao     |   20 |   25 | lh    |
| lixinjin    |   21 |   29 | cq    |
| niexincheng |   28 |   25 | zxw   |
+-------------+------+------+-------+
3 rows in set (0.00 sec)

mysql8.0 [SLB]>select y1.* from yl y1 join yl y2 on y1.lname=y2.lname and y1.yage>y2.lage;
+-------------+------+------+-------+
| name        | yage | lage | lname |
+-------------+------+------+-------+
| niexincheng |   28 |   25 | zxw   |
+-------------+------+------+-------+
1 row in set (0.01 sec)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql数据库内联查询、左连接查询、右连接查询、自连接查询介绍 的相关文章

  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • 如何删除 MySQL 数据库?

    你可能从我的上一个问题中注意到一个问题引发了更多的问题 在 MySQL 监视器中阅读 MySQL 手册 https stackoverflow com questions 1081399 我的数据库现在无法使用 部分原因是我想破坏东西并且无
  • Mysql带限制的删除语句

    我试图从表中删除行 但出现错误 DELETE FROM chat messages ORDER BY timestamp DESC LIMIT 20 50 我在 50 时收到此错误 您的 SQL 语法有错误 检查与您的 MySQL 服务器版
  • 将IP保存到数据库中

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

    我知道 我们不能使用重命名列MODIFY COLUMN语法 但我们可以使用CHANGE COLUMN syntax 我的问题是 主要用途是什么modify syntax 例如 ALATER TABLE tablename CHANGE co
  • jdbc4.MySQLSyntaxErrorException:数据库中不存在表

    我正在使用 SpringBoot 开发一个网络应用程序 这是我的application properties文件来指定访问数据库的凭据 spring datasource driverClassName com mysql jdbc Dri
  • MySQL:如何仅获取正值的平均值?

    假设我有 INT 列 并且我使用 1 来表示插入时没有可用数据 我想获得该列中所有 0 或更大值的平均值 这可能吗 Thanks 我忘了提及 我正在与其他 AVG 一起执行此操作 因此从选项卡中选择 avg a avg b avg d 所以
  • 在mysql连接字符串中添加应用程序名称/程序名称[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在寻找一种解决方案 在连接字符串中添加应用程序名称或程序名称 以便它在 MySQL Workbench 中的 客户端连接 下可见 SQL
  • 使用 MYSQL 将 h:mm pm/am 时间格式插入数据库

    我正在尝试将以 h mm am pm 格式写入的时间插入到存储为标准 DATETIME 格式 hh mm ss 的数据库中 但我不知道如何将发布的时间转换为标准格式所以数据库会接受它 这是我到目前为止一直在尝试的 title POST in
  • 无法连接到 MAMP 上的 phpMyAdmin

    我收到此错误消息 MySQL 说道 无法连接 设置无效 phpMyAdmin 尝试连接 MySQL 服务器 但服务器拒绝连接 您应该检查配置中的主机 用户名和密码 并确保它们与 MySQL 服务器管理员提供的信息相对应 用户和通行证是默认的
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • mysql 不带空字符串和 NULL 的不同值

    如何检索没有空字符串值和NULL值的mysql不同值 SELECT DISTINCT CON EMAILADDRESS AS E MAIL FROM STUDENT INNER JOIN CONTACT CON ON STUDENT CON
  • 使用什么框架来引导我的第一个生产 scala 项目?

    我正在第一次涉足 scala 的生产应用程序 该应用程序当前打包为 war 文件 我的计划是创建 scala 编译工件的 jar 文件 并将其添加到 war 文件的 lib 文件夹中 我的增强功能是通过 Jersey 公开的 mysql 支
  • 为什么我可以直接从 bash 执行 JAR?

    我是一个长期从事 Java 工作的人 并且知道运行带有主类的 JAR 的方法MANIFEST MFJar 中的文件很简单 java jar theJar jar 我用它来启动 Fabric3 服务器 包含在bin server jar在其标
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • CakePHP 查找 - 按字符串到整数排序?

    我想使用 CakePHP 从数据库中提取照片数组 按照片标题排序 0 1 2 3 我的查询当前看起来像 ss photos this gt Asset gt find all array conditions gt array kind g
  • 如何使用 MySQL 选择有特定值的 2 个连续行?

    我正在构建一个系统 该系统应该显示学生何时连续缺席两天 例如 此表包含缺勤情况 day id missed 2016 10 6 1 true 2016 10 6 2 true 2016 10 6 3 false 2016 10 7 1 tr
  • 奇怪的 MySQL Python mod_wsgi 无法连接到 'localhost' (49) 上的 MySQL 服务器问题

    StackOverflow上也有类似的问题 但我还没有发现完全相同的情况 这是在使用 MySQL 的 OS X Leopard 机器上 一些起始信息 MySQL Server version 5 1 30 Apache 2 2 13 Uni
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的

随机推荐

  • JAVA毕业设计课设源码分享50+例

    1 基于Springboot员工薪资管理系统 2 基于server jsp智能化停车场管理系统 3 基于SSM网上点餐系统 4 基于springboot商城购物系统 5 基于springboot中小学教务管理系统 6 基于springboo
  • 如何搭建测试环境

    1 首先检查环境和本地网络是否正确 环境就是检查系统版本是否符合开发要求 系统与本地是否能连接 2 找开发要软件包 安装数据库和服务器 把压缩包拖入 或rz 一键安装或单个yum install 3 上传项目包 确认上传的路径 文档 开发
  • vs更换本地git账号

    有人认为vs中用的git账号是哪个无所谓 其实不然 git账号不同 访问的权限就不一样 那么如果想跟换git账号该怎么做呢 win7 控制面板 gt 用户帐户和家庭安全 gt 凭据管理器 编辑普通凭据中的git账号或者直接删除 然后重启vs
  • rdesktop架构解析(RDP协议分析)

    转载自 http blog csdn net songbohr article details 5309650 本文立足于rdesktop的架构层次进行解析 算是抛砖引玉 国内对RDP协议深入解析的资料到本文发布时为空白 ps 昨天在nok
  • UVM基础-sequence library

    一 sequence library的用法 1 1 sequence library在环境中的使用 uvm sequence library定义为是一堆sequence的集合 本质上其实就是uvm sequence 只不过在普通的uvm s
  • Python实现一个情人节必备表白神器——跳动的爱心,基于tkinter实现

    前言 包子们 晚上好 一般能够看到这篇文章的小伙伴 不是单身狗 那也得是一个贵族 如果你有心仪的对象啦 如果你想表白一个女生啦 如果你还在想着怎么表白女神 这不是就给大家安排好了 跳动的爱心 怎么说呢 用这个表白也可以的 万一就成了呢 哈哈
  • GOF设计模式(04)桥接模式

    简介 一 定义 1 概念 桥接 Bridge 模式 将抽象部分与其实现部分分离 使得他们都可以独立地变化 它是一种对象结构型模式 又称为接口模式 桥接符合开闭原则和单一职责原则 2 理解 在使用桥接模式时 我们首先应该识别出一个类所具有的两
  • CNN、RNN用于时间序列预测的代码接口和数据格式详解(pytorch)

    网上对时序问题的代码详解很少 这里自己整理对CNN和RNN用于时序问题的代码部分记录 便于深入理解代码每步的操作 本文中涉及的代码 https github com EavanLi CNN RNN TSF a toy 一 1D CNN 1
  • [人工智能-深度学习-32]:卷积神经网络CNN - 常见分类网络- AlexNet网络结构分析与详解

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 120837261 目录 第1章 卷积神
  • Eclipse Mars(4.5.2) 安装Gradle 插件

    第一步 选择Eclipse Marketplace 第二步 搜索Buildship gradle插件 并安装 第三步 gradle 安装授权协议 第四步 点击confim 完成安装后要求重启 Eclipse 第五步 Eclipse查看是否有
  • 2023牛客暑假多校训练营2

    D The Game of Eating 贪心 题目说每个人只关心自己享用的菜肴 而不考虑他人 每个人的目标都是使得自己喜欢的菜肴尽可能多 也就是说每个人都很鸡贼 它们当下都是做出最有利于自己的选择 对于某一个人 他首先会算在他之后他最喜欢
  • 计算机探秘二 (算盘与二进制)

    上次我们说到如何将数字通过CPU的电路线 后面我们称为数据线 传给它 在说这个问题前 我们一起看下咱老祖宗发明的计算神器 算盘 它长这样的 算盘分上珠和下珠 下珠每个珠子表示一个 上珠每个珠子表示5个 上下珠之间有一根细长的圆杆相连 具体计
  • linux驱动程序运行优先级,如何调整Linux内核启动中的驱动初始化顺序(late_initcall和module_init)...

    在init h 中有如下定义 define pure initcall fn define initcall 0 fn 1 define core initcall fn define initcall 1 fn 1 define core
  • STM32串口IAP(YModem) (转载)

    在之前的 STM32串口IAP 一文中 通过传输数据流来升级程序 但是这种 裸 数据的传输方式存在这许多的问题 比如它没有容错机制 不能保证数据的正确传输 还比如说它无法获知升级文件的信息 导致它在判断何时停止接收数据上 犹豫不决 正式为了
  • Cobalt-Strike基本使用

    Cobalt Strike 简介 Cobalt Strike 简称为CS 是一款基于java的渗透测试工具 尤其是后渗透阶段 自3 0开始已经不再使用Metasploit框架而作为一个独立的平台使用 这款工具有其他很多渗透测试工具没有的团队
  • Git-远程仓库(GitLab)

    系列文章 Git 入门小结 Git 分支 Git 常用命令 Git 注册远程仓库 Git 远程仓库 1 生成SSH KEY ssh keygen t rsa C youremail xx com git里注册的邮箱 可以用git confi
  • MybatisPlus更新时会自动忽略传值为NULL的字段

    三种方案解决MybatisPlus更新时会自动忽略传值为NULL的字段 一 背景 二 解决方案 2 1 使用 TableField updateStrategy FieldStrategy IGNORED 注解添加在字段上 在枚举 Fiel
  • Python数据分析与大数据技术与应用高级教程

    Python数据分析与大数据技术与应用高级教程 教程地址 https www piaodoo com 课程目标 虚拟现实 增强现实及混合现实技术既密切相关 又有显著差别 培训课程旨在帮助学员深入理解这三者的思想精髓及其统一技术构架 梳理出V
  • Hexo 完整使用教程

    官网 官网地址 https hexo io zh cn 环境 1 node hexo 基于 node 所以首先要安装node环境 2 npm 包管理工具 环境配置请参考本站对应安装教程 快速开始 安装 hexo npm install g
  • Mysql数据库内联查询、左连接查询、右连接查询、自连接查询介绍

    目录 一 内联查询 1 inner join 只查询键值一致 交叉 的部分 2 演示 二 左连接 1 left join 以左表为标准 查询输出左表中没有的字段信息 2 演示 三 右连接 1 right join 以右表为标准 查询输出右表