数据库中的原表
---------------------------------------------------------------------
Persons表:
| P_Id | name | address |
| 1 | 张三丰 | 光明顶45号 |
| 2 | 李四光 | 中华路112号 |
| 3 | 王五龙 | 南京路8号 |
Orders表:
| O_id | order_no | P_id |
| 1 | 1111 | 3 |
| 2 | 1122 | 3 |
| 3 | 1134 | 1 |
| 4 | 1177 | 1 |
| 5 | 1200 | 5 |
内连接INNERJOIN(或者JOIN)
---------------------------------------------------------------------
两个表中只有都满足条件的才显示,显示最少:
SELECT Persons.name, Orders.order_no FROMPersons INNER JOIN Orders ON Persons.P_id=Orders.P_id ORDER BY Orders.order_no
结果集:
| name | order_no |
| 王五龙 | 1111 |
| 王五龙 | 1122 |
| 张三丰 | 1134 |
| 张三丰 | 1177 |
左连接LEFTJOIN(或者LEFT OUTER JOIN)
---------------------------------------------------------------------
左表中无论有没满足条件的都全显示,右表只有满足条件的才显示:
SELECT Persons.name, Orders.order_no FROMPersons LEFT JOIN Orders ON Persons.P_id=Orders.P_id ORDER BY Orders.order_no
结果集:
| name | order_no |
| 王五龙 | 1111 |
| 王五龙 | 1122 |
| 张三丰 | 1134 |
| 张三丰 | 1177 |
| 李四光 |
|
右连接RIGHTJOIN(或者RIGHT OUTER JOIN)
---------------------------------------------------------------------
右表中无论有没满足条件的都全显示,左表只有满足条件的才显示:
SELECT Persons.name, Orders.order_no FROMPersons RIGHT JOIN Orders ON Persons.P_id=Orders.P_id ORDER BY Orders.order_no
结果集:
| name | order_no |
| 王五龙 | 1111 |
| 王五龙 | 1122 |
| 张三丰 | 1134 |
| 张三丰 | 1177 |
|
| 1200 |
全连接FULLJOIN(或者FULL OUTER JOIN)
---------------------------------------------------------------------
两个表中只要有满足条件的都全显示,显示最多:
SELECT Persons.name, Orders.order_no FROMPersons FULL JOIN Orders ON Persons.P_id=Orders.P_id ORDER BY Orders.order_no
结果集:
| name | order_no |
| 王五龙 | 1111 |
| 王五龙 | 1122 |
| 张三丰 | 1134 |
| 张三丰 | 1177 |
|
| 1200 |
| 李四光 |
|
本文详细介绍了SQL中的四种连接类型:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)及全连接(FULL JOIN)。通过具体的数据库表数据和查询结果展示了不同连接方式的特点和应用场景。

623

被折叠的 条评论
为什么被折叠?



