項目5 查詢電子課件_第1頁
項目5 查詢電子課件_第2頁
項目5 查詢電子課件_第3頁
項目5 查詢電子課件_第4頁
項目5 查詢電子課件_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

項目5查詢《數(shù)據(jù)庫管理與開發(fā)項目教程(SQLServer2019)(微課版)(第3版)》22【能力目標】

學會使用SELECT語句。能使用SELECT語句進行簡單查詢。能使用SELECT語句進行分組篩選和匯總計算。能使用SELECT語句進行連接查詢。能使用SELECT語句進行子查詢。【思政目標】“古之立大事者,不惟有超出之才,亦必有堅忍不拔之志”,青年學生應努力學習,成人成才,為祖國服務。項目5查詢33【項目描述】按照要求對xs數(shù)據(jù)庫中各表進行查詢和統(tǒng)計?!卷椖糠治觥繉?shù)據(jù)庫xs的數(shù)據(jù)表建立好后,就可以進行數(shù)據(jù)庫的各種操作了。在數(shù)據(jù)庫應用中,最常用的操作是查詢,它是數(shù)據(jù)庫的其他操作(統(tǒng)計、插入、修改、刪除)的基礎。在SQLServer2019中,使用SELECT語句實現(xiàn)數(shù)據(jù)查詢。SELECT語句功能強大,使用靈活。用戶通過SELECT語句可以從數(shù)據(jù)庫中查找需要的數(shù)據(jù),也可以進行數(shù)據(jù)的統(tǒng)計匯總。本項目主要介紹利用SELECT語句對數(shù)據(jù)庫進行各種查詢的方法。項目5查詢【思政導入】主要矛盾和次要矛盾

解決問題要抓主要矛盾,認真細致是做好每一項工作的關(guān)鍵。在數(shù)據(jù)庫應用中,最常用的操作是查詢,那么掌握查詢的用法就必不可少。

我們要掌握解決問題的關(guān)鍵因素,抓主要矛盾,認真細致地完成工作。項目5查詢55【任務設置】任務1

簡單查詢?nèi)蝿?

分類匯總?cè)蝿?

連接查詢?nèi)蝿?

子查詢項目5查詢66【任務目標】學會利用SELECT語句選取字段。能進行條件查詢。學會對查詢結(jié)果進行排序。【任務分析】簡單查詢包括查詢指定列、所有列,設置字段別名,消除重復行和返回表中若干條記錄。條件查詢要使用比較運算符,而且要進行字符匹配,用于模糊查詢。任務1簡單查詢項目5查詢77SELECT語句的執(zhí)行方式有兩種,分別是SSMS和T-SQL語句。1.執(zhí)行第一個SELECT語句SELECT子句主要用于查詢數(shù)據(jù),也可以用來向局部變量賦值或者用來調(diào)用一個函數(shù)。常用的SELECT子句的語法格式如下:SELECT選擇列表 /*要查詢的那些列名,列名之間用逗號隔開*/FROM表的列表 /*要查詢的那些列名來自哪些表,表名之間用逗號隔開*/WHERE查詢的條件 /*查詢要滿足的條件或多表之間的連接條件*/任務1-1SELECT語句的執(zhí)行方式項目5查詢88【例5-1】查詢KCXX表中第2學期的所有字段,包括課程編號、課程名稱、開課學期、學時、學分。在查詢窗口中輸入以下SQL語句,并執(zhí)行:USExsGOSELECTTOP(200)課程編號,課程名稱,開課學期,學時,學分FROMKCXXWHERE開課學期=2執(zhí)行結(jié)果如圖5-1所示。任務1-1SELECT語句的執(zhí)行方式項目5查詢99任務1-1SELECT語句的執(zhí)行方式項目5查詢圖5-1

執(zhí)行結(jié)果

使用SELECT語句進行數(shù)據(jù)查詢時,SQLServer2019提供了兩種執(zhí)行工具:SSMS和查詢編輯器。而在實際應用中,大部分是將SELECT語句嵌入前臺編程語言中執(zhí)行的。1010任務1-1SELECT語句的執(zhí)行方式項目5查詢2.使用查詢編輯器執(zhí)行使用查詢編輯器執(zhí)行SELECT語句進行數(shù)據(jù)查詢,方法如下。(1)單擊系統(tǒng)工具欄上的【新建查詢】按鈕或【數(shù)據(jù)庫引擎查詢】按鈕;或者選擇菜單欄中的【文件】→【新建】→【數(shù)據(jù)庫引擎查詢】命令;打開【查詢編輯器】窗口,如圖5-2所示。(2)或在【對象資源管理器】窗口中,用鼠標右鍵單擊當前數(shù)據(jù)庫中的工作表,在彈出的快捷菜單中選擇【前1000行】命令。1111任務1-1SELECT語句的執(zhí)行方式項目5查詢圖5-2【查詢編輯器】窗口1212任務1-1SELECT語句的執(zhí)行方式項目5查詢3.使用SSMS執(zhí)行使用SSMS執(zhí)行SELECT語句查詢數(shù)據(jù),方法如下。(1)啟動SSMS,選中要查詢的表,單擊鼠標右鍵,在彈出的快捷菜單中選擇【編輯前200行】命令,單擊鼠標右鍵,在彈出的快捷菜單的【窗格】子菜單中有4個窗格,分別是關(guān)系圖、條件、SQL、結(jié)果,如圖5-3所示。1313任務1-1SELECT語句的執(zhí)行方式項目5查詢圖5-34個窗格1414任務1-1SELECT語句的執(zhí)行方式項目5查詢(2)在【關(guān)系圖】窗格中,可以將已經(jīng)設置關(guān)聯(lián)的表顯示出來。在【條件】窗格中選擇要查詢的列、是否排序以及查詢條件等。在【SQL】窗格中將自動生成SELECT語句,并可對SELECT語句進行編輯。單擊工具欄中的按鈕,執(zhí)行查詢,【結(jié)果】窗口顯示查詢結(jié)果,如圖5-4所示。1515任務1-1SELECT語句的執(zhí)行方式項目5查詢圖5-4使用SSMS查詢所有課程信息1616任務1-1SELECT語句的執(zhí)行方式項目5查詢(3)單擊工具欄中的【顯示結(jié)果窗格】按鈕,可關(guān)閉窗格和打開窗格。(4)在【結(jié)果】窗格中的“開課學期”的【篩選器】選項中輸入2,單擊空白處,查詢出第2學期開設的所有課程,SQL語句顯示在【SQL】窗格中,如圖5-5所示。1717任務1-1SELECT語句的執(zhí)行方式項目5查詢圖5-5使用SSMS查詢第2學期開設的課程1818任務1-2認知SELECT語句的語法格式項目5查詢SELECT語句的基本語法格式如下:SELECT<select_list>[INTO<new_table>]FROM<table_source>[WHERE<search_condition>][GROUPBY<group_by_expression>][HAVING<search_condition>][ORDERBY<order_expression>[ASC|DESC]]1919任務1-3使用SELECT子句實現(xiàn)列查詢項目5查詢SELECT子句是對表中的列進行選擇查詢,也是SELECT語句最基本的使用,其基本形式如下:SELECT列名1[,…列名n]在上述基本形式的基礎上,加上不同的選項,可以實現(xiàn)多種形式的列選擇查詢,下面分別予以介紹。1.選取表中指定的列使用SELECT語句選擇一個表中的某些列進行查詢,需要在SELECT后寫出要查詢的字段名,并用逗號隔開,查詢結(jié)果將按照SELECT語句中指定的列的順序來顯示這些列。2020任務1-3使用SELECT子句實現(xiàn)列查詢項目5查詢【例5-2】查詢xs數(shù)據(jù)庫的XSDA表中所有學生的學號、姓名、總學分:USExsSELECT學號,姓名,總學分FROMXSDAGO在XSDA表中選擇指定列查詢的結(jié)果如圖5-6所示。2121任務1-1SELECT語句的執(zhí)行方式項目5查詢圖5-6在XSDA表中選擇指定列查詢的結(jié)果2222任務1-4使用WHERE子句實現(xiàn)條件查詢項目5查詢WHERE子句是對表中的行進行選擇查詢,即在SELECT語句中使用WHERE子句可以從數(shù)據(jù)表中過濾出符合WHERE子句指定的選擇條件的記錄,從而實現(xiàn)行的查詢。WHERE子句必須緊跟在FROM子句之后,其基本格式如下:WHERE<search_condition>其中search_condition為查詢條件,查詢條件是一個邏輯表達式。查詢條件中常用的運算符如表5-1所示。2323任務1-1SELECT語句的執(zhí)行方式項目5查詢表5-1查詢條件中常用的運算符運算符用途=,<>,>,>=,<,<=,!=,!<,!>比較大小AND,OR,NOT設置多重條件BETWEEN確定范圍IN,NOTIN,ANY|SOME,ALL確定集合或表示子查詢LIKE字符匹配,用于模糊查詢IS[NOT]NULL測試空2424任務1-4使用WHERE子句實現(xiàn)條件查詢項目5查詢1.比較表達式作為查詢條件使用比較表達式作為查詢條件的一般格式如下:expression比較運算符expression【例5-10】查詢XSDA表中總學分大于60分的學生:USExsSELECT*FROMXSDAWHERE總學分>60GO2525任務1-4使用WHERE子句實現(xiàn)條件查詢項目5查詢2.邏輯表達式作為查詢條件使用邏輯表達式作為查詢條件的一般格式如下:expressionANDexpression或expressionORexpression或NOTexpression【例5-11】查詢XSDA表中2003年以前(不含2003年)出生的男生的學號、姓名、性別、出生日期:USExsSELECT學號,姓名,性別,出生日期FROMXSDAWHERE出生日期<'2003-1-1'AND性別=’男’

GO2626任務1-4使用WHERE子句實現(xiàn)條件查詢項目5查詢3.模式匹配使用LIKE關(guān)鍵字進行模式匹配,LIKE用于指出一個字符串是否與指定的字符串相匹配,返回邏輯值TRUE或FALSE。語法格式:string_expression[NOT]LIKEstring_expression【例5-12】查詢XSDA表中漢族學生的情況:USExsSELECT*FROMXSDAWHERE民族LIKE'漢'GO2727任務1-5ORDERBY子句項目5查詢在實際應用中經(jīng)常要對查詢的結(jié)果排序輸出,例如將學生成績由高到低排序輸出。在SELECT語句中,使用ORDERBY子句對查詢結(jié)果進行排序。語法格式:ORDERBY{order_by_expression[ASC|DESC]}[,…n]關(guān)鍵字ASC表示升序排列,DESC表示降序排列,系統(tǒng)默認值為ASC。2828任務1-5ORDERBY子句項目5查詢【例5-18】將XSDA表中所有信息系的學生按年齡從小到大排序輸出:USExsSELECT*FROMXSDAWHERE系名='信息'ORDERBY出生日期DESCGO2929【任務目標】學會使用聚合函數(shù)。能使用SELECT語句進行分組篩選、匯總和計算。【任務分析】對表數(shù)據(jù)進行查詢時,經(jīng)常需要對查詢結(jié)果進行分類、匯總或計算。例如,在xs數(shù)據(jù)庫中求某門課程的平均分、統(tǒng)計各分數(shù)段的人數(shù)等??墒褂镁酆虾瘮?shù)SUM、AVG、MAX、MIN、COUNT進行匯總查詢,使用GROUPBY子句和HAVING子句進行分組篩選。任務2分類和匯總項目5查詢30301.SUM和AVGSUM和AVG分別用于求表達式中所有值項的總和與平均值。語法格式:SUM/AVG([ALL|DISTINCT]expression)【例5-19】求學號為202102的學生選修課程的平均成績:USExsSELECTAVG(成績)AS'202102號學生的平均分'FROMXSCJWHERE學號='202102'

GO任務2-1使用常用的聚合函數(shù)項目5查詢31312.MAX和MINMAX和MIN分別用于求表達式中所有值項的最大值與最小值。語法格式:MAX/MIN([ALL|DISTINCT]expression)3.COUNTCOUNT用于統(tǒng)計組中滿足條件的行數(shù)或總行數(shù)。語法格式:COUNT({[ALL|DISTINCT]expression}|*)任務2-1使用常用的聚合函數(shù)項目5查詢3232分組是按照某一列數(shù)據(jù)的值或某個列組合的值將查詢出的行分成若干組,每組在指定列或列組合上具有相同的值。分組可通過使用GROUPBY子句來實現(xiàn)。語法格式:[GROUPBYgroup_by_expression[,…n]]1.簡單分組【例5-23】求XSDA表中男、女生的人數(shù):USExsSELECT性別,COUNT(*)AS'人數(shù)'FROMXSDA

GROUPBY性別

GO任務2-2分組篩選數(shù)據(jù)項目5查詢33332.使用HAVING子句篩選結(jié)果使用GROUPBY子句和聚合函數(shù)對數(shù)據(jù)進行分組后,還可以使用HAVING子句對分組數(shù)據(jù)做進一步篩選。語法格式:[HAVING<search_condition>]【例5-25】查詢XSCJ表中平均成績在90分及以上的學生的學號和平均分:USExsSELECT學號,AVG(成績)AS'平均分'FROMXSCJ

GROUPBY學號HAVINGAVG(成績)>=90GO任務2-2分組篩選數(shù)據(jù)項目5查詢3434【任務目標】學會使用連接查詢實現(xiàn)多表查詢。【任務分析】

連接查詢是關(guān)系數(shù)據(jù)庫中最主要的查詢方式,連接查詢的目的是通過加載連接字段條件將多個表連接起來,以便從多個表中檢索用戶需要的數(shù)據(jù)。例如,在xs數(shù)據(jù)庫中需要查找選修了“數(shù)據(jù)結(jié)構(gòu)”課程的學生的姓名和成績,就需要將XSDA、KCXX、XSCJ這3個表進行連接,才能查找到結(jié)果。

在SQLServer2019中,連接查詢分為內(nèi)連接、外連接、交叉連接和自連接。任務3連接查詢項目5查詢3535內(nèi)連接是將兩個表中滿足連接條件的行組合起來,返回滿足條件的行。語法格式:FROM<table_source>[INNER]JOIN<table_source>ON<search_condition>參數(shù)說明如下。(1)<table_source>為需要連接的表。(2)ON用于指定連接條件。(3)<search_condition>為連接條件。(4)INNER表示內(nèi)連接。任務3-1內(nèi)連接項目5查詢3636【例5-27】查詢xs數(shù)據(jù)庫中每個學生的情況以及選修課程的情況:USExsSELECT*FROMXSDAINNERJOINXSCJONXSDA.學號=XSCJ.學號GO連接條件中的兩個字段稱為連接字段,它們必須是可比的。例如,【例5-27】的連接條件中的兩個字段是XSDA表和XSCJ表中的“學號”字段。連接條件中的比較運算符可以是<、<=、=、>、>=、!=、<>、!<、!>,當比較運算符是“=”時,就是等值連接。如果在等值連接結(jié)果的目標列中去除相同的字段名,就為自然連接。任務3-1內(nèi)連接項目5查詢3737任務3-1內(nèi)連接項目5查詢圖5-17等值連接的查詢結(jié)果3838外連接的結(jié)果表中不僅包含滿足連接條件的行,還包括相應表中的所有行。外連接包括以下3種。1.左外連接左外連接的結(jié)果表中除了包括滿足連接條件的行外,還包括左表的所有行。語法格式:FROM<table_source>LEFT[OUTER]JOIN<table_source>ON<search_condition>【例5-32】查詢所有被錄取考生的錄取情況,所有未被錄取的考生也要顯示其考號和姓名,并在LQXX表的相應列中顯示NULL:任務3-2外連接項目5查詢3939USExsSELECTKSMD.*,LQXX.*FROMKSMDLEFTJOINLQXXONKSMD.考號=LQXX.考號GOKSMD表與LQXX表左外連接的查詢結(jié)果如圖5-22所示。任務3-2外連接項目5查詢圖5-22

KSMD表與LQXX表左外連接的查詢結(jié)果4040交叉連接實際上是將兩個表進行笛卡兒積運算,結(jié)果表是由第一個表的每一行與第二個表的每一行拼接后形成的表,因此結(jié)果表的行數(shù)等于兩個表的行數(shù)之積。語法格式:FROM<table_source>CROSSJOIN<table_source>【例5-37】列出所有考生所有可能的錄取情況:USExsSELECTKSMD.*,LQXX.*FROMKSMDCROSSJOINLQXXGOKSMD表LQXX表交叉連接的查詢結(jié)果如圖5-25所示。任務3-3交叉連接項目5查詢圖5-25KSMD表與LQXX表交叉連接的查詢結(jié)果4141連接操作不僅可以在不同的表上進行,也可以在同一張表內(nèi)進行自身連接,即將同一個表的不同行連接起來。自連接可以看作一張表的兩個副本之間的連接。如果要在一個表中查找具有相同列值的行,就可以使用自連接。使用自連接時需要為表指定兩個別名,使之在邏輯上成為兩張表。對所有列的引用均要用別名限定。

任務3-4自連接項目5查詢4242【例5-39】在XSDA表中查找同名學生的學號、姓名:USExsSELECTXSDA1.姓名,XSDA1.學號,XSDA2.學號FROMXSDAASXSDA1JOINXSDAASXSDA2ONXSDA1.姓名=XSDA2.姓名WHEREXSDA1.學號<>XSDA2.學號GO

任務3-4自連接項目5查詢圖5-26XSDA表的自連接的查詢結(jié)果4343【任務目標】學會使用子查詢。學會根據(jù)要求保存查詢結(jié)果。【任務分析】子查詢是指在SELECT語句的WHERE或HAVING子句中嵌套另一條SELECT語句。外層的SELECT語句稱為外查詢,內(nèi)層的SELECT語句稱為內(nèi)查詢(或子查詢)。子查詢必須使用括號括起來。子查詢通常結(jié)合IN、EXIST謂詞及比較運算符使用。任務4子查詢和保存查詢結(jié)果項目5查詢44441.IN子查詢IN子查詢用于判斷一個給定值是否在子查詢結(jié)果表中。語法格式:Expression[NOT]IN(subquery)【例5-40】查詢選修了108號課程的學生的學號、姓名、性別、系名:任務4-1使用子查詢項目5查詢4545USExsSELECT學號,姓名,性別,系名FROMXSDAWHERE學號IN(SELECT學號FROMXSCJWHERE課程編號='108')GO任務4-1使用子查詢項目5查詢

圖5-27IN子查詢的查詢結(jié)果46462.比較子查詢比較子查詢可以認為是IN子查詢的擴展,它使表達式的值與子查詢的結(jié)果進行比較運算。語法格式:expression{<|<=|=|>|>=|!=|<>||!<|!>}{ALL|SOME|ANY}(subquery)任務4-1使用子查詢項目5查詢4747SELECT語句提供了兩個子句來保存、處理查詢結(jié)果,分別是INTO子句和UNION子句,下面分別介紹。1.INTO子句使用INTO子句可以將SELECT查詢所得的結(jié)果保存到一個新建的表中。語法格式:[INTOnew_table]任務4-2保存查詢結(jié)果項目5查詢4848【例5-44】由XSDA表創(chuàng)建“信息系學生表”,包含學號、姓名、系名、總學分:USExsSELECT學號,姓名,系名,總學分INTO信息系學生表FROMXSDAWHERE系名='信息'GO【例5-44】創(chuàng)建的“信息系學生表”包含4個字段:學號、姓名、系名、總學分。其數(shù)據(jù)類型與XSDA表中的同名字段相同。任務4-2保存查詢結(jié)果項目5查詢4949本項目主要介紹利用SELECT語句對數(shù)據(jù)庫進行各種查詢的方法。用戶通過SELECT語句可以從數(shù)據(jù)庫中查找需要的數(shù)據(jù),也可以進行數(shù)據(jù)的統(tǒng)計和匯總。(1)簡單查詢:包括用SELECT子句選取字段,用WHERE子句選取記錄并進行簡單的條件查詢,用ORDERBY子句對查詢結(jié)果進行排序。(2)分類匯總:包括5個聚合函數(shù)(SUM、AVG、MAX、MIN和COUNT)的使用,用GROUPBY子句和HAVING子句進行分組篩選。小結(jié)項目5查詢5050(3)連接查詢:連接查詢包括4種類型:內(nèi)連接、外連接、交叉連

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論