人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

SQL中的連接查詢詳解

發(fā)布日期:2022-07-15 19:31 | 文章來源:gibhub

Join連接(SQL Join)

SQL Join (連接)是利用不同數(shù)據(jù)表之間字段的關(guān)連性來結(jié)合多數(shù)據(jù)表之檢索。

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

這是一個客戶數(shù)據(jù)表「customers」:

C_Id

Name

City

Address

Phone

1

張一

臺北市

XX路100號

02-12345678

2

王二

新竹縣

YY路200號

03-12345678

3

李三

高雄縣

ZZ路300號

07-12345678

而這是產(chǎn)品訂單的數(shù)據(jù)表「orders」:

O_Id

OrderNo

C_Id

1

2572

3

2

7375

3

3

7520

1

4

1054

1

5

1257

5

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

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

  • Inner Join :內(nèi)部連接

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

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

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

  • CROSS JOIN :交叉連接

  • NATURAL JOIN :自然連接

INNER JOIN-內(nèi)部連接

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

INNER JOIN語法(SQL INNER JOIN Syntax)

SELECT table_column1, table_column2···
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name;

SELECT table_column1, table_column2···
FROM table_name1
INNER JOIN table_name2
USING (column_name);

INNER JOIN查詢實例(Example)

現(xiàn)在我們想列出所有客戶的訂單編號數(shù)據(jù),我們可以作一個INNER JOIN查詢:

SELECT customers.Name, orders.Order_No
FROM customers
INNER JOIN orders
ON customers.C_Id=orders.C_Id;

其中用點(diǎn)號連接之「XXX.YYY」表示XXX數(shù)據(jù)表中的YYY字段。

查詢結(jié)果如下:

Name

Order_No

李三

2572

李三

7375

張一

7520

張一

1054

查詢結(jié)果只會返回符合連接條件的數(shù)據(jù)!

LEFT JOIN-左外部連接

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

LEFT JOIN語法(SQL LEFT JOIN Syntax)

SELECT table_column1, table_column2···
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name;

有些數(shù)據(jù)庫的語法會是LEFT OUTER JOIN。

LEFT JOIN查詢實例(Example)

現(xiàn)在我們想查詢所有客戶與其訂單狀況的數(shù)據(jù),我們可以作一個LEFT JOIN查詢:

SELECT customers.Name, orders.Order_No
FROM customers
LEFT JOIN orders
ON customers.C_Id=orders.C_Id;

查詢結(jié)果如下:

Name

Order_No

張一

7520

張一

1054

王二

李三

2572

李三

7375

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

RIGHT JOIN-右外部連接

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

RIGHT JOIN語法(SQL RIGHT JOIN Syntax)

SELECT table_column1, table_column2···
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name;

有些數(shù)據(jù)庫的語法會是RIGHT OUTER JOIN。

RIGHT JOIN查詢實例(Example)

現(xiàn)在我們想查詢所有訂單與相應(yīng)的客戶之資料,我們可以作一個RIGHT JOIN查詢:

SELECT customers.Name, orders.Order_No
FROM customers
RIGHT JOIN orders
ON customers.C_Id=orders.C_Id;

查詢結(jié)果如下:

Name

Order_No

李三

2572

李三

7375

張一

7520

張一

1054

1257

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

FULL JOIN-全部外部連接

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

FULL JOIN語法(SQL FULL JOIN Syntax)

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查詢:

SELECT customers.Name, orders.Order_No
FROM customers
FULL JOIN orders
ON customers.C_Id=orders.C_Id;

查詢結(jié)果如下:

Name

Order_No

李三

2572

李三

7375

張一

7520

張一

1054

1257

王二

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

CROSS JOIN-交叉連接

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

CROSS JOIN語法(SQL CROSS JOIN Syntax)

SELECT table_column1, table_column2···
FROM table_name1
CROSS JOIN table_name2;

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

SELECT table_column1, table_column2···
FROM table_name1
JOIN table_name2;

FULL JOIN查詢實例(Example)

這是一個客戶數(shù)據(jù)表「customers」:

C_Id

Name

City

Address

Phone

1

張一

臺北市

XX路100號

02-12345678

2

王二

新竹縣

YY路200號

03-12345678

3

李三

高雄縣

ZZ路300號

07-12345678

而這是產(chǎn)品訂單的數(shù)據(jù)表「orders」:

O_Id

Order_No

C_Id

1

2572

3

2

7375

3

3

7520

1

4

1054

1

5

1257

5

我們來作一個CROSS JOIN查詢:

SELECT customers.Name, orders.Order_No
FROM customers
CROSS JOIN orders;

查詢結(jié)果如下:

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,兩個表格在進(jìn)行JOIN時,加上NATURAL這個關(guān)鍵詞之后,兩數(shù)據(jù)表之間同名的字段會被自動結(jié)合在一起。

NATURAL JOIN語法(SQL NATURAL JOIN Syntax)

SELECT table_column1, table_column2···
FROM table_name1
NATURAL JOIN table_name2;

NATURAL JOIN查詢實例(Example)

這是一個客戶數(shù)據(jù)表「customers」:

C_Id

Name

City

Address

Phone

1

張一

臺北市

XX路100號

02-12345678

2

王二

新竹縣

YY路200號

03-12345678

3

李三

高雄縣

ZZ路300號

07-12345678

而這是產(chǎn)品訂單的數(shù)據(jù)表「orders」:

O_Id

Order_No

C_Id

1

2572

3

2

7375

3

3

7520

1

4

1054

1

5

1257

5

現(xiàn)在我們想列出所有客戶的訂單編號數(shù)據(jù),我們可以作一個NATURAL JOIN查詢:

SELECT customers.Name, orders.Order_No
FROM customers
NATURAL JOIN orders;

查詢結(jié)果如下:

Name

Order_No

李三

2572

李三

7375

張一

7520

張一

1054

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

SELECT customers.Name, orders.Order_No
FROM customers
INNER JOIN orders
ON customers.C_Id=orders.C_Id;

到此這篇關(guān)于SQL連接查詢的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持本站。

海外穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部