亚洲精品中文字幕无码专区一,中文字幕av一区乱码深夜动态福利,粗大的内捧猛烈进出少妇

          系統城裝機大師 - 固鎮縣祥瑞電腦科技銷售部宣傳站!

          當前位置:首頁 > 數據庫 > MsSql > 詳細頁面

          SQL中的連接查詢詳解教程

          時間:2022-06-20來源:www.snowmanhill.com作者:電腦系統城

          Join 連接 (SQL Join)

          SQL Join (連接) 是利用不同數據表之間字段的關連性來結合多數據表之檢索。

          SQL Join是結合多個數據表而組成一抽象的暫時性數據表以供數據查詢,在原各數據表中之紀錄及結構皆不會因此連接查詢而改變。

          這是一個客戶數據表「customers」:

          C_Id

          Name

          City

          Address

          Phone

          1

          張一

          臺北市

          XX路100號

          02-12345678

          2

          王二

          新竹縣

          YY路200號

          03-12345678

          3

          李三

          高雄縣

          ZZ路300號

          07-12345678

          而這是產品訂單的數據表「orders」:

          O_Id

          OrderNo

          C_Id

          1

          2572

          3

          2

          7375

          3

          3

          7520

          1

          4

          1054

          1

          5

          1257

          5

          其中,C_Id 是客戶數據表中的主鍵 (Primary Key) 字段,我們怎么將這兩張不同的數據表依相關字段來作個連接結合以便查詢呢?這就是接下來的主題 Join!

          SQL 的 Join 查詢有哪幾種類型?

          • Inner Join : 內部連接

          • LEFT (OUTER) JOIN : 左外部連接

          • RIGHT (OUTER) JOIN : 右外部連接

          • FULL (OUTER) JOIN : 全部外部連接

          • CROSS JOIN : 交叉連接

          • NATURAL JOIN : 自然連接

          INNER JOIN - 內部連接

          INNER JOIN (內部連接) 為等值連接,必需指定等值連接的條件,而查詢結果只會返回符合連接條件的數據。

          INNER JOIN 語法 (SQL INNER JOIN Syntax)

          1
          2
          3
          4
          SELECT table_column1, table_column2···
          FROM table_name1
          INNER JOIN table_name2
          ON table_name1.column_name=table_name2.column_name;

          1
          2
          3
          4
          SELECT table_column1, table_column2···
          FROM table_name1
          INNER JOIN table_name2
          USING (column_name);

          INNER JOIN 查詢實例 (Example)

          現在我們想列出所有客戶的訂單編號數據,我們可以作一個 INNER JOIN 查詢:

          1
          2
          3
          4
          SELECT customers.Name, orders.Order_No
          FROM customers
          INNER JOIN orders
          ON customers.C_Id=orders.C_Id;

          其中用點號連接之「XXX.YYY」表示XXX數據表中的YYY字段。

          查詢結果如下:

          Name

          Order_No

          李三

          2572

          李三

          7375

          張一

          7520

          張一

          1054

          查詢結果只會返回符合連接條件的數據!

          LEFT JOIN - 左外部連接

          LEFT JOIN 可以用來建立左外部連接,查詢的 SQL 敘述句 LEFT JOIN 左側數據表 (table_name1) 的所有記錄都會加入到查詢結果中,即使右側數據表 (table_name2) 中的連接字段沒有符合的值也一樣。

          LEFT JOIN 語法 (SQL LEFT JOIN Syntax)

          1
          2
          3
          4
          SELECT table_column1, table_column2···
          FROM table_name1
          LEFT JOIN table_name2
          ON table_name1.column_name=table_name2.column_name;

          有些數據庫的語法會是LEFT OUTER JOIN。

          LEFT JOIN 查詢實例 (Example)

          現在我們想查詢所有客戶與其訂單狀況的數據,我們可以作一個 LEFT JOIN 查詢:

          1
          2
          3
          4
          SELECT customers.Name, orders.Order_No
          FROM customers
          LEFT JOIN orders
          ON customers.C_Id=orders.C_Id;

          查詢結果如下:

          Name

          Order_No

          張一

          7520

          張一

          1054

          王二

           

          李三

          2572

          李三

          7375

          LEFT JOIN會返回左側數據表中所有數據列,就算沒有符合連接條件,而右側數據表中如果沒有匹配的數據值就會顯示為「NULL」。

          RIGHT JOIN - 右外部連接

          相對于LEFT JOIN,RIGHT JOIN 可以用來建立右外部連接,查詢的 SQL 敘述句 RIGHT JOIN 右側數據表 (table_name2) 的所有記錄都會加入到查詢結果中,即使左側數據表 (table_name2) 中的連接字段沒有符合的值也一樣。

          RIGHT JOIN 語法 (SQL RIGHT JOIN Syntax)

          1
          2
          3
          4
          SELECT table_column1, table_column2···
          FROM table_name1
          RIGHT JOIN table_name2
          ON table_name1.column_name=table_name2.column_name;

          有些數據庫的語法會是RIGHT OUTER JOIN。

          RIGHT JOIN 查詢實例 (Example)

          現在我們想查詢所有訂單與相應的客戶之資料,我們可以作一個 RIGHT JOIN 查詢:

          1
          2
          3
          4
          SELECT customers.Name, orders.Order_No
          FROM customers
          RIGHT JOIN orders
          ON customers.C_Id=orders.C_Id;

          查詢結果如下:

          Name

          Order_No

          李三

          2572

          李三

          7375

          張一

          7520

          張一

          1054

           

          1257

          RIGHT JOIN會返回右側數據表中所有數據列,就算是沒有符合連接條件,而左側數據表中如果沒有匹配的數據值就會顯示為「NULL」。

          FULL JOIN - 全部外部連接

          FULL JOIN 即為 LEFT JOIN 與 RIGHT JOIN 的聯集,它會返回左右數據表中所有的紀錄,不論是否符合連接條件。

          FULL JOIN 語法 (SQL FULL JOIN Syntax)

          1
          2
          3
          4
          SELECT table_column1, table_column2···
          FROM table_name1
          FULL JOIN table_name2
          ON table_name1.column_name=table_name2.column_name;

          FULL JOIN 查詢實例 (Example)

          我們來作一個 FULL JOIN 查詢:

          1
          2
          3
          4
          SELECT customers.Name, orders.Order_No
          FROM customers
          FULL JOIN orders
          ON customers.C_Id=orders.C_Id;

          查詢結果如下:

          Name

          Order_No

          李三

          2572

          李三

          7375

          張一

          7520

          張一

          1054

           

          1257

          王二

           

          MySQL數據庫中沒有FULL JOIN,但是您可以用UNION來模擬。

          CROSS JOIN - 交叉連接

          交叉連接為兩個數據表間的笛卡兒乘積 (Cartesian product),兩個數據表在結合時,不指定任何條件,即將兩個數據表中所有的可能排列組合出來,以下例而言 CROSS JOIN 出來的結果資料列數為 3×5=15 筆,因此,當有WHERE、ON、USING條件時不建議使用。

          CROSS JOIN 語法 (SQL CROSS JOIN Syntax)

          1
          2
          3
          SELECT table_column1, table_column2···
          FROM table_name1
          CROSS JOIN table_name2;

          1
          2
          SELECT table_column1, table_column2···
          FROM table_name1, table_name2;

          1
          2
          3
          SELECT table_column1, table_column2···
          FROM table_name1
          JOIN table_name2;

          FULL JOIN 查詢實例 (Example)

          這是一個客戶數據表「customers」:

          C_Id

          Name

          City

          Address

          Phone

          1

          張一

          臺北市

          XX路100號

          02-12345678

          2

          王二

          新竹縣

          YY路200號

          03-12345678

          3

          李三

          高雄縣

          ZZ路300號

          07-12345678

          而這是產品訂單的數據表「orders」:

          O_Id

          Order_No

          C_Id

          1

          2572

          3

          2

          7375

          3

          3

          7520

          1

          4

          1054

          1

          5

          1257

          5

          我們來作一個 CROSS JOIN 查詢:

          1
          2
          3
          SELECT customers.Name, orders.Order_No
          FROM customers
          CROSS JOIN orders;

          查詢結果如下:

          Name

          Order_No

          張一

          2572

          王二

          2572

          李三

          2572

          張一

          7375

          王二

          7375

          李三

          7375

          張一

          7520

          王二

          7520

          李三

          7520

          張一

          1054

          王二

          1054

          李三

          1054

          張一

          1257

          王二

          1257

          李三

          1257

          NATURAL JOIN - 自然連接

          自然連接有 NATURAL JOIN、NATURAL LEFT JOIN、NATURAL RIGHT JOIN,兩個表格在進行 JOIN 時,加上 NATURAL 這個關鍵詞之后,兩數據表之間同名的字段會被自動結合在一起。

          NATURAL JOIN 語法 (SQL NATURAL JOIN Syntax)

          1
          2
          3
          SELECT table_column1, table_column2···
          FROM table_name1
          NATURAL JOIN table_name2;

          NATURAL JOIN 查詢實例 (Example)

          這是一個客戶數據表「customers」:

          C_Id

          Name

          City

          Address

          Phone

          1

          張一

          臺北市

          XX路100號

          02-12345678

          2

          王二

          新竹縣

          YY路200號

          03-12345678

          3

          李三

          高雄縣

          ZZ路300號

          07-12345678

          而這是產品訂單的數據表「orders」:

          O_Id

          Order_No

          C_Id

          1

          2572

          3

          2

          7375

          3

          3

          7520

          1

          4

          1054

          1

          5

          1257

          5

          現在我們想列出所有客戶的訂單編號數據,我們可以作一個 NATURAL JOIN 查詢:

          1
          2
          3
          SELECT customers.Name, orders.Order_No
          FROM customers
          NATURAL JOIN orders;

          查詢結果如下:

          Name

          Order_No

          李三

          2572

          李三

          7375

          張一

          7520

          張一

          1054

          注意到了嗎?返回結果同等于下面這個INNER JOIN查詢:

          1
          2
          3
          4
          SELECT customers.Name, orders.Order_No
          FROM customers
          INNER JOIN orders
          ON customers.C_Id=orders.C_Id;

          到此這篇關于SQL連接查詢的文章就介紹到這了。希望對大家的學習有所幫助。

          分享到:

          相關信息

          系統教程欄目

          欄目熱門教程

          人氣教程排行

          站長推薦

          熱門系統下載

          亚洲精品中文字幕无码专区一,中文字幕av一区乱码深夜动态福利,粗大的内捧猛烈进出少妇