多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

中國最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2

sql教程

SQL 教程

SQL 高級教程

SQL 函數(shù)

  • SQL 主機(jī)
  • SQL 總結(jié)
  • 實(shí)例/測驗(yàn)

    拓展閱讀

    SQL 使用連接

    閱讀 (2379)

    SQL 使用連接

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

    考慮下面兩個表,(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 |
        +-----+---------------------+-------------+--------+

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

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

    上述語句的運(yùn)行結(jié)果如下所示:

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

    SQL 連接類型

    SQL 中有多種不同的連接:

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

    內(nèi)連接

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

    內(nèi)連接根據(jù)連接謂詞來組合兩個表中的字段,以創(chuàng)建一個新的結(jié)果表。SQL 查詢會比較逐個比較表 1 和表 2 中的每一條記錄,來尋找滿足連接謂詞的所有記錄對。當(dāng)連接謂詞得以滿足時,所有滿足條件的記錄對的字段將會結(jié)合在一起構(gòu)成結(jié)果表。

    語法:

    內(nèi)連接的基本語法如下所示:

    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 |
    +-----+---------------------+-------------+--------+

    現(xiàn)在,讓我們用內(nèi)連接將這兩個表連接在一起:

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

    上述語句將會產(chǎn)生如下結(jié)果:

    +----+----------+--------+---------------------+
    | 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;

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

    示例:

    考慮如下兩個表格,(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 |
    +-----+---------------------+-------------+--------+

    現(xiàn)在,讓我們用左連接將這兩個表連接在一起:

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

    上述語句將會產(chǎn)生如下結(jié)果:

    +----+----------+--------+---------------------+
    | 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;

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

    示例:

    考慮如下兩個表格,(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 |
    +-----+---------------------+-------------+--------+

    現(xiàn)在,讓我們用右連接將這兩個表連接在一起:

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

    上述語句將會產(chǎn)生如下結(jié)果:

    +------+----------+--------+---------------------+
    | 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 |
    +------+----------+--------+---------------------+

    全連接

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

    語法:

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

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

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

    示例:

    考慮如下兩個表格,(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 |
    +-----+---------------------+-------------+--------+

    現(xiàn)在讓我們用全連接將兩個表連接在一起:

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

    上述語句將會產(chǎn)生如下結(jié)果:

    +------+----------+--------+---------------------+
    | 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 |
    +------+----------+--------+---------------------+

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

    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

    笛卡爾連接(交叉連接)

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

    語法:

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

    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 |
        +-----+---------------------+-------------+--------+

    現(xiàn)在,讓我用內(nèi)連接將這兩個表連接在一起:

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

    上述語句將會產(chǎn)生如下結(jié)果:

    +----+----------+--------+---------------------+
    | 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
    
    關(guān)閉
    程序員人生
    主站蜘蛛池模板: 亚洲一二四区性毛片1在线 亚洲一个色 | jlzzjlzzjlzz亚洲女 | 动漫毛片 | 特级aa一级欧美毛片 | 免费人成在线观看视频色 | 国产v亚洲v天堂无码 | 国产亚洲片 | 五月婷婷在线观看 | 欧美亚洲精品在线 | 欧美18videosex性极品 | 法国18sexxxx性xxx| 亚洲国产日韩成人综合天堂 | 欧美超清性videosfreehd | 国产精品网站 夜色 | 国产日韩精品欧美一区视频 | 黄h视频在线观看视频 | 欧洲第一页 | 亚洲精品一区二区三区在线看 | 色综合久久综合欧美综合图片 | 国产成人精品福利网站人 | 噜噜啪啪 | 久久久久久久亚洲精品 | 中文字幕 国产 | 欧美性性性 | 日韩欧美视频在线播放 | a级片网站 | 国产欧美精品综合一区 | 国产精品久久久久久久久久久威 | 亚洲欧美不卡中文字幕 | 午夜三级三级三点在线 | 最近中文字幕mv免费视频 | 毛片美国| 中文亚洲日韩欧美 | 国产亚洲人成网站观看 | 牛仔裤美女国产精品毛片 | 免费一级做a爰片性色毛片 免费一看一级毛片 | 精品一区二区三区免费观看 | 91www在线观看| 亚洲精品老司机 | 在线高清美女视频免费看 | 250pp久久新 26uuu色噜噜欧美在线播放 |