INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN

2024-04-23 23:52
文章标签 join right left inner full

本文主要是介绍INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

联表查询是指在数据库中同时查询多个表,并通过它们之间的关联条件将结果合并在一起。这通常通过 SQL 中的 JOIN 操作来实现。常见的 JOIN 类型包括 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN。

让我们通过一个示例来说明联表查询的基本用法。假设有两个表:students 和 grades,它们的结构如下:

-- students 表
CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(100),grade_id INT
);-- grades 表
CREATE TABLE grades (id INT PRIMARY KEY,grade_name VARCHAR(100)
);

students 表包含学生的信息,其中 grade_id 是一个外键,指向 grades 表中的对应成绩的标识符。grades 表包含了成绩的信息。

现在,假设我们想要查询每个学生的姓名以及他们所属的成绩名称。我们可以使用 INNER JOIN 来实现:

SELECT students.name, grades.grade_name
FROM students
INNER JOIN grades ON students.grade_id = grades.id;

这条 SQL 查询会返回一个结果集,其中包含每个学生的姓名以及他们所属的成绩名称。INNER JOIN 会根据 students 表中的 grade_id 和 grades 表中的 id 进行匹配,然后将匹配的结果合并起来。

当涉及到多个表的联表查询时,不同类型的 JOIN 可以产生不同的结果。除了 INNER JOIN,还有 LEFT JOIN、RIGHT JOIN 和 FULL JOIN。下面我将用示例说明这些 JOIN 的用法:

假设我们有两个表 orderscustomers,分别存储订单和客户的信息。它们的结构如下:

-- orders 表
CREATE TABLE orders (order_id INT PRIMARY KEY,customer_id INT,order_date DATE
);-- customers 表
CREATE TABLE customers (customer_id INT PRIMARY KEY,customer_name VARCHAR(100)
);

  1. LEFT JOIN:LEFT JOIN 会返回左边表中的所有记录,即使在右边表中没有匹配项。

SELECT orders.order_id, orders.order_date, customers.customer_name
FROM orders
LEFT JOIN customers ON orders.customer_id = customers.customer_id;

这条查询会返回所有订单的信息,即使有些订单的客户信息在 customers 表中找不到匹配项。对于这些订单,customer_name 列会显示为 NULL。

  1. RIGHT JOIN:RIGHT JOIN 会返回右边表中的所有记录,即使在左边表中没有匹配项。

SELECT orders.order_id, orders.order_date, customers.customer_name
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.customer_id;

这条查询会返回所有客户的信息,即使有些客户没有下过订单。对于这些客户,order_idorder_date 列会显示为 NULL。

  1. FULL JOIN:FULL JOIN 会返回两个表中的所有记录,无论是否有匹配项。

SELECT orders.order_id, orders.order_date, customers.customer_name
FROM orders
FULL JOIN customers ON orders.customer_id = customers.customer_id;

这条查询会返回所有订单和客户的信息,并将它们合并在一起。如果某个订单没有匹配到客户,或者某个客户没有匹配到订单,对应的列会显示为 NULL。

这些是 LEFT JOIN、RIGHT JOIN 和 FULL JOIN 的用法示例。通过合理选择 JOIN 类型,可以根据需求获取不同的查询结果。

这篇关于INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/930217

相关文章

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

java String.join()的使用小结

《javaString.join()的使用小结》String.join()是Java8引入的一个实用方法,用于将多个字符串按照指定分隔符连接成一个字符串,本文主要介绍了javaString.join... 目录1. 方法定义2. 基本用法2.1 拼接多个字符串2.2 拼接集合中的字符串3. 使用场景和示例3

MySQL报错sql_mode=only_full_group_by的问题解决

《MySQL报错sql_mode=only_full_group_by的问题解决》本文主要介绍了MySQL报错sql_mode=only_full_group_by的问题解决,文中通过示例代码介绍的非... 目录报错信息DataGrip 报错还原Navicat 报错还原报错原因解决方案查看当前 sql mo

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php