項目9 SQL 數(shù)據(jù)庫查詢_第1頁
項目9 SQL 數(shù)據(jù)庫查詢_第2頁
項目9 SQL 數(shù)據(jù)庫查詢_第3頁
項目9 SQL 數(shù)據(jù)庫查詢_第4頁
項目9 SQL 數(shù)據(jù)庫查詢_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

項目9SQL數(shù)據(jù)庫查詢專業(yè)核心課程精品課程19.1SELECT語句9.1.1?SELECT語句的基本結(jié)構(gòu)

其語法格式如下:SELECTselect_list[INTOnew_table][FROMtable_source][WHEREsearch_condition][GROUPBYGROUPBY_expression][HAVINGsearch_condition][ORDERBYORDERexpression[Asc|Desc]]9.1.2?用WITH語句檢查一致性WITH語句用于指定臨時命名的結(jié)果集,這些結(jié)果集稱為公用表表達式,其生命周期在該批處理語句執(zhí)行后結(jié)束?!馿xpression_name:指定要定義的CTE表達式的名稱?!馽olumn_name:CTE結(jié)果集中列的名稱?!馛TE_query_defmition:創(chuàng)建臨時結(jié)果集的查詢語句。

精品課程29.1SELECT語句9.1.3?用SELECT...FROM子句返回記錄

查詢所有列:在字段列表中,可以使用“*”關(guān)鍵字代表表中的所有列。查詢指定列:當(dāng)不需要查詢表中所有列時,應(yīng)該指定列名,列與列之間用。計算列:在使用SELECT進行查詢時,可以使用表達式,通過表達式獲得的列即為計算列。SELECT中使用的表達式除可以包含列,也可以包含常量、函數(shù)和運算符。SQLServer2016支持?jǐn)?shù)值的標(biāo)準(zhǔn)四則運算(+、—、*和/)和取余(%)。定義別名:在默認(rèn)情況下,查詢結(jié)果顯示表中列名,但對于計算列,系統(tǒng)不指定列名,以“無列名”顯示。這種情況下,可以使用AS語句指定一個名稱,該名稱被稱為別名。9.1.4?用INTO語句將記錄寫入指定文件使用INTO語句可以將查詢結(jié)果生成一個新表或存放在臨時表中。如果要將查詢結(jié)果存放在臨時表,就需在臨時表名前加上“*”。

精品課程39.1SELECT語句9.1.5?用WHERE語句篩選符合條件的記錄

比較條件查詢T-SQL代碼中的比較運算符范圍條件查詢:當(dāng)查詢某個范圍內(nèi)的數(shù)據(jù)時,可以使用Between...And關(guān)鍵字實現(xiàn)。列表條件查詢:使用WHERE關(guān)鍵字可以查詢與列表中的值相匹配的記錄。

運算符含義運算符含義>大于<小于=等于>=大于等于<=小于等于<>或!=不等于!>不大于!<不小于精品課程49.1SELECT語句9.1.5?用WHERE語句篩選符合條件的記錄

模式匹配查詢模式匹配通配符空值查詢:NULL表示空值,當(dāng)需要判斷表達式的值是否為空時,使用ISNULL關(guān)鍵字;若需要判斷表達式值是否為非空時,則應(yīng)該使用ISNOTNULL關(guān)鍵字。

通配符說明%匹配任意多個字符_匹配單個字符“”指定范圍(如“a~b”“0-~”)或集合(如“abcd”)中的任何單個字符“^”不在指定范圍(“^a~b”“^0~9”)或集合如(如“^abcd”)中的任何單個字符精品課程59.1SELECT語句9.1.6?用GROUPBY語句記錄分組

GROUPBY語句將數(shù)據(jù)按指定字段進行分組。例如,統(tǒng)計XS表中的男生和女生人數(shù),需要先將XS表按照班級、性別字段進行分組;若統(tǒng)計每門課程的平均分,則應(yīng)該首先將CJ表按照課程號進行分組。GROUPBY語句需要與聚合函數(shù)一同使用。聚合函數(shù)相關(guān)內(nèi)容請查看本書函數(shù)部分。9.1.7?用HAVING語句對聚合指定條件HAVING語句與WHERE語句的功能類似,都是對數(shù)據(jù)進行篩選。不同的是,WHERE語句是在分組之前對數(shù)據(jù)進行篩選,HAVING語句是對分組后的數(shù)據(jù)進行篩選。HAVING語句中可以包含聚合函數(shù),而WHERE語句不能包含聚合函數(shù)。當(dāng)WHERE、GROUPBY和HAVING語句同時存在于SELECT語句中時,需要注意其執(zhí)行的順序。首先執(zhí)行的是WHERE語句,篩選符合條件的記錄:接著執(zhí)行的是GROUPBY語句,對符合條件的記錄進行分組;最后對分組結(jié)果進行篩選。

精品課程69.1SELECT語句9.1.8?用ORDERBY語句排序

ORDERBY語句是對查詢結(jié)果按一個或多個字段進行排序。排序方式分為升序和降序兩種,分別使用關(guān)鍵字Asc和Desc,Asc是系統(tǒng)默認(rèn)方式。9.1.9?用Distinct關(guān)鍵字排除重復(fù)值使用Distinct關(guān)鍵字可以從查詢結(jié)果中消除重復(fù)的行,該關(guān)鍵字表示選取符合條件的數(shù)據(jù)記錄,并當(dāng)選取的記錄中有重復(fù)記錄時,去除重復(fù)記錄。使用Distinct關(guān)鍵字的SELECT語句在實際應(yīng)用中使用非常多。9.1.10?用Top關(guān)鍵字返回指定記錄如果SELECT查詢的結(jié)果集非常大,可以使用Top關(guān)鍵字限制其返回的行數(shù)。返回行數(shù)的方法有兩種,可以指定返回的數(shù)量,也可以指定返回記錄的比例。

精品課程79.2Union合并多個查詢結(jié)果9.2.1?Union與連接之間的區(qū)別

Union操作是把兩個查詢結(jié)果集追加在一起,它不會引起列的變化;連接操作是根據(jù)連接條件對兩個表的列進行比較,并將兩個表指定的列連接在一起。Union操作是將兩個或多個查詢結(jié)果進行橫向結(jié)合;而連接操作是將兩個或多個表或查詢結(jié)果進行縱向結(jié)合。Union操作中各查詢結(jié)果的列的數(shù)量與順序必須相同,而連接操作無此要求。9.2.2?使用UnionALL合并表Union操作中使用關(guān)鍵字ALL.合并的結(jié)果包括所有行,不去除重復(fù)行;不使用ALL則將合并結(jié)果中的重復(fù)行去除。默認(rèn)情況下Union操作將從結(jié)果中去除重復(fù)行。

精品課程89.2Union合并多個查詢結(jié)果9.2.3?Union中的ORDERBY語句

在Union操作中,其結(jié)果的列標(biāo)題為第一個查詢的列標(biāo)題。要對結(jié)果進行排序,也必須使用第一個查詢中的列標(biāo)題。對查詢結(jié)果進行排序,ORDERBY子句只能位于最后一個查詢語句后。9.2.4?Union中的自動數(shù)據(jù)類型轉(zhuǎn)換Union操作中,SELECT查詢列的數(shù)量與順序必須相同,列的數(shù)據(jù)類型不必完全相同,但數(shù)據(jù)類型間必須可自動轉(zhuǎn)換。自動轉(zhuǎn)換時,對于數(shù)值類型,系統(tǒng)將低精度的數(shù)據(jù)類型轉(zhuǎn)換為高精度的數(shù)據(jù)類型;對于長度不同的文本數(shù)據(jù)類型,系統(tǒng)將在結(jié)果集中采用長的文本長度。9.2.5?使用Union合并不同類型的數(shù)據(jù)若合并表中兩個SELECT查詢的對應(yīng)的列數(shù)據(jù)類型不一致,則需要使用數(shù)據(jù)類型轉(zhuǎn)化函數(shù)完成顯式的類型轉(zhuǎn)換。例如,兩個SELECT查詢相對應(yīng)的列數(shù)據(jù)類型,一個為數(shù)值型,另一個為字符型,合并前需要將數(shù)值型轉(zhuǎn)化為字符型。

精品課程99.2Union合并多個查詢結(jié)果9.2.6?使用Union合并有不同列數(shù)的兩個表

使用Union操作將兩個SELECT查詢結(jié)果合并,通常兩個SELECT查詢的列數(shù)量應(yīng)該相同。若兩個查詢的列數(shù)量不相等,則可以通過向其中一個SELECT查詢中添加NULL列,使兩個查詢中的列相等,完成合并操作。9.2.7?使用Union進行多表合并Union操作的作用是將兩個SELECT查詢的結(jié)果集進行合并。實際上,一個SQL語句中可以包括多個UniOD操作,也就是說可以將多個SELECT查詢結(jié)果合并。

精品課程109.3子查詢與嵌套查詢9.3.1?什么是子查詢

子查詢應(yīng)遵守的語法規(guī)則如下:(1)子查詢的SELECT查詢使用圓括號。(2)不能使用Compute或ForBrowse語句。(3)ORDERBY語句不能用于查詢,但指定了Top時則可以。(4)子查詢最多可以嵌套32層。9.3.2?什么是嵌套查詢嵌套查詢是指一個查詢語句可以嵌套在另一個查詢塊的WHERE語句或HAVING語句中。其中外層查詢也稱為父查詢,內(nèi)層查詢也稱子查詢。嵌套查詢的工作方式是:先處理子查詢,父查詢利用子查詢的結(jié)果一層層向上處理,直到最外層的查詢。9.3.3?簡單嵌套查詢嵌套查詢中的內(nèi)層子查詢通常作為搜索條件的一部分,如果子查詢返回的是單個值,就稱為簡單嵌套查詢。將表達式的值與子查詢的返回結(jié)果進行比較,如果比較結(jié)果為真,顯示返回該記錄;否則不返回該記錄。

精品課程119.3子查詢與嵌套查詢9.3.4?帶IN的嵌套查詢

如果子查詢的結(jié)果不是單個值,而是一個集合,就應(yīng)使用關(guān)鍵字IN,稱為帶IN的嵌套查詢,其語法格式為:SELECTSELECTLISTFROMtable_sourceWHEREexpressionIN子查詢9.3.5?帶NotIN的嵌套查詢?nèi)绻覆樵儽磉_式的值不在子查詢的結(jié)果中,就可以使用NotIN,其語法格式為:SELECTSELECTLISTFROMtable_sourceWHEREexpressionMOTIN子查詢

精品課程129.3子查詢與嵌套查詢9.3.6?帶Some的嵌套查詢

SQLServer2016支持Some、Any和ALL3種比較謂詞,其中Some和Any是等效的。ALL要求WHERE的查詢表達式與子查詢返回的每個值進行比較時都應(yīng)滿足條件,Some和Any則要求WHERE的查詢表達式與子查詢返回的值進行比較時至少有一個滿足條件。9.3.7?帶Any的嵌套查詢在SQLServer2016中,謂詞Any和Some是等效的,使用謂詞的地方可以替換為Some。9.3.8?帶ALL的嵌套查詢比較謂詞ALL,要求WHERE的查詢表達式與子查詢返回的每個值進行比較,且都滿足條件,否則不返回記錄。

精品課程139.3子查詢與嵌套查詢9.3.9?帶Exists的嵌套查詢

Exists的子查詢不產(chǎn)生任何數(shù)據(jù),只是用來檢測子查詢中是否有結(jié)果返回。如果有,子查詢就返回True;否則將返回False。由于僅僅判斷是否有返回結(jié)果,因此子查詢的字段列表通常為“*”。

精品課程149.4連接查詢9.4.1?內(nèi)部連接

內(nèi)部連接的語法格式如下:SELECTSELECT_LISTFROMtable1lnnerJointable2ONsearch_condition9.4.2?外部連接左外連接:左外連接使用LeftOuterJoin或者LeftJoin進行連接。其語法格式為:SELECTSELECT_listFROMleft_tableLeftJoinright_tableOnsearch_condition

精品課程159.4連接查詢9.4.2?外部連接右外連接:右外連接使用RrightOuterJoin或者RightJoin進行連接。其語法格式為:SELECTSELECTlistFROMleft_tableRightJoinright_tableOnsearchcondition完全外連接:完全外連接使用FullOuterJoin或者FullJoin進行連接。其語法格式為:SELECTSELECT_listFROMleft_tableFullJoinright_tableOnsearch_condition

精品課程169.4連接查詢9.4.3?交叉連接交叉連接使用CrossJoin進行連接。交叉連接的語法格式為:SELECTselect_listFROMtable1CrossJointable29.4.4?連接多表的方法多表連接的語法如下(以3個表連接為例):SELECTselect_listFROMtable1Jointable2ONsearch_condition1Jointable3ONsearch_condition2或

精品課程179.4連接查詢SELECTselect_listFROMtable1

溫馨提示

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

評論

0/150

提交評論