




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(xué)1SQL基本SELECT查詢(xún)語(yǔ)句內(nèi)外連接2023/1/18MicrosoftSQLServer20052SELECT語(yǔ)法總結(jié)SELECT*/字段名,字段名……FROM
表名[WHERE
條件表達(dá)式][GROUPBY
分組的字段名][HAVING
條件表達(dá)式][ORDERBY
排序的字段名[ASC|DESC]]上述“[]”表示可選項(xiàng),“|”表示取其中之一。第1頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer20053簡(jiǎn)單Select查詢(xún)語(yǔ)法:SELECT
字段1,字段2,…FROM
表名SELECT*FROM
表名SELECT
字段1,字段2,…FROM
表名WHERE查詢(xún)條件SELECT*FROM
表名WHERE查詢(xún)條件
簡(jiǎn)單的Transact-SQL查詢(xún)只包括選擇列表、FROM子句和WHERE子句。它們分別說(shuō)明所查詢(xún)列、查詢(xún)的表或視圖、以及搜索條件等。--------------------------------------------------------------------第2頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer20054簡(jiǎn)單Select查詢(xún)SELECTStuId,StuName,DeptId,SexFROMTb_StudentSELECT
*
FROMTb_Student第3頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer20055簡(jiǎn)單Select查詢(xún)SELECTStuId,StuName,DeptId,SexFROMTb_Student
WHERESex='F'SELECT
*
FROMTb_TeacherWHERESex='F'andDeptId='08'
第4頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer20056WHERE子句使用的運(yùn)算符類(lèi)別運(yùn)算符說(shuō)明比較運(yùn)算符=、>、<、>=、<=、<>比較兩個(gè)表達(dá)式邏輯運(yùn)算符AND、OR、NOT組合兩個(gè)表達(dá)式的運(yùn)算結(jié)果或取反范圍運(yùn)算符BETWEEN、NOTBETWEEN查詢(xún)值是否在范圍內(nèi)列表運(yùn)算符IN、NOTIN查詢(xún)值是否屬于列表值之一字符匹配符LIKE、NOTLIKE字符串是否匹配未知值ISNULL、ISNOTNULL查詢(xún)值是否為NULL第5頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer20057比較運(yùn)算符和表達(dá)式運(yùn)算符含
義=等于>大于<小于>=大于等于<=小于等于<>不等于SELECT*FROMTb_StudentWHEREStuName<>'張三'SELECT*FROMTb_StudentWHERESex='F'第6頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer20058邏輯運(yùn)算符和表達(dá)式運(yùn)算符含
義AND如果兩個(gè)布爾表達(dá)式都為T(mén)RUE,那么就為T(mén)RUEOR如果兩個(gè)布爾表達(dá)式中的一個(gè)為T(mén)RUE,那么就為T(mén)RUENOT對(duì)任何其他布爾運(yùn)算符的值取反SELECT*FROMTb_StudentWHERESex='M'andSex='F'SELECT*FROMTb_StudentWHEREClassId='S040201101'andSex='F'SELECT*FROMTb_StudentWHERENOTSex='M'第7頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer20059范圍搜索運(yùn)算符和表達(dá)式SELECT*FROMTb_StudentWHEREAgeBETWEEN20TO22---------------------------------------------------------------------------------------SELECT*FROMTb_StudentWHEREAgeNOT
BETWEEN20TO22---------------------------------------------------------------------------------------SELECT*FROMTb_StudentWHEREAgeIN(20,21,22)---------------------------------------------------------------------------------------相當(dāng)于
SELECT*
FROMTb_Student
WHERE
Age=20OR
Age=21OR
Age=22類(lèi)別運(yùn)算符說(shuō)明范圍運(yùn)算符BETWEEN、NOTBETWEEN查詢(xún)值在范圍內(nèi)列表運(yùn)算符IN、NOTIN查詢(xún)值屬于列表值之一第8頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200510模式匹配運(yùn)算符和表達(dá)式SELECT
*
FROMTb_StudentWHEREStuNameLIKE
'張%'通配符說(shuō)明示例%匹配零個(gè)或多個(gè)字符的任意字符串。LIKE'%林%'姓名中包含有“林”的信息。_下劃線匹配任何單個(gè)字符。一個(gè)漢字只使用一個(gè)"_"表示LIKE'林_'姓名第一個(gè)字為“林”并且名字只有兩個(gè)字。[]匹配指定范圍([a-f])或集合([abcdef])中的任何單個(gè)字符。LIKE'[張王]%'姓張或姓王的信息。[^]匹配不屬于指定范圍([a-f])或集合([abcdef])中的任何單個(gè)字符。LIKE'王[^林]%'姓王且第二個(gè)字不是林的信息。SELECT
*
FROMTb_StudentWHEREStuNameNOT
LIKE
'張三'第9頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200511未知值條件NULL表示未知的,不可用或?qū)⒃谝院筇砑拥臄?shù)據(jù)。NULL值與零、零長(zhǎng)度的字符串的含義不同。在WHERE子句中,使用ISNULL或ISNOTNULL條件可以查詢(xún)某一數(shù)據(jù)值是否為NULL的數(shù)據(jù)信息。例如:SELECT
*
FROMTb_GradeWHERERetestScoreISNOTNULLSELECT
*
FROMTb_CourseWHERECourseNameISNULL第10頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200512字符串運(yùn)算符和表達(dá)式字符串表達(dá)式是用字符串連接符(+)將字符型常量、變量、字符串函數(shù)連接組成的式子。字符串表達(dá)式的計(jì)算結(jié)果包括兩個(gè)字符串內(nèi)的空格和所有字符,仍然是字符型。如'我愛(ài)'+'我家'
表達(dá)式的值為:'我愛(ài)我家'
-------------------------------------------------------------------
例如:'Beijing'+'Huanying'+'Ning!‘
請(qǐng)寫(xiě)出結(jié)果!第11頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200513運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先級(jí)決定了表達(dá)式的計(jì)算和比較操作順序。運(yùn)算符的優(yōu)先級(jí)由高到低的順序?yàn)椋?)括號(hào):()。2)正、負(fù)或取反運(yùn)算:+、-、~。3)乘、除、求模運(yùn)算:*、/、%。4)加、減、字符連接運(yùn)算:+、-、+。5)比較運(yùn)算:=、>、<、>=、<=、<>、!=、!>、!<。6)位運(yùn)算:^、&、|。7)邏輯非運(yùn)算:NOT。8)邏輯與運(yùn)算:AND。9)BETWEEN、IN、LIKE、OR等運(yùn)算。10)賦值運(yùn)算:=。第12頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200514ORDERBY子句
使用SELECT語(yǔ)句進(jìn)行數(shù)據(jù)查詢(xún),為了按一定順序?yàn)g覽數(shù)據(jù),可以使用ORDERBY子句對(duì)生成的查詢(xún)結(jié)果進(jìn)行排序。ORDERBY子句在SELECT語(yǔ)句中的語(yǔ)法格式如下:-------------------------------------------------------------------SELECT
字段1,字段2,…FROM
表名
WHERE查詢(xún)條件
ORDERBY排序表達(dá)式[ASC|DESC]第13頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200515ORDERBY子句SELECTStuId,StuName,SexFROMTb_StudentWHEREDeptId=‘08’ORDERBYStuNameSELECTStuId,StuName,SexFROMTb_StudentWHEREDeptId=‘08’ORDERBYStuNameDESC第14頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200516ORDERBY子句SELECTStuId,StuName,SexFROMTb_StudentWHEREDeptId=‘08’ORDERBYStuName,Sex結(jié)果如何?第15頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200517ORDERBY子句ORDERBY子句總是位于WHERE子句(如果有的話)后面,可以包含一個(gè)或多個(gè)列,每個(gè)列之間以逗號(hào)分隔。這些列可能是表中定義的列,也可能是SELECT子句中定義的計(jì)算列。-------------------------------------------------------------------------------在SQLServer2005中,漢字比其它字符值都要大,而漢字之間的大小比較是取決于其拼音首字母的大小。如果沒(méi)有特別說(shuō)明,值是以升序序列進(jìn)行排序的。當(dāng)然,你也可以選擇使用ASC關(guān)鍵字指定升序排序。-------------------------------------------------------------------------------如果你希望以降序排列,則在ORDERBY后面使用DESC關(guān)鍵字。第16頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200518GROUPBY子句
使用SELECT語(yǔ)句進(jìn)行數(shù)據(jù)查詢(xún),為了按特定條件分組瀏覽數(shù)據(jù),可以使用GROUPBY子句對(duì)某一列數(shù)據(jù)的值進(jìn)行分類(lèi),形成結(jié)果集。GROUPBY子句在SELECT語(yǔ)句中的語(yǔ)法格式如下:--------------------------------------------------------------------------------SELECT
字段1,字段2,…FROM
表名
WHERE查詢(xún)條件
GROUPBY
字段1,字段2,…[WITHROLLUP|CUBE]ORDERBY排序表達(dá)式[ASC|DESC]--------------------------------------------------------------------------------CUBE生成的結(jié)果集顯示了所選列中值的所有組合(包括字段1、字段2、字段1+字段2)的分組統(tǒng)計(jì)結(jié)果和總的匯總統(tǒng)計(jì)的聚合;ROLLUP生成的結(jié)果集顯示了所選列中值的某一層次結(jié)構(gòu)的聚合。(包括字段1、字段1+字段2的分組統(tǒng)計(jì)結(jié)果和總的匯總統(tǒng)計(jì)的聚合)第17頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200519聚合函數(shù)聚合函數(shù)是SQL語(yǔ)言中一種特殊的函數(shù),比如SUM,COUNT,MAX,MIN,AVG等。這些函數(shù)和其它函數(shù)的根本區(qū)別就是它們一般作用在多條記錄上。換句話說(shuō),上面幾個(gè)返函數(shù)的值建立在對(duì)多條記錄進(jìn)行統(tǒng)計(jì)的基礎(chǔ)上。SUM是求和函數(shù)。SELECTClassId,SUM(Score)FROMTb_Grade
WHEREClassId=‘S0408011’COUNT函數(shù)用來(lái)計(jì)算記錄的數(shù)量。SelectCOUNT(StuID)FROMTb_GradeWHEREClassId=‘S0408011’MAX,MIN,AVG函數(shù)分別是用來(lái)求最大值、最小值和平均值。SELECT
MAX(Score),MIN(Score),AVG(Score)FROMTb_GradeWHEREClassId=‘S0408011’第18頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200520GROUPBY子句常用統(tǒng)計(jì)函數(shù)函數(shù)名功能COUNT求組中項(xiàng)數(shù)SUM求和,返回表達(dá)式中所有值的和AVG求均值,返回表達(dá)式中所有值的平均值MAX求最大值,返回表達(dá)式中所有值的最大值MIN求最小值,返回表達(dá)式中所有值的最小值A(chǔ)BS求絕對(duì)值,返回表達(dá)式的絕對(duì)值A(chǔ)SCII求ASCII碼,返回字符型數(shù)據(jù)的ASCIIRAND產(chǎn)生隨機(jī)數(shù),返回一個(gè)位于0和1之間的隨機(jī)數(shù)第19頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200521GROUPBY子句--顯示每個(gè)學(xué)生的班級(jí)編碼和成績(jī)SELECTClassId,TotalScoreFROMTb_Grade--------------------------------------------------------------------匯總每個(gè)班級(jí)的平均成績(jī)SELECTClassId,AVG(TotalScore)FROMTb_GradeGROUPBYClassId第20頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200522----------------------------------------------------------------SELECTClassId,ClassName,AVG(TotalScore)FROMTb_Grade,Tb_ClassGROUPBYClassIdGROUPBY子句--匯總每個(gè)班級(jí)(含班級(jí)名稱(chēng))的平均成績(jī)?SELECTClassId,ClassName,AVG(TotalScore)FROMTb_GradeGROUPBYClassId----------------------------------------------------------------SELECTTb_Grade.ClassId,ClassName,AVG(TotalScore)FROMTb_Grade,Tb_ClassWHERETb_Grade.ClassId=Tb_Class.ClassIdGROUPBYTb_Grade.ClassId第21頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200523GROUPBY子句--顯示班級(jí)名稱(chēng)的匯總各班平均成績(jī)SELECT
Tb_Grade.ClassId,ClassName,AVG(TotalScore)
ASAvgScoreFROMTb_Grade,Tb_ClassWHERE
Tb_Grade.ClassId=Tb_Class.ClassIdGROUPBY
Tb_Grade.ClassId,ClassName當(dāng)兩個(gè)表中都有ClassId字段時(shí),要加上表前綴,說(shuō)明是那個(gè)表的ClassId字段SELECT列表中出現(xiàn)的字段都必須要在GROUPBY列表中出現(xiàn),聚合函數(shù)字段除外當(dāng)要顯示相關(guān)主鍵表中的其它字段時(shí),如這兒的ClassName字段,則在WHERE子句中通過(guò)主外鍵關(guān)系進(jìn)行連接第22頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200524GROUPBY子句查詢(xún)各個(gè)班級(jí)的最大成績(jī)和最小成績(jī)?SELECTTb_Grade.ClassId,ClassName,MAX(TotalScore)
AS
MaxScore,MIN(TotalScore)
AS
MinScoreFROMTb_Grade,Tb_ClassWHERETb_Grade.ClassId=Tb_Class.ClassIdGROUPBYTb_Grade.ClassId,ClassName第23頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200525GROUPBY子句GROUPBY分類(lèi)匯總,分項(xiàng)統(tǒng)計(jì)緊跟在GROUPBY后面的字段就是分組條件。如果在前面選擇列表中出現(xiàn)的非聚合字段未出現(xiàn)在GROUPBY后面,SQL語(yǔ)句就會(huì)出錯(cuò)。思考題:按照不同班級(jí)和性別統(tǒng)計(jì)學(xué)生平均年齡。第24頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200526HAVING子句HAVING子句相當(dāng)于一個(gè)用于組(分類(lèi)匯總)的WHERE子句,它指定了組或聚合的查詢(xún)條件。HAVING子句通常與GROUPBY子句一起使用。HAVING子句的語(yǔ)法為:-------------------------------------------------------------------SELECT
字段1,字段2,…FROM
表名
WHERE查詢(xún)條件
GROUPBY字段1,字段2,…
HAVING
組查詢(xún)條件第25頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200527HAVING子句顯示各班級(jí)學(xué)生平均總成績(jī)大于73的班級(jí)編號(hào)。SELECTTb_Grade.ClassId,AVG(TotalScore)
ASAvgScoreFROMTb_GradeGROUPBYTb_Grade.ClassIdHAVING
AVG(TotalScore)>73第26頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200528HAVING子句求各個(gè)班級(jí)的最大成績(jī)和最小成績(jī),且最低成績(jī)小于50分的?SELECTTb_Grade.ClassId,MAX(TotalScore)
AS
MaxScore,MIN(TotalScore)
AS
MinScoreFROMTb_GradeGROUPBYTb_Grade.ClassIdHAVING
MIN(TotalScore)<50第27頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200529HAVING子句HAVING子句用來(lái)對(duì)分組后的數(shù)據(jù)進(jìn)行篩選,它后面會(huì)跟一個(gè)條件表達(dá)式。當(dāng)在GROUPBY子句中使用HAVING子句時(shí),查詢(xún)結(jié)果中只返回滿足HAVING條件的組。第28頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200530SELECT語(yǔ)法總結(jié)SELECT*/字段名,字段名……FROM
表名[WHERE
條件表達(dá)式][GROUPBY
分組的字段名][HAVING
條件表達(dá)式][ORDERBY
排序的字段名[ASC|DESC]]上述“[]”表示可選項(xiàng),“|”表示取其中之一。第29頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200531計(jì)算列SELECT后面還可以是計(jì)算列。在SELECT后面的計(jì)算列,只是位于該SELECT語(yǔ)句中,是臨時(shí)性的,它由一個(gè)表達(dá)式產(chǎn)生。SELECTStuId,StuName+'('+Sex+')'FROMTb_Student上面語(yǔ)句中的StuName+'('+Sex+')'就構(gòu)成了一個(gè)計(jì)算列,它的值由兩個(gè)字符型值和一對(duì)括號(hào)連接組成。第30頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200532列別名在上面的結(jié)果集中,列名都是英文。這樣看上去很不直觀,我們希望能夠給列名換上諸如“學(xué)號(hào)、姓名”等這樣的名字。只需在SELECT語(yǔ)句中,給列取個(gè)別名即可。AS可以省去。SELECTStuIdAS
學(xué)號(hào),StuName+'('+Sex+')'
AS
姓名性別FROMTb_StudentSELECTStuId學(xué)號(hào),StuName+'('+Sex+')'
姓名性別FROMTb_StudentSELECT
學(xué)號(hào)=StuId,姓名性別=StuName+'('+Sex+')'
FROMTb_Student第31頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200533當(dāng)然,我們也可以給表指定列別名,給表取別名和給列取別名類(lèi)似,但只可以用“原始表名AS別名”和“原始表名別名”這兩種方式。SELECT*FROMTb_StudentST或者SELECT*FROMTb_StudentASST------------------------------------------------------------------字段別名不能放在WHERE子句中,而表別名可以放在WHERE子句中。表別名第32頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200534多表查詢(xún)第33頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200535查詢(xún)?nèi)焊飨挡繐碛邪嗉?jí)的基本情況,顯示系部名稱(chēng)、班級(jí)編碼和班級(jí)名稱(chēng);多表查詢(xún)第34頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200536USETeaching_SystemGOSELECTd.*,c.*FROMTb_ClassASc,Tb_DeptASd多表查詢(xún)第35頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200537笛卡爾乘積多表查詢(xún)第36頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200538多表查詢(xún)第37頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200539多表查詢(xún)第38頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200540USETeaching_SystemGOSELECTd.*,c.*FROMTb_ClassASc,Tb_DeptASdWHEREc.DeptId=d.DeptId多表查詢(xún)第39頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200541多表查詢(xún)SELECTStuId,StuName,DeptId,SpecId,ClassId,SexFROMTb_StudentSELECTStuId學(xué)號(hào),StuName姓名,DeptId系部,SpecId專(zhuān)業(yè),ClassId班級(jí),Sex性別FROMTb_Student第40頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200542兩表連接SELECTStuId學(xué)號(hào),StuName姓名,DeptName系部,SpecId專(zhuān)業(yè),ClassId班級(jí),Sex性別FROMTb_StudentTS,Tb_DeptTDWHERETS.DeptId=TD.DeptId第41頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200543多表連接基礎(chǔ)在實(shí)際查詢(xún)應(yīng)用中,用戶所需要的數(shù)據(jù)并不全部在一個(gè)表中,這時(shí)就需要多表查詢(xún),從多個(gè)表中抽取我們所需要的數(shù)據(jù)信息。多表查詢(xún)實(shí)際上是通過(guò)各個(gè)表之間的共同列的相關(guān)性(主外鍵關(guān)系)來(lái)查詢(xún)數(shù)據(jù)的,這是關(guān)系數(shù)據(jù)庫(kù)查詢(xún)數(shù)據(jù)的主要特征。多表查詢(xún)首先要用WHERE子句在表之間建立連接關(guān)系。在進(jìn)行多表查詢(xún)時(shí),可以遵循以下基本原則:(1)SELECT子句列表中,字段前要加上基表名稱(chēng);(2)FROM子句應(yīng)包括所有使用的基表;(3)WHERE子句應(yīng)在表之間建立連接關(guān)系。第42頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200544兩表連接SELECTStuId學(xué)號(hào),StuName姓名,DeptId系部編碼,DeptName系部,SpecId專(zhuān)業(yè),ClassId班級(jí),Sex性別FROMTb_StudentTS,Tb_DeptTDWHERETS.DeptId=TD.DeptIdSELECTStuId學(xué)號(hào),StuName姓名,TS.DeptId
系部編碼,DeptName系部,SpecId專(zhuān)業(yè),ClassId班級(jí),Sex性別FROMTb_StudentTS,Tb_DeptTDWHERETS.DeptId=TD.DeptId第43頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200545多表連接SELECTStuId學(xué)號(hào),StuName姓名,DeptName系部,SpecName專(zhuān)業(yè),ClassName班級(jí),Sex性別FROMTb_StudentTS,Tb_DeptTD,Tb_SpecTSP,Tb_ClassTCWHERETS.DeptId=TD.DeptIdANDTS.SpecId=TSP.SpecIdANDTS.ClassId=TC.ClassId要求顯示學(xué)生姓名和所在系名、專(zhuān)業(yè)、班級(jí)名稱(chēng)?第44頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200546各種連接查詢(xún)內(nèi)連接:內(nèi)連接是一種常用的數(shù)據(jù)連接查詢(xún)方式。它使用比較運(yùn)算符進(jìn)行多個(gè)表之間的比較連接操作。內(nèi)連接會(huì)消除與另一個(gè)表的任何不匹配的數(shù)據(jù)行。外連接:外連接會(huì)返回FROM子句中提到的至少一個(gè)表的所有符合查詢(xún)條件的數(shù)據(jù)行(包括連接中不匹配的數(shù)據(jù)行),外連接分為左外連接、右外連接和完全連接。交叉連接:當(dāng)對(duì)兩個(gè)表使用交叉連接查詢(xún)時(shí),將返回來(lái)自這兩個(gè)表的各行的所有可能的數(shù)據(jù)行組合。自連接:表自身的鏈接參見(jiàn)教材p119。第45頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200547兩個(gè)樣例表SELECT*FROMTb_DeptSELECTClassId,ClassName,DeptIdFROMTb_Class第46頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200548內(nèi)連接SELECTDeptName系部名稱(chēng),ClassId班級(jí)編碼,
ClassName班級(jí)名稱(chēng)FROMTb_DeptINNERJOINTb_ClassONTb_Class.DeptId=Tb_Dept.DeptId等同于:SELECTDeptName系部名稱(chēng),ClassId班級(jí)編碼,
ClassName班級(jí)名稱(chēng)FROMTb_Class,Tb_DeptWHERETb_Dept.DeptId=Tb_Class.DeptId第47頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200549外連接-左外連接SELECTDeptName系部名稱(chēng),ClassId班級(jí)編碼,
ClassName班級(jí)名稱(chēng)FROM
Tb_DeptLEFTOUTERJOINTb_ClassONTb_Dept.DeptId=Tb_Class.DeptId左邊表中列全顯示第48頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200550外連接-右外連接SELECTDeptName系部名稱(chēng),ClassId班級(jí)編碼,
ClassName班級(jí)名稱(chēng)FROM
Tb_DeptRIGHTOUTERJOINTb_ClassONTb_Dept.DeptId=Tb_Class.DeptId右邊表中列全顯示第49頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200551外連接-完全連接SELECTDeptName系部名稱(chēng),ClassId班級(jí)編碼,
ClassName班級(jí)名稱(chēng)FROM
Tb_DeptFULLOUTERJOINTb_ClassONTb_Dept.DeptId=Tb_Class.DeptId第50頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200552交叉連接SELECTDeptName系部名稱(chēng),ClassId班級(jí)編碼,
ClassName班級(jí)名稱(chēng)FROM
Tb_DeptCROSSJOINTb_Class第51頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200553交叉連接不使用WHERE子句時(shí),返回的結(jié)果是一個(gè)基本表中符合條件的行數(shù)乘以另一個(gè)基本表中符合條件的行數(shù)。使用WHERE子句時(shí),返回的結(jié)果是被連接的兩個(gè)基本表所有行的笛卡爾積中滿足WHERE條件的所有行的行數(shù)。參見(jiàn)教材p118第52頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200554聯(lián)合查詢(xún)(UNION)
如果有多個(gè)不同的查詢(xún)結(jié)果,但又希望將這些查詢(xún)結(jié)果放在一起顯示,組成一組數(shù)據(jù)。在這種情況下,可以使用UNION子句。使用UNION子句的查詢(xún)又稱(chēng)為聯(lián)合查詢(xún),它可以將兩個(gè)和多個(gè)查詢(xún)結(jié)果集組合成為單個(gè)結(jié)果集。語(yǔ)法如下:SELECTselect_listFROMtable_list[WHEREsearch_conditions]UNION[ALL]SELECTselect_listFROMtable_list[WHEREsearch_conditions]
其中,ALL關(guān)鍵字為可選的,如果在UNION子句中使用該關(guān)鍵字,則返回全部數(shù)據(jù)行;如果不使用該關(guān)鍵字,則返回結(jié)果中刪除重復(fù)數(shù)據(jù)行。第53頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200555聯(lián)合查詢(xún)(UNION)SELECT*FROMTb_SpecWHERESpecId<>'08'UNIONSELECTStuId,StuName,SexFROMTb_StudentWHEREClassId<>'S0408011'第54頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200556章節(jié)綜合練習(xí)
每個(gè)學(xué)年結(jié)束,班主任都要對(duì)班級(jí)學(xué)生成績(jī)進(jìn)行分析,然后初定學(xué)年獎(jiǎng)學(xué)金獲得者的人選。讓我們運(yùn)用數(shù)據(jù)庫(kù)查詢(xún)的知識(shí)幫助04網(wǎng)絡(luò)1班的班主任劉老師完成以下兩個(gè)任務(wù):①根據(jù)學(xué)院獎(jiǎng)學(xué)金評(píng)選規(guī)定,初定獲獎(jiǎng)學(xué)金學(xué)生名單;(每位同學(xué)的課程平均成績(jī)必須高于75分)②對(duì)該班級(jí)開(kāi)設(shè)的各門(mén)課程分別進(jìn)行成績(jī)分析。顯示課程編號(hào)、學(xué)生學(xué)號(hào)和成績(jī)的明細(xì)并分別匯總每門(mén)課程的平均成績(jī)。第55頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200557章節(jié)綜合練習(xí)第56頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200558任務(wù)一USETeaching_SystemGOSELECTStuId學(xué)號(hào),AVG(TotalScore)AS
平均成績(jī)FROMTb_GradeWHEREClassId='S0408011‘GROUPBYStuIdHAVING
AVG(TotalScore)>=75第57頁(yè)/共66頁(yè)2023/1/18MicrosoftSQLServer200559任務(wù)二USETeaching_SystemGOSELECTCourseIdAS
課程編號(hào),StuIdAS
學(xué)號(hào),ROUND(TotalScore,2)AS
成績(jī)FROMTb_G
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中專(zhuān)動(dòng)畫(huà)考試題及答案
- 安全教育大會(huì)講話稿2篇
- 移動(dòng)應(yīng)用項(xiàng)目開(kāi)發(fā)實(shí)戰(zhàn) 課件 任務(wù)三(實(shí)現(xiàn)底部導(dǎo)航欄功能)
- 人員培訓(xùn)預(yù)算計(jì)劃
- 數(shù)字化技術(shù)在文化遺產(chǎn)保護(hù)與可持續(xù)發(fā)展中的應(yīng)用報(bào)告
- 食品與飲料行業(yè)食品安全風(fēng)險(xiǎn)監(jiān)測(cè)與預(yù)警報(bào)告
- 城市交通安全隱患排查方案
- 輸變電工程電氣設(shè)備監(jiān)控方案
- 2025年造價(jià)工程師考試環(huán)境工程項(xiàng)目管理案例分析模擬試卷
- 2025年制冷設(shè)備維修工職業(yè)技能鑒定制冷設(shè)備維修技術(shù)職稱(chēng)評(píng)審申報(bào)材料準(zhǔn)備試題
- 外層空間軍事化的法律規(guī)制研究-洞察闡釋
- 廣告項(xiàng)目方案投標(biāo)文件(技術(shù)方案)
- 建筑材料招標(biāo)文件2篇
- 銀行內(nèi)部審計(jì)與合規(guī)工作的關(guān)聯(lián)試題及答案
- 超聲介入治療技術(shù)指南操作規(guī)范
- 各類(lèi)檔案管理員考試試題及答案匯編
- 房屋維修施工方案
- 2024年記者證考試往年真題試題及答案
- 防自然災(zāi)害事故安全教育
- (高清版)DB11∕T2279-2024社會(huì)單位消防安全評(píng)估規(guī)范
- 出車(chē)前的車(chē)輛安全檢查
評(píng)論
0/150
提交評(píng)論