【MySQL】多表查询

article/2025/9/24 7:12:34

首先,为了方便说明问题,创建两个表emp(雇员信息)和dept(雇员部门信息),其数据如下:
这里写图片描述
在之前的博客中,我们分享了单表查询的方法,但是在实际应用中,我们要查的数据很可能不在同一个表中,而是来自于不同的表。多表查询如果不加任何条件,得到的结果称为笛卡尔积。
例如,查找雇员名、雇员工资以及部门所在的名字。
这里写图片描述
可以发现,结果是这样的,从第一个表中选出第一条记录,和第二个表中的所有所有记录进行组合,然后再从第一个表中取出第二条记录,和第二张表的所有记录进行组合,这样的结果是没有实际意义的。我们需要的是emp.deptno = dept.deptno字段的记录。
这里写图片描述

自连接

自连接是指在同一张表连接查询

  1. 显示员工FORD的上级领导的名字
    这里写图片描述

子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

单行子查询:子查询的查询结果只有一行
  1. 显示和SMITH同一部门的员工
    这里写图片描述
多行子查询(in ,all, any):返回多条记录的子查询
  1. 查询和10好部门的工作相同的官员的名字、工作、工资、部门号,但是不包括10号自己的信息
    这里写图片描述
  2. 显示工资比部门编号为30的所有员工的工资高的员工的姓名、工资和部门号
    这里写图片描述
  3. 显示工资比部门编号为30的任意员工的工资高的员工的姓名、工资和部门号
    这里写图片描述
多列子查询:查询返回多个列数据的子查询语句
  1. 查询和SMITH的部门和岗位完全相同的雇员,不含SMITH本人
    这里写图片描述
from子句中使用子查询
  1. 显示高于自己部门的平均工资的员工信息
    这里写图片描述
  2. 查找每个部门工资最高的人的ename, job, sal
    这里写图片描述
    3.显示每个部门的信息(部门名、编号、地址)和人员数量
    这里写图片描述
    这里有两种方法可以使用,但是经验证,当数据非常多的时候from子查询的效率是高于多表查询的。
删除表中的重复记录

已知一个表tt中有重复的数据

  1. 创建一张空表tmp_tt,空表的结构与表tt的结构相同;create table tmp_tt like tt;
  2. 将tt表进行distinct,将数据导入空表中;insert into tmp_tt select distinct * from tt;
  3. 删除原表ttdrop table tt;
  4. 将tmp_tt改名为ttalter table tmp_tt rename tt;
合并查询

  在实际应用中,为了合并多个select的执行结果,可以使用union,union all集合操作符

  1. union操作符用于取得两个结果的并集,并再自动去掉重复行
    查找工资大于2500和职位Manger的人
    这里写图片描述
    2. union all 与union类似,但是不会自动去重
    例如:与or类似
    这里写图片描述

外键

  外键定义主表和从表的关系,外键约束主要是定义在从表上,主表必须是有主键或者唯一键。当定义外键后,要求外键列数据必须在主表列存在或者为NULL。
  
  例如:创建一个主表class,从表stu
  这里写图片描述
  这里写图片描述
  由上图,我们可以知道主键不能为null,但是外键可以为null,同时不能存在外键有的数据而主表中不存在。


http://chatgpt.dhexx.cn/article/9jEecL6E.shtml

相关文章

mysql 多表查询

一、概念 多表查询也叫关联查询, 其就是指 一次性查询多张表,并且将每张表得到的数据联系作为查询结果 二、关键字 当我们需要一次查询两张表时,如果使用: select * from employees,departmaents; 这样的话会出现笛卡尔积错误 (笛卡尔积错…

数据库-MySQL-多表查询(总结)

目录 前言 多表查询概述 多表查询分类 1、连接查询 2、子查询 内连接 内连接查询语法 案例演示 外连接 外连接查询的语法 案例演示 联合查询-union,union all 子查询 概念 分类 标量子查询 自连接 自连接查询语法 案例演示 子查询 列子查询 行子查询 表子…

多表查询(整理)

一、多表关系 概述:项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间互相关联,所以各个表结构之间也存在着各种联系。 基本上有三种:…

mybatis多表查询

目录 前言 一、Mybatis多表查询 2.一对一查询(多对一) 2.2 一对多查询 2.3 多对多查询 2.4 知识小结 前言 mybatis初学者记录每日学习日常 提示:以下是本篇文章正文内容,下面案例可供参考 一、Mybatis多表查询 内连接、左外连…

多表查询(连接查询)

在使用数据库查询语句时,单表的查询有时候不能满足项目的业务需求,在项目开发过程中,有很多需求都是要涉及到多表的连接查询最终需要查询的数据来源于不同的表中时,这个时候需要考虑使用连接查询 新建一张员工表 -- emp drop t…

数据库高级——多表查询

多表查询 多表查询有如下几种: 合并结果集:union、union all连接查询: 2.1. 内连接:inner join on 2.2. 外连接:outer join on – 左外连接:left outer join – 右外连接:right outer join 2.…

MySQL多表查询

文章目录 一、什么是多表查询1、概述2、笛卡尔积现象 二、多表查询的分类1、等值连接 vs非等值连接2、自连接 vs 非自连接3、内连接 vs 外连接4、满外连接(FULL OUTER JOIN) 三、UNION[ALL]的使用四、7种SQL JOINS的实现 一、什么是多表查询 1、概述 多…

【MySQL】多表查询策略(多表联查子查询)

目录 一、MySQL多表查询 二、准备工作 1.运行环境 2.创建公司表 3.创建员工表 三、多表查询 (一)多表联查—同时查询多张表 1.联结 2.左连接 3.右连接 4.内连接 (二)子查询 1.SELECT子查询 2.WHERE子查询 3.FROM子…

MySQL----多表查询

MySQL----多表查询 多表关系表与表之间的联系:一对多(多对一)多对多一对一 多表查询多表查询的分类数据准备内连接外连接自连接联合查询子查询标量子查询列子查询行子查询表子查询 多表查询案例 多表关系 在进行数据库表结构的设计时,会根据业务的需求和…

SQL语句多表查询

多表查询 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键&a…

十、多表查询

十、多表查询 *多表查询的本质就是把多张表合并成一个临时表 1、多表数据合并方案 连接查询合并方案【最常见】 首先确保两张表之间存在【隶属关系】将两张表中的数据行【沿着水平方向进行拼接】最终得到一个拥有【完整隶属关系】的新数据行 联合查询合并方案 不需要两张表之…

图解数据库多表查询(多表联查)的几种方式

多表查询,也被称为多表连接查询。 为什么会有多表查询这个操作呢? 在实际项目开发过程中,会出现多张表,用于分类存储不同的信息,我们测试需要的数据也会来自不同的表,因此需要使用多表查询。 我们常用的…

史上最牛mysql-06 (多表连接)

多表连接 个人博客 :www.xiaobeigua.icu 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段&…

sql多表查询

1.多表查询概念:从多张表查询数据 2.分类:连接查询和子查询。 有两张表A、B 连接查询: 内连接 相当于查询A、B交集数据 例1:select * from emp,dept where emp.dep_iddept.id; 外连接 左外连接:相当于查询…

sql语句之多表查询

文章目录 一、笛卡尔积(交叉连接) ---->cross join1、概念2. 语法3.示例 二、内连接---->inner join1、概念2. 语法3.示例 三、外链接---->outer join1、概念2. 语法3.示例 四、联合连接---->union1、概念2.示例 一、笛卡尔积(交叉连接) ---->cross join 1、概…

连接查询(多表查询)——MySQL

连接查询(多表查询) 又称多表查询,当查询的字段涉及多个表的时候,就要用到连接查询 分类: 为表起别名: 提高语句的简洁度区分多个重名字段注意:如果为表起了别名,则查询的字段就不…

MySQL-多表查询

一、表架构 student(sid,sname,sage,ssex) 学生表course(cid,cname,tid) 课程表sc(sid,cid,score) 成绩表teacher(tid,tname) 教师表 二 、建表sql语句 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for course -- --…

Java中的XML解析

前言 这几天在手写Spring IOC的时候遇上了xml文件的解析,通过解析Spring.xml配制文件的方式来创建对象。因为之前从来都没遇见过相关的需求,所以对此做一份记录 XML (eXtensible Markup Language) 意为可扩展标记语言,被多数技术人员用以选择…

Java - XML文件解析

Java对XML文件的解析 一、前言二、实例分析 - DOM方式解析XML文件2.1 XMLDomParseUtil - 抽象工具类2.2 待解析xml文件示例2.3 解析xml文件2.3.1 新建一个用于存储xml文件中各节点的属性和属性值的类2.3.2 解析实际节点 2.4 测试 一、前言 1、HTTP网络传输中的数据组织方式有三…

Java解析XML文件的方式

在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求。一般来讲,有基于DOM树和SAX的两种解析xml文件的方式,在这部分里,…