共計 2475 個字符,預(yù)計需要花費(fèi) 7 分鐘才能閱讀完成。
本篇內(nèi)容主要講解“SQLServer 數(shù)據(jù)庫有哪些鏈接查詢的方式”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓丸趣 TV 小編來帶大家學(xué)習(xí)“SQLServer 數(shù)據(jù)庫有哪些鏈接查詢的方式”吧!
SQLServer 數(shù)據(jù)庫鏈接查詢的方式有哪些
在關(guān)系數(shù)據(jù)庫管理系統(tǒng)中,表建立時各數(shù)據(jù)之間的關(guān)系不必確定,常把一個實體的所有信息存放在一個表中。當(dāng)檢索數(shù)據(jù)時,通過連接操作查詢出存放在多個表中的不同實體的信息。連接操作給用戶帶來很大的靈活性,他們可以在任何時候增加新的數(shù)據(jù)類型。為不同實體創(chuàng)建新的表,然后通過連接進(jìn)行查詢。
連接可以在 SELECT 語句的 FROM 子句或 WHERE 子句中建立,似是而非在 FROM 子句中指出連接時有助于將連接操作與 WHERE 子句中的搜索條件區(qū)分開來。所以,在 Transact-SQL 中推薦使用這種方法。
基本語法與方法
SQL-92 標(biāo)準(zhǔn)所定義的 FROM 子句的連接語法格式為:
FROMjoin_tablejoin_typejoin_table[ON(join_condition)]
其中 join_table 指出參與連接操作的表名,連接可以對同一個表操作,也可以對多表操作,對同一個表操作的連接又稱做自連接。
join_type 指出連接類型,可分為三種:內(nèi)連接、外連接和交叉連接。內(nèi)連接 (INNERJOIN) 使用比較運(yùn)算符進(jìn)行表間某 (些) 列數(shù)據(jù)的比較操作,并列出這些表中與連接條件相匹配的數(shù)據(jù)行。根據(jù)所使用的比較方式不同。
1、內(nèi)連接又分為等值連接、自然連接和不等連接三種.
2、外連接分為左外連接 (LEFTOUTERJOIN 或 LEFTJOIN)、右外連接(RIGHTOUTERJOIN 或 RIGHTJOIN) 和全外連接 (FULLOUTERJOIN 或 FULLJOIN) 三種。與內(nèi)連接不同的是,外連接不只列出與連接條件相匹配的行,而是列出左表 (左外連接時)、右表(右外連接時) 或兩個表 (全外連接時) 中所有符合搜索條件的數(shù)據(jù)行。
3、交叉連接 (CROSSJOIN) 沒有 WHERE 子句,它返回連接表中所有數(shù)據(jù)行的笛卡爾積,其結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。
連接操作中的 ON(join_condition)子句指出連接條件,它由被連接表中的列和比較運(yùn)算符、邏輯運(yùn)算符等構(gòu)成.
無論哪種連接都不能對 text、ntext 和 image 數(shù)據(jù)類型列進(jìn)行直接連接,但可以對這三種列進(jìn)行間接連接。例如:
SELECTp1.pub_id,p2.pub_id,p1.pr_infoFROMpub_infoASp1INNERJOINpub_infoASp2ONDATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)
(一)內(nèi)連接
內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運(yùn)算符比較被連接列的列值。內(nèi)連接分三種:
1、等值連接:在連接條件中使用等于號 (=) 運(yùn)算符比較被連接列的列值,其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列.
2、不等連接:在連接條件使用除等于運(yùn)算符以外的其它比較運(yùn)算符比較被連接的列的列值。這些運(yùn)算符包括、=、=、、!、! 和。
3、自然連接:在連接條件中使用等于 (=) 運(yùn)算符比較被連接列的列值,但它使用選擇列表指出查詢結(jié)果集合中所包括的列,并刪除連接表中的重復(fù)列.
例,下面使用等值連接列出 authors 和 publishers 表中位于同一城市的作者和出版社:
SELECT*FROMauthorsASaINNERJOINpublishersASpONa.city=p.citySELECTa.*,p.pub_id,p.pub_name,p.countryFROMauthorsASaINNERJOINpublishersASpONa.city=p.city
又如使用自然連接,在選擇列表中刪除 authors 和 publishers 表中重復(fù)列(city 和 state):
SQLServer 數(shù)據(jù)庫鏈接查詢的方式有哪些
(二)外連接
內(nèi)連接時,返回查詢結(jié)果集合中的僅是符合查詢條件 (WHERE 搜索條件或 HAVING 條件) 和連接條件的行。而采用外連接時,它返回到查詢結(jié)果集合中的不僅包含符合連接條件的行,而且還包括左表 (左外連接時)、右表(右外連接時) 或兩個邊接表 (全外連接) 中的所有數(shù)據(jù)行。
1、leftjoin 或 leftouterjoin(左外連接)
左外連接:(也叫左外連接,給出兩個表的配匹行,并且以左邊的表為準(zhǔn),假如左邊表有而右邊表沒有的行,則在右邊表的相應(yīng)行選擇的列顯示為 NULL,允許左邊的基準(zhǔn)表對應(yīng)右邊表多條滿足條件的記錄)左連接就是返回左邊的匹配行,不考慮右邊的表是否有相應(yīng)的行
selectfield1,field2fromtable1leftjointable2onfield1=field2(基準(zhǔn)字段,可以多個)wheretable1.field3=table2.field3
2、rightjoin 或 rightouterjoin(右外連接)
右連接:(也叫右外連接,給出兩個表的配匹行,并且以右邊的表為準(zhǔn),假如右邊表有而左邊表沒有的行,則在右邊表的相應(yīng)行選擇的列顯示為 NULL,允許右邊的基準(zhǔn)表對應(yīng)左邊表多條滿足條件的記錄)
語法與做鏈接差不多!
(三)交叉連接
交叉連接不帶 WHERE 子句,它返回被連接的兩個表所有數(shù)據(jù)行的笛卡爾積,返回到結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。
例,titles 表中有 6 類圖書,而 publishers 表中有 8 家出版社,則下列交叉連接檢索到的記錄數(shù)將等于 6 *8=48 行。
SELECTtype,pub_nameFROMtitlesCROSSJOINpublishersORDERBYtype
到此,相信大家對“SQLServer 數(shù)據(jù)庫有哪些鏈接查詢的方式”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!