最近用到了SQL Server 2012 相关内容,以此为契机,重新梳理一下SQL Server 相关的知识。
本系列文章不再介绍简单的SQL 语句(select,insert, update,delete等),系列文章将介绍高级SQL用法。本篇文章主要介绍Join用法(JOIN,LEFT JOIN , RIGHT JOIN,FULL JOIN)。
SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据.
有时候我们,为了得到完成的结果,需要从两个或者多个表中获取结果,这时候我们就需要执行Join操作。
![a0cb6ec011228338226d9a0846fdd49d.png](https://img-blog.csdnimg.cn/img_convert/a0cb6ec011228338226d9a0846fdd49d.png)
接下来的用例都会以这两张表作为基础。
![7cd458f543d201f3c24dffbe01329add.png](https://img-blog.csdnimg.cn/img_convert/7cd458f543d201f3c24dffbe01329add.png)
Persons 表
以及下面的Orders表。请注意:Id_P 列把两张表相关联起来。
![0267bec8f6113c8ea9ca4d9430aae479.png](https://img-blog.csdnimg.cn/img_convert/0267bec8f6113c8ea9ca4d9430aae479.png)
Orders表
Inner Join(与Join是相同的)
语法:
SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.cloumn_name=table_name2.cloumn_name
l例子:如果要列出所有人的订购,则可以使用下面语句:
SELECT P.LastName, P.FirstName,O.OrderNo FROM Persons AS P INNER JOIN Orders AS O ON P.Id_P = O.Id_P ORDER BY P.LastName
Left Join (左连接)
左连接关键字会从左边那里返回所有的行,即使在右表中没有匹配的行。
语法:
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.cloumn_name=table_name2.cloumn_name
例子:我们希望列出所有的人,以及他们的订购。则可以使用下面SQL
SELECT P.LastName, P.FirstName,O.OrderNo FROM Persons AS P LEFT JOIN Orders AS O ON P.Id_P = O.Id_P ORDER BY P.LastName
Right Join ( 右连接)
右连接关键字会从右边那里返回所有的行,即使在左表中没有匹配的行。
语法:
SELECT column_name(s) FROM table_name1 Right JOIN table_name2 ON table_name1.cloumn_name=table_name2.cloumn_name
例子:我们如果希望列出所有的订单,以及订购他们的人。可以使用下面语句:
SELECT P.LastName, P.FirstName,O.OrderNo FROM Persons AS P RIGHT JOIN Orders AS O ON P.Id_P = O.Id_P ORDER BY P.LastName
Full Join
full join: 只要某个表中存在匹配,FULL JOIN 关键字就会返回。
语法:
SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.cloumn_name=table_name2.cloumn_name
例子:
我们希望列出所有人以及他们的所有订单则可以使用:
SELECT P.LastName, P.FirstName,O.OrderNo FROM Persons AS P FULL JOIN Orders AS O ON P.Id_P = O.Id_P ORDER BY P.LastName
今天介绍Join三种高级SQL的用法,接下来会陆续介绍 check, create,union等高级用法。
如果有错误,请在评论区指出。