Mysql学习笔记十一--表复制/合并查询/外连接

本文详细介绍了MySQL中的表复制方法,包括自我复制数据的实现及去除重复数据的策略。接着讨论了合并查询,通过`UNION`和`UNION ALL`操作符展示了如何合并多个SELECT结果。最后,解释了外连接的概念,如左外连接和右外连接,并通过实例展示了它们在处理缺失数据时的应用。虽然在实际开发中内连接更常见,但外连接在特定场景下至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 表复制

自我复制数据(蠕虫复制)
有时,为了对某个sql语句进行效率测试,我们需要海量的数据时,可以使用此法为表创建海量数据

演示如何自我复制
在这里插入图片描述
思考:如何去掉一张表中的重复数据
思路:

  1. 先创建一张临时表 my_tmp,该表的结构和 my_tab02 一样
    在这里插入图片描述

  2. 把 my_tmp 的记录,通过 distinct 关键字 处理后 , 把记录复制到 my_tmp
    在这里插入图片描述

  3. 清除 my_tab02 中的所有记录
    在这里插入图片描述

  4. 把 my_tmp 中的记录 复制到 my_tab02 中
    在这里插入图片描述

  5. drop 掉临时表 my_tmp
    在这里插入图片描述

2. 合并查询

有时在实际应用中,为了合并多个 select 语句的结果,可以使用集合操作符号 union,union all

  1. union all
    该操作符用于取得两个结果集的并集,当使用该操作符时,不会取消重复行
    在这里插入图片描述

  2. union
    该操作符用于取得两个结果集的并集,当使用该操作符时,会取消重复行
    在这里插入图片描述

3. 外连接

  1. 左外连接:如果左侧的表完全显示我们就说是左外连接
  2. 右外连接:如果右侧的表完全显示我们就说是右外连接

举例说明:

  • 创建两张表,一张存放名字,一张存放分数
    要求:显示所有人的成绩,如果没有成绩,也要显示该人的姓名和id号,成绩显示为空
    在这里插入图片描述
  • 若用多表查询的方式,则无法查询到成绩为空的人的结果
    在这里插入图片描述
  • 用左外连接的方式来查找,就可以将成绩为空的人的名字也显示出来
    说明:左外连接就是左侧表完全显示,所以会把stu的内容全部显示出来
    在这里插入图片描述
  • 用右外连接的方式来查找,就可以将成绩为空的人的名字也显示出来
    说明:右外连接就是右侧表完全显示,即使和左表没有匹配的记录,也会把exam的内容全部显示出来
    在这里插入图片描述

问题:列出部门名称和这些部门的员工名称和工作,同时要求显示出那些没有员工的部门
在这里插入图片描述

!!!在实际开发中,我们绝大多数情况下使用的是内连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值