SQL基本操作——JOIN多表联查

更新时间:2023-07-01 23:02:57 阅读: 评论:0

SQL基本操作——JOIN多表联查
基本概念
join :⽤于根据两个或多个表中的列之间的关系,从这些表中查询数据。
join和key:有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执⾏ join。数据库中的表可通过键将彼此联系起来。主键(Primary Key)是⼀个列,在这个列中的每⼀⾏的值都是唯⼀的。在表中,每个主键的值都是唯⼀的。这样做的⽬的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在⼀起。
基本使⽤
请看 "Persons" 表:
演示文稿制作请注意,"Id_P" 列是 Persons 表中的的主键。这意味着没有两⾏能够拥有相同的 Id_P。即使两个⼈的姓名完全相同,Id_P 也可以区分他们。
接下来请看 "Orders" 表:
请注意,"Id_O" 列是 Orders 表中的的主键,同时,"Orders" 表中的 "Id_P" 列⽤于引⽤ "Persons" 表中的⼈,⽽⽆需使⽤他们的确切姓名。
台风命名表请留意,"Id_P" 列把上⾯的两个表联系了起来。
我们可以通过引⽤两个表的⽅式,从两个表中获取数据:谁订购了产品,并且他们订购了什么产品?
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P
结果集:
SQL JOIN—使⽤JOIN:除了上⾯的⽅法,我们也可以使⽤关键词 JOIN 来从两个表中获取数据。如果我们希望列出所有⼈的定购,可以使⽤下⾯的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
不同的SQL JOIN:除了我们在上⾯的例⼦中使⽤的 INNER JOIN(内连接),我们还可以使⽤其他⼏种连接。下⾯列出了您可以使⽤的JOIN 类型,以及它们之间的差异。
1、JOIN: 如果表中有⾄少⼀个匹配,则返回⾏
2、LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的⾏
3、RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的⾏
4、FULL JOIN: 只要其中⼀个表中存在匹配,就返回⾏
INNER JOIN:在表中存在⾄少⼀个匹配时,INNER JOIN 关键字返回⾏。INNER JOIN 关键字在表中存在⾄少⼀个匹配时返回⾏。如果"Persons" 中的⾏在 "Orders" 中没有匹配,就不会列出这些⾏,例⼦在上⾯已经写过。
LEFT JOIN:会从左表 (table_name1) 那⾥返回所有的⾏,即使在右表 (table_name2) 中没有匹配的⾏。注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。
现在,我们希望列出所有的⼈,以及他们的定购 - 如果有的话。LEFT JOIN 关键字会从左表 (Persons) 那⾥返回所有的⾏,即使在右表(Orders) 中没有匹配的⾏。您可以使⽤下⾯的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
光速qaON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集:
LastName FirstName OrderNo Adams John 22456Adams
John 24562Carter
Thomas 77895Carter
水星路由器管理员密码
Thomas 44678Bush
George  LastName FirstName OrderNo Adams
John 22456Adams
联合利华品牌John 24562Carter
Thomas 77895Carter
Thomas 44678
34764LastName FirstName OrderNo Adams
了解的同义词John 22456Adams
John 24562Carter
Thomas 77895Carter五子棋入门
Thomas 44678Bush
George
34764
RIGHT JOIN :会右表 (table_name2) 那⾥返回所有的⾏,即使在左表 (table_name1) 中没有匹配的⾏。注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN 。
现在,我们希望列出所有的定单,以及定购它们的⼈ - 如果有的话。RIGHT JOIN 关键字会从右表 (Orders) 那⾥返回所有的⾏,即使在左表(Persons) 中没有匹配的⾏。您可以使⽤下⾯的 SELECT 语句:
结果集:
FULL JOIN :只要其中某个表存在匹配,FULL JOIN 关键字就会返回⾏。注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN 。现在,我们希望列出所有的⼈,以及他们的定单,以及所有的定单,以及定购它们的⼈。FULL JOIN 关键字会从左表 (Persons) 和右表
一帆风顺花
(Orders) 那⾥返回所有的⾏。如果 "Persons" 中的⾏在表 "Orders" 中没有匹配,或者如果 "Orders" 中的⾏在表 "Persons" 中没有匹配,这些⾏同样会列出。您可以使⽤下⾯的 SELECT 语句:
SELECT  Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM  Persons
FULL  JOIN  Orders
ON  Persons.Id_P =Orders.Id_P
ORDER  BY  Persons.LastName 结果集:
参考:

本文发布于:2023-07-01 23:02:57,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1073028.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:匹配   表中   没有   列出   数据   结果   主键   存在
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图