版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL5.1 SQL概述SQL是結(jié)構(gòu)化查詢語(yǔ)言STRCTURE QUERY LANGURAGE1.簡(jiǎn)介 SQL-Structured Query Language(結(jié)構(gòu)化查詢語(yǔ)言) SQL語(yǔ)言已經(jīng)成為關(guān)系數(shù)據(jù)庫(kù)通用的查詢語(yǔ)言,幾乎所有的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都支持它。 SQL語(yǔ)言功能:數(shù)據(jù)定義、數(shù)據(jù)控制、數(shù)據(jù)操縱和數(shù)據(jù)查詢功能,其中最重要的是數(shù)據(jù)查詢功能。 數(shù)據(jù)庫(kù)的所有操作都可以通過(guò)SQL語(yǔ)言來(lái)完成 表5-1 SQL命令動(dòng)詞SQL功能命令動(dòng)詞數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE,DROP,ALTER數(shù)據(jù)操縱INSERT,UPDATE,DELETE數(shù)據(jù)控制GRANT,REV
2、OKE2.特點(diǎn) 兩種使用方式:既可以直接以命令方式交互使用,也可以嵌入到程序設(shè)計(jì)語(yǔ)言中以程序方式使用。 高度非過(guò)程化:只需要描述清楚用戶要“做什么”,SQL語(yǔ)言就可以將要求交給系統(tǒng),自動(dòng)完成全部工作。 語(yǔ)言簡(jiǎn)潔,易學(xué)易用。5.2 查詢功能1. SQL 的核心是查詢。SQL的查詢命令也稱為SELECT命令,它的基本形式由SELECT-FROM-WHERE查詢塊組成,多個(gè)查詢塊可以嵌套執(zhí)行。2. SELECT命令的語(yǔ)法格式(P77)(1) 其中主要短語(yǔ)的含義如下:SELECT :說(shuō)明要顯示查詢的數(shù)據(jù)字段FROM:說(shuō)明要查詢的數(shù)據(jù)來(lái)自哪個(gè)或哪些表WHERE:說(shuō)明查詢條件,即選擇元組的條件JOIN:指
3、定多個(gè)表之間的聯(lián)接GROUP BY:對(duì)查詢結(jié)果進(jìn)行分組,可以利用它進(jìn)行分組匯總HAVING:必須跟隨GROUP BY,它用來(lái)限定分組必須滿足的條件 ORDER BY: 對(duì)查詢結(jié)果進(jìn)行排序注意:只有SELECT和FROM是命令的必需部分(2) 查詢例子(以下查詢例子都是采用bookinfo,readerinfo,borrowreturninfo,bookcategory數(shù)據(jù)表)p79p805.2.1簡(jiǎn)單查詢簡(jiǎn)單查詢是從一個(gè)表中查詢某些列的信息。 由SELECT和FROM短語(yǔ)構(gòu)成的無(wú)條件查詢 基于單個(gè)表 或由SELECT、FROM和WHERE短語(yǔ)構(gòu)成的條件查詢例子5.1在readerinfo表中查
4、詢所有讀者信息。其中“ * ”是通配符,表示所有屬性,即字段。練習(xí)5.1 在bookinfo表中查詢所有圖書信息。例子5.2在readerinfo表中查詢讀者所在院系。練習(xí)5.2 在bookinfo表中查詢所有出版社信息。例子5.3在readerinfo表中查詢讀者所在院系,并去掉重復(fù)值。練習(xí)5.3 在bookinfo表中查詢所有出版社信息,并去掉重復(fù)值。例子5.4 在readerinfo表中查詢所有讀者的姓名、性別和年齡。練習(xí)5.4 在bookinfo表中查詢所有圖書名稱,作者和出版年限。用browse命令能實(shí)現(xiàn)嗎?創(chuàng)建查詢?5.2.2條件查詢可以在指定的表中查詢滿足WHERE條件子句的記錄
5、?;靖袷剑篠ELECT FROMWHERE例子5.5在bookinfo表中查詢30元以上的圖書編號(hào)、名稱、作者、出版社和定價(jià)。練習(xí)5.5在readerinfo表中查詢性別是男讀者的信息。 例子5.6 在bookinfo表中查詢外文出版社的30元以上的圖書的名稱、作者和定價(jià)。練習(xí)5.6在readerinfo表中查詢性別是男并且是信工學(xué)院的讀者的信息。 例子5.7 在bookinfo表中查詢20元到30元之間的圖書的名稱、作者和定價(jià)。查詢的條件等價(jià)于:(成績(jī)=90)AND (成績(jī)=100)練習(xí)5.7 在bookinfo表中查詢4元到20元之間的圖書的名稱、作者和定價(jià)。例子5.8 在readeri
6、nfo表中查詢姓“于”的讀者信息。 說(shuō)明: 這里的LIKE是字符串匹配運(yùn)算符 通配符“%”表示0個(gè)或多個(gè)不確定的字符 通配符“_”表示一個(gè)不確定的字符練習(xí)5.8 在readerinfo表中查詢姓“李”的讀者信息。 例子5.9 在readerinfo表中查詢“人文學(xué)院”和“外國(guó)語(yǔ)學(xué)院”的讀者信息。說(shuō)明: IN 相當(dāng)于集合運(yùn)算符 IN的用法。格式為:IN(值列表)練習(xí)5.9 在bookinfo表中查詢“人民教育出版社”和“科普出版社”的圖書信息。例子5.10 在borrowreturninfo表中查詢尚未歸還的圖書編號(hào)??罩稻褪侨敝祷驔](méi)有確定值,不能把它理解為任何意義的數(shù)據(jù)。在數(shù)據(jù)庫(kù)中可能會(huì)遇到尚
7、未存儲(chǔ)數(shù)據(jù)的字段,這時(shí)的空值與空字符串、數(shù)值0等具有不同的含義。 注意:查詢空值時(shí)要使用IS NULL,而“=NULL” 是無(wú)效的,因?yàn)榭罩挡皇且粋€(gè)確定的值,所以不能用“=”這樣的運(yùn)算符進(jìn)行比較。 5.2.3聯(lián)接查詢聯(lián)接查詢是將兩個(gè)或多個(gè)表的記錄通過(guò)公用字段聯(lián)接起來(lái)進(jìn)行查詢。聯(lián)接運(yùn)算是關(guān)系數(shù)據(jù)庫(kù)中重要的操作。說(shuō)明:如果FROM之后有兩個(gè)關(guān)系(表),那么這兩個(gè)關(guān)系之間必有一種聯(lián)系,否則無(wú)法構(gòu)成檢索表達(dá)式。(1)內(nèi)部聯(lián)接查詢實(shí)現(xiàn)兩個(gè)表內(nèi)部聯(lián)接的方式有兩種方法一:使用where短語(yǔ)Select ;from , ; where .=.方法二:使用join短語(yǔ)Select ;from inner joi
8、n ;on .=.例子5.11根據(jù)bookinfo表和bookcategory表查詢圖書的編號(hào)、名稱和圖書的類別名稱信息。例子5.12根據(jù)readerinfo表和borrowreturninfo表查詢借過(guò)書的讀者編號(hào)和姓名。例子5.13根據(jù)readerinfo表、borrowreturninfo表和bookinfo表查詢讀者借書情況(包括讀者編號(hào)、姓名、圖書編號(hào)和名稱)(2)外部聯(lián)接查詢SQL還支持新的聯(lián)接運(yùn)算符超聯(lián)結(jié)運(yùn)算符。即首先保證一個(gè)表中滿足條件的元組都在結(jié)果表中,然后將滿足聯(lián)接條件的元組與另一個(gè)表的元組進(jìn)行聯(lián)接,不滿足聯(lián)接條件的則應(yīng)將來(lái)自另一個(gè)表的屬性值置為空值?;靖袷剑篠elect
9、 from ;left|righe|full join ;on .=.超聯(lián)接有3種:1.左聯(lián)接:含義是在結(jié)果表中包含第一個(gè)表中滿足條件的所有元組;如果有滿足聯(lián)接條件的元組,則在第二個(gè)表返回相應(yīng)的值,否則第二個(gè)表返回值為空值。即除滿足聯(lián)接條件的記錄出現(xiàn)在查詢結(jié)果外,第一個(gè)表中不滿足聯(lián)接條件的記錄也出現(xiàn)在查詢結(jié)果中。2.右聯(lián)接:含義是在結(jié)果表中包含第二個(gè)表中滿足條件的所有元組;如果有滿足聯(lián)接條件的元組,則在第一個(gè)表返回相應(yīng)的值,否則第一個(gè)表返回值為空值。即除滿足聯(lián)接條件的記錄出現(xiàn)在查詢結(jié)果外,第二個(gè)表中不滿足聯(lián)接條件的記錄也出現(xiàn)在查詢結(jié)果中。3. 全聯(lián)接:從相關(guān)的兩個(gè)表中選取所有記錄,按聯(lián)接條件聯(lián)
10、接成新的記錄作為查詢結(jié)果輸出,若表1或表2中不存在相關(guān)記錄,則輸出時(shí)相應(yīng)字段的值為.null.。即除滿足聯(lián)接條件的記錄出現(xiàn)在查詢結(jié)果外,兩個(gè)表中不滿足聯(lián)接條件的記錄也出現(xiàn)在查詢結(jié)果中。說(shuō)明:INNER JOIN 等價(jià)于JOIN,是普通聯(lián)接LEFT JOIN 為左聯(lián)接。RIGHT JOIN 為右聯(lián)接。FULL JOIN 為全聯(lián)接即兩個(gè)表中的記錄不管是否滿足聯(lián)接條件將都在目標(biāo)表或查詢結(jié)果中出現(xiàn),不滿足聯(lián)接條件的記錄對(duì)應(yīng)部分NULL。說(shuō)明:從以上格式可以看出,它的聯(lián)接條件在ON短語(yǔ)中給出,而不在WHERE短語(yǔ)中,聯(lián)接類型在FROM短語(yǔ)中給出。例子5.14 根據(jù)readerinfo表和borrowre
11、turninfo表左聯(lián)接查詢讀者編號(hào)、姓名和圖書編號(hào)。和例5.12進(jìn)行比較。例子5.15 根據(jù)borrowreturninf表和bookinfo表右聯(lián)接查詢讀者編號(hào)、圖書編號(hào)和名稱。例子5.16 根據(jù)readerinfo表、borrowreturninfo表和bookinfo表全聯(lián)接查詢讀者借書情況(讀者編號(hào)、姓名和圖書編號(hào)和名稱)。 (3)別名與自聯(lián)接查詢1. SQL可以將同一個(gè)關(guān)系與其自身進(jìn)行聯(lián)接,這種聯(lián)接稱為自聯(lián)接。2. 實(shí)現(xiàn)自聯(lián)接的前提是:該關(guān)系中的兩個(gè)屬性具有相同的值域。3. 在實(shí)現(xiàn)自聯(lián)接操作時(shí),必須為表起別名。定義別名的格式為:.例子5.17 根據(jù)borrowreturninfo表
12、查詢借過(guò)編號(hào)為“”和“”的兩本圖書的讀者編號(hào)。思考:能用查詢?cè)O(shè)計(jì)器設(shè)計(jì)這個(gè)聯(lián)接查詢嗎? 能browse命令!5.2.4嵌套查詢?cè)谶M(jìn)行條件查詢時(shí),如果條件值是直接給出的,那么用一般的條件查詢就可以,但有時(shí)條件的值并沒(méi)有明確給出,而需要進(jìn)一步查詢才可得到,這時(shí)就可用sql提供的嵌套查詢,嵌套查詢是指在select命令語(yǔ)句中包含另一個(gè)select命令語(yǔ)句,基本形式如下:Select from where (selec from where )1、 一般的嵌套查詢嵌套查詢: 嵌套查詢是一類基于多個(gè)關(guān)系的查詢 最終的結(jié)果出自一個(gè)關(guān)系 但相關(guān)的條件卻涉及多個(gè)關(guān)系例5.18根據(jù)表bookinfo查詢與水的好
13、處同一類別的圖書名稱。練習(xí)5.181根據(jù)表bookinfo查詢與數(shù)學(xué)趣談同一類別的圖書名稱。練習(xí)5.182根據(jù)表readerinfo查詢與于丹同一院系的讀者姓名。例5.19根據(jù)readerinfo表和borrowreturninfo表查詢借過(guò)書的讀者編號(hào)和姓名。注:由于內(nèi)層查詢會(huì)得到多個(gè)結(jié)果,所以外層的條件中,比較運(yùn)算符不能用“=”只能用“in”思考:能用查詢?cè)O(shè)計(jì)器設(shè)計(jì)這個(gè)嵌套查詢嗎? 能browse命令!2、內(nèi)外層互相關(guān)的嵌套查詢(了解) 5.2.5排序在select命令中,使用order by 短語(yǔ)可以使查詢結(jié)果按指定要求排序。說(shuō)明:1.ASC是指按升序排序;DESC是指按降序排序。2.O
14、RDER BY允許按一列或多列排序。3.只能對(duì)最終的查詢結(jié)果排序,不能對(duì)中間結(jié)果進(jìn)行排序。4.當(dāng)ASC和DESC都省略時(shí),系統(tǒng)默認(rèn)為按升序排序。注意: HAVING 子句總是跟在GROUP BY子句之后,不可以單獨(dú)使用。 HAVING子句與WHERE子句不矛盾,在查詢中先用WHERE子句限定元組,然后進(jìn)行分組,最后再用HAVING 子句限定分組。討論:嵌套查詢:都是外層查詢依賴于內(nèi)層查詢的結(jié)果,而內(nèi)層查詢與外層查詢無(wú)關(guān)。內(nèi)、外層互相關(guān)的查詢:內(nèi)層查詢的條件需要外層查詢提供值,而外層查詢的條件需要內(nèi)層查詢的結(jié)果基本格式:Select from where order by asc|desc注:1
15、 排序項(xiàng)可以是字段名、由as子句命名的列標(biāo)題和列序號(hào)2不能依據(jù)備注型字段和通用型字段進(jìn)行排序3如果有多個(gè)排序項(xiàng),之間用逗號(hào)分隔。 例子5.21 根據(jù)readerinfo表中查詢所有讀者的姓名、性別和年齡,并按年齡由小到大排序。例子5.22 在bookinfo表中,先按出版日期降序顯示,出版日期相同的再按定價(jià)升序顯示圖書的信息。例子5.23 在bookinfo表中,查詢價(jià)格最高的三本圖書的信息。Top選項(xiàng)一定于order by短語(yǔ)配套使用。 5.2.6統(tǒng)計(jì)和分組統(tǒng)計(jì)Select命令語(yǔ)句不僅可以實(shí)現(xiàn)對(duì)表中數(shù)據(jù)的查詢操作,還可以對(duì)數(shù)據(jù)計(jì)算之后輸出,對(duì)于計(jì)算功能,除了使用一般的表達(dá)式外,sql提供了一
16、些專門的函數(shù),用于實(shí)現(xiàn)對(duì)整個(gè)表進(jìn)行統(tǒng)計(jì)或分組統(tǒng)計(jì)的功能Sum()求總和Avg()求平均值Max()求最大值Min()求最小值Count()統(tǒng)計(jì)記錄個(gè)數(shù)1、簡(jiǎn)單統(tǒng)計(jì)簡(jiǎn)單統(tǒng)計(jì)一般是對(duì)表中某個(gè)字段的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)基本格式:select from where 例子5.24在bookinfo表中,查詢出版社的數(shù)目。練習(xí)5.24在readerinfo表中,查詢讀者所在院系的數(shù)目。 例子5.25在bookinfo表中,查詢“01”類圖書的平均價(jià)格。 練習(xí)5.25在bookinfo表中,查詢“02”類圖書的平均價(jià)格。 2、分組統(tǒng)計(jì)基本格式Select from where , group by having注:
17、where和having的區(qū)別,兩者雖然都跟著條件,但where是對(duì)記錄的篩選,也就是說(shuō),哪些記錄能參與分組;having是對(duì)分組的篩選,也就是說(shuō),哪些組能作為最后結(jié)果輸出。例子5.26在readerinfo表中,分別統(tǒng)計(jì)男、女讀者的人數(shù)。練習(xí)5.26在readerinfo表中,分別統(tǒng)計(jì)不同院系的讀者人數(shù)。例子5.27在bookinfo表中,查詢每類圖書的平均價(jià)格。例子5.28在bookinfo表中,查詢平均價(jià)格高于30元的每類圖書的平均價(jià)格。5.2.7 使用量詞和謂詞的查詢(了解)5.2.8 集合的并運(yùn)算(了解) 5.2.9設(shè)置查詢結(jié)果的輸出 1、指定查詢結(jié)果的輸出目標(biāo)在select命令語(yǔ)句
18、中,使用to短語(yǔ)可以查詢結(jié)果輸出到指定目標(biāo):屏幕、文本文件或打印機(jī),vfp默認(rèn)為瀏覽窗口。To短語(yǔ)的格式為:To screen|file filenameadditive|printerprompt例5.33在bookinfo表中,將價(jià)格最高的三本圖書的信息存儲(chǔ)到文本文件topbook.txt中。2、指定查詢結(jié)果的保存方向在select 命令語(yǔ)句中,使用into短語(yǔ)可以指定查詢結(jié)果的保存方向。Into短語(yǔ)的格式為Into table tablename|cursor cursorname|array arrayname (1)保存到表例子5.34將bookinfo表復(fù)制,形成的新表名為“圖書.
19、dbf”(2)將查詢結(jié)果存放在臨時(shí)文件中例子將查詢到的讀者信息存放在臨時(shí)文件TMP2。(3) 將查詢結(jié)果存放到數(shù)組中例子將查詢到的讀者信息存放在數(shù)組TMP1。簡(jiǎn)單查詢,條件查詢,內(nèi)部聯(lián)接查詢,一般嵌套查詢,排序,統(tǒng)計(jì)和分組統(tǒng)計(jì)5.3操作功能SQL的操作功能是指對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的操作功能,主要包括數(shù)據(jù)的插入、更新和刪除3個(gè)方面的內(nèi)容。5.3.1 數(shù)據(jù)插入VFP支持兩種SQL 插入命令的格式,第一種格式是標(biāo)準(zhǔn)格式,第二種格式是VFP的特殊格式。第一種格式:INSERT INTO ( ,) VALUES (,)第二種格式:例子5.35在bookcategory表的末尾 插入一條新記錄。類別編號(hào):06,類別名稱:古典文學(xué)類。例子5.36在borrowreturninfo表的末尾插入一條新記錄。流水號(hào):,讀者編號(hào):8,圖書編號(hào):,借書日期:01/20/09例子5.37例子5.385.3.2數(shù)據(jù)更新命令格式UPDATE ;SET =,=WHERE 例子5.39將readerinfo表中“李想”的生
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 5G通信基站建設(shè)
- 交通運(yùn)輸補(bǔ)充協(xié)議
- 實(shí)驗(yàn)室隔音墻建設(shè)協(xié)議
- 體育館建設(shè)項(xiàng)目招投標(biāo)檔案
- 電動(dòng)汽車充電樁招投標(biāo)文件
- 水上樂(lè)園租賃經(jīng)營(yíng)合同
- 城市供電項(xiàng)目管理指南
- 律師事務(wù)所水電安裝施工合同
- 電纜材料廠道路安全管理
- 電影院欄桿裝修項(xiàng)目協(xié)議
- 電纜振蕩波局部放電試驗(yàn)報(bào)告
- 西門子RWD68說(shuō)明書
- 針對(duì)建筑工程施工數(shù)字化管理分析
- 多品種共線生產(chǎn)質(zhì)量風(fēng)險(xiǎn)評(píng)價(jià)
- 【MBA教學(xué)案例】從“蝦國(guó)”到“國(guó)蝦”:國(guó)聯(lián)水產(chǎn)的戰(zhàn)略轉(zhuǎn)型
- Unit-1--College-Life
- 醫(yī)院車輛加油卡管理制度
- 平面四桿機(jī)構(gòu)急回特性說(shuō)課課件
- 安徽職業(yè)技術(shù)學(xué)院實(shí)驗(yàn)實(shí)訓(xùn)室建設(shè)管理辦法(試行)
- 崗位價(jià)值評(píng)估表(共4頁(yè))
- 娃哈哈晶鉆水營(yíng)銷策劃方案
評(píng)論
0/150
提交評(píng)論