SQL連接查詢介紹
發(fā)布日期:2022-02-05 08:17 | 文章來源:站長之家
SQL-92標(biāo)準(zhǔn)所定義的FROM子句的連接語法格式為:
FROMjoin_tablejoin_typejoin_table
[ON(join_condition)] 其中join_table指出參與連接操作的表名,連接可以對同一個表操作,也可以對多表操作,對同一個表操作的連接又稱做自連接。 join_type指出連接類型,可分為三種:內(nèi)連接、外連接和交叉連接。內(nèi)連接(INNERJOIN)使用比較運算符進(jìn)行表間某(些)列數(shù)據(jù)的比較操作,并列出這些表中與連接條件相匹配的數(shù)據(jù)行。根據(jù)所使用的比較方式不同,內(nèi)連接又分為等值連接、自然連接和不等連接三種。外連接分為左外連接(LEFTOUTERJOIN或LEFTJOIN)、右外連接(RIGHTOUTERJOIN或RIGHTJOIN)和全外連接(FULLOUTERJOIN或FULLJOIN)三種。與內(nèi)連接不同的是,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的數(shù)據(jù)行。 交叉連接(CROSSJOIN)沒有Where子句,它返回連接表中所有數(shù)據(jù)行的笛卡爾積,其結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。 連接操作中的ON(join_condition)子句指出連接條件,它由被連接表中的列和比較運算符、邏輯運算符等構(gòu)成。 無論哪種連接都不能對text、ntext和image數(shù)據(jù)類型列進(jìn)行直接連接,但可以對這三種列進(jìn)行間接連接。例如: Selectp1.pub_id,p2.pub_id,p1.pr_info
FROMpub_infoASp1INNERJOINpub_infoASp2
ONDATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info) (一)內(nèi)連接 內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運算符比較被連接列的列值。內(nèi)連接分三種: 1、等值連接:在連接條件中使用等于號(=)運算符比較被連接列的列值,其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列。 2、不等連接:在連接條件使用除等于運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。 3、自然連接:在連接條件中使用等于(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結(jié)果集合中所包括的列,并刪除連接表中的重復(fù)列。 例,下面使用等值連接列出authors和publishers表中位于同一城市的作者和出版社: Select*
FROMauthorsASaINNERJOINpublishersASp
ONa.city=p.city 又如使用自然連接,在選擇列表中刪除authors和publishers表中重復(fù)列(city和state): Selecta.*,p.pub_id,p.pub_name,p.country
FROMauthorsASaINNERJOINpublishersASp
ONa.city=p.city (二)外連接 內(nèi)連接時,返回查詢結(jié)果集合中的僅是符合查詢條件(Where搜索條件或HAVING條件)和連接條件的行。而采用外連接時,它返回到查詢結(jié)果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個邊接表(全外連接)中的所有數(shù)據(jù)行。如下面使用左外連接將論壇內(nèi)容和作者信息連接起來: Selecta.*,b.*FROMluntanLEFTJOINusertableasb
ONa.username=b.username
下面使用全外連接將city表中的所有作者以及user表中的所有作者,以及他們所在的城市: Selecta.*,b.*
FROMcityasaFULLOUTERJOINuserasb
ONa.username=b.username (三)交叉連接 交叉連接不帶Where子句,它返回被連接的兩個表所有數(shù)據(jù)行的笛卡爾積,返回到結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數(shù)將等 于6*8=48行。 Selecttype,pub_name
FROMtitlesCROSSJOINpublishers
ORDERBYtype
[Post=0][/Post]
[ON(join_condition)] 其中join_table指出參與連接操作的表名,連接可以對同一個表操作,也可以對多表操作,對同一個表操作的連接又稱做自連接。 join_type指出連接類型,可分為三種:內(nèi)連接、外連接和交叉連接。內(nèi)連接(INNERJOIN)使用比較運算符進(jìn)行表間某(些)列數(shù)據(jù)的比較操作,并列出這些表中與連接條件相匹配的數(shù)據(jù)行。根據(jù)所使用的比較方式不同,內(nèi)連接又分為等值連接、自然連接和不等連接三種。外連接分為左外連接(LEFTOUTERJOIN或LEFTJOIN)、右外連接(RIGHTOUTERJOIN或RIGHTJOIN)和全外連接(FULLOUTERJOIN或FULLJOIN)三種。與內(nèi)連接不同的是,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的數(shù)據(jù)行。 交叉連接(CROSSJOIN)沒有Where子句,它返回連接表中所有數(shù)據(jù)行的笛卡爾積,其結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。 連接操作中的ON(join_condition)子句指出連接條件,它由被連接表中的列和比較運算符、邏輯運算符等構(gòu)成。 無論哪種連接都不能對text、ntext和image數(shù)據(jù)類型列進(jìn)行直接連接,但可以對這三種列進(jìn)行間接連接。例如: Selectp1.pub_id,p2.pub_id,p1.pr_info
FROMpub_infoASp1INNERJOINpub_infoASp2
ONDATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info) (一)內(nèi)連接 內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運算符比較被連接列的列值。內(nèi)連接分三種: 1、等值連接:在連接條件中使用等于號(=)運算符比較被連接列的列值,其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列。 2、不等連接:在連接條件使用除等于運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。 3、自然連接:在連接條件中使用等于(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結(jié)果集合中所包括的列,并刪除連接表中的重復(fù)列。 例,下面使用等值連接列出authors和publishers表中位于同一城市的作者和出版社: Select*
FROMauthorsASaINNERJOINpublishersASp
ONa.city=p.city 又如使用自然連接,在選擇列表中刪除authors和publishers表中重復(fù)列(city和state): Selecta.*,p.pub_id,p.pub_name,p.country
FROMauthorsASaINNERJOINpublishersASp
ONa.city=p.city (二)外連接 內(nèi)連接時,返回查詢結(jié)果集合中的僅是符合查詢條件(Where搜索條件或HAVING條件)和連接條件的行。而采用外連接時,它返回到查詢結(jié)果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個邊接表(全外連接)中的所有數(shù)據(jù)行。如下面使用左外連接將論壇內(nèi)容和作者信息連接起來: Selecta.*,b.*FROMluntanLEFTJOINusertableasb
ONa.username=b.username
下面使用全外連接將city表中的所有作者以及user表中的所有作者,以及他們所在的城市: Selecta.*,b.*
FROMcityasaFULLOUTERJOINuserasb
ONa.username=b.username (三)交叉連接 交叉連接不帶Where子句,它返回被連接的兩個表所有數(shù)據(jù)行的笛卡爾積,返回到結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數(shù)將等 于6*8=48行。 Selecttype,pub_name
FROMtitlesCROSSJOINpublishers
ORDERBYtype
[Post=0][/Post]
版權(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處理。
相關(guān)文章
上一篇: