数据库原理与应用(SQL Server)笔记 第三章 连接查询
目錄
- 前言
- 一、連接謂詞
- 二、JOIN連接
- (一)內(nèi)連接
- (二)外連接
- (三)交叉連接
- 總結(jié)
前言
本次內(nèi)容,我們主要掌握數(shù)據(jù)庫的多表查詢,即通過兩個(gè)表及兩個(gè)以上的表之間的邏輯關(guān)系進(jìn)行檢索,將通過連接謂詞和關(guān)鍵字JOIN來介紹。
一、連接謂詞
連接謂詞在WHERE子句中使用比較運(yùn)算符給出連接條件,對(duì)多個(gè)表連接,同時(shí)在FROM子句中要指定所連接的多個(gè)表。為了區(qū)分多個(gè)表中同樣的列字段,我們使用“ . ”來表示哪個(gè)表的哪個(gè)字段(例如classes.classNO則表示classes表的classNO列)。
格式如下:
(表名1.) 列名1 <比較運(yùn)算符> (表名2.) 列名2
這里我們只講等值連接,即表之間是通過比較運(yùn)算符“=”連接的,而非等值連接即是通過非等號(hào)連接。
另外當(dāng)在目標(biāo)列中去掉相同的字段名,即為自然連接;而如果將同一個(gè)表進(jìn)行連接稱為自連接。
例、根據(jù)以下三個(gè)表信息,使用T-SQL語句查詢銷售員“胡寶林”與客戶“王小姐”所簽訂的訂單編號(hào)及日期。
SQL語句:
USE Sales SELECT Seller.*,Customer.*,Orders.* FROM Seller,Customer,Orders WHERE Seller.Salename='胡寶林' AND Customer.ConnectName='王小姐' AND Seller.SaleID=Orders.SaleID AND Customer.CustomerID=Orders.CustomerID運(yùn)行結(jié)果:
二、JOIN連接
另一種方式則是使用關(guān)鍵字JOIN連接,其表示方式是用在FROM子句當(dāng)中。這里的連接也分很多種:
(一)內(nèi)連接
內(nèi)連接按照J(rèn)OIN…ON中ON所指定的連接條件合并兩個(gè)表,返回滿足連接條件的行,由于內(nèi)連接是系統(tǒng)默認(rèn)的,可以省略INNER關(guān)鍵字。內(nèi)連接可以實(shí)現(xiàn)多個(gè)表的連接。
格式如下:
FROM 表1 JOIN 表2 ON <連接條件>
我們來看一個(gè)題。
例、根據(jù)以下兩個(gè)表的信息,使用T-SQL語句查詢所有員工有訂單的銷售員的信息表,采用內(nèi)連接。
SQL語句:
USE Sales SELECT Seller.*,Orders.* FROM Seller JOIN Orders ON Seller.SaleID=Orders.SaleID運(yùn)行結(jié)果:
(二)外連接
首先我們要知道,外連接只能對(duì)兩個(gè)表進(jìn)行。
外連接跟內(nèi)連接的差別在于內(nèi)連接只有滿足連接條件的行才能輸出結(jié)果,而外連接輸出結(jié)果不僅包括滿足連接條件的行,還包括相應(yīng)表的所有行。
這里外連接分為三種:
| 左外連接 | 輸出結(jié)果不僅包括滿足連接條件的行,還包括左表的所有行 |
| 右外連接 | 輸出結(jié)果不僅包括滿足連接條件的行,還包括右表的所有行 |
| 完全外連接 | 輸出結(jié)果不僅包括滿足連接條件的行,還包括兩個(gè)表的所有行 |
(三)交叉連接
交叉連接,只做了解,即對(duì)兩個(gè)表進(jìn)行笛卡爾積,即第一個(gè)表的行數(shù)乘以第二個(gè)表的行數(shù)(笛卡爾積可以表示為一個(gè)二維表,表中每行對(duì)應(yīng)一個(gè)元組,每列的值來自一個(gè)域)。
可以了解一下笛卡爾積
總結(jié)
以上就是本次數(shù)據(jù)庫原理與應(yīng)用的全部內(nèi)容,感謝您的閱讀和支持,若有表述或者代碼中的不當(dāng)之處,歡迎指出!您的指出和建議能給作者帶來很大的動(dòng)力!!!
總結(jié)
以上是生活随笔為你收集整理的数据库原理与应用(SQL Server)笔记 第三章 连接查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++编程练习:抽象类——编写一个程序,
- 下一篇: 数据库原理与应用(SQL Server)