accessSQL結(jié)構(gòu)化查詢語言秦經(jīng)賢_第1頁
accessSQL結(jié)構(gòu)化查詢語言秦經(jīng)賢_第2頁
accessSQL結(jié)構(gòu)化查詢語言秦經(jīng)賢_第3頁
accessSQL結(jié)構(gòu)化查詢語言秦經(jīng)賢_第4頁
accessSQL結(jié)構(gòu)化查詢語言秦經(jīng)賢_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第14章SQL語句

目前關(guān)系數(shù)據(jù)庫管理系統(tǒng)都采用SQL語言作為數(shù)據(jù)庫語言,SQL語言成為關(guān)系數(shù)據(jù)庫的主流語言。本章以Access支持的SQL語言來討論其功能和使用方法。9.1.1SQL語言的特點(diǎn)

SQL語言是一種介于關(guān)系代數(shù)與關(guān)系演算之間的結(jié)構(gòu)化查詢語言。Access所支持的SQL語言不是全部的SQL語言,下面我們所講的SQL語言都指的是Access所支持的SQL語言。14.3SQL中的數(shù)據(jù)查詢語句

數(shù)據(jù)庫中的數(shù)據(jù)很多時侯是為了查詢的,因此,數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。而在SQL語言中,查詢語言中有一條查詢命令,即SELECT語句。14.3.1基本查詢語句(投影查詢)【格式】SELECT[ALL|DISTINCT]<字段列表>FROM<表>【功能】無條件查詢【說明】ALL:表示顯示全部查詢記錄,包括重復(fù)記錄。

DISTINCT:表示顯示無重復(fù)結(jié)果的記錄14.3.2選擇查詢【格式】SELECT<字段列表>FROM<表>WHERE<條件>【功能】有條件查詢【說明】在該條件中除了可以用關(guān)系表達(dá)式外,還可以使用以下運(yùn)算符:1.BETWEEN…AND…2.IN3.LIKE

舉例:1.顯示學(xué)生選課及成績表中考試成績在60-80之間的所有記錄。

SELECT*FROM學(xué)生選課及成績表

WHERE考試成績BETWEEN60AND802.顯示學(xué)生選課及成績表中考試成績?yōu)?5、88、90的所有記錄。

SELECT*FROM學(xué)生選課及成績表

WHERE考試成績IN(85,88,90)3.顯示學(xué)生信息表中的所有”王”姓同學(xué),只顯示姓名和性別字段SELECT姓名,性別FROM學(xué)生信息表

WHERE姓名like“王*”注:”*”表示可與一串字符匹配,”?”表示可與一個字符匹配14.3.3排序查詢

通過在SELECT命令中加入ORDERBY子句可控制行的顯示順序。ORDERBY可以按升序(默認(rèn)或ASC)、降序(DESC)排列各行,也可以按多個列來排序。注意:該子句必須是SELECT命中的最后一個子句【例】將學(xué)生選課及成績表中的考試成績字段按降序排列。

SELECT*FROM學(xué)生選課及成績表ORDERBY考試成績DESC14.3.4使用聚合函數(shù)

聚合函數(shù)用于實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計等功能.access中提供的聚合函數(shù)有AVG(),COUNT(),MIN(),MAX()SUM()等例:查詢”計算機(jī)網(wǎng)絡(luò)”班的學(xué)生人數(shù)。

Selectcount(*)from學(xué)生信息表where所在班級=“計算機(jī)網(wǎng)絡(luò)”或Selectcount([學(xué)號])from學(xué)生信息表where所在班級=“計算機(jī)網(wǎng)絡(luò)”例:查詢編號為”C011”的課程的考試成績的平均分。

selectavg([考試成績])as平均分from學(xué)生選課及成績表where課程號="C011"

上述例子中使用了聚合函數(shù),我們還可以加上GROUPBY子句,通常一個聚合函數(shù)的范圍是滿足WHERE子句指定的條件的所有記錄。在加上GROUPBY子句后,SELECT命令把查詢結(jié)果按指定列分成集合組。當(dāng)一個聚合函數(shù)和一個GROUPBY子句一起使用時,聚合函數(shù)的范圍變?yōu)槊拷M的所有記錄。換句話說,一個結(jié)果是由組成一組的每個記錄聚合產(chǎn)生的。使用HAVING子句可以對這些組進(jìn)一步加以控制。用這一子句定義這些組所必須滿足的條件,便將其包含在結(jié)果中。當(dāng)WHERE子句、GROUPBY子句和HAVING子句同時出現(xiàn)在一個查詢中時,SELECT的執(zhí)行順序如下:1、執(zhí)行WHERE子句,從表中選取行2、由GROUPBY對選取的行進(jìn)行分組3、執(zhí)行聚合函數(shù)4、執(zhí)行HAVING子句選取滿足條件的分組例:顯示學(xué)生考試成績平均分高于60分的學(xué)生的學(xué)號。

SELECT學(xué)號FROM學(xué)生選課及成績表GROUPBY學(xué)號HAVINGAVG([考試成績])>60例:顯示學(xué)生的考試成績的最低分大于60,最高分小于95的學(xué)生的學(xué)號。

SELECT學(xué)號

FROM學(xué)生選課及成績表

GROUPBY學(xué)號

HAVINGMIN([考試成績])>=60ANDMAX([考試成績])<=9514.3.5表的連接查詢

在數(shù)據(jù)查詢中,經(jīng)常涉及到提取兩個或多個表的數(shù)據(jù),這就需要使用表的連接來實(shí)現(xiàn)若干個表數(shù)據(jù)的聯(lián)合查詢。在一個查詢中,當(dāng)需要對兩個或多個表連接時,可以指定連接列,在WHERE子句中給出連接條件,在FROM子句中指定要連接的表,其格式如下:

SELECT字段名1,字段名2,…FROM表1,表2…WHERE連接條件and一般條件對于連接的多個表,為了區(qū)別是哪個表中的列,在連接條件中通過表名前綴指定連接列,如:TEACHER.NO表示TEACHER表的NO列。例:顯示所有學(xué)生的課程名稱和考試成績字段。

SELECT課程表.課程名稱,學(xué)生選課及成績表.考試成績

FROM課程表,學(xué)生選課及成績表

WHERE課程表.課程號=學(xué)生選課及成績表.課程號

SELECT為了簡化輸入,允許在查詢中使用表的別名,以縮寫表名,我們可以在SELECT子句中為表定義一個臨時別名,然后在查詢中引用。例:顯示所有學(xué)生的課程名稱和考試成績字段。

SELECTa.課程名稱,b.考試成績

FROM課程表a,學(xué)生選課及成績表bWHEREa.課程號=b.課程號如果涉及到更多的數(shù)據(jù)表該怎么做呢?例:顯示所有學(xué)生的姓名、課程名稱和考試成績字段。

SELECT學(xué)生信息表.姓名,課程表.課程名稱,學(xué)生選課及成績表.考試成績

FROM學(xué)生信息表,課程表,學(xué)生選課及成績表

WHERE學(xué)生信息表.學(xué)號=學(xué)生選課及成績表.學(xué)號and課程表.課程號=學(xué)生選課及成績表.課程號例:顯示每門課程的考試成績的平均分。SELECT學(xué)生選課及成績表.課程號,AVG(學(xué)生選課及成績表.考試成績)AS平均分FROM學(xué)生信息表,學(xué)生選課及成績表WHERE學(xué)生信息表.學(xué)號=學(xué)生選課及成績表.學(xué)號GROUPBY學(xué)生選課及成績表.課程號或例:顯示每門課程的考試成績的平均分。SELECTY.課程號,AVG(Y.考試成績)AS平均分FROM學(xué)生信息表X,學(xué)生選課及成績表YWHEREX.學(xué)號=Y.學(xué)號GROUPBYY.課程號例:顯示“計算機(jī)應(yīng)用”班所選課程的考試成績平均分。SELECT學(xué)生選課及成績表.課程號,AVG(學(xué)生選課及成績表.考試成績)AS平均分FROM學(xué)生信息表,學(xué)生選課及成績表WHERE學(xué)生信息表.學(xué)號=學(xué)生選課及成績表.學(xué)號AND學(xué)生信息表.所在班級="計算機(jī)應(yīng)用"GROUPBY學(xué)生選課及成績表.課程號或例:顯示“計算機(jī)應(yīng)用”班所選課程的考試成績平均分。SELECTY.課程號,AVG(Y.考試成績)AS平均分FROM學(xué)生信息表X,學(xué)生選課及成績表YWHEREX.學(xué)號=Y.學(xué)號ANDX.所在班級=“計算機(jī)應(yīng)用”

GROUPBYY.課程號

9.3.6子查詢

當(dāng)一個查詢是另一個查詢的條件時,稱之為子查詢.子查詢可以使用幾個簡單的命令構(gòu)造強(qiáng)大的復(fù)合命令。子查詢最常用于SQL命令的WHERE子句中。例:查詢和學(xué)號為“012101”的學(xué)生同年出生的所有學(xué)生的學(xué)號,姓名和出生日期字段。

select學(xué)號,姓名,出生日期from學(xué)生信息表whereyear([出生日期])=(selectyear([出生日期])from學(xué)生信息表where學(xué)號="012101")

例:查詢和學(xué)號為“012101”的學(xué)生同年同月同日出生的所有學(xué)生的學(xué)號,姓名和出生日期字段。select學(xué)號,姓名,出生日期from學(xué)生信息表where出生日期=(select出生日期from學(xué)生信息表

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論