SQL Server 2000實(shí)用教程課件ch06_第1頁(yè)
SQL Server 2000實(shí)用教程課件ch06_第2頁(yè)
SQL Server 2000實(shí)用教程課件ch06_第3頁(yè)
SQL Server 2000實(shí)用教程課件ch06_第4頁(yè)
SQL Server 2000實(shí)用教程課件ch06_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

SQLServer2000實(shí)用教程歡迎學(xué)習(xí)數(shù)

據(jù)

詢第6章第6章數(shù)據(jù)查詢6.1

Select語(yǔ)句的基本格式6.2

基本查詢第6章數(shù)據(jù)查詢6.3

高級(jí)查詢6.4

實(shí)訓(xùn)項(xiàng)目第6章數(shù)據(jù)查詢能力要求:通過(guò)對(duì)本章的學(xué)習(xí),讀者應(yīng)掌握如下技能:使用SELECT語(yǔ)句進(jìn)行基本查詢的能力;使用SELECT語(yǔ)句進(jìn)行高級(jí)查詢的能力。第6章數(shù)據(jù)查詢第6章數(shù)據(jù)查詢6.1Select語(yǔ)句的基本格式第6章數(shù)據(jù)查詢6.1

Select語(yǔ)句的基本格式在SQLServer中,SELECT語(yǔ)句是使用頻率最高的語(yǔ)句之一。SELECT語(yǔ)句的作用是讓數(shù)據(jù)庫(kù)服務(wù)器根據(jù)客戶的要求從數(shù)據(jù)庫(kù)中搜索出所需要的信息資料,并且可以按規(guī)定的方式進(jìn)行分類、統(tǒng)計(jì)、排序,再返回給客戶。另外,利用SELECT語(yǔ)句還可以設(shè)置和顯示系統(tǒng)信息、給局部變量賦值等。SELECT語(yǔ)句具有強(qiáng)大的查詢功能,完整的語(yǔ)法非常復(fù)雜,我們之需要掌握SELECT語(yǔ)句的一部分,就可以輕松地利用數(shù)據(jù)庫(kù)完成自己的工作。第6章數(shù)據(jù)查詢6.2基本查詢6.2.1

選擇列6.2.2

選擇行第6章數(shù)據(jù)查詢6.2.3

排序6.2.4TOP和DISTINCT的使用6.2

詢當(dāng)使用SELECT語(yǔ)句時(shí),可以用兩種方式來(lái)控制返回的數(shù)據(jù):選擇列和選擇行。選擇列就是限制返回結(jié)果中的列,這由SELECT語(yǔ)句中的SELECT子句指定要返回的列來(lái)控制;選擇行則是限制返回結(jié)果中的行,這由SELECT語(yǔ)句中WHERE子句指定選擇條件來(lái)控制。第6章數(shù)據(jù)查詢6.2.1

選擇列語(yǔ)法形式如下:SELECTcolumn_name1[,column_name2,…]FROMtable_name

1.

指定列第6章數(shù)據(jù)查詢6.2.1

選擇列在SELECT子句中可以使用星號(hào)(*),顯示表中所有的列。

2.選擇所有列第6章數(shù)據(jù)查詢6.2.1

選擇列

在進(jìn)行數(shù)據(jù)查詢時(shí),經(jīng)常需要對(duì)表中的數(shù)據(jù)進(jìn)行計(jì)算,之后才能得到滿意的結(jié)果。在SELECT子句中可以使用算術(shù)運(yùn)算符對(duì)數(shù)值型數(shù)據(jù)進(jìn)行如加(+),減(—),乘(*),除(/),和取模(%)運(yùn)算,構(gòu)造計(jì)算列。

3.使用計(jì)算列第6章數(shù)據(jù)查詢6.2.1

選擇列

為了增加查詢結(jié)果的可讀性,可以在Select子句中增加一些說(shuō)明列,增加的說(shuō)明文字串需要用單引號(hào)括起來(lái)。

4.增加說(shuō)明列第6章數(shù)據(jù)查詢6.2.1

選擇列

在缺省情況下,查詢結(jié)果中顯示的列標(biāo)題就是在創(chuàng)建表時(shí)使用的列名,但對(duì)于像圖6-2和圖6-3中的計(jì)算列,系統(tǒng)是不指定列標(biāo)題的,如果我們想改變查詢結(jié)果中所顯示的列標(biāo)題,可以在SELECT語(yǔ)句中使用‘列標(biāo)題’=列名或列名AS’列標(biāo)題‘兩種方法。

5.改變列標(biāo)題第6章數(shù)據(jù)查詢6.2.2

選擇行

在實(shí)際工作中,大部分查詢并不是針對(duì)表中所有數(shù)據(jù)記錄的查詢,而是要找出滿足某些條件的數(shù)據(jù)記錄。此時(shí)我們可以在SELECT語(yǔ)句中使用WHERE子句。使用WHERE子句的目的是從表中篩選出符合條件的行,其語(yǔ)法形式如下:

SELECTcolumn_name1[,column_name2,…]

FROMtable_name

WHEREsearch_condition第6章數(shù)據(jù)查詢6.2.2

選擇行

WHERE子句中允許使用的比較運(yùn)算符如表6-1所示。

1.使用比較運(yùn)算符第6章數(shù)據(jù)查詢表6-1

比較運(yùn)算符運(yùn)算符描述運(yùn)算符描述=等于!>不大于<小于!<不小于>大于>=大于等于<>、!=不等于<=小于等于6.2.2

選擇行在WHERE語(yǔ)句中還可以使用邏輯運(yùn)算符把若干個(gè)查詢條件連接起來(lái),構(gòu)成一個(gè)復(fù)雜的條件進(jìn)行查詢??梢允褂玫倪壿嬤\(yùn)算符包括:邏輯與(AND),邏輯或(OR)和邏輯非(NOT).語(yǔ)法形式如下:[NOT]search_condition{AND1OR}[NOT]search_condition

2.使用邏輯運(yùn)算符第6章數(shù)據(jù)查詢6.2.2

選擇行在前面介紹的查詢中,查詢條件都的確定的.但是實(shí)際應(yīng)用中,并不是所有的查詢條件都的確定的.例如,要查詢公司一個(gè)姓張的銷售人員,但不知道叫什么名字.此時(shí),精確查詢就不管用了,必須使用LIKE關(guān)鍵字進(jìn)行模糊查詢.其語(yǔ)法形式為:expression[NOT]LIKE’string’‘sring’:是匹配字符串。

3.使用字符串模糊匹配第6章數(shù)據(jù)查詢6.2.2

選擇行在WHERE子句中使用BETWEEN關(guān)鍵字可以對(duì)表中某一范圍內(nèi)的數(shù)據(jù)進(jìn)行查詢,系統(tǒng)將逐行檢查表中數(shù)據(jù)是否在BETWEEN關(guān)鍵字設(shè)定的范圍內(nèi).如果在其設(shè)定的范圍內(nèi),則取出該行,否則不取該行。其語(yǔ)法形式為:column_name[NOT]BETWEENexpression1ANDexpression2

4.使用查詢范圍第6章數(shù)據(jù)查詢6.2.2

選擇行如果列值的取值范圍不是一個(gè)連續(xù)的區(qū)間,而是一些離散的值,此時(shí)就應(yīng)使用SQLServer提供的另一個(gè)關(guān)鍵字IN。其語(yǔ)法形式為:

Colum_name[NO]IN(value1,value2,…)

5.使用查詢列表第6章數(shù)據(jù)查詢6.2.2

選擇行

在SQLServer中,用NULL表示空值,它僅僅是一個(gè)符號(hào),不等于空格,也不等于0,空值判定的語(yǔ)法形式如下:

columm_nameIS[NOT]NULL

6.空值的判定第6章數(shù)據(jù)查詢6.2.3

排序

在通常情況下,SQLServer數(shù)據(jù)庫(kù)中的數(shù)據(jù)紀(jì)錄行在顯示時(shí)是無(wú)序的,它按照數(shù)據(jù)記錄插入數(shù)據(jù)庫(kù)時(shí)的順序排列,因此用SELECT語(yǔ)句查的結(jié)果也是無(wú)序的。通過(guò)使用ORDERBY子句,可以將查詢結(jié)果進(jìn)行排序顯示。其語(yǔ)法

形式為:

SELECTcolumn_name[,column_name2,…]

FROMtable_name

WHEREsearch_condition

ORDERBYcolumn_name[ASC|DESC][,column_name[ASC|DESC]…]第6章數(shù)據(jù)查詢6.2.4

TOP和DISTINCT的使用

使用TOP關(guān)鍵字可以返回表中前面一定數(shù)量的數(shù)據(jù)。當(dāng)查詢的數(shù)據(jù)非常多(如有100萬(wàn)行),但有沒(méi)有必要對(duì)所有的數(shù)據(jù)進(jìn)行瀏覽時(shí),使用TOP關(guān)鍵字可以大大減少查詢的時(shí)間。其語(yǔ)法形式為:

SELECT[TOPinteger|TOPintegerPERCENT]

column_name

FROMtable_name

其中,TOPinteger:表示返回表中最前面的幾行,用integer表示返回的行數(shù)。

1.TOP關(guān)鍵字第6章數(shù)據(jù)查詢6.2.4

TOP和DISTINCT的使用

前面介紹的查詢方式會(huì)返回表中所有符合條件的行,而不管這些行是否重復(fù),使用DISTINCT關(guān)鍵字可以從返回的結(jié)果數(shù)據(jù)集中刪除重復(fù)的行,使結(jié)果更簡(jiǎn)潔。其語(yǔ)法形式為:

SELECT[ALL|DISTINCT]column_name[,column_name2,…]

FROMtable_name

WHEREsearch_condition

其中,關(guān)鍵字ALL:允許重復(fù)數(shù)據(jù)行的出現(xiàn),是默認(rèn)的關(guān)鍵字。

2.DISTINCT關(guān)鍵字第6章數(shù)據(jù)查詢6.3.1

多表查詢6.3.2

分組和匯總6.3高級(jí)查詢6.3.3

嵌套查詢第6章數(shù)據(jù)查詢6.3.4

合并數(shù)據(jù)集6.3.5

生成一個(gè)新表6.3

級(jí)

詢前面介紹的查詢還局限在數(shù)據(jù)庫(kù)的一張表內(nèi)。但在實(shí)際應(yīng)用中,我們經(jīng)常需要在多張表中查詢數(shù)據(jù)或者需要對(duì)表中的數(shù)據(jù)進(jìn)行分類、匯總等,這就需要較為復(fù)雜的高級(jí)查詢。第6章數(shù)據(jù)查詢6.3.1

多表查詢?cè)谠O(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候,我們需要設(shè)計(jì)很多張表,然后將數(shù)據(jù)分布到這些表中。將數(shù)據(jù)分布到多張表中的主要目的是為了儲(chǔ)存數(shù)據(jù)更加方便。然而這些數(shù)據(jù)本來(lái)就是一個(gè)整體,所以我們?cè)诓樵償?shù)據(jù)的時(shí)候,需要從這些表中將數(shù)據(jù)提取出來(lái),重新聚合到一起顯示給用戶。SQLServer提供了實(shí)現(xiàn)多表查詢的方法——連接查詢。所謂連接查詢是將多個(gè)表以某個(gè)或某些列為條件連接,從中檢索出關(guān)聯(lián)數(shù)據(jù)。連接有ANSI連接、SQLServer連接兩種語(yǔ)法形式,這里主要介紹ANSI連接語(yǔ)法形式。第6章數(shù)據(jù)查詢6.3.1

多表查詢所謂內(nèi)連接是多個(gè)表通過(guò)連接條件中共享列的值進(jìn)行的比較連接。當(dāng)未指明連接類型時(shí),默認(rèn)為內(nèi)連接。內(nèi)連接值顯示兩個(gè)表中所有匹配數(shù)據(jù)的行,如圖6-15所示。

1.內(nèi)連接(INNERJOIN)第6章數(shù)據(jù)查詢圖6-15

表之間的內(nèi)連接內(nèi)連接6.3.1

多表查詢外連接顯示一個(gè)表中所有的行和另外一個(gè)表中的任何匹配的行,如圖6-17所示。外連接又分為左外連接、右外連接。

2.外連接(OUTERJOIN)第6章數(shù)據(jù)查詢圖6-17

表之間的外連接外連接6.3.1

多表查詢兩個(gè)表之間的交叉連接,是用左表中的每一行與右表中的每一行進(jìn)行連接。因此,結(jié)果集中的行數(shù)是左表的行數(shù)乘以右表的行數(shù),該乘積也稱為“笛卡兒乘積”,交叉連接使用關(guān)鍵字CROSSJOIN。

3.交叉連接第6章數(shù)據(jù)查詢6.3.2

分組和匯總同其他語(yǔ)言一樣,SOLServer也提供了一系列的系統(tǒng)函數(shù),包括聚合函數(shù)、數(shù)學(xué)函數(shù)、字符串函數(shù)、日期和時(shí)間函數(shù)等,本節(jié)只介紹聚合函數(shù)。聚合函數(shù)可以返回一列、幾列或全部列的匯總數(shù)據(jù),用于計(jì)數(shù)或?qū)ふ夷沉械钠骄?。這類函數(shù)僅作用于數(shù)值型列,并且在列上使用聚合函數(shù)時(shí),不考慮NULL值。常用的聚合函數(shù)如表4-4所示。

1.使用聚合函數(shù)第6章數(shù)據(jù)查詢表4-4

常用聚合函數(shù)表函數(shù)名描述AVG([ALL|DISTINCT][expression])MAX(expression)MIN(expression)SUM([ALL|DISTINCT][expression])COUNT([ALL|DISTINCT][expression])COUNT(*)返回表達(dá)式的平均值返回表達(dá)式的最大值返回表達(dá)式的最小值返回表達(dá)式中所有值的平均值返回表中指定列的數(shù)據(jù)記錄行數(shù)。使用DISTINCT關(guān)鍵字刪除重復(fù)值返回表中所有數(shù)據(jù)記錄的行數(shù)6.3.2

分組和匯總使用聚合函數(shù)只能返回一個(gè)單個(gè)的匯總結(jié)果,如果需要顯示分組的匯總數(shù)據(jù),就必須使用GROUPBY子句。該句子的功能是根據(jù)指定的列表中的數(shù)據(jù)分成多個(gè)組后進(jìn)行匯總。其與語(yǔ)法格式為:SELECTclumn_name1[,…n]FROMtable_nameWHEREsearch_conditionGROUPBY[ALL]column_mane1[,…n][HAVINGsearchm_condition]

2.使用分組匯總子句第6章數(shù)據(jù)查詢6.3.2

分組和匯總使用GROUPBY對(duì)查詢出來(lái)的數(shù)據(jù)進(jìn)行分類匯總后,只能顯示統(tǒng)計(jì)結(jié)果,看不到詳細(xì)的數(shù)據(jù)。使用COMPUTE和COMPUTEBY子句既能瀏覽詳細(xì)數(shù)據(jù)又可以看到統(tǒng)計(jì)結(jié)果。

3.

使用明細(xì)匯總子句第6章數(shù)據(jù)查詢6.3.3

嵌套查詢前面所提到的查詢都是單層查詢。但在實(shí)際運(yùn)用中,經(jīng)常要用到嵌套查詢。所謂嵌套查詢指的是在一個(gè)SELECT查詢內(nèi)再嵌入一個(gè)SELECT語(yǔ)句。外層的SELECT語(yǔ)句叫外部查詢,內(nèi)層的SELECT語(yǔ)句叫子查詢。通常情況下,嵌套查詢都可以寫成連接的形式,但有時(shí)寫成連接的形式比較復(fù)雜,不容易理解,而寫成嵌套查詢,可以將復(fù)雜的查詢分解成幾個(gè)簡(jiǎn)單的、易于理解的子查詢。但是,由于子查的詢的執(zhí)行需要增加一些附加的操作,而連接不需要增加附加操作,故連接操作比子查詢快。第6章數(shù)據(jù)查詢6.3.4

合并數(shù)據(jù)集在SELECT語(yǔ)句中,使用UNION子句可以把兩個(gè)或多個(gè)SELECT語(yǔ)句查詢的結(jié)果組合成一個(gè)結(jié)果集。其語(yǔ)法形式如下:SELECT_statement1UNION[ALL]SELECT_statement2第6章數(shù)據(jù)查詢6.3.5

生成一個(gè)新表在對(duì)表進(jìn)行查詢時(shí),我們可以使用INTO子句將查詢生成一個(gè)新表,此方法常用于創(chuàng)建的副本或創(chuàng)建臨時(shí)表,其語(yǔ)法形式為:SELECT[ALL|DISTINCT][TOPn[PERCENT]select_list[INTOnew_table]FROMtable_name[WHEREsearch_condition]第6章數(shù)據(jù)查詢6.4

實(shí)

訓(xùn)

項(xiàng)

目2、針對(duì)上一章創(chuàng)建的學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)中的三個(gè)表,完成以下查詢。1)查詢?nèi)w學(xué)生的選課情況,其成績(jī)列都加5,并為各列設(shè)置中問(wèn)別名。2)顯示所有選課學(xué)生的的學(xué)號(hào)。3)顯示所有選課學(xué)生的的學(xué)號(hào)并去掉重復(fù)行。4)查詢學(xué)生選課成績(jī)大于80分的學(xué)生學(xué)號(hào)、課程號(hào)、成績(jī)。

5)查詢計(jì)算機(jī)系全體學(xué)生的學(xué)號(hào)、姓名。

6)查詢學(xué)生選課成績(jī)?cè)?0—90分之間的學(xué)生學(xué)號(hào)、課程號(hào)和成績(jī)。

7)查詢計(jì)算機(jī)系、建筑工程系的學(xué)生的學(xué)號(hào)及姓名。

8)查詢不是計(jì)算機(jī)系、建筑工程系的學(xué)生的學(xué)號(hào)及姓名。

9)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論