• Sql Server系列:多表连接查询


      连接查询是关系数据中最主要的查询,包括内连接、外连接等。通过连接运算符可以实现多个表查询。内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。SQL Server中的内连接有:等值连接和不等连接。

    1 内连接-相等连接

      相等连接又叫等值连接,在连接条件这使用等号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

      示例:

    SELECT [dbo].[Category].* , [dbo].[Product].*
    FROM [dbo].[Category] INNER JOIN [dbo].[Product]
    ON [dbo].[Category].[CategoryID] = [dbo].[Product].[CategoryID]
    复制代码
    SELECT p.[ProductCode], p.[ProductName], c.[CategoryName], d.[Quantity], d.[Subtotal]
    FROM [dbo].[Product] p
    INNER JOIN [dbo].[Category] c
        ON p.[CategoryID] = c.[CategoryID]
    INNER JOIN [dbo].[OrderDetails] d
        ON p.[ProductID] = d.[ProductID]
    复制代码

    2 带选择条件的连接

      带选择条件的连接查询是在连接查询的过程中,通过添加过滤条件限制查询的结果,使查询的结果更加准确。

      示例:

    SELECT [dbo].[Category].* , [dbo].[Product].*
    FROM [dbo].[Category] INNER JOIN [dbo].[Product]
    ON [dbo].[Category].[CategoryID] = [dbo].[Product].[CategoryID]
    AND [dbo].[Category].[CategoryID] = 1

    3 自连接

      如果在一个连接查询中,涉及到的两个表都是同一个表,这种查询称为自连接查询。自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表。

      示例:

    SELECT c1.CategoryID, c1.CategoryName
    FROM [dbo].[Category] c1 INNER JOIN [dbo].[Category] c2
    ON c1.[CategoryID] = c2.[ParentID]

    4 外连接

      连接查询将查询多个表中相关联的行,内连接时,返回查询结果集合中的仅是符号查询条件和连接条件的行,但有时需要包含没有关联的行中数据,即返回查询结果集合中的不仅包含符合连接条件的行,还需要包括左表(左外连接或左连接)、右表(右外连接或右连接)或者两个边接表(全外连接)中的所有数据行。外连接分为左外连接和右外连接。

      ◊ LEFT JOIN(左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。

      ◊ RIGHT JOIN(右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。

    4.1 左外连接

      左连接的结果包括LEFT OUTER JOIN关键字左边连接的表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集中右表的所有选择字段均为NULL。

      示例:

    SELECT [dbo].[Category].* , [dbo].[Product].*
    FROM [dbo].[Category] LEFT OUTER JOIN [dbo].[Product]
    ON [dbo].[Category].[CategoryID] = [dbo].[Product].[CategoryID]

    4.2 右外连接

      右连接将返回RIGHT OUTER JOIN关键字右边的表中的所有行。如果右表的某行在左表中没有匹配行,左表将返回NULL。

      示例:

    SELECT [dbo].[Category].* , [dbo].[Product].*
    FROM [dbo].[Category] RIGHT OUTER JOIN [dbo].[Product]
    ON [dbo].[Category].[CategoryID] = [dbo].[Product].[CategoryID]

    4.3 全外连接

      全外连接又称为完全外连接,该连接查询方式返回两个连接中所有的记录数据。根据匹配条件,如果满足匹配条件时,则返回数据;如果不满足匹配条件时,同样返回数据,但在相应的列中填入NULL,全外连接返回的结果集中包含了两个完全表的所有数据。全外连接关键字FULL OUTER JOIN。

      示例:

    SELECT [dbo].[Category].* , [dbo].[Product].*
    FROM [dbo].[Category] FULL OUTER JOIN [dbo].[Product]
    ON [dbo].[Category].[CategoryID] = [dbo].[Product].[CategoryID]
  • 相关阅读:
    nginx
    git命令
    mysql的优化
    nginx下的负载均衡
    IO模式和IO多路复用
    回顾java基础—Java数据类型
    解决jdk1.8上编译dubbo失败
    KB,Kb单位换算,网络带宽中的Kbps和KB/s到底是什么意思? (注:B和b的区别)
    生成器函数_yield_yield from_send
    推导式_集合
  • 原文地址:https://www.cnblogs.com/mafeng/p/8288536.html
Copyright © 2020-2023  润新知