第五章SQL語言、查詢與視圖(新教材)_第1頁
第五章SQL語言、查詢與視圖(新教材)_第2頁
第五章SQL語言、查詢與視圖(新教材)_第3頁
第五章SQL語言、查詢與視圖(新教材)_第4頁
第五章SQL語言、查詢與視圖(新教材)_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1目 錄上一頁下一頁退 出目 錄上一頁下一頁退 出2本本 章章 要要 點(diǎn)點(diǎn)5.1SQL語言語言 5.1.1 數(shù)據(jù)定義語言數(shù)據(jù)定義語言 5.1.2 數(shù)據(jù)操縱語言數(shù)據(jù)操縱語言 5.1.3 SQL查詢查詢 5.1.4 SQL查詢結(jié)果的輸出與處理查詢結(jié)果的輸出與處理5.2 使用查詢設(shè)計(jì)器使用查詢設(shè)計(jì)器5.3 視圖視圖目 錄上一頁下一頁退 出3 結(jié)構(gòu)化查詢語言(結(jié)構(gòu)化查詢語言(Structured Query Language,SQL) 1綜合統(tǒng)一綜合統(tǒng)一 SQL語言集數(shù)據(jù)定義(DDL)、數(shù)據(jù)操縱(DML)、數(shù)據(jù)控制(DCL)的功能于一體,語言風(fēng)格統(tǒng)一,可以獨(dú)立完成數(shù)據(jù)庫的全部操作,包括定義關(guān)系模式、錄

2、入數(shù)據(jù)及建立數(shù)據(jù)庫、查詢、更新、維護(hù)數(shù)據(jù)、數(shù)據(jù)庫的重新構(gòu)造、數(shù)據(jù)庫安全性等一系列操作的要求,為數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)者提供了良好的環(huán)境。 2高度非過程化高度非過程化 用戶只需提出做什么,而不必指明怎么做。 3面向集合的操作方式面向集合的操作方式 查找結(jié)果、插入、刪除、更新都可以是記錄的集合。4以同一種語法結(jié)構(gòu)提供兩種使用方式以同一種語法結(jié)構(gòu)提供兩種使用方式 自含式語言(交互方式),嵌入式語言,嵌入到高級語言(如C、FORTRAN、PL/I)程序中 5語言簡潔,易學(xué)易用語言簡潔,易學(xué)易用5.1 SQL語言語言目 錄上一頁下一頁退 出4數(shù)據(jù)定義語言DDL用于執(zhí)行數(shù)據(jù)定義的操作,如創(chuàng)建或刪除表、索引和視

3、圖之類的對象。由CREATE、DROP、ALTER命令組成,完成數(shù)據(jù)庫對象的建立(CREATE)、刪除(DROP)和修改(ALTER)。1. 定義(創(chuàng)建)表定義(創(chuàng)建)表【格式】CREATE TABLE (,)NULL | NOT NULL,)【功能】定義(也稱創(chuàng)建)一個(gè)表。5.1.1 數(shù)據(jù)定義語言數(shù)據(jù)定義語言【例】使用命令建立數(shù)據(jù)表。【例】使用命令建立數(shù)據(jù)表。 CREATE TABLE 進(jìn)貨信息 ( 訂單編號 C(10),商品編號 C(6),進(jìn)貨時(shí)間 D,進(jìn)貨單價(jià) N(8,2),數(shù)量 N(5),到貨標(biāo)志 L,經(jīng)辦人 C(8) )目 錄上一頁下一頁退 出52修改表結(jié)構(gòu)修改表結(jié)構(gòu) 【格式】【格式

4、】ALTER TABLE ADD (,)NULL | NOT NULLDROP 【功能】修改表結(jié)構(gòu)?!菊f明】ADD子句用于增加指定表的字段變量名、數(shù)據(jù)類型、寬度;DROP子句用于刪除指定的字段?!纠繛椤斑M(jìn)貨信息”表添加“經(jīng)銷商”字段。ALTER TABLE 進(jìn)貨信息 ADD 經(jīng)銷商 C(20)【例】將“進(jìn)貨信息”表中“經(jīng)銷商”字段的寬度改為28。ALTER TABLE 進(jìn)貨信息 ALTER 經(jīng)銷商 C(28)【例】刪除“進(jìn)貨信息”表中“經(jīng)銷商”字段。ALTER TABLE 進(jìn)貨信息 DROP 經(jīng)銷商目 錄上一頁下一頁退 出6【格式】DELETE DATABASE 【功能】刪除指定數(shù)據(jù)庫的結(jié)構(gòu)

5、,但保留原庫中的表,其變成自由表。4. 刪除表刪除表【格式】DROP TALBE 【功能】刪除指定表的結(jié)構(gòu)和內(nèi)容(包括在此表上建立的索引)。【說明】如果只是想刪除一個(gè)表中的所有記錄,則應(yīng)使用DELETE語句。3. 刪除數(shù)據(jù)庫刪除數(shù)據(jù)庫目 錄上一頁下一頁退 出7 數(shù)據(jù)操縱語言一般由INSERT(插入)、DELETE(刪除)、UPDATE(更新)等組成。5.1.2 數(shù)據(jù)操縱語言數(shù)據(jù)操縱語言1插入記錄命令插入記錄命令格式:INSERT INTO(,) VALUES (,)功能:在指定的表尾添加一條新記錄,其值為VALUES后面表達(dá)式的值?!纠肯颉斑M(jìn)貨信息”表中添加記錄。INSERT INTO 進(jìn)貨

6、信息 VALUES (0707000101,160007,2007/07/02, 2.6,4,.T., admin)目 錄上一頁下一頁退 出82刪除記錄命令刪除記錄命令格式:DELETE FROM WHERE 功能:從指定表中,根據(jù)指定的條件邏輯刪除記錄?!纠繉ⅰ斑M(jìn)貨信息信息”表中所有商品編號為“160007”的記錄邏輯刪除。DELETE FROM 進(jìn)貨信息 WHERE 商品編號=160007“3更新記錄命令更新記錄命令格式:UPDATE SET=,= WHERE功能:用指定的新值更新記錄。【例】將“進(jìn)貨信息”表中所有2007年以后進(jìn)貨的商品的單價(jià)提高5%。UPDATE 進(jìn)貨信息 SET 進(jìn)

7、貨單價(jià)=進(jìn)貨單價(jià)*(1+0.05) WHERE 進(jìn)貨時(shí)間=2007/01/01目 錄上一頁下一頁退 出95.1.3 SQL中的數(shù)據(jù)查詢語句中的數(shù)據(jù)查詢語句 數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。在SQL語言中,查詢語言中有一條查詢命令,即SELECT語句。(使用SELECT命令事先不必打開表文件)格式:格式:SELECT ALL|DISTINCT . AS ,. AS FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC, ASC|DESC 說明:(1)ALL:返回查詢結(jié)果的所有行。(2)DISTINCT:去除查詢結(jié)果中重復(fù)的行。(3)別名:當(dāng)選擇多個(gè)數(shù)據(jù)庫表中的

8、字段時(shí),可使用別名來區(qū)分不同的數(shù)據(jù)表。(4):字段名、表達(dá)式或函數(shù)。(5)AS :在輸出結(jié)果中,如果不希望使用字段名,可以根據(jù)要求設(shè)置一個(gè)名稱。(6)FROM :要查詢的表文件名,可以包含多個(gè)表,各表間用逗號分開。(7)WHERE :指定多個(gè)表的連接條件和查詢條件。(8)GROUP BY 指定分組查詢的表達(dá)式。(9)HAVING :指定分組篩選的條件,總是跟在GROUP BY子句之后,不可以單獨(dú)使用。(10)ORDER BY :指定查詢結(jié)果按哪個(gè)字段排序。(11)ASC:指定的排序項(xiàng)按升序排列。 (12)DESC:指定的排序項(xiàng)按降序排列。目 錄上一頁下一頁退 出101簡單查詢(簡單查詢(無條件

9、查詢) 由SELECT和FROM短語構(gòu)成無條件查詢。【格式】SELECT FROM 【例 】查詢spxx.dbf中所有商品信息。 SELECT * FROM spxx【例】查詢spxx.dbf中所有商品的名稱、類別、零售價(jià)。 SELECT 商品名稱,類別,零售價(jià) FROM spxx可以用函數(shù) sum()、avg()、cnt()、max()、min()【例】查詢jhxx.dbf中商品的進(jìn)貨總數(shù)、平均價(jià)格。 SELECT SUM(進(jìn)貨數(shù)量) AS 進(jìn)貨總數(shù),AVG(進(jìn)貨單價(jià)) AS 平均價(jià)格 FROM jhxx目 錄上一頁下一頁退 出112. 帶條件(帶條件(WHERE)的查詢)的查詢【格式】SE

10、LECT FROM WHERE 【功能】從一個(gè)表中查詢滿足條件的數(shù)據(jù)?!菊f明】由一系列用AND 或 OR 連接的條件表達(dá)式組成.SQL支持的關(guān)系運(yùn)算符如下:、!、。目 錄上一頁下一頁退 出12ALL 滿足子查詢中所有值的記錄用法:ALL()ANY 字段中的內(nèi)容滿足一個(gè)條件就為真 用法:ANY() BETWEEN 的內(nèi)容在指定范圍內(nèi) 用法:BETWEENAND EXISTS 測試子查詢中查詢結(jié)果是否為空。若為空,則返回.F. 用法:EXISTS() IN 字段內(nèi)容是結(jié)果集合或者子查詢中的 用法:IN或者IN() LIKE 對字符型數(shù)據(jù)進(jìn)行字符串比較,提供兩種通配符,即下畫線“_”和“”用法:LI

11、KESOME 滿足集合中的某一個(gè)值,功能與用法等同于ANY 用法: SOME() 謂詞說明目 錄上一頁下一頁退 出13【例】查詢spxx.dbf中日用品的商品名稱。 SELECT 商品名稱 FROM spxx WHERE 類別=日用品【例】查詢spxx.dbf中非辦公用品類商品的名稱、廠商編號、零售價(jià)。 SELECT 商品名稱,廠商編號,零售價(jià) FROM spxx WHERE 類別辦公用品“【例】查詢jhxx.dbf中進(jìn)貨數(shù)量在1020之間的商品的進(jìn)貨單號、商品編號、進(jìn)貨數(shù)量。 SELECT 進(jìn)貨單號,商品編號,進(jìn)貨數(shù)量 FROM jhxx WHERE 進(jìn)貨數(shù)量 BETWEEN 10 AND

12、20目 錄上一頁下一頁退 出14【例】列出辦公用品和日用品的商品名稱、廠商編號、零售價(jià)和類別。 SELECT 商品名稱,廠商編號,零售價(jià),類別 FROM spxx WHERE 類別 IN (辦公用品,日用品)【例】列出所有聯(lián)系人姓張的供應(yīng)商的信息。 SELECT * FROM gys WHERE 聯(lián)系人 LIKE 張%“目 錄上一頁下一頁退 出153嵌套查詢嵌套查詢 在SQL語句中,一個(gè)SELECTFROMWHERE語句稱為一個(gè)查詢塊。將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢或子查詢?!纠苛谐龃筮B宏華經(jīng)貿(mào)有限公司的商品名稱。 SELECT 商

13、品名稱 FROM spxx WHERE 廠商編號=(SELECT 廠商編號 FROM gys WHERE 廠商名稱=大連宏華經(jīng)貿(mào)有限公司)【例】列出飲料類廠商的名稱。 SELECT 廠商名稱 FROM gys WHERE 廠商編號 IN (SELECT 廠商編號 FROM spxx WHERE 類別=飲料)目 錄上一頁下一頁退 出16【例】列出辦公用品類中零售價(jià)比飲料類的最低零售價(jià)高的商品的信息。 SELECT * FROM spxx WHERE 類別=辦公用品 AND 零售價(jià) ANY (SELECT 零售價(jià) FROM spxx WHERE 類別=飲料)【例】列出日用品類中零售價(jià)比飲料類和調(diào)味

14、品類中的最高零售價(jià)還要高的商品的信息。 SELECT * FROM spxx WHERE 類別=日用品 AND 零售價(jià) ALL (SELECT 零售價(jià) FROM spxx WHERE 類別=飲料 OR 類別=調(diào)味品)目 錄上一頁下一頁退 出174多表查詢多表查詢數(shù)據(jù)庫是由多個(gè)相關(guān)聯(lián)的表組成的,經(jīng)常需要從多個(gè)表中提取信息。SELECT命令允許對多表進(jìn)行連接操作,連接的條件要在WHERE子句中指出?!纠坎樵円训截浀乃袕S商所進(jìn)商品的商品名稱和進(jìn)貨時(shí)間。 SELECT 廠商名稱,商品名稱,進(jìn)貨時(shí)間 FROM spxx,jhxx,gys WHERE spxx.商品編號=jhxx.商品編號 AND s

15、pxx.廠商編號=gys.廠商編號AND 到貨標(biāo)志=.T.目 錄上一頁下一頁退 出181排序輸出排序輸出配合子句: ORDER BYASC | DESC,ASC | DESC說明:排序選項(xiàng)可以是字段名,也可以是數(shù)字。字段名必須是主SELECT子句的選項(xiàng),數(shù)字是表的列序號,第1列為1?!纠坎樵兯猩唐返匿N售額、廠商名稱,并按銷售額由高到低排列。 SELECT 商品名稱,銷售數(shù)量*銷售單價(jià) AS 銷售額排行榜,廠商名稱 FROM spxx,chmx,gys WHERE spxx.商品編號=chmx.商品編號 AND spxx.廠商編號=gys.廠商編號 ORDER BY 銷售額排行榜 DESC

16、【例】查詢所有商品的商品編號、商品名稱和銷售數(shù)量,并按銷售數(shù)量由低到高排列。 SELECT spxx.商品編號,商品名稱,銷售數(shù)量 FROM chmx,spxx WHERE spxx.商品編號=chmx.商品編號 ORDER BY 35.1.4 SQL查詢結(jié)果的輸出與處理目 錄上一頁下一頁退 出192分組統(tǒng)計(jì)與篩選分組統(tǒng)計(jì)與篩選配合子句: GROUP BY , HAVING 說明:HAVING子句與GROUP BY子句連用【例】查詢各類商品的平均零售價(jià)。SELECT 類別,avg(零售價(jià)) FROM spxx GROUP BY 類別【例】查詢各商品的生產(chǎn)廠家、總銷售量。SELECT 廠商名稱,

17、sum(銷售數(shù)量) as 總銷售量 FROM spxx,chmx,gys WHERE spxx.廠商編號=gys.廠商編號 AND spxx.商品編號=chmx.商品編號 GROUP BY gys.廠商編號【例】查詢至少有兩種商品的每個(gè)廠商的商品平均零售價(jià)。SELECT 廠商編號,CNT(*),AVG(零售價(jià)) FROM spxx GROUP BY 廠商編號 HAVING COUNT(*)=2目 錄上一頁下一頁退 出203顯示部分結(jié)果 有時(shí)只需要滿足條件的前幾個(gè)記錄,使用 TOP ;數(shù)值表達(dá)式 PRECENT,說明顯示結(jié)果中前百分之幾的記錄。 【例】查詢零售價(jià)最高的5種商品的信息。SELECT

18、 * TOP 5 FROM spxx ORDER BY 零售價(jià) DESCSELECT * TOP 5 PERCENT FROM spxx ORDER BY 零售價(jià) DESC目 錄上一頁下一頁退 出214重定向輸出配合子句: INTOTO FILEADDITIVE|TO PRINTER包含以下包含以下3部分內(nèi)容部分內(nèi)容:ARRAY:將查詢結(jié)果存到指定數(shù)組名的內(nèi)存變量數(shù)組中;CURSOR:將輸出結(jié)果存到一個(gè)臨時(shí)表,該文件為只讀,一旦被關(guān)閉就被刪除;DBF| TABLE:將結(jié)果存到一個(gè)表?!纠坎樵冧N售量達(dá)到或超過10個(gè)以上的商品的相關(guān)信息,并將結(jié)果存放在臨時(shí)文件mytmp中。SELECT 商品名稱

19、,類別,零售價(jià),銷售單價(jià),銷售數(shù)量 FROM spxx,chmx WHERE spxx.商品編號=chmx.商品編號 AND 銷售數(shù)量=10 INTO CURSOR mytmp 該命令執(zhí)行后,會產(chǎn)生臨時(shí)表mytmp,若再執(zhí)行如下命令:SELECT * FROM mytmp目 錄上一頁下一頁退 出22【例】將查詢結(jié)果存放在表文件中。SELECT * TOP 5 FROM spxx ORDER BY 零售價(jià) DESC INTO TABLE high5 SELECT * FROM high5【例】將查詢結(jié)果存放在表文件中。SELECT 商品名稱,銷售數(shù)量,廠商編號 FROM spxx,chmx WH

20、ERE spxx.商品編號=chmx.商品編號 INTO CURSOR testSELECT 廠商名稱,商品名稱,SUM(銷售數(shù)量) as 總銷售量 FROM test,gys WHERE test.廠商編號=gys.廠商編號 GROUP BY gys.廠商編號 INTO TABLE test27SELECT * FROM test27目 錄上一頁下一頁退 出235.2 使用查詢設(shè)計(jì)器 “查詢設(shè)計(jì)器”實(shí)際上就是SELECT命令程序的交互式設(shè)計(jì)操作窗口??梢杂脭U(kuò)展名為qpr的文件保存在磁盤上, 在命令窗口輸入: DO 文件.qpr 執(zhí)行查詢。5.2.1 查詢設(shè)計(jì)器簡介1“查詢設(shè)計(jì)器”的啟動(dòng) 從“

21、項(xiàng)目管理器”或“文件”菜單中,都可以啟動(dòng)“查詢設(shè)計(jì)器”。 2“查詢設(shè)計(jì)器”中的選項(xiàng)卡5.2.2 查詢結(jié)果輸出目 錄上一頁下一頁退 出245.3 視 圖5.3.1 視圖的概念視圖(View)是在數(shù)據(jù)庫表的基礎(chǔ)上創(chuàng)建的一種虛擬表,其數(shù)據(jù)是從已有的數(shù)據(jù)庫表或其他視圖中提取的,這些數(shù)據(jù)在數(shù)據(jù)庫中并不實(shí)際存儲,僅在數(shù)據(jù)詞典中存儲視圖的定義。視圖有本地視圖和遠(yuǎn)程視圖兩種類型。視圖有如下特點(diǎn): (1)視圖可以提供附加的安全層(2)視圖可以隱蔽數(shù)據(jù)的復(fù)雜性 (3)視圖有助于命名簡潔(4)視圖帶來更改靈活性(5)通過視圖更新數(shù)據(jù)庫目 錄上一頁下一頁退 出255.3.2 視圖設(shè)計(jì)器概述 利用 “視圖設(shè)計(jì)器” 可以可視化地創(chuàng)建視圖。其操作同查詢設(shè)計(jì)器 , 區(qū)別是視圖設(shè)計(jì)器增加了“更新條件”選項(xiàng)卡。 “更新條件更新條件”選項(xiàng)卡中包括以下幾個(gè)部分。選項(xiàng)卡中包括以下幾個(gè)部分。(1)表表示視圖所基于的表。(2)關(guān)鍵字表示當(dāng)前視圖的關(guān)鍵字字段,單擊復(fù)選框,出現(xiàn)“”符號,表示選中。(3)更

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論