資源描述:
《連接查詢和分組查詢.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第十一章連接查詢和分組查詢一.使用groupby進(jìn)行分組查詢語法:Select列名From表名Groupby列名1.查詢男女學(xué)生的人數(shù)格式多少分析:首先按照性別進(jìn)行分組:groupbySSex其次對每個(gè)組進(jìn)行總數(shù)的統(tǒng)計(jì),用到聚合函數(shù)count()。完整的T-SQL語句如下:Selectcount(*)AS人數(shù),SSexfromStudentsGroupbySSex2.查詢每個(gè)科目的平均分,并且按照由低到高的順序排列顯示SelectCourseID,avg(Score)AS課程平均成績FromScoreGroupbyCourseIDOrderbya
2、vg(Score)DESC二.多列分組查詢Selectcount(*)AS人數(shù),SGradeAS年級,SSexAS性別FromStudentsGroupbySGrade,SSexOrderbySGrade二.使用having子句進(jìn)行分組篩選1.查詢年紀(jì)總?cè)藬?shù)超過15的年級Selectcount(*)AS人數(shù),SGradeAS年級FromStudentsGroupbySGradeHavingcount(*)>152.查詢平均分及格的課程信息SelectCourseIDAS課程編號,avg(Score)AS課程平均成績FromstudentsGrou
3、pbyGourseIDHavingavg(score)>=60Having,where,orderby和groupby句子可以在同一個(gè)select語句中喲起使用,使用順序如下Where→groupby→having→orderby3.查詢每門課程及格總?cè)藬?shù)和及格學(xué)生的平均分Selectcount(*)AS人數(shù),avg(Score)AS平均分,CrouseIDAS課程FromSCoreWhereScore>=60GroupbyCrouseID1.查詢每門課程及格人數(shù)和及格平均分在80分以上的記錄Selectcount(*)AS人數(shù),avg(Scor
4、e)AS平均分,CrouseIDAS課程FromScoreWhereScore>=60GroupbyCrouseIDHavingavg(Score)>80OrderbyCrouseID四.多表連接查詢1.多表連接查詢的分類多表連接查詢實(shí)際上是通過各個(gè)表之間共同列的關(guān)聯(lián)性來查詢數(shù)據(jù)的,他是關(guān)系數(shù)據(jù)庫查詢最主要的特征。常用的連接:內(nèi)鏈接,外連接A.內(nèi)鏈接內(nèi)鏈接是最典型,最常用的連接查詢,它根據(jù)表中共同的列來進(jìn)行匹配,特別是兩個(gè)表存在主外建關(guān)系時(shí)通常會使用到內(nèi)鏈接查詢B.外連接外連接是至少返回一個(gè)表中的所有記錄,根據(jù)匹配條件有選擇性地返回另一張表的記錄
5、。外連接可以是左外連接,有外鏈接2.內(nèi)鏈接查詢內(nèi)鏈接查詢通常會使用向“=”或“<>”等比較運(yùn)算符來判斷兩列數(shù)據(jù)值是否相等內(nèi)鏈接使用innerjoin、、、on關(guān)鍵字或where子句來進(jìn)行表之間的關(guān)聯(lián)。內(nèi)鏈接查詢可以通過兩種方式實(shí)現(xiàn)1.在where子句中指定連接條件例如:查詢學(xué)生姓名和成績的T-SQL如下SelectStudent、Sname,Score、CourseID,Score、ScoreFromStudent,ScoreWhereStudents.Scode=Score.StudentID2.在from子句中使用insertjoin、、、o
6、n上面查詢也可一通過這種方式來實(shí)現(xiàn)Selects.Sname,c.courseID,c.ScoreFromStudentsASsInnerjoinScoreAScon(s.Score=c.StudentID)在上面的內(nèi)鏈接查詢中:A:insnerjoin用來連接兩個(gè)表B:inner可以省略C:on用來設(shè)置條件D:AS指定表的“別名”,如果查詢的別名在用到兩個(gè)或多個(gè)表中不重復(fù),則對這一列的引用不必用表名來限定五、外連接查詢與內(nèi)部連接相對的方式稱為外部鏈接。在外部聯(lián)接中參與聯(lián)接的表有主從之分,以主表的每行數(shù)據(jù)匹配從表的數(shù)據(jù)列,江都和聯(lián)接條件的數(shù)據(jù)直接
7、返回到結(jié)果集中;對那些不符合連接條件的列,將被填上NULL值(空值)后在返回到結(jié)果集中1.左外連接查詢左外連接的結(jié)果集包括leftjoin子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行左外連接使用leftjoin、、、on或leftouterjoin、、、on關(guān)鍵字來進(jìn)行表之間的關(guān)聯(lián)例如:要統(tǒng)計(jì)所有學(xué)生的考試情況,要求顯示所參加考試學(xué)生的每次考試分?jǐn)?shù),沒有參加考試的學(xué)生也要顯示出來。這時(shí)候,以學(xué)生信息表為主表(有時(shí)也叫做左表),學(xué)生成績表為從表的做外連接查詢?nèi)缦拢篠elects.sname,c.CourseID,c.ScoreFromStu
8、dentsASSLeftouterjoinScoreASConS.Scode=C.studentID2.右外聯(lián)接查詢右外聯(lián)接查詢與左外聯(lián)