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数据库内联查询、左连接查询、右连接查询、自连接查询介绍 的相关文章

  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • 批量删除文件名中包含 BASH 中特殊字符的子字符串

    我的目录中有一个文件列表 opencv calib3d so2410 so opencv contrib so2410 so opencv core so2410 so opencv features2d so2410 so opencv
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 如何将ElasticSearch与MySQL集成?

    在我的一个项目中 我计划将 ElasticSearch 与 MySQL 结合使用 我已经成功安装ElasticSearch 我可以单独管理ES中的索引 但我不知道如何用 MySQL 实现同样的功能 我读过一些文件 但我有点困惑 没有明确的想
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 如何使用 Perl 更改 mysql 密码

    我需要使用 Perl 脚本更改一些 mysql 密码 以下内容在更改数据库条目时有效 但是当我针对 mysql 用户更改修改它时 它将它们重置为空白密码 最后 刷新权限 也很好 但我还没有找到方法 usr bin perl use DBI
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希

随机推荐

  • 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 以右表为标准 查询输出右表