Mysql数据库DQL查询语言之表连接(联合查询)

表连接

关系字段:两表中有关联关系的字段

\关系字段:两表之间存在关系的字段

  • 什么是表连接?

    • 当我们的查询结果需要从多张表中获取时,此时应该让表之间建立连接,同时获取数据

内连接

  • 特点:同时对连接双方做约束,双方只有符合连接条件的数据才会进行显示

select 表名.列名, 表名.列名,...
from 表名1 inner join 表名2
on 连接条件  -- 两表间的关系字段
-- 查询员工的id、工资与部门名称-- 第一步:确定数据来自于哪些表-- 第二步:确定两表之间的关系字段-- 书写表连接完成查询操作
​
select  e.employee_id 员工id,e.salary 员工工资,d.department_name  -- 基于连接结果进行查询操作
from employees e inner join departments d -- 起别名,方便后续书写
on e.department_id=d.department_id -- 关系字段:员工表的部门id=部门表的部门id

from-->join on:确定数据来源

select:查询操作

左外连接

  • 特点:左表中的数据无论如何都会显示,右表中的数据只有符合连接条件才会显示

select 表名.列名, 表名.列名,...
from 左表 left outer join 右表
on 连接条件  -- 两表间的关系字段
-- 使用左外连接显示员工信息及其部门信息
select e.*,d.*
from employees e left outer join departments d -- 员工信息无论如何都会显示,部门信息符合连接条件才会显示
on e.department_id=d.department_id

右外连接

  • 特点:右表中的数据无论如何都会显示,左表中的数据只有符合连接条件才会显示

select 表名.列名, 表名.列名,...
from 左表 right outer join 右表
on 连接条件  -- 两表间的关系字段
-- 使用右外连接显示部门信息及对应员工信息
select  e.*,d.*
from employees e right outer join departments d
on e.department_id=d.department_id

连接关键字中的inner、outer可以省略

全外连接(了解)

  • 特点:对双方都不做约束

  • 作用:将两个查询结果进行合并

查询结果1 union 查询结果2
  • 使用:

    1. 合并双方字段数目、内容必须一致

    2. union关键字可以去重

    3. union all 不会对结果去重

-- 查询员工表所有信息
select employee_id,first_name,salary from employees
union all -- 合并,不去重
-- 查询员工表所有信息
select employee_id,first_name,salary from employees

自连接

  • 特点:是特殊的表连接,参与连接的是同一张表

  • 使用:

    • 表中的两个字段为关系字段,作为连接条件

      -- 按照指定要求查询员工信息:员工id,员工姓名,直接领导的id,直接领导的姓名
      select e1.employee_id 员工id,e1.first_name 员工姓名,e1.manager_id 领导id,e2.first_name 领导姓名
      from employees e1 left join employees e2 -- e1:员工信息  e2:领导信息
      on e1.manager_id=e2.employee_id  -- 连接条件:员工的领导id=领导的员工id
    • 连接双方判断同一字段,作为连接条件

      -- 查询工资相同的员工id及其工资
      select e1.employee_id,e1.salary,e2.employee_id,e2.salary
      from employees e1 left join employees e2 -- 连接参与比较的两个员工
      on e1.salary=e2.salary -- 两个员工的工资相同
      where e1.employee_id>e2.employee_id
  1. 如果查询字段来自于多张表,内连接或左外连接

  2. 如果查询字段来自于一张表并且来自同一行数据,则简单查询|子查询

  3. 如果查询字段来自于一张表但是不来自于同一行数据。则自连接

多表连接

  • 特点:同时从多张表中获取数据

select 表名.列名, 表名.列名,...
from 表1 left join 表2
on 连接条件  -- 表1和表2的关系字段
left join 表3
on 连接条件  -- 表1和表3的关系字段|表2和表3的关系字段
-- 查询员工id,员工姓名,所属部门id,部门名称,部门所在城市
select e.employee_id,e.first_name,d.department_id,d.department_name,l.city
from employees e left join departments d  -- 先让员工表和部门表建立连接
on e.department_id=d.department_id  -- 员工的部门id=部门的id
left join locations l  -- 再让地址表参与连接
on d.location_id=l.location_id  -- 部门表的地址id=地址表的id

实际开发中,不建议表连接超过3张表,否则会有性能问题

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

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

相关文章

[BUUCTF]-PWN:babyfengshui_33c3_2016解析

又是一道堆题,先看保护 关键信息是32位,没开pie 直接看ida 大致是alloc创建堆块,free释放堆块,show查看堆块内容,fill填充堆块内容 其他的都没啥关键的要讲,但alloc那里非常需要解析一下 解释如上图 再具…

做外贸指定货代,想不到的麻烦

最近在外贸群里看到小伙伴们对指定货代的吐槽以及自己遇到的糟心事,写下来,也为我们今后遇到客户指定货代的时候提个醒。 小伙伴A说,因为客户设计的包装有问题,被海关查验,然后客户的指定货代要求小伙伴支付高于货值的…

向量库与嵌入模型

简介 非结构化数据 世界上大约超过百分之八十的数据都是非结构化数据,例如:图像、音视频、自然语言等,这些模型不遵循预定义的模式或组织方式,可以使用各种人工智能 (AI) 和机器学习 (ML) 模型转换为向量。 嵌入向量&#xff0…

用ChatGPT教学、科研!大学与OpenAI合作

亚利桑那州立大学(简称“ASU”)在官网宣布与OpenAI达成技术合作。从2024年2月份开始,为所有学生提供ChatGPT企业版访问权限,主要用于学习、课程作业和学术研究等。 为了帮助学生更好地学习ChatGPT和大语言模型产品,AS…

01.Elasticsearch应用(一)

Elasticsearch应用(一) 1.什么是ELK ELK是一个免费开源的日志分析架构技术栈总称,包含三大基础组件,分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据搜索、分析和…

nodejs学习计划--(六)包管理工具

包管理工具 1. 介绍 包是什么 『包』英文单词是 package ,代表了一组特定功能的源码集合包管理工具 管理『包』的应用软件,可以对「包」进行 下载安装 , 更新 , 删除 , 上传 等操作 借助包管理工具,可以快…

【若依】前后端分离框架部署

1.拉取若依项目代码 进入若依 基于SpringBootVue前后端分离的Java快速开发框架,并通过相应协议拉取到本地IDE 2.前端部署 2.1.下载nodejs 进入nodejs官网下载所需版本, 完成后在命令行运行npm -v可查询版本 2.2.配置依赖 在若依ui目录下运行 np…

oracle古法unwrap手艺(oracle存储过程解码)

先说骚话 首先oracle官方是不支持解包的,见Doc ID 376303.1 但是需求来了。我就寄希望于民间大神的工具。很顺利,找到了几个,甚至还有网页版,以为是个easy money。 但是,我点背,总是能遇到精彩的情况。数…

Android开发--状态栏布局隐藏的方法

1.问题如下,安卓布局很不协调 2.先将ActionBar设置为NoActionBar 先打开styles.xml 3.使用工具类 package com.afison.newfault.utils;import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.graph…

【Elasticsearch篇】详解使用RestClient操作索引库的相关操作

文章目录 🍔什么是Elasticsearch🌺什么是RestClient🎆代码操作⭐初始化RestClient⭐使用RestClient操作索引库⭐使用RestClient删除索引库⭐使用RestClient判断索引库是否存在 🍔什么是Elasticsearch Elasticsearch是一个开源的分…

SpringBoot 统计更多Api接口SQL相关日志信息

统计(查询,更新,批量更新)SQL执行次数及用时并输出log import com.zhangziwa.practisesvr.utils.log.LogContext; import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.plugin.Intercepts…

什么是通配监听端口? 什么是通配监听IP?

什么是通配监听端口? 监听端口: 指的是服务器或服务开启的特定TCP或UDP端口号,等待客户端连接或发送数据。TCP/IP协议下每个端口只能由一个服务独占监听,一个服务或应用会指定监听特定的一个或多个端口来接收客户端的连接请求。 例如 Web…

RocketMQ-Windows版本安装

RocketMQ-Windows版本安装 1.环境准备 JDK和maven需要先安装好,我这里使用的JDK1.8版本 Maven 3.8.6版本。需要注意的是,这里配置java时需要指定JAVA_HOME环境变量 RokectMQ才能正常启动。 2.下载RocketMQ 官网下载: https://rocketmq.apache.org/z…

C++读取txt文件中的逐个字符

为了增加读取的灵活性,所以separator和filename都设置为在主函数中获取输入或者在函数中传参的视线方法 举个例子,txt文件如下: household;2;true; 首先声明一个读取数据的文件 void read_data_file(const string& filename,char se…

Matplotlib Mastery: 从基础到高级的数据可视化指南【第30篇—python:数据可视化】

文章目录 Matplotlib: 强大的数据可视化工具1. 基础1.1 安装Matplotlib1.2 创建第一个简单的图表1.3 图表的基本组件:标题、轴标签、图例 2. 常见图表类型2.1 折线图2.2 散点图2.3 条形图2.4 直方图 3. 图表样式与定制3.1 颜色、线型、标记的定制3.2 背景样式与颜色…

CC工具箱使用指南:【属性映射】

一、简介 在规划工作中,经常会遇到这样一种情况,有一组一一对应的值。 比如用地编码和用地名称,用地编码【0101】和用地名称【水田】是对应的。 当你在用地编码字段输入【0101】时,用地名称值就必须为【水田】。 当我们确定用地…

gin路由篇

1. 基本路由 gin 框架中采用的路由库是基于httprouter做的 import ("net/http""github.com/gin-gonic/gin" )func main() {// 1.创建路由r : gin.Default()// 2.绑定路由规则,执行的函数// gin.Context,封装了request和responser.…

Nacos源码下载与运行

早先在linux环境下搭建过nacos环境 即Centos安装部署nacos实战,本次是从官网上下载源码,本地运行看看,记录过程,方便备查。 第一步、Nacos源码下载 推荐到nacos官网下载 Github地址,本次选择最新版,1.4.7…

查看Pytorch的GPU是否可用

查看Pytorch的GPU是否可用 import torch torch.cuda.is_available()返回为True表示 Pytorch 的 GPU 可用,返回为False表示 Pytorch 的 GPU 不可用。 其余命令: # 查看cuda是否可用 torch.cuda.is_available() # 返回当前设备索引 torch.cuda.current_d…

Kubeadm安装单master多node节点K8S集群

kubeadm安装k8s1.25版本集群步骤 环境说明实验环境规划集群搭建规划 初始化安装k8s集群的实验环境安装虚拟机更新yum源和操作系统配置机器主机名配置主机hosts文件,相互之间通过主机名互相访问配置主机之间无密码登录关闭交换分区swap,提升性能修改机器内…