MySQL的多表数据记录查询笔记

news2024/11/17 19:52:07

关系数据操作

合并查询数据记录

在MySQL中通过关键字UNION来实现并操作,即可以通过其将多个SELECT语句的查询结果合并在一起组成新的关系。

两张表,表1 和表2
在这里插入图片描述

在这里插入图片描述

带有关键字UNION的合并操作

关键字UNION会把查询结果集直接合并在一起,同时将会去掉重复数据记录

select name,sex from employee UNION select name,sex from employee_1 

在这里插入图片描述
查询出来7条数据,经过了去重

带有关键字UNION ALL的合并操作

关键字UNION ALL会把查询结果集直接合并在一起。

select name,sex from employee UNION ALL select name,sex from employee_1 

在这里插入图片描述

内连接查询

在MySQL中内连接数据查询通过SQL语句INNER JOIN...ON来实现。

select field1 field2 ...fieldn from join_tablename1 inner join
	join_tablename2 [inner join join_tablenamen] on join_condition
自连接

内连接查询中存在一种特殊的等值连接 - 自连接,所谓自连接就是指表与其自身进行连接。

雇员表

  • empno 雇员ID
  • ename 雇员姓名
  • job 雇员职位
  • mgr 雇员上级领导ID
  • sal 雇员薪资
  • deptno 雇员部门
    在这里插入图片描述
    现在就是需要查询出雇员的上级领导是谁
select e.empno,e.ename,e.job,e.sal,l.ename as mgrname from employee e inner join employee l on e.mgr
 = l.empno

在这里插入图片描述

等值连接

内连接查询中的等值连接,就是在关键字ON后的匹配条件中通过关系运算符(=)来实现等值条件。

一张部门表

  • deptno 部门ID
  • deptname 部门名称

在这里插入图片描述

查询每个雇员的姓名、部门

select  e.ename,e.job,e.sal,d.deptname from employee e inner join dept d on e.deptno
 = d.deptno

在这里插入图片描述
上述连接也可以使用ANSI连接语法形式

select  e.ename,e.job,e.sal,d.deptname from employee e , dept d where e.deptno
 = d.deptno
不等连接

内连接查询中的不等连接,就是在关键字ON后的匹配条件中通过除了等于关系运算符来实现不等条件外,可以使用的关系运算符包括“>”、“>=”、“<”、“<=”和“!=”等运算符号。

外连接查询

在MySQL中,外连接查询会返回所操作表中至少一个表的所有数据记录。

select field1 field2 ...fieldn from jon_tablename1 left | right | full [outer] join join_tablename2 
on join_condition
左外连接

外连接查询中的左外连接,就是指新关系中执行匹配条件时,以关键字left join左边的表未参考表。

上述等值连接中,只有三条数据,但是如果我改成左外连接

select e.empno,e.ename,e.job,e.sal,l.ename as mgrname from employee e left join employee l on e.mgr
 = l.empno

在这里插入图片描述
这边没有匹配上也能全部显示出来。

右外连接

外连接查询中的右外连接,就是值新关系中执行匹配条件时,以关键字right join右边的表未参考表。但是跟左外连接是一个意思,换个位置的事情。

左外连接:

  • 左外连接以左表为基准,返回左表中的所有记录,并将符合联接条件的右表记录合并。
  • 如果左表中的记录在右表中没有匹配的记录,则右表中的列值将被设置为NULL。
    左外连接可以通过使用LEFT JOIN关键字来执行。

右外连接:

  • 右外连接以右表为基准,返回右表中的所有记录,并将符合联接条件的左表记录合并。
  • 如果右表中的记录在左表中没有匹配的记录,则左表中的列值将被设置为NULL。
    右外连接可以通过使用RIGHT JOIN关键字来执行。

总之,左外连接和右外连接的区别在于联接的基准表不同。左外连接返回左表的所有记录,而右外连接返回右表

全外连接

它将两个表中的所有记录都进行匹配,并返回包含两个表中所有记录的结果集。当两个表中的主键不匹配时,返回的结果集中会包含NULL值。

FULL JOIN的语法通常如下:

SELECT * FROM table1 FULL JOIN table2 ON table1.column = table2.column;

这将返回一个包含table1和table2中所有记录的结果集,无论是否存在匹配项。如果没有匹配项,返回的结果集中对应的列值为NULL。FULL JOIN可以用来查找两个表中的所有数据,并比较它们之间的关系。

但是我发现我的MySQL 5.7.14版本竟然不能使用。

那可以考虑这么使用

SELECT * FROM Table1 A LEFT JOIN Table2 B ON A.id=B.id
UNION
SELECT * FROM Table1 A RIGHT JOIN Table2 B ON A.id=B.id
SELECT * FROM employee A LEFT JOIN dept B ON A.deptno=B.deptno
UNION
SELECT * FROM employee A RIGHT JOIN dept B ON A.deptno=B.deptno

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1390370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

现代控制理论基础

在学习卡尔曼滤波、粒子滤波、隐马尔可夫模型时候&#xff0c;经常会提到状态方程的概念&#xff0c;这边联想到当时学习过的一门课程现代控制理论&#xff0c;这边就简单回顾一下吧。在回顾之前&#xff0c;串联下高等数学中微分方程的知识点。 一. 微分方程 高等数学上册第…

今年的年终奖开了个寂寞

大家好啊&#xff0c;我是董董灿。 年底了&#xff0c;又到了一些公司开年终奖的时候了&#xff0c;往年这个时候&#xff0c;网上都是争相"炫富"的声音。 还记得去年某公司&#xff0c;在春节前一下子开出了十几个月的年终奖&#xff0c;让我羡慕了好长时间。 可…

JAVAEE——request对象(三)

1. request对象 1.1 知识点 &#xff08;1&#xff09;乱码问题的两种解决方式 &#xff08;2&#xff09;post和get提交的区别 &#xff08;3&#xff09;request接收同名参数的问题 1.2 具体内容 使用request接收参数 <%page contentType"text/html; charsetut…

深入理解 go chan

go 里面&#xff0c;在实际程序运行的过程中&#xff0c;往往会有很多协程在执行&#xff0c;通过启动多个协程的方式&#xff0c;我们可以更高效地利用系统资源。 而不同协程之间往往需要进行通信&#xff0c;不同于以往多线程程序的那种通信方式&#xff0c;在 go 里面是通过…

C++ Primer 6.3 返回类型和return语句 知识点+练习题

C Primer 6.3 返回类型和return语句 无返回值函数有返回值的函数两个错误值是如何被返回的返回类类型的函数和调用运算符引用返回左值列表初始化返回值主函数main的返回值返回数组指针 递归练习题疑问待更新 无返回值函数 用在返回值类型为void的函数中&#xff0c;可以不写re…

01章【JAVA开发入门】

计算机基本概念 计算机组成原理 计算机组装 计算机&#xff1a;电子计算机&#xff0c;俗称电脑。是一种能够按照程序运行&#xff0c;自动、高速处理海量数据的现代化智能电子设备。由硬件和软件所组成&#xff0c;没有安装任何软件的计算机称为裸机。常见的形式有台式计算机、…

浅析五种 React 组件设计模式

作为一名 React 开发者&#xff0c;你可能会面临下面几个问题&#xff1a; 如何构建一个高复用度性的组件&#xff0c;使其适应不同的业务场景&#xff1f;如何构建一个具有简单 API的组件&#xff0c;使其易于使用&#xff1f;如何构建一个在 UI 和功能方面具有可扩展性的组件…

Vue3-TS中的接口-泛型-自定义类型

1首先一般在src下新建types文件夹&#xff0c;用来存放接口类型 2定义一个接口&#xff0c;用于限制person对象的具体属性 当需要用这个类型形成数组时&#xff0c;有2种写法 export type Persons Array<PersonInter> export type Persons PersonInter[] 3在文件中使…

检索增强生成技术(RAG)深度优化指南:原理、挑战、措施、展望

ChatGPT、Midjourney等生成式人工智能&#xff08;GenAI&#xff09;在文本生成、文本到图像生成等任务中表现出令人印象深刻的性能。然而&#xff0c;生成模型也不能避免其固有的局限性&#xff0c;包括产生幻觉的倾向&#xff0c;在数学能力弱&#xff0c;而且缺乏可解释性。…

C++基础算法之贪心

临渊羡鱼 不如退而结网 &#x1f3a5;烟雨长虹&#xff0c;孤鹜齐飞的个人主页 &#x1f525;个人专栏 寒假带大家手撕算法 期待小伙伴们的支持与关注&#xff01;&#xff01;&#xff01; 目录 贪心算法的简介 贪心算法的介绍# 贪心的基本原理# 贪心的局限性# 贪心的特征# 贪…

用julia演示蝴蝶效应:洛伦兹吸引子

文章目录 Lorentz吸引子julia绘图关闭抗锯齿 蝴蝶效应的名字来源于蝴蝶扇动翅膀的动作&#xff0c;虽然这个动作微小&#xff0c;但可能会在数周后引起飓风等极端天气的发生。这种现象表明&#xff0c;微小的变化可能会被放大并产生非线性的结果。这个概念最早由美国气象学家爱…

【开源】基于JAVA的康复中心管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员模块 三、系统展示四、核心代码4.1 查询康复护理4.2 新增康复训练4.3 查询房间4.4 查询来访4.5 新增用药 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的康复中…

C++中map按照从大到小的顺序存储元素

map按照从大到小存储元素 引言map的大致介绍概述 场景误区示例示例代码&#xff08;方法一&#xff09;运行结果示例代码二&#xff08;方法二&#xff09;运行结果 引言 在对map的使用中&#xff0c;由于对业务的需要&#xff0c;希望map中存储元素能够按照键的大小从大到小的…

【EI会议征稿通知】2024年第三届能源互联网及能源交互技术国际会议(EIEIT 2024)

2024年第三届能源互联网及能源交互技术国际会议(EIEIT 2024) 2024 3rd International Conference on the Energy Internet and Energy Interactive Technology 随着EIEIT前2届的成功举办&#xff0c;我们很荣幸地宣布&#xff0c;2024年第三届能源互联网及能源交互技术国际学术…

牛客周赛 Round 6 解题报告 | 珂学家 | 数学场

前言 一切都是命运的安排。 整体评价 这场整体感觉有点简单&#xff0c;D题感觉不错&#xff0c;E题应该是超纲了。整场还是偏数学&#xff0c;个人还是喜欢Round 4/Round 5. A. 游游的数字圈 简单模拟题 0,6,9对应一个圆圈8对应2个圆圈 import java.io.BufferedInputStrea…

spring-boot集成mybait-plus+shareding实现分表分库,dynamic动态数据多数据源

spring-boot集成mybait-plusshareding实现分表分库&#xff0c;多数据源 1. Spring-boot集成shareding Mybatis-plus依赖引用yaml 配置示例 2. 引用 dynamic实现分表动态数据源依赖引用yaml配置数据源注入配置示例 说明&#xff1a; 以下内容为两部分&#xff1a; …

黑马苍穹外卖学习Day7

文章目录 缓存菜品实现思路代码开发 缓存套餐Spring Cache入门案例实现思路代码开发 添加购物车需求分析和设计代码开发 查看购物车需求分析代码开发 清空购物车需求分析代码实现 缓存菜品 实现思路 代码开发 Controller层 RestController("userDishController") …

C# new Thread和Task.Run,多线程(Thread和Task)

一、开启多线程-new Thread的使用 示例一 Thread thread25yi new Thread(new ThreadStart(obj.MethodTimer1)); thread25yi.Start(); void MethodTimer1() { while (true) { Console.WriteLine(DateTime.Now.ToString() "_" thread25yi.CurrentThread.Managed…

Github搭建图床 github搭建静态资源库 免费CDN加速 github搭建图床使用 jsdelivr CDN免费加速访问

Github搭建图床 github搭建静态资源库 免费CDN加速 github搭建图床使用 jsdelivr CDN免费加速访问 前言1、创建仓库2、开启 gh-pages页面功能3、访问测试 前言 写博客文章时&#xff0c;图片的上传和存放是一个问题&#xff0c;使用小众第三方图床&#xff0c;怕不稳定和倒闭&…