一文掌握SQL的 joins 语法

 更新时间:2024年09月13日 14:43:13   作者:@Carey  
SQL JOIN是结合两个或多个表的数据的一种方式,INNER JOIN返回两表匹配的记录;LEFT JOIN返回左表所有记录及右表匹配记录;RIGHT JOIN返回右表所有记录及左表匹配记录;FULL JOIN返回两表中所有记录,无论是否匹配,这些JOIN类型有助于灵活查询和分析关系数据库中的数据

SQL 中的不同 JOIN 类型:

1. (INNER)JOIN(内连接):返回两个表中具有匹配值的记录。

2. LEFT(OUTER)JOIN(左外连接):返回左表中的所有记录,以及右表中与之匹配的记录。

3. RIGHT(OUTER)JOIN(右外连接):返回右表中的所有记录,以及左表中与之匹配的记录。

4. FULL(OUTER)JOIN(全外连接):返回在左表或右表中有匹配的所有记录。

现在详细举例说明:

假设我们有两个表 employees 和 departments:

employee_idnamedepartment_id
1Alice1
2Bob2
3DavidNULL

employees表

department_iddepartment_name
1HR
2Engineering
3Sales

departments表

 INNER JOIN 

SELECT employees.name, departments.department_name  //要查的字段
FROM employees  //表1
INNER JOIN departments ON employees.department_id = departments.department_id;  //表2,连接条件

结果是

namedepartment_name
AliceHR
BobEngineering

LEFT (OUTER) JOIN

LEFT JOIN 返回左表中的所有记录,以及右表中匹配的记录。如果右表中没有匹配的记录,则结果中包含 NULL。

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;
 

结果是

namedepartment_name
AliceHR
BobEngineering
DavidNULL

RIGHT (OUTER) JOIN

RIGHT JOIN 返回右表中的所有记录,以及左表中匹配的记录。如果左表中没有匹配的记录,则结果中包含 NULL。

SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.department_id;

结果是

namedepartment_name
AliceHR
BobEngineering
NULLSales

 FULL (OUTER) JOIN

FULL JOIN 返回两个表中的所有记录,当左表或右表中有匹配时返回匹配的记录。如果没有匹配,则结果中包含 NULL。

SELECT employees.name, departments.department_name
FROM employees
FULL JOIN departments ON employees.department_id = departments.department_id;
namedepartment_name
AliceHR
BobEngineering
DavidNULL
NULLSales

总结

  • INNER JOIN:只返回两个表中匹配的记录。
  • LEFT JOIN:返回左表中的所有记录,以及右表中匹配的记录。
  • RIGHT JOIN:返回右表中的所有记录,以及左表中匹配的记录。
  • FULL JOIN:返回两个表中的所有记录,当左表或右表中有匹配时返回匹配的记录。

希望这些示例能帮助你更好地理解 SQL 中的不同 JOIN 类型。

到此这篇关于SQL的 joins 语法的文章就介绍到这了,更多相关SQL joins 语法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MS-SQL Server 2005 其中三个版本的比较

    MS-SQL Server 2005 其中三个版本的比较

    MS-SQL Server 2005 其中三个版本的比较...
    2006-12-12
  • SQL Server SQL高级查询语句小结

    SQL Server SQL高级查询语句小结

    高级查询在数据库中用得是最频繁的,也是应用最广泛的。 学习sqlserver的朋友可以参考下。
    2011-07-07
  • 在SQL触发器或存储过程中获取在程序登录的用户

    在SQL触发器或存储过程中获取在程序登录的用户

    每个用户可以登录系统,在程序中操作数据(添加,更新和删除)需要实现记录操作跟踪。是谁添加,更新和删除的,这些信息将会插入至AuditLog表中
    2012-01-01
  • SQL Server数据库的备份和还原保姆级教程

    SQL Server数据库的备份和还原保姆级教程

    SQL Server备份和还原数据库是非常重要的操作,下面这篇文章主要给大家介绍了关于SQL Server数据库的备份和还原的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • 数据库清除日志文件(LDF文件过大)

    数据库清除日志文件(LDF文件过大)

    数据库清除日志文件,(LDF文件过大),一般情况下,有更简单的方法,需要在sqlserver查询执行。
    2009-11-11
  • sql server中死锁排查的全过程分享

    sql server中死锁排查的全过程分享

    死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。下面这篇文章主要给大家介绍了关于sql server中死锁排查的相关资料,需要的朋友可以参考下
    2018-05-05
  • SQLMAP插件tamper模块简介

    SQLMAP插件tamper模块简介

    这篇文章主要介绍了SQLMAP插件tamper模块介绍,在SQLMAP中,有很多tamper插件,常用的tamper插件及其作用本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Sql Server Management Studio连接Mysql的实现步骤

    Sql Server Management Studio连接Mysql的实现步骤

    本文主要介绍了Sql Server Management Studio连接Mysql的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • SQL Server查看服务器配置教程详解

    SQL Server查看服务器配置教程详解

    这篇文章主要为大家介绍了SQL Server查看服务器配置教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 教你几种在SQLServer中删除重复数据方法

    教你几种在SQLServer中删除重复数据方法

    数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
    2010-04-04

最新评论