一文掌握SQL的 joins 语法
SQL 中的不同 JOIN 类型:
1. (INNER)JOIN(内连接):返回两个表中具有匹配值的记录。
2. LEFT(OUTER)JOIN(左外连接):返回左表中的所有记录,以及右表中与之匹配的记录。
3. RIGHT(OUTER)JOIN(右外连接):返回右表中的所有记录,以及左表中与之匹配的记录。
4. FULL(OUTER)JOIN(全外连接):返回在左表或右表中有匹配的所有记录。
现在详细举例说明:
假设我们有两个表 employees 和 departments:
employee_id | name | department_id |
---|---|---|
1 | Alice | 1 |
2 | Bob | 2 |
3 | David | NULL |
employees表
department_id | department_name |
1 | HR |
2 | Engineering |
3 | Sales |
departments表
INNER JOIN
SELECT employees.name, departments.department_name //要查的字段 FROM employees //表1 INNER JOIN departments ON employees.department_id = departments.department_id; //表2,连接条件
结果是
name | department_name |
Alice | HR |
Bob | Engineering |
LEFT (OUTER) JOIN
LEFT JOIN 返回左表中的所有记录,以及右表中匹配的记录。如果右表中没有匹配的记录,则结果中包含 NULL。
SELECT employees.name, departments.department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.department_id;
结果是
name | department_name |
Alice | HR |
Bob | Engineering |
David | NULL |
RIGHT (OUTER) JOIN
RIGHT JOIN 返回右表中的所有记录,以及左表中匹配的记录。如果左表中没有匹配的记录,则结果中包含 NULL。
SELECT employees.name, departments.department_name FROM employees RIGHT JOIN departments ON employees.department_id = departments.department_id;
结果是
name | department_name |
Alice | HR |
Bob | Engineering |
NULL | Sales |
FULL (OUTER) JOIN
FULL JOIN 返回两个表中的所有记录,当左表或右表中有匹配时返回匹配的记录。如果没有匹配,则结果中包含 NULL。
SELECT employees.name, departments.department_name FROM employees FULL JOIN departments ON employees.department_id = departments.department_id;
name | department_name |
Alice | HR |
Bob | Engineering |
David | NULL |
NULL | Sales |
总结
- INNER JOIN:只返回两个表中匹配的记录。
- LEFT JOIN:返回左表中的所有记录,以及右表中匹配的记录。
- RIGHT JOIN:返回右表中的所有记录,以及左表中匹配的记录。
- FULL JOIN:返回两个表中的所有记录,当左表或右表中有匹配时返回匹配的记录。
希望这些示例能帮助你更好地理解 SQL 中的不同 JOIN 类型。
到此这篇关于SQL的 joins 语法的文章就介绍到这了,更多相关SQL joins 语法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SQL Server附加数据库报错:无法为该请求检索数据错误解决办法
在SQL Server中附加数据库时可能会发生各种错误,这篇文章主要给大家介绍了关于SQL Server附加数据库报错:无法为该请求检索数据错误的解决办法,文中通过图文介绍的非常详细,需要的朋友可以参考下2023-12-12SQL Server误区30日谈 第6天 有关NULL位图的三个误区
NULL位图是为了确定行中的哪一列是NULL值,哪一列不是。这样做的目的是当Select语句后包含存在NULL值的列时,避免了存储引擎去读所有的行来查看是否是NULL,从而提升了性能2013-01-01SQL server数据库declare和set用法技巧小结
这篇文章主要给大家介绍了关于SQL server数据库declare和set用法技巧的相关资料,在SQL Server中,DECLARE用于声明变量和存储过程中的参数,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2023-08-08
最新评论