MySQL 的内连接、左连接、右连接有什么区别?

MySQL 的内连接、左连接、右连接有什么区别?

在 MySQL 中,内连接(INNER JOIN)、左连接(LEFT JOIN 或 LEFT OUTER JOIN)和右连接(RIGHT JOIN 或 RIGHT OUTER JOIN)是用于合并两个或多个表中的数据的不同类型的连接操作。以下是它们之间的区别:

  1. 内连接(INNER JOIN):

    • 内连接返回两个表中匹配的行,即只返回在两个表中都存在的行。
    • 语法:SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;
  2. 左连接(LEFT JOIN 或 LEFT OUTER JOIN):

    • 左连接返回左表中的所有行,以及与右表中匹配的行。如果右表中没有匹配的行,返回的结果集中将包含 NULL 值。
    • 语法:SELECT * FROM table1 LEFT JOIN table2 ON table1.column = table2.column;
  3. 右连接(RIGHT JOIN 或 RIGHT OUTER JOIN):

    • 右连接返回右表中的所有行,以及与左表中匹配的行。如果左表中没有匹配的行,返回的结果集中将包含 NULL 值。
    • 语法:SELECT * FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;

下面是一个简单的示例,演示了内连接、左连接和右连接的用法:

示例数据:

-- 表1:employees
CREATE TABLE employees (emp_id INT PRIMARY KEY,emp_name VARCHAR(50),department_id INT
);-- 表2:departments
CREATE TABLE departments (department_id INT PRIMARY KEY,department_name VARCHAR(50)
);-- 数据示例
INSERT INTO employees (emp_id, emp_name, department_id) VALUES (1, 'Alice', 101);
INSERT INTO employees (emp_id, emp_name, department_id) VALUES (2, 'Bob', 102);
INSERT INTO employees (emp_id, emp_name, department_id) VALUES (3, 'Charlie', 101);
INSERT INTO departments (department_id, department_name) VALUES (101, 'HR');
INSERT INTO departments (department_id, department_name) VALUES (102, 'IT');

内连接示例:

-- 内连接返回 employees 和 departments 中 department_id 匹配的行
SELECT employees.emp_id, employees.emp_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;

左连接示例:

-- 左连接返回所有 employees 行,以及与 departments 中 department_id 匹配的行
SELECT employees.emp_id, employees.emp_name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;

右连接示例:

-- 右连接返回所有 departments 行,以及与 employees 中 department_id 匹配的行
SELECT employees.emp_id, employees.emp_name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.department_id;

在这个示例中,employees 表和 departments 表通过 department_id 列进行连接。不同类型的连接操作会返回不同的结果集,涉及到匹配行和 NULL 值的处理。

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

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

相关文章

MySQL入门教程-触发器

9.触发器 什么是触发器 触发器(trigger):监视某种情况,并进行某种操作,它的执行并不是程序调用,也不是手工启动,而是由事件来触发,例如:对一张表进行操作(插入,更新&…

跨进程通信 macOS XPC 创建实例

一:简介 XPC 是 macOS 里苹果官方比较推荐和安全的的进程间通信机制。 集成流程简单,但是比较绕。 主要需要集成 XPC Server 这个模块,这个模块最终会被 apple 的根进程 launchd 管理和以独立进程的方法唤起和关闭, 我们主app 进…

JNPF开发平台--初体验

这一两年低代码的概念很流行,我也在网上了解体验了一番。 目前低代码主要分为两种,第一种是与云平台绑定的低代码,在云平台上开发,直接发布到云平台;第二种是低代码框架,低代码项目,这种比较流行…

C# 使用ZXing.Net生成二维码和条码

写在前面 条码生成是一个经常需要处理的功能,本文介绍一个条码处理类库,ZXing用Java实现的多种格式的一维二维条码图像处理库,而ZXing.Net是其.Net版本的实现。 在WinForm下使用该类库需要从NuGet安装两个组件: ZXing.Net ZXing…

当钉钉宜搭有销售单据或客户审批时,自动同步到畅捷通T+Cloud,赋能企业部门之间的业务流程自动化

1 场景描述 随着数字化转型,对于大规模的企业来说,都会选择低代码系统来搭建内部流程来提高公司的管理效率,例如使用钉钉宜搭作为企业的数据库,用来存储客户、供应商、单据等数据。也会使用畅捷通TCloud作为ERP系统解决管理财务、…

Vue - 表单输入绑定详解

Vue.js 表单输入绑定详解 在Web开发中,表单是用户与应用程序交互的重要方式之一。Vue.js 提供了强大的表单输入绑定机制,使得在处理用户输入时变得更加简洁和高效。本篇博客将深入探讨 Vue.js 中表单输入绑定的各种用法,包括文本输入、多行文…

type 和 interface的异同

// 使用type定义一个类型 type Person {name: string;age: number; }// 使用interface定义一个类型 interface Animal {name: string;age: number; }// 使用type定义一个函数签名 type Add (a: number, b: number) > number;// 使用interface定义一个函数签名 interface S…

【python】可变变量与不可变变量

不可变类型(如整数和字符串) 当您创建一个不可变对象(如整数、字符串)时,Python实际上是将这个值存储在内存中的某个位置,并将变量名指向这个值。例如: lens 10 count lens在这种情况下&…

Github 2023-12-30 开源项目日报 Top10

根据Github Trendings的统计,今日(2023-12-30统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目4JavaScript项目2C项目1Python项目1Java项目1HTML项目1Dart项目1非开发语言项目1 令人惊叹的 …

2核2G3M服务器上传速度多少?以阿里云和腾讯云为例

2核2G3M服务器上传速度多少?上传是按10M带宽算,上传速度是1280KB/秒,即1.25M/秒;下载速度按3M带宽计算,下载速度是384KB/秒。本文是以阿里云为例的,阿里云服务器当公网带宽小于10M及10M以下时,上…

【51单片机系列】DS1302时钟模块扩展实验之与EEPROM结合使用只进行一次初始化工作

本文是关于时钟芯片DS1302的扩展实验。 文章目录 一、实验分析二、proteus仿真原理图三、软件设计及结果 本实验实现的目的:利用AT24C02掉电不丢失的功能,存储数据用来辨别DS1302时钟是否已经初始化,如果初始化就不执行DS1302初始化函数。 一…

【全网首发】洛谷P2678 [NOIP2015 提高组] 跳石头

Everyday English You don’t become what you want; you become whatyou believe. —Oprah Winfrey 你不是成为你想要的,你成为你所相信的。 洛谷P2678 [NOIP2015 提高组] 跳石头 题目描述 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔…

arduino esp32连接阿里云物联网平台,上传和请求数据的示例代码

要在Arduino ESP32上连接到阿里云物联网平台&#xff0c;并上传和请求数据&#xff0c;您可以使用 PubSubClient 库和 WiFi.h 库来实现。以下是一个示例代码&#xff0c;演示了如何使用MQTT协议将数据上传到阿里云物联网平台&#xff0c;并从平台上请求数据。 #include <Wi…

ansible_角色的使用

本章主要介绍ansible中角色的使用 了解什么是角色独立地写一个角色使用角色系统自带角色地使用 1.了解角色 正常情况下&#xff0c;配置一个服务如 apache时&#xff0c;要做一系列的操作:安装、拷贝、启动服务等。如果要在不同的机器上重复配置此服务&#xff0c;需要重新执…

新品出击 | 软网关BLIoTLink免费发布

新品出击|软网关BLIoTLink免费发布 BLIoTLink是一款免费的物联网协议转换软件&#xff0c;可以部署在任何基于Linux OS的系统&#xff08;Linux、Debian、Ubuntu、FreeRTOS、RT-Thread&#xff09;中&#xff0c;使用灵活&#xff0c;可以实现数据的采集以及接入网络平台。 BL…

ssm基于JavaEE的智能实时疫情监管服务平台的设计与实现+jsp论文

摘 要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完善的了&#xff0c;但是随着移动互联网的到来&#xff0c;处理信息不再受制于地理位置的限制&#xff0c;处理信息及时高效&#xff0c;备受人们的喜爱。本次开发一套智能实时疫情监管服务平台有管…

20231229 SQL基础50题打卡

20231229 SQL基础50题打卡 1661. 每台机器的进程平均运行时间 表: Activity ------------------------- | Column Name | Type | ------------------------- | machine_id | int | | process_id | int | | activity_type | enum | | timestamp …

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《面向平稳氢气需求的综合制氢系统鲁棒优化配置方法》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题涉及到针对平稳氢气需求的综合制氢系统鲁棒优化配置方法。让我们逐步解读这个标题的关键要素&#xff1a; 面向平稳氢气需求&#xff1a; 这部分指…

【开题报告】基于SpringBoot的茶文化宣传网站设计与实现

1.研究背景和意义 1.1研究背景 茶文化是中国传统文化的重要组成部分&#xff0c;具有悠久的历史和丰富的内涵。茶文化不仅是一种饮食文化&#xff0c;更是一种生活方式和精神追求。然而&#xff0c;在当今快节奏的生活中&#xff0c;茶文化逐渐被人们所忽视。为了加强对茶文化…

k8s之kudeadm

kubeadm来快速的搭建一个k8s的集群&#xff1a; 二进制搭建适合大集群&#xff0c;50台以上主机 kubeadm更适合中小企业的业务集群 master&#xff1a;192.168.233.91 docker kubelet lubeadm kubectl flannel node1:192.168.233.92 docker kubelet lubeadm kubectl flannel…