綠色資源網:您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟(ruǎn)件專題|廠商大全

綠色資(zī)源網

技術教程
您的位置:首頁數據庫類SQL Server → SQL連(lián)接查詢的方式

SQL連接查詢(xún)的方式

我要評論 2015/04/04 23:18:23 來源:綠色資源網 編輯:ynaad.com [ ] 評論:0 點擊:270次

一、概述
通過連接(jiē)運算符可以實(shí)現多個表查詢。連接是關係數據庫模型的主要特點,也(yě)是它區別於其它(tā)類型數據庫管理係統的(de)一個(gè)標誌。多表連接查詢是使用Sql的基本操作,但(dàn)連接的方式卻有多種,熟練使用這些連接方式能夠簡化Sql語句,提高數據庫運行效率。
在關(guān)係數(shù)據庫管理係統中,表建立時各數據之間的(de)關(guān)係(xì)不必確定,常把一個(gè)實體的所有信(xìn)息存放(fàng)在一個表(biǎo)中。當檢索數據時,通過連接操作查詢出存放在多個表中的不同實體的信息。連接操作給用戶帶來很大的靈活性,他們可以在任(rèn)何時候增加新的數據類型。為不同實體創建(jiàn)新的表,然(rán)後通過連接進行查詢。
連接可以在SELECT 語句(jù)的FROM子句或WHERE子句中建(jiàn)立,似是而非在FROM子句中指出連接時有助於將連接操作與WHERE子句中的搜索條件區分開來(lái)。所以(yǐ),在Transact-SQL中推薦使用這種方法。

二(èr)、基本語(yǔ)法與方法
SQL-92標準所定義的FROM子句的連接語(yǔ)法格式為:

FROM join_table join_type join_table [ON (join_condition)]

其中join_table指出參與連接操作的表名,連接可以對同一個表操作,也(yě)可以對(duì)多表操作,對(duì)同一個表操作的連接又稱做自連接。
join_type 指出連接類型,可分為三種:內連接、外連接和(hé)交叉連接。內連接(INNER JOIN)使用比較運算(suàn)符進行表間某(些)列數據的比較操作,並列出這些表中與連接條件相匹(pǐ)配(pèi)的數據行。根(gēn)據所使用的比較方式不同。
1、內連接又分為等值連接、自然連接和不等連(lián)接(jiē)三種。
2、外連接分為左外連(lián)接(jiē)(LEFT OUTER JOIN或LEFT JOIN)、右外連接(RIGHT OUTER JOIN或RIGHT JOIN)和全外(wài)連接(jiē)(FULL OUTER JOIN或FULL JOIN)三種。與內連接不同的是,外連接不隻列出與連接條件相匹配的行,而是(shì)列(liè)出左表(左外連接時(shí))、右表(右外連(lián)接時(shí))或兩個表(全(quán)外(wài)連接時(shí))中所(suǒ)有符合搜索條件的數據行(háng)。
3、交叉連接(CROSS JOIN)沒有WHERE 子句,它返回連接表(biǎo)中所有數據行的笛卡爾積,其結果集合中的數據行數等於第一個表中(zhōng)符合查詢條件的數據行(háng)數乘以第(dì)二個(gè)表中符合查(chá)詢條件的數據行數(shù)。
連(lián)接操作中的ON (join_condition) 子句指出連(lián)接條件,它由被連接表中的列和比較(jiào)運算符、邏輯運算符等構(gòu)成。
無論哪種連接都不能對text、ntext和image數據類型列進行直接連接,但可以對這三種列(liè)進行間接連接。例如(rú):

SELECT p1.pub_id,p2.pub_id,p1.pr_info   FROM pub_info AS p1 INNER JOIN pub_info AS p2   ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)

(一)內(nèi)連接
內連接查詢操作列出(chū)與連接條件匹(pǐ)配的(de)數據行,它使用比較運算(suàn)符比較被連接列的列值。內連接分三種:
1、等值連接:在連接條件(jiàn)中使用等於號(hào)(=)運算符比較被連接列的列值,其查詢結(jié)果中列出被連接表中的所有(yǒu)列(liè),包(bāo)括(kuò)其中(zhōng)的重複列。
2、不等連(lián)接: 在連接條件使用除等於運算符以外的其它比較運算符比較被連接的列的列值。這些(xiē)運算(suàn)符包括>、>=、<=、<、!>、!<和<>。
3、自然連接:在連接條件(jiàn)中使用等於(yú)(=)運算符(fú)比較被連接列的列值,但它使用選擇列表指出查詢結果(guǒ)集(jí)合中所包括的列,並刪(shān)除連接表中的重複列。
例,下麵使用等值(zhí)連接列出authors和publishers表中位於(yú)同一城市的(de)作者和出版(bǎn)社:

SELECT *   FROM authors AS a INNER JOIN publishers AS p   ON a.city=p.city    SELECT a.*,p.pub_id,p.pub_name,p.country FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city

又如使用自然連接,在選擇列(liè)表(biǎo)中刪除authors 和publishers 表中重複列(city和state):
(二)外連接
內連接(jiē)時,返回查(chá)詢結果集合中的僅是符(fú)合查詢條件(jiàn)( WHERE 搜索條件或 HAVING 條件)和連接條件的行。而采用外連接時(shí),它返回(huí)到查詢結(jié)果集合中的不僅包含(hán)符合連接條件的行,而且還包括左表(左外連接時)、右表(右(yòu)外連(lián)接時(shí))或兩個邊接表(全外(wài)連接)中(zhōng)的所有數據行。
1、left join或(huò)left outer join(左外連接)
左外(wài)連(lián)接(jiē):(也叫左外連(lián)接,給(gěi)出兩個表的配匹行,並且(qiě)以左邊的表為準,如果左邊表有而右(yòu)邊表沒有的行,則在右邊表的相應行選擇的列顯示為NULL,允許左邊的基準表對應右邊表(biǎo)多條滿足條件的記錄)左連接就是返回左邊(biān)的匹配行,不考慮(lǜ)右邊的表是否有相應的行
雙擊代(dài)碼全選
1
select field1,field2 from table1 left join table2  on field1=field2(基準字段,可以多個)  where table1.field3=table2.field3

2、right join或right outer join(右外連接)
右連接:(也叫右外連接,給出兩個表的配匹行,並且以右邊的表為準(zhǔn),如果右邊表有而左(zuǒ)邊表沒有的行,則在(zài)右邊表的相應行選擇的列顯示為NULL,允許右邊的基準表對應左(zuǒ)邊表多條滿(mǎn)足條件的記錄(lù))
語法與做鏈接差不多!
(三)交叉(chā)連接
交叉連接不帶WHERE 子(zǐ)句,它返回被連接的兩個表所有數據行的(de)笛卡爾積,返回到結果集合中的數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據(jù)行數。
例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的(de)記錄數(shù)將等於6*8=48行(háng)。

SELECT type,pub_name   FROM titles CROSS JOIN publishers   ORDER

關鍵詞:SQL

閱讀(dú)本文後您有什麽感想? 已有 人(rén)給出評價!

  • 1 歡迎喜歡
  • 1 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視
免费人欧美成又黄又爽的视频丨一本色道久久88综合日韩精品丨国产专区日韩精品欧美色丨午夜无遮挡男女啪啪视频丨国产欧美日韩综合精品一区二区丨亚洲精品无码不卡在线播HE丨亚洲精品国产精品国自产观看丨日韩国产高清av不卡