第5章查詢與視圖_第1頁
第5章查詢與視圖_第2頁
第5章查詢與視圖_第3頁
第5章查詢與視圖_第4頁
第5章查詢與視圖_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第 5 章章 查查 詢詢 與與 視視 圖圖主要內(nèi)容:1、結(jié)構(gòu)化查詢語言SQL2、查詢設(shè)計器的使用3、視圖及視圖設(shè)計器4、查詢與視圖的區(qū)別重點:1 、結(jié)構(gòu)化查詢語言SQL 的查詢語句2、查詢設(shè)計器的使用難點: 1 、結(jié)構(gòu)化查詢語言SQL 的查詢語句 2、查詢與視圖的區(qū)別要求:1、掌握結(jié)構(gòu)化查詢語言SQL的數(shù)據(jù)定義、數(shù)據(jù)操縱 及數(shù)據(jù)查詢語句2、掌握使用查詢設(shè)計器設(shè)計查詢的方法3、掌握視圖的概念及其和查詢的區(qū)別4、掌握使用查詢設(shè)計器設(shè)計查詢的方法 5.1 查詢與統(tǒng)計命令 數(shù)據(jù)查詢通常包括對數(shù)據(jù)表中原始數(shù)據(jù)的直接檢索和對原始數(shù)據(jù)做特定的統(tǒng)計和計算兩類。 5.1.1 數(shù)據(jù)“篩選過濾” “篩選過濾”分為

2、橫向和縱向兩種。前者叫做記錄篩選,它能夠屏蔽掉不滿足條件的記錄集;后者叫做字段篩選,它能夠屏蔽我們不感興趣的字段集。記錄篩選實現(xiàn)了關(guān)系運算中的選擇運算(Selection),字段篩選實現(xiàn)了關(guān)系運算中的投影運算(Projection)。 1記錄篩選命令:記錄篩選命令:SET FILTER (1)格式 SET FILTER TO (2)功能 設(shè)置當(dāng)前表中可以被訪問的記錄必須滿足的條件。 2設(shè)置字段篩選命令:設(shè)置字段篩選命令:SET FIELDS (1)格式 SET FIELDS TO /ALL LIKE/EXCEPT 字段名通配式 (2)功能指定當(dāng)前表中可以被訪問的字段。 (3)參數(shù)說明 :逐一列

3、出當(dāng)前表中可被訪問的字段的名稱。 ALL:表示允許訪問當(dāng)前表中的所有字段。 ALL LIKE 字段名通配式:表示當(dāng)前表中所有與字段名通配式相匹配的字段均為可被訪問字段。 ALL EXCEPT 字段名通配式:表示當(dāng)前表中所有不與字段名通配式相匹配的字段均為可被訪問字段。 例子:設(shè)置STUDENT表中只有“計算機”專業(yè)學(xué)生的學(xué)號、姓名、出生日期三個字段可被訪問。 在命令窗口輸入如下命令:USE STUDENTBROWSESET FILTER TO 專業(yè)=“計算機”SET FIELDS TO 學(xué)號,姓名,專業(yè)BROWSE顯示結(jié)果如圖所示。 5.1.2 順序查詢與索引查詢 VFP提供了順序查詢和索引查

4、詢兩種查詢定位方法,前者是按照記錄的物理排列順序依次查詢并定位于滿足指定要求的第一條記錄;后者是利用索引文件根據(jù)索引關(guān)鍵字的值基于二分算法進(jìn)行查詢定位。 1.順序查詢命令:LOCATE (1)格式 LOCATE FOR (2)功能 執(zhí)行該命令,系統(tǒng)在指定的記錄范圍(缺省表示所有記錄)內(nèi),順序查詢滿足條件的第一個記錄。 提示: 順序查詢不需對表事先建立索引。 若要繼續(xù)查找滿足條件的下一個記錄,應(yīng)使用CONTINUE。 VFP默認(rèn)EXACT OFF,在此狀態(tài)下用LOCATE命令查找字符型數(shù)據(jù)時,進(jìn)行的是不精確匹配,若要進(jìn)行精確匹配查找,請使用“”。 例子例子 在STAFF表中查詢職稱是講師的教師記

5、錄。 USE STAFF 記錄:1/5 (狀態(tài)行上顯示) LOCATE ALL FOR 職稱“講師” 記錄:2/5 (狀態(tài)行上顯示) ?RECNO(),FOUND() 2 .T. (屏幕上顯示) CONTINUE 記錄:4/5 (狀態(tài)行上顯示) ?RECNO(),FOUND() 4 .T. (屏幕上顯示) CONTINUE ?RECNO(),FOUND() 6 .F. 2.索引查詢命令:索引查詢命令:SEEK(1)格式SEEK (2)功能執(zhí)行該命令,系統(tǒng)查找主控索引關(guān)鍵字的值與命令中的值相匹配的第一條記錄,若找到,指針指向該記錄,F(xiàn)OUND()返回.T.;若沒找到,指針指向表的eof標(biāo)志,FO

6、UND()和EOF()將分別返回.F.和.T.。 提示: 使用SEEK命令之前,要求數(shù)據(jù)表已按要查詢的字段建立過索引,并被設(shè)置為主控索引。 SEEK命令只能查詢主控索引關(guān)鍵字字段,對于字符型關(guān)鍵字段,必須加字符串定界符;對于日期型關(guān)鍵字段,必須加日期定界符。 例子:例子:STUDENT表中索引查詢學(xué)號為“04006”的學(xué)生姓名。 USE STUDENT INDEX ON 學(xué)號 TAG XH &按學(xué)號字段建立索引,索引名是XH,并自動被系統(tǒng)作為主控索引 SEEK 04006 ?姓名 周文敏 (屏幕上顯示)順序查詢索引查詢查詢內(nèi)容表中各字段主控索引關(guān)鍵字字段對表的要求無論是否建立索引文件均

7、可方便地查詢必須建立索引文件,并被設(shè)為主控索引命令特點可使用子句限定查詢范圍,可與CONTINUE配合使用,查出表中全部符合條件的記錄在整個表中查詢,找出符合條件的第一條記錄查詢速度慢快 5.1.3 統(tǒng)計命令 1記錄個數(shù)統(tǒng)計命令:記錄個數(shù)統(tǒng)計命令:COUNT (1)格式COUNT FOR/WHILE TO (2)功能 統(tǒng)計當(dāng)前數(shù)據(jù)表中內(nèi)滿足的記錄個數(shù),若命令中含有,則將結(jié)果送入指定內(nèi)存變量中保存。否則將統(tǒng)計結(jié)果顯示在屏幕上。 提示 : 如果SET DELETE是ON,已做了刪除標(biāo)記的記錄將不被COUNT命令統(tǒng)計,但仍被RECCOUNT()函數(shù)統(tǒng)計。 2計算總和命令:計算總和命令:SUM (1)

8、格式 SUM FOR/WHILE TO (2)功能 對當(dāng)前數(shù)據(jù)表中內(nèi)滿足的記錄,按指定數(shù)值字段進(jìn)行縱向求和,若命令中含有,則將結(jié)果送入對應(yīng)的內(nèi)存變量中保存。 3計算平均數(shù)命令:計算平均數(shù)命令:AVERAGE (1)格式 AVERAGE FOR/WHILE TO (2)功能 對當(dāng)前數(shù)據(jù)表中內(nèi)、滿足指定條件的記錄的指定數(shù)值字段進(jìn)行縱向求平均值,若命令中含有,則將結(jié)果送入對應(yīng)的內(nèi)存變量中保存。 提示提示 : 1.COUNT/SUM/AVERAGE命令中缺省時表示所有記錄。 2.SUM/AVERAGE命令中指定求和/求平均字段,缺省表示對所有數(shù)值型字段求和/求平均值。 例子 統(tǒng)計STUDENT表中男生

9、人數(shù)、所有男生的獎學(xué)金總額和平均值。 USE STUDENT COUNT FOR 性別=.T. TO 男生人數(shù) SUM 獎學(xué)金 FOR 性別=.T. TO 獎學(xué)金總額 AVERAGE 獎學(xué)金 FOR 性別=.T. TO 平均獎學(xué)金 ? 男生人數(shù),獎學(xué)金總額,平均獎學(xué)金 4 685.00 171.25 5.1.4 多表操作命令 1工作區(qū)及其選擇工作區(qū)及其選擇 共有三種標(biāo)識工作區(qū)的方法:區(qū)號:分別用數(shù)字132767表示。區(qū)名:對于前10區(qū),用字母AJ表示。從11區(qū)往后用W11W32767表示。別名:打開在工作區(qū)上的表的別名(由USE命令的ALIAS子句指定)。若不指定別名,則系統(tǒng)自動以表名為別名選

10、擇當(dāng)前工作區(qū)命令:SELECT SELECT命令來重新選擇當(dāng)前工作區(qū):SELECT /0 (3)非當(dāng)前工作區(qū)字段的引用 訪問當(dāng)前工作區(qū)中打開表的字段時,可以直接引用字段名,而訪問非當(dāng)前工作區(qū)中打開表的字段時,應(yīng)使用如下格式:/. 或者:/- 2.建立表之間的臨時關(guān)系命令:建立表之間的臨時關(guān)系命令:SET RELATION (1)格式 SET RELATION TO INTO (2)功能 把當(dāng)前工作區(qū)上的表(父表)與在另一工作區(qū)上打開的子表通過關(guān)聯(lián)字段建立指針聯(lián)動關(guān)系,使得當(dāng)前工作區(qū)上表的指針移動時,子表的記錄指針也發(fā)生相應(yīng)的移動。 (3)參數(shù)說明 :用于關(guān)聯(lián)兩表的字段表達(dá)式,通常由兩表共有的字

11、段構(gòu)成,該字段必須是子表的主控索引關(guān)鍵字。 :指定子表的區(qū)號、區(qū)名或表別名。 提示提示 : 要求建立臨時關(guān)系的兩個表必須具有公共屬性字段,且子表已按該字段建立了索引并被設(shè)置為主控索引; 父表打開在當(dāng)前工作區(qū),子表打開在其它工作區(qū)。 臨時關(guān)系不同于永久關(guān)系,它不會永久保存,只要父表或子表關(guān)閉,或使用了取消臨時關(guān)系命令SET RELATl0N TO,臨時關(guān)系即隨之取消。 例例: 在表TEACH與COURSE之間建立臨時關(guān)系,使瀏覽查看TEACH表中所有教工的授課情況時也能看到課程名、課時和學(xué)分。 OPEN DATABASE 教學(xué)管理 SELECT 0 USE COURSE ALIAS COU &a

12、mp;打開子表COURSE INDEX ON 課程號 TAG KCH &對子表按課程號建立索引 SELECT 0 USE TEACH &打開父表TEACH SET RELATION TO 課程號 INTO COU &按課程號建立臨時關(guān)系 BROWSE FIELDS 教工號,課程號,COU.課程名,COU.課時,COU.學(xué)分取自于TEACH取自于COURSE顯示結(jié)果如圖 : 5.2 使用查詢設(shè)計器建立查詢 VFP提供了兩種方法實現(xiàn)結(jié)構(gòu)化查詢:一種是用VFP 提供的“查詢設(shè)計器”或“查詢向?qū)А苯⒉樵兾募⑦\行;另一種是直接編寫SELECT-SQL命令并執(zhí)行。本節(jié)介紹用“查

13、詢設(shè)計器”建立查詢的方法。 5.2.1 查詢設(shè)計器簡介 查詢設(shè)計器是創(chuàng)建和修改查詢文件的有力工具,查詢文件的擴展名為“.QPR”,其內(nèi)容就是SELECT-SQL命令。 啟動查詢設(shè)計器的方法 : 1.從項目管理器啟動查詢設(shè)計器(建議使用,以便文件的歸類管理。) 2.從“文件”菜單啟動查詢設(shè)計器?!安樵冊O(shè)計器”窗口 5.2.2 使用查詢設(shè)計器建立查詢文件 以實例說明使用查詢設(shè)計器建立查詢的操作步驟。 例例: 用查詢設(shè)計器建立查詢文件 CJCX.QPR,根據(jù)表GRADE.DBF和COURSE.DBF,查詢具有3個學(xué)分的各門課程的課程號、課程名、最高成績、最低成績、平均成績和選修人數(shù),并要求按課程號升

14、序顯示。 該查詢涉及表GRADE.DBF和COURSE.DBF,首先把表GRADE和COURSE按公共屬性課程號字段建立關(guān)聯(lián)。 操作步驟如下: (1)啟動查詢設(shè)計器,添加“學(xué)生成績”庫中的STUDENT表、GRADE表和COURSE表(2)設(shè)置聯(lián)接條件(圖1)。(3)選定輸出列(圖2) 。 (4)設(shè)置篩選條件(圖3) 。 (5) 結(jié)果排序的依據(jù)(圖4) 。(6) 分組所依據(jù)的字段(圖5) (7)選擇“雜項”選項卡(圖6) (8)保存查詢文件。圖1圖2圖3圖4圖5圖6 5.2.3 查詢文件的使用 (1)運行查詢文件,得到查詢結(jié)果(圖1)。(2)選擇查詢結(jié)果的輸出去向(圖1)。(3)查看生成的SE

15、LECT-SQL命令(圖1)。圖1圖2圖3 5.3 結(jié)構(gòu)化查詢語言SQL SQL結(jié)構(gòu)化查詢語言主要特點: SQL是一種一體化的語言,它包括了數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操縱和數(shù)據(jù)控制等方面的功能,它可以完成數(shù)據(jù)庫活動中的全部工作。 SQL是一種高度非過程化的語言。 SQL語言非常簡潔。 SQL是關(guān)系數(shù)據(jù)庫系統(tǒng)的國際標(biāo)準(zhǔn)語言。 5.3.2 SELECT-SQL 命令概述 1.SELECT-SQL 命令的語法格式命令的語法格式 SELECT ALL/DISTINCTTOP nExpr PERCENT Alias.Select_Item AS Column_Name,Alias.Select_Item

16、AS Column_Name FROM DatabaseName!TableName AS Local_Alias,DatabaseName!TableName ASLocal_Alias INNER/LEFTOUTER/RIGHTOUTER/FULLOUTER JOIN DatabaseName!TableName ASLocal_Alias ON JoinCondition WHERE JoinCondition AND JoinConditionAND/OR FilterCondition AND/OR FilterConidion ORDER BY Order_Item ASC/DES

17、C,Order_Item ASC/DESC GROUP BY GroupCo1umn ,GroupColumnHAVING FilterCondition TO PRINTER/ FILE FileNameADDITIVE/ SCREEN INTO TABLE Tablename/CURSOR Cursorname/ARRAY Arrayname 2.SELECT-SQL 命令功能命令功能:從一個或多個表中查詢指定條件的數(shù)據(jù)并輸出。3.參數(shù)說明參數(shù)說明 (1)SELECT子句:指定查詢輸出的結(jié)果。ALL:表示查詢結(jié)果中包括所有滿足查詢條件的記錄,也包括重復(fù)值。默認(rèn)為ALL。DISTINCT:表

18、示在查詢結(jié)果中內(nèi)容完全相同的記錄只能出現(xiàn)一次。Alias.Select_Item:指定作為查詢結(jié)果的列內(nèi)容,可以是字段名、常量或表達(dá)式;Alias表示表名(或表別名),用Alias.標(biāo)識來自不同表的同名字段。AS Column_Name:指定查詢結(jié)果中列的標(biāo)題名稱。TOP nExpr PERCENT:限制查詢記錄的數(shù)目為前nExpr條或占記錄總數(shù)的百分比為nExpr。 注意:TOP參數(shù)必須與ORDER BY子句聯(lián)用。 (2)FROM子句:指定查詢數(shù)據(jù)所在的表以及在聯(lián)接條件中涉及的表。DatabaseName!TableName AS Local_Alias:TableName表示要操作的表名;

19、DatabaseName表示數(shù)據(jù)庫名,如果TableName表不是自由表,且包含它的數(shù)據(jù)庫不是當(dāng)前數(shù)據(jù)庫,則用DatabaseName!指定數(shù)據(jù)庫;Local_Alias表示表的別名。(3)JOIN子句:指定多表之間的聯(lián)接方式。INNER/LEFTOUTER/RIGHT OUTER/FULLOUTERJOIN:內(nèi)部/左(外部)/右(外部)/完全(外部)聯(lián)接。其中的OUTER關(guān)鍵字是任選的,它用來強調(diào)創(chuàng)建的是一個外部聯(lián)接。ON 子句:與JOIN子句聯(lián)用,指定多表之間的聯(lián)接條件(JoinCondition)。(4)WHERE子句:指定多表之間的聯(lián)接條件(JoinCondition)和查詢條件(Fi

20、lterCondition),多個條件用AND或OR聯(lián)結(jié)。 (5)ORDER BY子句:指定對查詢結(jié)果排序的依據(jù)。Order_Item:指定排序所依據(jù)的列。ASC指定查詢結(jié)果以升序排列,DESC指定查詢結(jié)果以降序排列。(6)GROUP BY子句:指定對查詢結(jié)果分組的依據(jù)。GroupCo1umn:指定分組所依據(jù)的字段。HAVING子句:與GROUP BY子句聯(lián)用,指定對分組結(jié)果進(jìn)行篩選的條件(FilterCondition)。(7)TO子句:指定查詢結(jié)果的輸出目標(biāo)。瀏覽窗口:默認(rèn)輸出目標(biāo)(注:查詢結(jié)果在瀏覽窗內(nèi)只供瀏覽,不能修改)。打印機:TO PRINTER。ASCII文件:TO FILE F

21、ilename?;顒哟翱冢篢O SCREEN。 4構(gòu)造構(gòu)造SELECT-SQL命令的方法命令的方法 (1)直接編寫SELECT-SQL命令。 (2)用查詢設(shè)計器交互式生成SELECT-SQL命令。 (3)用查詢向?qū)Ы换ナ缴蒘ELECT-SQL命令。5使用使用SELECT-SQL命令的方式命令的方式 (1)在命令窗口中以命令方式使用SELECT-SQL命令。 (2)通過查詢文件以程序方式使用SELECT-SQL命令。 (3)將SELECT-SQL命令嵌入到程序文件或過程、自定義函數(shù)中以程序方式使用。 5.3.3 用SELECT命令實現(xiàn)單表查詢 1無條件查詢無條件查詢 常用格式:SELECT F

22、ROM (1)查詢指定表中所有記錄的全部字段內(nèi)容 例例: 查詢顯示“教學(xué)管理”數(shù)據(jù)庫中STAFF表中所有教師的詳細(xì)信息。 SELECT * FROM STAFF (2)查詢指定表中所有記錄的部分字段內(nèi)容 例例: 查詢STAFF表中所有教師的教工號、姓名和單位。 SELECT 教工號,姓名,單位 FROM STAFF (3)查詢指定表中所有記錄的統(tǒng)計值 例例: 查詢顯示STAFF表中所有教師的最高工資、最低工資和平均工資,并要求在查詢結(jié)果的列中使用標(biāo)題名稱。 SELECT MAX(基本工資) AS 最高工資,MIN(基本工資) AS 最低工資,;AVG(基本工資) AS 平均工資 FROM ST

23、AFF 函函 數(shù)數(shù)功功 能能MIN()求指定字段的最小值MAX()求指定字段的最大值A(chǔ)VG()求指定字段的平均值SUM()求指定字段值的總和COUNT(*)或COUNT()統(tǒng)計記錄個數(shù)SELECT子句中可用的標(biāo)準(zhǔn)統(tǒng)計函數(shù) 2條件查詢條件查詢 常用格式:常用格式:SELECT FROM WHERE 1)關(guān)系運算符關(guān)系運算符 (大于)(大于) =(大于或等于)(大于或等于) =(小于或等于)(小于或等于)=(等于)(等于) 、!=(不等于)(不等于) 例例: 查詢查詢STAFF表中哪些單位有教師基本工資在表中哪些單位有教師基本工資在2000元以上(含元以上(含2000元),顯示單位名稱(要求不重復(fù)

24、顯示)。元),顯示單位名稱(要求不重復(fù)顯示)。 SELECT DISTINCT 單位單位 FROM STAFF WHERE 基本工資基本工資=2000 2)LIKE 使用格式為: LINK “ 例例: 查詢顯示STAFF.DBF中姓“錢”或姓名中含有“民”的教師的信息。 SELECT * FROM STAFF WHERE 姓名 LIKE 錢% OR 姓名 LIKE %民% 3)BETWEEN:表示介于兩個值之間,有兩種使用格式: BETWEEN AND BETWEEN(,) 例例: 查詢STAFF.DBF中出生于50年代的教師的信息。 SELECT * FROM STAFF WHERE 出生日

25、期 BETWEEN 1950/01/01 AND 1959/12/31 4)IN:是成員判斷符,若提供了值的一覽表,IN將會告訴我們指定值是否在該表中。 使用格式為: IN (,) 例例: 查詢STAFF.DBF中職稱為教授、副教授的教師的信息。 SELECT * FROM STAFF WHERE 職稱 IN(教授,副教授) 5)IS NULL 用于檢查是否為空值NULL。否定運算是IS NOT NULL。 3對查詢結(jié)果進(jìn)行排序 常用格式:SELECT FROM WHERE ORDER BY ASC/DESC 說明: 列出排序所依據(jù)的列。若依據(jù)多個列排序,則列名之間用“,”分隔,排序時先按第一

26、項排序,對第一項值相同的記錄,再按第二項排序,依次類推。 排序方式有ASC和DESC兩種,分別表示升序排列和降序排列,默認(rèn)方式為“ASC”。 例例:查詢STAFF表中教師的姓名、職稱、單位、年齡信息,并按單位降序排列,同一單位的教師按年齡升序排列顯示。 SELECT 姓名, 職稱,單位,YEAR(DATE()-YEAR(出生日期) AS 年齡 FROM STAFF ORDER BY 單位 DESC,年齡 4分組查詢分組查詢 常用格式:常用格式:SELECT FROM WHERE GROUP BY HAVING 例例: 根據(jù)STAFF表查詢各單位教師數(shù)。 SELECT 單位,COUNT(*) F

27、ROM STAFF GROUP BY 單位 例例: 根據(jù)STAFF表統(tǒng)計各單位的基本工資總額,輸出基本工資總額大于等于4000元的單位名稱和基本工資總額。 SELECT 單位,SUM(基本工資) AS 基本工資總額 FROM STAFF GROUP BY 單位 HAVING 基本工資總額=4000 5.3.4 用SELECT實現(xiàn)多表查詢 VFP提供了四種聯(lián)接類型:內(nèi)部聯(lián)接、左聯(lián)接、右聯(lián)接和完全聯(lián)接,其中內(nèi)部聯(lián)接是最常用的連接方式。 以TEACH和COURSE表為例說明各聯(lián)接類型的含義和實現(xiàn)方法,公共屬性“課程號”是兩表間的關(guān)聯(lián)字段,兩表內(nèi)容如圖。1內(nèi)部聯(lián)接(內(nèi)部聯(lián)接(INNER JOIN)查詢

28、)查詢 實現(xiàn)方法1)使用INNER JOIN和ON子句實現(xiàn)。 SELECT FROM INNER JOIN ON .=. 實現(xiàn)方法2)在WHERE子句中實現(xiàn):SELECT FROM , WHERE .=. 例例:根據(jù)表TEACH和COURSE,查詢兩表公有的教師的授課信息。 SELECT TEACH.教工號,TEACH.課程號,COURSE.課程名,COURSE.課時,COURSE.學(xué)分 FROM TEACH INNER JOIN COURSE ON TEACH. 課程號=COURSE. 課程號(圖1) 2左聯(lián)接(LEFT JOIN)查詢 實現(xiàn)方法:使用LEFT JOIN和ON子句實現(xiàn)。 SE

29、LECT FROM LEFT JOIN ON .=. 例例:根據(jù)表TEACH和COURSE,查詢所有教師的授課信息,如果某個課程尚未在COURSE表中登記,也要顯示出該授課教師的信息。 SELECT TEACH.教工號,TEACH.課程號,COURSE.課程名,COURSE.課時,COURSE.學(xué)分 FROM TEACH LEFT JOIN COURSE ON TEACH. 課程號=COURSE. 課程號(圖2) 3右聯(lián)接(RIGHT JOIN)查詢 實現(xiàn)方法:使用RIGHT JOIN和ON子句實現(xiàn)。 SELECT FROM RIGHT JOIN ON .=. 例例:根據(jù)表TEACH和COUR

30、SE,查詢所有教師的授課信息,如果某個課程目前沒有教師授課,也要顯示出該課程的信息。 SELECT TEACH.教工號,TEACH.課程號,COURSE.課程名,COURSE.課時,COURSE.學(xué)分 FROM TEACH RIGHT JOIN COURSE ON TEACH. 課程號=COURSE. 課程號(圖3) 4完全聯(lián)接(FULL JOIN)查詢 實現(xiàn)方法:使用FULL JOIN和ON子句實現(xiàn)。 SELECT FROM FULL JOIN ON .=. 例例:通過表TEACH和COURSE 的完全聯(lián)接,查詢兩表所涉及的所有信息。 SELECT TEACH.教工號,TEACH.課程號,C

31、OURSE.課程名,COURSE.課時,COURSE.學(xué)分 FROM TEACH FULL JOIN COURSE ON TEACH. 課程號=COURSE. 課程號(圖4)圖1圖2圖3圖4 5. 多表間的聯(lián)接查詢 例例:根據(jù)表STAFF 、TEACH和COURSE,按內(nèi)部聯(lián)接查詢有記錄的教師授課信息,要求輸出教師的教工號、姓名、課程號、課程名、課時、學(xué)分,并按教工號從小到大排序輸出。 SELECT STAFF.教工號,姓名, COURSE.課程號,課程名,課時,學(xué)分 FROM STAFF INNER JOIN (TEACH INNER JOIN COURSE ON TEACH.課程號= CO

32、URSE.課程號) ON STAFF.教工號=TEACH.教工號 ORDER BY STAFF.教工號(輸出的內(nèi)容都取自于STAFF和COURSE,TEACH表僅起到“紐帶”作用 )6. 使用嵌套子查詢實現(xiàn)多表查詢 所謂的子查詢是指嵌套在一個SELECT-SQL命令中的另一個SELECT-SQL命令。嵌套子查詢的SELECT-SQL命令形式如下: SELECT FROM WHERE IN(SELECT FROM WHERE ) 例例:根據(jù)表STAFF和TEACH,查詢授課教師的教工號和姓名(要求不重復(fù)顯示)。 SELECT 教工號,姓名 FROM STAFF WHERE 教工號 IN (SEL

33、ECT 教工號 FROM TEACH) 5.3.5 SELECT命令的輸出去向 在SELECT-SQL命令中, 可由INTO子句和TO子句指定查詢的輸出去向,但是如果同時使用INTO子句和TO子句時,INTO子句優(yōu)先。 1INTO ARRAY :將查詢結(jié)果存放到一個二維數(shù)組中。 2INTO CURSOR :將查詢結(jié)果保存在一個只讀臨時表中。 3INTO TABLE :將查詢結(jié)果保存在一個自由表文件(.DBF)中。 4TO FILE ADDITIVE:將查詢結(jié)果保存在一個文本文件(默認(rèn)擴展名為.TXT)中。 5TO PRINTER:將查詢結(jié)果直接輸出到打印機。 6TO SCREEN :將查詢結(jié)果

34、直接顯示在VFP的系統(tǒng)主窗口中。 7缺省INTO子句和TO子句時的默認(rèn)值:瀏覽窗口 例例:從STAFF表中查出所有單位名稱(不為空、不重復(fù)),并將查詢結(jié)果保存在數(shù)組DW中。 SELECT DISTINCT 專業(yè) FROM STUDENT WHERE !EMPTY(單位) INTO ARRAY DW 如查出有3個單位名稱,則分別存放在數(shù)組元素DW(1,1)、DW(1,2)、DW(1,3)中。 5.3.6 其他的SQL命令 1CREATE TABLE-SQL命令 (1)基本格式: CREATE TABLE ( (,) , (,),) (2)功能:創(chuàng)建一個給定每個字段的名稱、類型、寬度、小數(shù)位數(shù)等參

35、數(shù)的新表(.DBF)。 例例:利用CREATE TABLE-SQL命令創(chuàng)建圖書表BOOK.DBF,該表包括以下字段:圖書號(C,8),圖書名(C,20),作者(C,8),出版日期(D),出版社(C,20),定價(N,8,2),簡介(M)。 CREATE TABLE BOOK(圖書號 C(8),圖書名 C(20),作者 C(8),出版日期 D,出版社 C(20),定價 N(8,2),簡介 M) 2INSERT-SQL命令命令 (1)基本格式:INSERT INTO ( ,) VALUES ( ,) (2)功能:向指定的表末尾追加一條新記錄,新記錄有關(guān)字段的值由VALUES子句中的表達(dá)式指定,未指定值的字段將取空值。 例例: 利用INSERT-SQL命令向BOOK表追加一條新記錄:圖書號ISBN-103,圖書名PASCAL語言,定價25元。 INSERT INTO BOOK(圖書號,圖書名,定價) VALUE (ISBN-103, PASCAL語言,25.00) 3DELETE-SQL命令命令 (1) 格式:DELETE FROM WHERE條件 (2)功能:將指定表中滿足指定條件的記錄加上刪除標(biāo)記。若要真正從表中刪除,還必須使用PACK命令。 例例: 利用DELETE-SQL命令將BOOK表中1980年以前出版的圖書記錄刪除。

溫馨提示

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

評論

0/150

提交評論