SQL JOIN
SQL Join
2023-09-11 14:18:46 时间
简介
SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
Join 和 Key
有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。
数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。
请看 "Persons" 表:
Id_P
|
LastName
|
FirstName
|
Address
|
City
|
---|---|---|---|---|
1
|
Adams
|
John
|
Oxford Street
|
London
|
2
|
Bush
|
George
|
Fifth Avenue
|
New York
|
3
|
Carter
|
Thomas
|
Changan Street
|
Beijing
|
请注意,"Id_P" 列是 Persons 表中的的主键。这意味着没有两行能够拥有相同的 Id_P。即使两个人的姓名完全相同,Id_P 也可以区分他们。
接下来请看 "Orders" 表:
Id_O
|
OrderNo
|
Id_P
|
---|---|---|
1
|
77895
|
3
|
2
|
44678
|
3
|
3
|
22456
|
1
|
4
|
24562
|
1
|
5
|
34764
|
65
|
请注意,"Id_O" 列是 Orders 表中的的主键,同时,"Orders" 表中的 "Id_P" 列用于引用 "Persons" 表中的人,而无需使用他们的确切姓名。
请留意,"Id_P" 列把上面的两个表联系了起来。
引用
我们可以通过引用两个表的方式,从两个表中获取数据:
谁订购了产品,并且他们订购了什么产品?
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE _P = _P 结果集:
LastName
|
FirstName
|
OrderNo
|
---|---|---|
Adams
|
John
|
22456
|
Adams
|
John
|
24562
|
Carter
|
Thomas
|
77895
|
Carter
|
Thomas
|
44678
|
除了上面的方法,我们也可以使用关键词 JOIN 来从两个表中获取数据。
如果我们希望列出所有人的定购,可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON d_P =.Id_P ORDER BY Persons.LastName 结果集:
LastName
|
FirstName
|
OrderNo
|
---|---|---|
Adams
|
John
|
22456
|
Adams
|
John
|
24562
|
Carter
|
Thomas
|
77895
|
Carter
|
Thomas
|
44678
|
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
相关文章
- SQL Server-聚焦INNER JOIN AND IN性能分析(十四)
- LINQ体验(6)——LINQ to SQL语句之Join和Order By
- Sql server在另一台服务器,在Visual Studio 中没问题,IIS中 提示“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。。。。”
- SQL Server 2016 Always Encrypted
- 【T-SQL】分布抽取部分数据
- SQL语句中 LEFT JOIN 后 ON 和 WHERE 的区别
- SQL中用一句sql语句将数据库中的两列值进行交换
- 第五章 SQL聚合函数 %DLIST
- 04SQL - SQL连接 left join
- [转]mysql大表更新sql的优化策略
- 解决bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
- SQL触发器实例讲解
- 使用PL/SQL将sql脚本数据导入数据库
- SQL教程之 掌握 SQL GROUP BY 的 5 个实用 SQL 示例(含完整sql与测试数据)
- Flink SQL 如何实现数据流的 Join?
- 《SQL与关系数据库理论——如何编写健壮的SQL代码》一1.6 关系的性质
- Sql语句优化-查询两表不同行NOT IN、NOT EXISTS、连接查询Left Join
- SQL Server-聚焦IN VS EXISTS VS JOIN性能分析(十九)
- SQL Server死锁排查
- PowerDesigner 逆向工程Non SQL Error : Could not load class com.mysql.jdbc.Driver
- 图形化SQL JOIN
- 15道Hive SQL经典训练提升题
- [Oracle工程师手记] 利用 DBMS_SQLTUNE.report_sql_monitor 生成 SQL 语句的监控信息
- (4.17)sql server中的uuid获取与使用
- (2.2)sql server函数,sql server自定义函数/表值函数与存储过程
- 转载:sql用逗号连接多张表对应哪个join?
- SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)