编程技术文章分享与教程

网站首页 > 技术文章 正文

SQL Server 2012 高级用法(三)之Join

hmc789 2024-11-16 20:54:37 技术文章 2 ℃

最近用到了SQL Server 2012 相关内容,以此为契机,重新梳理一下SQL Server 相关的知识。

本系列文章不再介绍简单的SQL 语句(select,insert, update,delete等),系列文章将介绍高级SQL用法。本篇文章主要介绍Join用法(JOIN,LEFT JOIN , RIGHT JOIN,FULL JOIN)。

SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据.

有时候我们,为了得到完成的结果,需要从两个或者多个表中获取结果,这时候我们就需要执行Join操作。


接下来的用例都会以这两张表作为基础。


以及下面的Orders表。请注意:Id_P 列把两张表相关联起来。


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等高级用法。

如果有错误,请在评论区指出。

Tags:

标签列表
最新留言