电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SQL中的連接查詢詳解

瀏覽:25日期:2023-03-06 14:25:15

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)

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)

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

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)

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

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)

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

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)

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;

查詢結果如下:

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)

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)

這是一個客戶數據表「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 查詢:

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)

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

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

查詢結果如下:

Name

Order_No

李三

2572

李三

7375

張一

7520

張一

1054

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

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

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

標簽: MsSQL
相關文章:
主站蜘蛛池模板: 南京泽朗生物科技有限公司 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 空气净化器租赁,空气净化器出租,全国直租_奥司汀净化器租赁 | 石英砂矿石色选机_履带辣椒色选机_X光异物检测机-合肥幼狮光电科技 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 哈尔滨发电机,黑龙江柴油发电机组-北方星光 | 水上浮桥-游艇码头-浮动码头-游船码头-码瑞纳游艇码头工程 | 钢绞线万能材料试验机-全自动恒应力两用机-混凝土恒应力压力试验机-北京科达京威科技发展有限公司 | 杰福伦_磁致伸缩位移传感器_线性位移传感器-意大利GEFRAN杰福伦-河南赉威液压科技有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 国际金融网_每日财经新资讯网| 软装设计-提供软装装饰和软装配饰及软装陈设的软装设计公司 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | Pos机办理_个人商户免费POS机申请-拉卡拉办理网 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 数码听觉统合训练系统-儿童感觉-早期言语评估与训练系统-北京鑫泰盛世科技发展有限公司 | 破碎机_上海破碎机_破碎机设备_破碎机厂家-上海山卓重工机械有限公司 | 吸音板,隔音板,吸音材料,吸音板价格,声学材料 - 佛山诺声吸音板厂家 | 气动隔膜阀_气动隔膜阀厂家_卫生级隔膜阀价格_浙江浙控阀门有限公司 | [品牌官网]贵州遵义双宁口腔连锁_贵州遵义牙科医院哪家好_种植牙_牙齿矫正_原华美口腔 | 固诺家居-全屋定制十大品牌_整体衣柜木门橱柜招商加盟 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 沟盖板_复合沟盖板厂_电力盖板_树脂雨水篦子-淄博拜斯特 | 磁力轮,磁力联轴器,磁齿轮,钕铁硼磁铁-北京磁运达厂家 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 无痕胶_可移胶_无痕双面胶带_可移无痕胶厂家-东莞凯峰 | uv机-uv灯-uvled光固化机-生产厂家-蓝盾机电 | 北京征地律师,征地拆迁律师,专业拆迁律师,北京拆迁律师,征地纠纷律师,征地诉讼律师,征地拆迁补偿,拆迁律师 - 北京凯诺律师事务所 | 苏州同创电子有限公司 - 四探针测试仪源头厂家 | 江西自考网-江西自学考试网 | 金属雕花板_厂家直销_价格低-山东慧诚建筑材料有限公司 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 南京蜂窝纸箱_南京木托盘_南京纸托盘-南京博恒包装有限公司 |