VFP第5章SQL語言的應用

上傳人:wux****ua 文檔編號:22894671 上傳時間:2021-06-02 格式:PPT 頁數:35 大小:503KB
收藏 版權申訴 舉報 下載
VFP第5章SQL語言的應用_第1頁
第1頁 / 共35頁
VFP第5章SQL語言的應用_第2頁
第2頁 / 共35頁
VFP第5章SQL語言的應用_第3頁
第3頁 / 共35頁

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《VFP第5章SQL語言的應用》由會員分享,可在線閱讀,更多相關《VFP第5章SQL語言的應用(35頁珍藏版)》請在裝配圖網上搜索。

1、合肥工業(yè)大學 1isualFV oxPro 合肥工業(yè)大學 2 按照美國國家標準協(xié)會(ANSI)的規(guī)定SQL是關系數據庫的標準語言。目前流行的關系數據庫管理系統(tǒng),如Qracle、Sybase、SQL Server、Visual FoxPro等都支持SQL語言標準。SQL雖然在各種數據庫產品中得到了廣泛的支持,但迄今為止,它只是一種建議標準,各種數據庫產品中所實現的SQL在語法、功能等方面均略有差異。Visual FoxPro在SQL方面支持數據定義、數據查詢和數據操縱功能。5.1 SQL語 言 概 述 合肥工業(yè)大學 3 SQL語言具有如下特點:(1)SQL是一種一體化的語言。它集數據定義、數據查

2、詢、數據操縱和數據控制功能于一體,可以獨立完成數據庫的全部操作。(2)SQL語言是一種高度非過程化的語言。只需要描述清楚用戶要“做什么”,不必指明“怎么做”,SQL語言就可以將要求交給系統(tǒng),自動完成全部工作。(3)SQL語言非常簡潔。雖然SQL語言功能很強,但它只有9條命令:CREATE、DROP、ALTER、SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE。另外SQL的語法也非常簡單,因此容易學習和掌握。 (4)SQL語言可以直接以命令方式交互使用,也可以嵌入到程序設計語言中以程序方式使用。 合肥工業(yè)大學 4 Visual FoxPro的SQL SELECT命

3、令的語法格式是:SELECT ALL|DISTINCT.AS ,.AS FROM 數據庫名!AS INNER | LEFT OUTER | RIGHTOUTER|FULL OUTERJOIN !ASON INTO |TO FILEADDITIVE|TO PRINTER PROMPT|TO SCREENPREFERENCE NOCONSOLEPLAINNOWAITWHERE AND AND|OR AND|OR GROUP BY ,HAVING UNIONALLSELECT命令 ORDER BY ASC|DESC,ASC|DESC SQL SELECT是一個命令的集合,對它進行分解。 5.2 數

4、據 查 詢 合肥工業(yè)大學 5 SQL查詢語句格式:SelectAll|Distinct|,FromLeftRightJoinOnWhereGroup ByHavingOrder ByAscDesc 其中: All:查詢結果是表的全部記錄。 Distinct:查詢結果是不包含重復行的記錄集。 From:查詢結果來源。 LeftRightJoinOn:查詢結果是多表組和的記錄集。 合肥工業(yè)大學 6 Where:查詢結果是表中滿足的記錄集 Group By:查詢結果是表按分組的記錄集。 Having:是將指定表滿足,并且按表結果組成的記錄集。 Order By:查詢結果是否按某一字段值排列。 Asc

5、:查詢結果按某一字段值升序排列。 Desc:查詢結果按某一字段值降序排列。 :進行查詢計算函數。 :可以是關系表達式。也可以是邏輯表達式 合肥工業(yè)大學 7 查詢計算函數的格式及功能 函數格式函數功能COUNT(*)計算記錄個數SUM(字段名)求字段名和所指定字段的值的總和AVG(字段名)求字段名所指定的平均值MAX(字段名)求字段名所指定的最大值MIN(字段名)求字段名所指定字段的最小值 合肥工業(yè)大學 8 查詢條件中常用的運算符 運算符實例=、=、=、工資現狀3000NOT、AND、OR工資現狀3000LIKE性別 LIKE “男”BETWEEN AND工資現狀 BETWEEN 3000 AN

6、D 5000IN職稱 IN (教授,副教授) 合肥工業(yè)大學 9 5.2.1 簡單查詢查詢僅涉及一個表,是最簡單的查詢操作 1. 查詢指定列【例4-1】查詢全體學生的學號與姓名.(1)在命令窗口下輸入以下命令:SELECT 學號,姓名;FROM 學生 合肥工業(yè)大學 10 2. 查詢全部列【例4-3】查詢全體學生的詳細記錄. 在命令窗口下輸入以下命令:SELECT *;FROM 學生 合肥工業(yè)大學 11 基本查詢所謂基本查詢是指無條件查詢,其格式是:SELECT ALL|DISTINCT.AS ,.AS FROM 別名1,別名2其中ALL表示輸出所有記錄,包括重復記錄。DISTINCT表示輸出無重

7、復結果的記錄。當選擇多個數據庫表中的字段時,可使用別名來區(qū)分不同的表。的作用是在輸出結果中的列標題,可以不同于字段名??梢允亲侄蚊?、表達式或函數。表名代表要查詢的表。要輸出全部字段用“*” 表示。 合肥工業(yè)大學 12 例 列出學生名單。OPEN DATABASE D:學生管理SELECT * FROM 學生 FROM 成績;WHERE成績60 合肥工業(yè)大學 14 4. 查詢滿足條件的元組(2)得到的運行結果如圖4-5所示。圖4-5 合肥工業(yè)大學 15 帶條件查詢WHERE是條件語句關鍵字,是可選項,格式:WHERE 條件表達式是指查詢的結果集合應滿足的條件,如果某行條件為真就包括該行記錄??梢?/p>

8、是單表的條件表達式,也可以是多表之間的條件表達。例 求出女學生入學成績平均分。SELECT 性別,AVG(入學成績) AS 入學成績平均分 FROM 學生 WHERE 性別=女例 列出非少數民族的學生名單。SELECT 學號,姓名,性別;FROM 學生 WHERE 少數民族=.F.SELECT 學號,姓名,性別 FROM 學生 ;WHERE NOT 少數民族 合肥工業(yè)大學 16 例 列出入學成績在560分到650分之間的學生名單。SELECT 學號,姓名,入學成績; FROM 學生; WHERE 入學成績 BETWEEN 560 AND 650SELECT 學號,姓名,入學成績; FROM 學

9、生;WHERE 入學成績=560 AND 入學成績90 合肥工業(yè)大學 21 5.2.3 嵌套查詢有時候一個SELECT命令無法完成查詢任務,需要在一個SELECT命令的WHERE子句中出現另一個SELECT命令,這種查詢稱為嵌套查詢。Visual FoxPro只支持單層嵌套查詢。例 列出選修“大學計算機基礎”的所有學生的學號。SELECT 學號 FROM 選課 WHERE 課程號=;(SELECT 課程號 FROM 課程 WHERE 課程名=數據庫原理) 上述SQL語句執(zhí)行的是兩個過程,首先在課程表中找出“大學計算機基礎”的課程號(比如“021001”),然后再在選課表中找出課程號等于“021

10、001”的記錄,列出這些記錄的學號。 合肥工業(yè)大學 22 【例4-11】查詢選修021001號課程的所有學生的姓名。(1)在命令窗口下輸入以下命令:SELECT 姓名;FROM 學生;WHERE 學號 IN(SELECT學號;FROM 成績;WHERE 課程號=021001) 合肥工業(yè)大學 23 【例4-12】查詢入學成績比20050002高的所有學生的姓名、入學成績。(1)在命令窗口下輸入以下命令:SELECT 姓名,入學成績;FROM 學生;WHERE 入學成績 (SELECT入學成績; FROM學生 ;WHERE學號 = 20050002) 合肥工業(yè)大學 24 5.2.4 使用庫函數查詢

11、 【例4-13】查詢學生總人數。(1)在命令窗口下輸入以下命令:SELECT COUNT(*);FROM 學生 (2)得到的運行結果如圖4-13所示。 圖4-13 合肥工業(yè)大學 25 【例4-14】查詢學習021001號課程的學生最高成績。(1)在命令窗口下輸入以下命令:SELECT MAX(成績);FROM 成績 ;WHERE 課程號=021001 合肥工業(yè)大學 26 5.2.5 查詢結果處理1. 排序輸出(ORDER)ORDER BY ASC | DESC ,ASC | DESC例 按性別順序列出學生的學號、姓名、性別、課程名及成績,性別相同的先按課程名,再按成績由高到低排序。SELECT

12、 a.學號,a.姓名,a.性別,c.課程名,b.成績;FROM 學生 a,選課 b,課程 c;WHERE a.學號=b.學號 AND b.課程號=c.課程號; ORDER BY a.性別,c.課程名,b.成績 DESC注意 如果沒有指定查詢結果的顯示順序,將按物理順序輸出查詢結果??梢杂肙RDER BY子句指定按照一個或多個屬性列的升序(ASC)或降序(DESC)重新排列查詢結果,ASC為缺省值。 合肥工業(yè)大學 27 【例4-8】查詢選修了021002號課程的學生的學號及其成績,查詢結果按分數的降序排列 (1)在命令窗口下輸入以下命令:SELECT學號,成績;FROM成績;WHERE課程號=0

13、21002;ORDER BY 成績 DESC 合肥工業(yè)大學 28 2. 分組統(tǒng)計(GROUP)GROUP BY ,其中可以是字段名,SQL函數表達式,也可以是列序號。例 分別統(tǒng)計男女人數。SELECT 性別,COUNT(性別) FROM 學生 ;GROUP BY 性別3. 篩選(HAVING)篩選條件格式是:HAVING HAVING子句與WHERE功能一樣,只不過是與GROUP BY子句連用,用來指定每一分組內應滿足的條件。例 列出成績平均分大于80分的課程號。SELECT 課程號 FROM 選課 GROUP BY 課程號 HAVING AVG(成績)=80 合肥工業(yè)大學 29 5.3.1

14、建立表結構命令格式是:CREATE TABLE|DBF NAME FREE( (,)NULL|NOT NULLCHECK ERRORDEFAULT PRIMARY KEY | UNIQUEREFERENCES TAG (,)NULL|NOT NULLCHECK ERRORDEFAULT PRIMARY KEY | UNIQUE REFERENCES TAG)|FROM ARRAY CREATE TABLE命令建立表可以完成用表設計器完成的所有功能。簡化:CREATE TABLE ( (,) ,(,) ) 5.3 數 據 定 義 合肥工業(yè)大學 30 例 利用SQL命令建立學生管理數據庫,其中包含

15、3個表:學生表、選課表和課程表。操作步驟如下:(1)用CREATE命令建立數據庫。CREATE DATABASE D: 學生管理(2)用CREATE命令建立學生表。CREATE TABLE 學生(學號 C(5) PRIMARY KEY,姓名 C(8), 入學成績 N(5,1) CHECK(入學成績0) ERROR “成績應該大于0!”)(3)建立課程表。CREATE TABLE 課程(課程號 C(5) PRIMARY KEY,課程名 C(20), 學分 N(1)(4)建立選課表。CREATE TABLE 選課(學號C(5),課程號 C(5),成績 I CHECK(成績=0 AND 成績=100

16、)ERROR成績值的范圍0100! DEFAULT 60, FOREIGN KEY 學號 TAG 學號 REFERENCES 學生,FOREIGN KEY 課程號 TAG 課程號 REFERENCES 課程 合肥工業(yè)大學 31注意:用SQL CREATE命令新建的表自動在最小可用工作區(qū)打開,并可以通過別名引用,新表的打開方式為獨占方式。如果建立自由表(當前沒有打開的數據庫或使用了FREE),則很多選項在命令中不能使用,如NAME、CHECK、DEFAULT、FOREIGN KEY、PRIMARY KEY和REFERENCES等。 合肥工業(yè)大學 32 5.3.2 刪除表刪除表的SQL命令是:DR

17、OP TABLE DROP TABLE命令直接從磁盤上刪除所指定的表文件。5.3.3 修改表結構修改表結構的命令是ALTER TABLE,該命令有3種格式。格式1:增加字段ALTER TABLE ADD(,) ADD(,)例 為課程表增加一個整數類型的學時字段。OPEN DATABASE D:學生管理ALTER TABLE 課程 ADD 學時 I CHECK(學時16 ) ERROR “學時應該大于16!” 合肥工業(yè)大學 33 格式2:修改字段屬性 ALTER TABLE ALTER (,) ALTER (,) DROP DEFAULTDROP CHECK該格式命令主要用于定義、修改和刪除有效

18、性規(guī)則以及默認值定義。例 修改學分字段并刪除有效性規(guī)則。ALTER TABLE 課程 ALTER學分N(3,1) DROP CHECK格式3:刪除字段與修改字段名ALTER TABLE DROP , DROP RENAME COLUMN TO 該格式的命令可以刪除指定字段(DROP COLUMN)、修改字段名(RENAME COLUMN)、還可以修改指定表的完整性規(guī)則,包括主索引、外關鍵字、候選索引及表的合法值限定的添加與刪除。 例 刪除課程表中的學時字段。ALTER TABLE 課程 DROP COLUMN 學時 合肥工業(yè)大學 34 5.4.1 插入記錄Visual FoxPro支持兩種SQ

19、L插入命令,其格式是:格式1:INSERT INTO (字段名1,) VALUES(,)該命令在指定的表尾添加一條新記錄,其值為VALUES后面表達式的值。插入數據的格式及順序必須與表的結構完全吻合。 例 向學生表中添加記錄。INSERT INTO 學生 VALUES(231002,陽雨光,男,1988-09-10,.T.,上海,610,,)INSERT INTO 學生(學號,姓名) VALUES(231109,李成功)格式2:INSERT INTO FROM ARRAY |FROM MEMVAR該命令在指定的表尾添加一條新記錄,其值來自數組或對應的同名內存變量。 例 已經定義了數組A(5),

20、A中各元素的值分別是:A(1)=231013,A(2)=張陽,A(3)=女,A(4)=1988-09-10,A(5)=.T.。利用該數組向學生表中添加記錄。INSERT INTO 學生 FROM ARRAY A 5.4 數 據 操 縱 合肥工業(yè)大學 35 5.4.2 刪除記錄DELETE FROM ! WHERE 該命令從指定表中,根據指定的條件邏輯刪除記錄。用PACK命令將邏輯刪除的記錄從物理上刪除掉。例 將“學生”表所有男生的記錄邏輯刪除。DELETE FROM 學生 WHERE 性別=男5.4.3 更新記錄UPDATE !SET= ,= WHERE該命令用指定的新值更新記錄,對存儲在表中的記錄進行修改。例 將“學生”表中胡敏杰學生的籍貫改為廣東。UPDATE 學生 SET 籍貫=廣東 WHERE 姓名=胡敏杰例 所有男生的各科成績加20分UPDATE 選課 SET 成績=成績+20 WHERE學號IN(SELECT 學號 FROM 學生 WHERE 性別=男)以上命令中,用到了WHERE條件運算符“IN”和對用SELECT語句 選擇出的記錄進行數據更新。注意UPDATE一次只能在單一的表中更新記錄。

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!