日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

中國最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2

sql教程

SQL 教程

SQL 高級教程

SQL 函數

  • SQL 主機
  • SQL 總結
  • 實例/測驗

    拓展閱讀

    SQL 使用連接

    閱讀 (2383)

    SQL 使用連接

    SQL 連接(JOIN) 子句用于將數據庫中兩個或者兩個以上表中的記錄組合起來。連接通過共有值將不同表中的字段組合在一起。

    考慮下面兩個表,(a)CUSTOMERS 表:

        +----+----------+-----+-----------+----------+
        | ID | NAME     | AGE | ADDRESS   | SALARY   |
        +----+----------+-----+-----------+----------+
        |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
        |  2 | Khilan   |  25 | Delhi     |  1500.00 |
        |  3 | kaushik  |  23 | Kota      |  2000.00 |
        |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
        |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
        |  6 | Komal    |  22 | MP        |  4500.00 |
        |  7 | Muffy    |  24 | Indore    | 10000.00 |
        +----+----------+-----+-----------+----------+

    (b)另一個表是 ORDERS 表:

        +-----+---------------------+-------------+--------+
        |OID  | DATE                | CUSTOMER_ID | AMOUNT |
        +-----+---------------------+-------------+--------+
        | 102 | 2009-10-08 00:00:00 |           3 |   3000 |
        | 100 | 2009-10-08 00:00:00 |           3 |   1500 |
        | 101 | 2009-11-20 00:00:00 |           2 |   1560 |
        | 103 | 2008-05-20 00:00:00 |           4 |   2060 |
        +-----+---------------------+-------------+--------+

    現在,讓我們用 SELECT 語句將這個兩張表連接(JOIN)在一起:

        SQL> SELECT ID, NAME, AGE, AMOUNT
                FROM CUSTOMERS, ORDERS
                WHERE  CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

    上述語句的運行結果如下所示:

        +----+----------+-----+--------+
        | ID | NAME     | AGE | AMOUNT |
        +----+----------+-----+--------+
        |  3 | kaushik  |  23 |   3000 |
        |  3 | kaushik  |  23 |   1500 |
        |  2 | Khilan   |  25 |   1560 |
        |  4 | Chaitali |  25 |   2060 |
        +----+----------+-----+--------+

    SQL 連接類型

    SQL 中有多種不同的連接:

    • 內連接(INNER JOIN):當兩個表中都存在匹配時,才返回行。
    • 左連接(LEFT JOIN):返回左表中的所有行,即使右表中沒有匹配的行。
    • 右連接(RIGHT JOIN):返回右表中的所有行,即使左表中沒有匹配的行。
    • 全連接(FULL JOIN):只要某一個表存在匹配,就返回行。
    • 笛卡爾連接(CARTESIAN JOIN):返回兩個或者更多的表中記錄集的笛卡爾積。

    內連接

    最常用也最重要的連接形式是內連接,有時候也被稱作“EQUIJOIN”(等值連接)。

    內連接根據連接謂詞來組合兩個表中的字段,以創建一個新的結果表。SQL 查詢會比較逐個比較表 1 和表 2 中的每一條記錄,來尋找滿足連接謂詞的所有記錄對。當連接謂詞得以滿足時,所有滿足條件的記錄對的字段將會結合在一起構成結果表。

    語法:

    內連接的基本語法如下所示:

    SELECT table1.column1, table2.column2...
    FROM table1
    INNER JOIN table2
    ON table1.common_field = table2.common_field;

    示例:

    考慮如下兩個表格,(a)CUSTOMERS 表:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    (b)ORDERS 表:

    +-----+---------------------+-------------+--------+
    | OID | DATE                |          ID | AMOUNT |
    +-----+---------------------+-------------+--------+
    | 102 | 2009-10-08 00:00:00 |           3 |   3000 |
    | 100 | 2009-10-08 00:00:00 |           3 |   1500 |
    | 101 | 2009-11-20 00:00:00 |           2 |   1560 |
    | 103 | 2008-05-20 00:00:00 |           4 |   2060 |
    +-----+---------------------+-------------+--------+

    現在,讓我們用內連接將這兩個表連接在一起:

    SQL> SELECT  ID, NAME, AMOUNT, DATE
         FROM CUSTOMERS
         INNER JOIN ORDERS
         ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

    上述語句將會產生如下結果:

    +----+----------+--------+---------------------+
    | ID | NAME     | AMOUNT | DATE                |
    +----+----------+--------+---------------------+
    |  3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
    |  3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
    |  2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
    |  4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
    +----+----------+--------+---------------------+

    左連接

    左鏈接返回左表中的所有記錄,即是右表中沒有任何滿足匹配條件的記錄。這意味著,如果 ON 子句在右表中匹配到了 0 條記錄,該連接仍然會返回至少一條記錄,不過返回的記錄中所有來自右表的字段都為 NULL。

    這就意味著,左連接會返回左表中的所有記錄,加上右表中匹配到的記錄,或者是 NULL (如果連接謂詞無法匹配到任何記錄的話)。

    語法:

    左連接的基本語法如下所示:

    SELECT table1.column1, table2.column2...
    FROM table1
    LEFT JOIN table2
    ON table1.common_field = table2.common_field;

    這里,給出的條件可以是任何根據你的需要寫出的條件。

    示例:

    考慮如下兩個表格,(a)CUSTOMERS 表:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    (b)ORDERS 表:

    +-----+---------------------+-------------+--------+
    | OID | DATE                |          ID | AMOUNT |
    +-----+---------------------+-------------+--------+
    | 102 | 2009-10-08 00:00:00 |           3 |   3000 |
    | 100 | 2009-10-08 00:00:00 |           3 |   1500 |
    | 101 | 2009-11-20 00:00:00 |           2 |   1560 |
    | 103 | 2008-05-20 00:00:00 |           4 |   2060 |
    +-----+---------------------+-------------+--------+

    現在,讓我們用左連接將這兩個表連接在一起:

    SQL> SELECT  ID, NAME, AMOUNT, DATE
         FROM CUSTOMERS
         LEFT JOIN ORDERS
         ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

    上述語句將會產生如下結果:

    +----+----------+--------+---------------------+
    | ID | NAME     | AMOUNT | DATE                |
    +----+----------+--------+---------------------+
    |  1 | Ramesh   |   NULL | NULL                |
    |  2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
    |  3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
    |  3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
    |  4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
    |  5 | Hardik   |   NULL | NULL                |
    |  6 | Komal    |   NULL | NULL                |
    |  7 | Muffy    |   NULL | NULL                |
    +----+----------+--------+---------------------+

    右連接

    右鏈接返回右表中的所有記錄,即是左表中沒有任何滿足匹配條件的記錄。這意味著,如果 ON 子句在左表中匹配到了 0 條記錄,該連接仍然會返回至少一條記錄,不過返回的記錄中所有來自左表的字段都為 NULL。

    這就意味著,右連接會返回右表中的所有記錄,加上左表中匹配到的記錄,或者是 NULL (如果連接謂詞無法匹配到任何記錄的話)。

    語法:

    右連接的基本語法如下所示:

    SELECT table1.column1, table2.column2...
    FROM table1
    RIGHT JOIN table2
    ON table1.common_field = table2.common_field;

    這里,給出的條件可以是任何根據你的需要寫出的條件。

    示例:

    考慮如下兩個表格,(a)CUSTOMERS 表:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    (b)ORDERS 表:

    +-----+---------------------+-------------+--------+
    | OID | DATE                |          ID | AMOUNT |
    +-----+---------------------+-------------+--------+
    | 102 | 2009-10-08 00:00:00 |           3 |   3000 |
    | 100 | 2009-10-08 00:00:00 |           3 |   1500 |
    | 101 | 2009-11-20 00:00:00 |           2 |   1560 |
    | 103 | 2008-05-20 00:00:00 |           4 |   2060 |
    +-----+---------------------+-------------+--------+

    現在,讓我們用右連接將這兩個表連接在一起:

    SQL> SELECT  ID, NAME, AMOUNT, DATE
         FROM CUSTOMERS
         RIGHT JOIN ORDERS
         ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

    上述語句將會產生如下結果:

    +------+----------+--------+---------------------+
    | ID   | NAME     | AMOUNT | DATE                |
    +------+----------+--------+---------------------+
    |    3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
    |    3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
    |    2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
    |    4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
    +------+----------+--------+---------------------+

    全連接

    全連接將左連接和右連接的結果組合在一起。

    語法:

    全連接的基本語法如下所受:

    SELECT table1.column1, table2.column2...
    FROM table1
    FULL JOIN table2
    ON table1.common_field = table2.common_field;

    這里,給出的條件可以是任何根據你的需要寫出的條件。

    示例:

    考慮如下兩個表格,(a)CUSTOMERS 表:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    (b)ORDERS 表:

    +-----+---------------------+-------------+--------+
    | OID | DATE                |          ID | AMOUNT |
    +-----+---------------------+-------------+--------+
    | 102 | 2009-10-08 00:00:00 |           3 |   3000 |
    | 100 | 2009-10-08 00:00:00 |           3 |   1500 |
    | 101 | 2009-11-20 00:00:00 |           2 |   1560 |
    | 103 | 2008-05-20 00:00:00 |           4 |   2060 |
    +-----+---------------------+-------------+--------+

    現在讓我們用全連接將兩個表連接在一起:

    SQL> SELECT  ID, NAME, AMOUNT, DATE
         FROM CUSTOMERS
         FULL JOIN ORDERS
         ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

    上述語句將會產生如下結果:

    +------+----------+--------+---------------------+
    | ID   | NAME     | AMOUNT | DATE                |
    +------+----------+--------+---------------------+
    |    1 | Ramesh   |   NULL | NULL                |
    |    2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
    |    3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
    |    3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
    |    4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
    |    5 | Hardik   |   NULL | NULL                |
    |    6 | Komal    |   NULL | NULL                |
    |    7 | Muffy    |   NULL | NULL                |
    |    3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
    |    3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
    |    2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
    |    4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
    +------+----------+--------+---------------------+

    如果你所用的數據庫不支持全連接,比如 MySQL,那么你可以使用 UNION ALL子句來將左連接和右連接結果組合在一起:

    SQL> SELECT  ID, NAME, AMOUNT, DATE
         FROM CUSTOMERS
         LEFT JOIN ORDERS
         ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
    UNION ALL
         SELECT  ID, NAME, AMOUNT, DATE
         FROM CUSTOMERS
         RIGHT JOIN ORDERS
         ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID

    笛卡爾連接(交叉連接)

    笛卡爾連接或者交叉連接返回兩個或者更多的連接表中記錄的笛卡爾乘積。也就是說,它相當于連接謂詞總是為真或者缺少連接謂詞的內連接。

    語法:

    笛卡爾連接或者說交叉連接的基本語法如下所示:

    SELECT table1.column1, table2.column2...
    FROM  table1, table2 [, table3 ]

    示例:

    考慮如下兩個表格,(a)CUSTOMERS 表:
    
        +----+----------+-----+-----------+----------+
        | ID | NAME     | AGE | ADDRESS   | SALARY   |
        +----+----------+-----+-----------+----------+
        |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
        |  2 | Khilan   |  25 | Delhi     |  1500.00 |
        |  3 | kaushik  |  23 | Kota      |  2000.00 |
        |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
        |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
        |  6 | Komal    |  22 | MP        |  4500.00 |
        |  7 | Muffy    |  24 | Indore    | 10000.00 |
        +----+----------+-----+-----------+----------+
    
    (b)ORDERS 表:
    
        +-----+---------------------+-------------+--------+
        | OID | DATE                |          ID | AMOUNT |
        +-----+---------------------+-------------+--------+
        | 102 | 2009-10-08 00:00:00 |           3 |   3000 |
        | 100 | 2009-10-08 00:00:00 |           3 |   1500 |
        | 101 | 2009-11-20 00:00:00 |           2 |   1560 |
        | 103 | 2008-05-20 00:00:00 |           4 |   2060 |
        +-----+---------------------+-------------+--------+

    現在,讓我用內連接將這兩個表連接在一起:

    SQL> SELECT  ID, NAME, AMOUNT, DATE
         FROM CUSTOMERS, ORDERS;

    上述語句將會產生如下結果:

    +----+----------+--------+---------------------+
    | ID | NAME     | AMOUNT | DATE                |
    +----+----------+--------+---------------------+
    |  1 | Ramesh   |   3000 | 2009-10-08 00:00:00 |
    |  1 | Ramesh   |   1500 | 2009-10-08 00:00:00 |
    |  1 | Ramesh   |   1560 | 2009-11-20 00:00:00 |
    |  1 | Ramesh   |   2060 | 2008-05-20 00:00:00 |
    |  2 | Khilan   |   3000 | 2009-10-08 00:00:00 |
    |  2 | Khilan   |   1500 | 2009-10-08 00:00:00 |
    |  2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
    |  2 | Khilan   |   2060 | 2008-05-20 00:00:00 |
    |  3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
    |  3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
    |  3 | kaushik  |   1560 | 2009-11-20 00:00:00 |
    |  3 | kaushik  |   2060 | 2008-05-20 00:00:00 |
    |  4 | Chaitali |   3000 | 2009-10-08 00:00:00 |
    |  4 | Chaitali |   1500 | 2009-10-08 00:00:00 |
    |  4 | Chaitali |   1560 | 2009-11-20 00:00:00 |
    |  4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
    |  5 | Hardik   |   3000 | 2009-10-08 00:00:00 |
    |  5 | Hardik   |   1500 | 2009-10-08 00:00:00 |
    |  5 | Hardik   |   1560 | 2009-11-20 00:00:00 |
    |  5 | Hardik   |   2060 | 2008-05-20 00:00:00
    
    關閉
    程序員人生
    主站蜘蛛池模板: 中文字幕 av在线 | 久久成人免费视频 | 91成人网在线播放 | 亚洲欧洲自拍偷拍 | 欧美高清视频一区 | 国产毛片精品国产一区二区三区 | 在线国产一区 | 欧美3级| 国产精品www| 国产一区二区三区久久久 | 亚洲一区二区视频在线观看 | 久久免费高清视频 | h视频国产 | 亚洲午夜电影 | 国产色网站 | 成人免费视频播放 | av一区二区三区四区 | 国产精品久久久久久久久久久免费看 | www.中文字幕 | 成人黄色网址大全 | 精品一区视频 | 国产一级黄色片免费看 | 精品少妇一区二区三区日产乱码 | 精品在线99| 最近中文字幕免费在线观看 | 亚洲视频a | 久久精品中文字幕 | 99一区二区| 亚洲在线电影 | 日韩区欧美久久久无人区 | 国产精品日韩欧美一区二区 | 日韩精品在线观看一区 | 麻豆精品国产91久久久久久 | 国产日韩在线播放 | 久久精品视频一区二区 | 久久99精品国产一区二区三区 | 亚洲国产精品成人天堂 | 日产精品久久久久久久性色 | 国产精品福利在线观看 | 国产精品免费看 | 国产亚洲视频在线 |