该文章所用数据库仅供参考,语法适用所有数据库。
连接表
在数据库中,数据分布在多个逻辑表中。要获得完整的有意义的数据集,需要将这些表连接来查询表中的数据。
SQL Server支持多种连接,包括 [内连接],[左连接],[右连接],[全外连接]和[交叉连接]。
每种连接类型指定SQL Server如何使用一个表中的数据来选择另一个表中的行。
A. SQL Server内连接
内连接是SQL Server中最常用的连接之一。 内部联接子句用于查询来自两个或多个相关表的数据。
select * from production.products p
inner join production.brands b
on p.brand_id = b.brand_id
使用两个 INNER JOIN 子句来查询三个表中的数据:
SELECT
product_name,
category_name,
brand_name,
list_price
FROM
production.products p
INNER JOIN production.categories c ON c.category_id = p.category_id
INNER JOIN production.brands b ON b.brand_id = p.brand_id
ORDER BY
product_name DESC;
B. SQL Server左连接
LEFT JOIN 子句用于查询来自多个表的数据。
它返回左表中的所有行和右表中的匹配行。
如果在右表中找不到匹配的行,则使用 NULL 代替显示。
以下图说明了两个结果集的左连接结果:
---查询未销售给任何客户的产品
select * from production.products t1
left join sales.order_items t2
on t1.product_id = t2.product_id
order by t1