資源描述:
《t-sql查詢語句(三):多表查詢》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、T-SQL查詢語句(三):多表查詢T-SQL查詢語句(三):多表查詢T-SQL查詢語句(三):多表查詢***************************************SQL查詢語句《三》:多表查詢(也叫連接查詢,此處為基于兩個表的連接查詢)如果一個查詢需要對多個表進(jìn)行操作就稱為連接查詢,連接查詢的結(jié)果集或結(jié)果稱為表之間的連接.連接查詢實(shí)際上是通過各個表之間共同列的關(guān)聯(lián)性來查詢數(shù)據(jù)的,它是關(guān)系數(shù)據(jù)庫查詢最主要的特征.select表1.字段名1,表2.字段名2,...from表1,表2where連接條件SQL-92標(biāo)準(zhǔn)所定義的FROM子句的連接語法格式為:FROM表名
2、join_type表名[ON(連接條件)]連接操作中的ON(連接條件)子句指出連接條件,它由被連接表中的列和比較運(yùn)算符、邏輯運(yùn)算符等構(gòu)成。連接查詢分類:1.自連接查詢,對同一個表進(jìn)行連接操作2.內(nèi)連接查詢,<又分為:自然連接、等值連接、不等值連接三種>3.外連接查詢,<又分為:左外連接、右外連接、全外連接三種>4.交叉連接查詢,也作無條件查詢。5.聯(lián)合查詢----------------------------一。自連接查詢:一個表自己與自己建立連接稱為自連接或自身連接。進(jìn)行自連接就如同兩個分開的表一樣,可以把一個表的某一行與同一表中的另一行連接起來。例:查詢選學(xué)“101”課程
3、的成績高于“9505201”號學(xué)生成績的所有學(xué)生記錄,并按成績從高到低排列。selectx.*fromsclassx,sclassywherex.cno='101'andx.degree>y.degreeandy.sno='9505201'andy.cno='101'orderbyx.degreedesc----------------------------二。內(nèi)連接(INNERJOIN):內(nèi)連接是最常用的一種連接方式,它只返回兩個數(shù)據(jù)集合之間匹配關(guān)系的那些行.將位于兩個互相交叉的數(shù)據(jù)集合中重疊部分以內(nèi)的那些數(shù)據(jù)行連接起來.內(nèi)連接(INNERJOIN)使用比較運(yùn)算符進(jìn)行表間某
4、(些)列數(shù)據(jù)的比較操作,并列出這些表中與連接條件相匹配的數(shù)據(jù)行。根據(jù)所使用的比較方式不同,內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運(yùn)算符比較被連接列的列值。語法:select字段名列表from表名[inner]join表名on連接條件[where條件表達(dá)式]例:select學(xué)生表.學(xué)號,學(xué)生表.姓名,學(xué)生表.班級代號,成績表.課程代號,成績表.課程成績from學(xué)生表INNERJOIN成績表on學(xué)生表.學(xué)號=成績表.學(xué)號where學(xué)生表.班級代號='200201'selectx.sno,x.sname,y.cno,y.degreefromstudentxINNERjo
5、insclassyonx.sno=y.snowherex.sclass='95文秘1'內(nèi)連接分三種:1、等值連接:所謂等值連接,是指表之間通過“等于”關(guān)系連接起來,產(chǎn)生一個臨時表,然后對該臨時表進(jìn)行處理后生成最終結(jié)果。其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列。(1)查詢所有學(xué)生的sno,cname,degree列:SELECTx.sno,y.cname,x.degreeFROMscorex,courseyWHEREx.cno=y.cno(2)查詢“95033”班所選課程的平均分:SELECTy.cno,avg(y.degree)as"平均分"FROMstudentx
6、,scoreyWHEREx.class='95033'andx.sno=y.snogroupbyy.cno(3)查詢所有學(xué)生的student,score表信息:selectx.*,y.*fromstudentx,scoreywherex.sno=y.sno用等值連接列出authors和publishers表中位于同一城市的作者和出版社:SELECT*FROMauthorsASaINNERJOINpublishersASpONa.city=p.city2、不等值連接:是指表之間的連接關(guān)系不是“等于”,而是其它關(guān)系。這些運(yùn)算符包括>、>=、<=、<、!>、!<和<>。(1)查詢所有
7、學(xué)生的sno,cno,rank列:selectsno,cno,rankfromscore,gradewheredegreebetweenlowandupporderbyrank(2)selectx.sno,x.sname,y.cno,y.degreefromstudentx,scoreywherex.sno!=y.sno3、自然連接:在等值連接中消除重復(fù)列就是自然連接。(1)selectx.sno,x.sname,y.cno,y.degreefromstudentx,scorewherex.