zoukankan      html  css  js  c++  java
  • SQL Server数据查询之联接查询

    四:联接查询

    1.联接

    1.1内联接(inner join)

    1.2外联接(outer join)

    1.2.1左联接(left join)

    1.2.2右联接(right join)

    1.3交叉联接(cross join)

    2.内联接与自联接

    内联接:作用于两个表,一般通过两个表中相同的字段的关系(=/<>)建立联系

    自联接:作用于自身表的两个实例

    3.外联接

    1.左联接

    SQL LEFT JOIN 关键字

    LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

    LEFT JOIN 关键字语法

    SELECT column_name(s)FROM table_name1LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name

    注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。

    原始的表 (用在例子中的):

    "Persons" 表:

    Id_PLastNameFirstNameAddressCity
    1 Adams John Oxford Street London
    2 Bush George Fifth Avenue New York
    3 Carter Thomas Changan Street Beijing

    "Orders" 表:

    Id_OOrderNoId_P
    1 77895 3
    2 44678 3
    3 22456 1
    4 24562 1
    5 34764 65

    左连接(LEFT JOIN)实例

    现在,我们希望列出所有的人,以及他们的定购 - 如果有的话。

    您可以使用下面的 SELECT 语句:

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsLEFT JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName

    结果集:

    LastNameFirstNameOrderNo
    Adams John 22456
    Adams John 24562
    Carter Thomas 77895
    Carter Thomas 44678
    Bush George  

    LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的

    2.右联接

    SQL RIGHT JOIN 关键字

    RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

    RIGHT JOIN 关键字语法

    SELECT column_name(s)FROM table_name1RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name

    注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。

    原始的表 (用在例子中的):

    "Persons" 表:

    Id_PLastNameFirstNameAddressCity
    1 Adams John Oxford Street London
    2 Bush George Fifth Avenue New York
    3 Carter Thomas Changan Street Beijing

    "Orders" 表:

    Id_OOrderNoId_P
    1 77895 3
    2 44678 3
    3 22456 1
    4 24562 1
    5 34764 65

    右连接(RIGHT JOIN)实例

    现在,我们希望列出所有的定单,以及定购它们的人 - 如果有的话。

    您可以使用下面的 SELECT 语句:

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsRIGHT JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName

    结果集:

    LastNameFirstNameOrderNo
    Adams John 22456
    Adams John 24562
    Carter Thomas 77895
    Carter Thomas 44678
        34764

    RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。

    3.交叉联接(cross join)

  • 相关阅读:
    Android 常见工具类封装
    Android Logcat 封装类
    Android 四大组件之 " Activity "
    "浅谈Android"第一篇:Android系统简介
    罗列的书单
    关于多层架构一些思考
    LeetCode 330. Patching Array
    LeetCode 315. Count of Smaller Numbers After Self(线段树,树状数组)
    LeetCode 316. Remove Duplicate Letters(贪心)
    LeetCode 327. Count of Range Sum(线段树)
  • 原文地址:https://www.cnblogs.com/ProgrammerGE/p/1824571.html
Copyright © 2011-2022 走看看