版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第 5 章章 查查 詢(xún)?cè)?與與 視視 圖圖主要內(nèi)容:1、結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL2、查詢(xún)?cè)O(shè)計(jì)器的使用3、視圖及視圖設(shè)計(jì)器4、查詢(xún)與視圖的區(qū)別重點(diǎn):1 、結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL 的查詢(xún)語(yǔ)句2、查詢(xún)?cè)O(shè)計(jì)器的使用難點(diǎn): 1 、結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL 的查詢(xún)語(yǔ)句 2、查詢(xún)與視圖的區(qū)別要求:1、掌握結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL的數(shù)據(jù)定義、數(shù)據(jù)操縱 及數(shù)據(jù)查詢(xún)語(yǔ)句2、掌握使用查詢(xún)?cè)O(shè)計(jì)器設(shè)計(jì)查詢(xún)的方法3、掌握視圖的概念及其和查詢(xún)的區(qū)別4、掌握使用查詢(xún)?cè)O(shè)計(jì)器設(shè)計(jì)查詢(xún)的方法 5.1 查詢(xún)與統(tǒng)計(jì)命令 數(shù)據(jù)查詢(xún)通常包括對(duì)數(shù)據(jù)表中原始數(shù)據(jù)的直接檢索和對(duì)原始數(shù)據(jù)做特定的統(tǒng)計(jì)和計(jì)算兩類(lèi)。 5.1.1 數(shù)據(jù)“篩選過(guò)濾” “篩選過(guò)濾”分為
2、橫向和縱向兩種。前者叫做記錄篩選,它能夠屏蔽掉不滿(mǎn)足條件的記錄集;后者叫做字段篩選,它能夠屏蔽我們不感興趣的字段集。記錄篩選實(shí)現(xiàn)了關(guān)系運(yùn)算中的選擇運(yùn)算(Selection),字段篩選實(shí)現(xiàn)了關(guān)系運(yùn)算中的投影運(yùn)算(Projection)。 1記錄篩選命令:記錄篩選命令:SET FILTER (1)格式 SET FILTER TO (2)功能 設(shè)置當(dāng)前表中可以被訪問(wèn)的記錄必須滿(mǎn)足的條件。 2設(shè)置字段篩選命令:設(shè)置字段篩選命令:SET FIELDS (1)格式 SET FIELDS TO /ALL LIKE/EXCEPT 字段名通配式 (2)功能指定當(dāng)前表中可以被訪問(wèn)的字段。 (3)參數(shù)說(shuō)明 :逐一列
3、出當(dāng)前表中可被訪問(wèn)的字段的名稱(chēng)。 ALL:表示允許訪問(wèn)當(dāng)前表中的所有字段。 ALL LIKE 字段名通配式:表示當(dāng)前表中所有與字段名通配式相匹配的字段均為可被訪問(wèn)字段。 ALL EXCEPT 字段名通配式:表示當(dāng)前表中所有不與字段名通配式相匹配的字段均為可被訪問(wèn)字段。 例子:設(shè)置STUDENT表中只有“計(jì)算機(jī)”專(zhuān)業(yè)學(xué)生的學(xué)號(hào)、姓名、出生日期三個(gè)字段可被訪問(wèn)。 在命令窗口輸入如下命令:USE STUDENTBROWSESET FILTER TO 專(zhuān)業(yè)=“計(jì)算機(jī)”SET FIELDS TO 學(xué)號(hào),姓名,專(zhuān)業(yè)BROWSE顯示結(jié)果如圖所示。 5.1.2 順序查詢(xún)與索引查詢(xún) VFP提供了順序查詢(xún)和索引查
4、詢(xún)兩種查詢(xún)定位方法,前者是按照記錄的物理排列順序依次查詢(xún)并定位于滿(mǎn)足指定要求的第一條記錄;后者是利用索引文件根據(jù)索引關(guān)鍵字的值基于二分算法進(jìn)行查詢(xún)定位。 1.順序查詢(xún)命令:LOCATE (1)格式 LOCATE FOR (2)功能 執(zhí)行該命令,系統(tǒng)在指定的記錄范圍(缺省表示所有記錄)內(nèi),順序查詢(xún)滿(mǎn)足條件的第一個(gè)記錄。 提示: 順序查詢(xún)不需對(duì)表事先建立索引。 若要繼續(xù)查找滿(mǎn)足條件的下一個(gè)記錄,應(yīng)使用CONTINUE。 VFP默認(rèn)EXACT OFF,在此狀態(tài)下用LOCATE命令查找字符型數(shù)據(jù)時(shí),進(jìn)行的是不精確匹配,若要進(jìn)行精確匹配查找,請(qǐng)使用“”。 例子例子 在STAFF表中查詢(xún)職稱(chēng)是講師的教師記
5、錄。 USE STAFF 記錄:1/5 (狀態(tài)行上顯示) LOCATE ALL FOR 職稱(chēng)“講師” 記錄:2/5 (狀態(tài)行上顯示) ?RECNO(),FOUND() 2 .T. (屏幕上顯示) CONTINUE 記錄:4/5 (狀態(tài)行上顯示) ?RECNO(),FOUND() 4 .T. (屏幕上顯示) CONTINUE ?RECNO(),FOUND() 6 .F. 2.索引查詢(xún)命令:索引查詢(xún)命令:SEEK(1)格式SEEK (2)功能執(zhí)行該命令,系統(tǒng)查找主控索引關(guān)鍵字的值與命令中的值相匹配的第一條記錄,若找到,指針指向該記錄,F(xiàn)OUND()返回.T.;若沒(méi)找到,指針指向表的eof標(biāo)志,FO
6、UND()和EOF()將分別返回.F.和.T.。 提示: 使用SEEK命令之前,要求數(shù)據(jù)表已按要查詢(xún)的字段建立過(guò)索引,并被設(shè)置為主控索引。 SEEK命令只能查詢(xún)主控索引關(guān)鍵字字段,對(duì)于字符型關(guān)鍵字段,必須加字符串定界符;對(duì)于日期型關(guān)鍵字段,必須加日期定界符。 例子:例子:STUDENT表中索引查詢(xún)學(xué)號(hào)為“04006”的學(xué)生姓名。 USE STUDENT INDEX ON 學(xué)號(hào) TAG XH &按學(xué)號(hào)字段建立索引,索引名是XH,并自動(dòng)被系統(tǒng)作為主控索引 SEEK 04006 ?姓名 周文敏 (屏幕上顯示)順序查詢(xún)索引查詢(xún)查詢(xún)內(nèi)容表中各字段主控索引關(guān)鍵字字段對(duì)表的要求無(wú)論是否建立索引文件均
7、可方便地查詢(xún)必須建立索引文件,并被設(shè)為主控索引命令特點(diǎn)可使用子句限定查詢(xún)范圍,可與CONTINUE配合使用,查出表中全部符合條件的記錄在整個(gè)表中查詢(xún),找出符合條件的第一條記錄查詢(xún)速度慢快 5.1.3 統(tǒng)計(jì)命令 1記錄個(gè)數(shù)統(tǒng)計(jì)命令:記錄個(gè)數(shù)統(tǒng)計(jì)命令:COUNT (1)格式COUNT FOR/WHILE TO (2)功能 統(tǒng)計(jì)當(dāng)前數(shù)據(jù)表中內(nèi)滿(mǎn)足的記錄個(gè)數(shù),若命令中含有,則將結(jié)果送入指定內(nèi)存變量中保存。否則將統(tǒng)計(jì)結(jié)果顯示在屏幕上。 提示 : 如果SET DELETE是ON,已做了刪除標(biāo)記的記錄將不被COUNT命令統(tǒng)計(jì),但仍被RECCOUNT()函數(shù)統(tǒng)計(jì)。 2計(jì)算總和命令:計(jì)算總和命令:SUM (1)
8、格式 SUM FOR/WHILE TO (2)功能 對(duì)當(dāng)前數(shù)據(jù)表中內(nèi)滿(mǎn)足的記錄,按指定數(shù)值字段進(jìn)行縱向求和,若命令中含有,則將結(jié)果送入對(duì)應(yīng)的內(nèi)存變量中保存。 3計(jì)算平均數(shù)命令:計(jì)算平均數(shù)命令:AVERAGE (1)格式 AVERAGE FOR/WHILE TO (2)功能 對(duì)當(dāng)前數(shù)據(jù)表中內(nèi)、滿(mǎn)足指定條件的記錄的指定數(shù)值字段進(jìn)行縱向求平均值,若命令中含有,則將結(jié)果送入對(duì)應(yīng)的內(nèi)存變量中保存。 提示提示 : 1.COUNT/SUM/AVERAGE命令中缺省時(shí)表示所有記錄。 2.SUM/AVERAGE命令中指定求和/求平均字段,缺省表示對(duì)所有數(shù)值型字段求和/求平均值。 例子 統(tǒng)計(jì)STUDENT表中男生
9、人數(shù)、所有男生的獎(jiǎng)學(xué)金總額和平均值。 USE STUDENT COUNT FOR 性別=.T. TO 男生人數(shù) SUM 獎(jiǎng)學(xué)金 FOR 性別=.T. TO 獎(jiǎng)學(xué)金總額 AVERAGE 獎(jiǎng)學(xué)金 FOR 性別=.T. TO 平均獎(jiǎng)學(xué)金 ? 男生人數(shù),獎(jiǎng)學(xué)金總額,平均獎(jiǎng)學(xué)金 4 685.00 171.25 5.1.4 多表操作命令 1工作區(qū)及其選擇工作區(qū)及其選擇 共有三種標(biāo)識(shí)工作區(qū)的方法:區(qū)號(hào):分別用數(shù)字132767表示。區(qū)名:對(duì)于前10區(qū),用字母AJ表示。從11區(qū)往后用W11W32767表示。別名:打開(kāi)在工作區(qū)上的表的別名(由USE命令的ALIAS子句指定)。若不指定別名,則系統(tǒng)自動(dòng)以表名為別名選
10、擇當(dāng)前工作區(qū)命令:SELECT SELECT命令來(lái)重新選擇當(dāng)前工作區(qū):SELECT /0 (3)非當(dāng)前工作區(qū)字段的引用 訪問(wèn)當(dāng)前工作區(qū)中打開(kāi)表的字段時(shí),可以直接引用字段名,而訪問(wèn)非當(dāng)前工作區(qū)中打開(kāi)表的字段時(shí),應(yīng)使用如下格式:/. 或者:/- 2.建立表之間的臨時(shí)關(guān)系命令:建立表之間的臨時(shí)關(guān)系命令:SET RELATION (1)格式 SET RELATION TO INTO (2)功能 把當(dāng)前工作區(qū)上的表(父表)與在另一工作區(qū)上打開(kāi)的子表通過(guò)關(guān)聯(lián)字段建立指針聯(lián)動(dòng)關(guān)系,使得當(dāng)前工作區(qū)上表的指針移動(dòng)時(shí),子表的記錄指針也發(fā)生相應(yīng)的移動(dòng)。 (3)參數(shù)說(shuō)明 :用于關(guān)聯(lián)兩表的字段表達(dá)式,通常由兩表共有的字
11、段構(gòu)成,該字段必須是子表的主控索引關(guān)鍵字。 :指定子表的區(qū)號(hào)、區(qū)名或表別名。 提示提示 : 要求建立臨時(shí)關(guān)系的兩個(gè)表必須具有公共屬性字段,且子表已按該字段建立了索引并被設(shè)置為主控索引; 父表打開(kāi)在當(dāng)前工作區(qū),子表打開(kāi)在其它工作區(qū)。 臨時(shí)關(guān)系不同于永久關(guān)系,它不會(huì)永久保存,只要父表或子表關(guān)閉,或使用了取消臨時(shí)關(guān)系命令SET RELATl0N TO,臨時(shí)關(guān)系即隨之取消。 例例: 在表TEACH與COURSE之間建立臨時(shí)關(guān)系,使瀏覽查看TEACH表中所有教工的授課情況時(shí)也能看到課程名、課時(shí)和學(xué)分。 OPEN DATABASE 教學(xué)管理 SELECT 0 USE COURSE ALIAS COU &a
12、mp;打開(kāi)子表COURSE INDEX ON 課程號(hào) TAG KCH &對(duì)子表按課程號(hào)建立索引 SELECT 0 USE TEACH &打開(kāi)父表TEACH SET RELATION TO 課程號(hào) INTO COU &按課程號(hào)建立臨時(shí)關(guān)系 BROWSE FIELDS 教工號(hào),課程號(hào),COU.課程名,COU.課時(shí),COU.學(xué)分取自于TEACH取自于COURSE顯示結(jié)果如圖 : 5.2 使用查詢(xún)?cè)O(shè)計(jì)器建立查詢(xún) VFP提供了兩種方法實(shí)現(xiàn)結(jié)構(gòu)化查詢(xún):一種是用VFP 提供的“查詢(xún)?cè)O(shè)計(jì)器”或“查詢(xún)向?qū)А苯⒉樵?xún)文件并運(yùn)行;另一種是直接編寫(xiě)SELECT-SQL命令并執(zhí)行。本節(jié)介紹用“查
13、詢(xún)?cè)O(shè)計(jì)器”建立查詢(xún)的方法。 5.2.1 查詢(xún)?cè)O(shè)計(jì)器簡(jiǎn)介 查詢(xún)?cè)O(shè)計(jì)器是創(chuàng)建和修改查詢(xún)文件的有力工具,查詢(xún)文件的擴(kuò)展名為“.QPR”,其內(nèi)容就是SELECT-SQL命令。 啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器的方法 : 1.從項(xiàng)目管理器啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器(建議使用,以便文件的歸類(lèi)管理。) 2.從“文件”菜單啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器。“查詢(xún)?cè)O(shè)計(jì)器”窗口 5.2.2 使用查詢(xún)?cè)O(shè)計(jì)器建立查詢(xún)文件 以實(shí)例說(shuō)明使用查詢(xún)?cè)O(shè)計(jì)器建立查詢(xún)的操作步驟。 例例: 用查詢(xún)?cè)O(shè)計(jì)器建立查詢(xún)文件 CJCX.QPR,根據(jù)表GRADE.DBF和COURSE.DBF,查詢(xún)具有3個(gè)學(xué)分的各門(mén)課程的課程號(hào)、課程名、最高成績(jī)、最低成績(jī)、平均成績(jī)和選修人數(shù),并要求按課程號(hào)升
14、序顯示。 該查詢(xún)涉及表GRADE.DBF和COURSE.DBF,首先把表GRADE和COURSE按公共屬性課程號(hào)字段建立關(guān)聯(lián)。 操作步驟如下: (1)啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器,添加“學(xué)生成績(jī)”庫(kù)中的STUDENT表、GRADE表和COURSE表(2)設(shè)置聯(lián)接條件(圖1)。(3)選定輸出列(圖2) 。 (4)設(shè)置篩選條件(圖3) 。 (5) 結(jié)果排序的依據(jù)(圖4) 。(6) 分組所依據(jù)的字段(圖5) (7)選擇“雜項(xiàng)”選項(xiàng)卡(圖6) (8)保存查詢(xún)文件。圖1圖2圖3圖4圖5圖6 5.2.3 查詢(xún)文件的使用 (1)運(yùn)行查詢(xún)文件,得到查詢(xún)結(jié)果(圖1)。(2)選擇查詢(xún)結(jié)果的輸出去向(圖1)。(3)查看生成的SE
15、LECT-SQL命令(圖1)。圖1圖2圖3 5.3 結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL SQL結(jié)構(gòu)化查詢(xún)語(yǔ)言主要特點(diǎn): SQL是一種一體化的語(yǔ)言,它包括了數(shù)據(jù)定義、數(shù)據(jù)查詢(xún)、數(shù)據(jù)操縱和數(shù)據(jù)控制等方面的功能,它可以完成數(shù)據(jù)庫(kù)活動(dòng)中的全部工作。 SQL是一種高度非過(guò)程化的語(yǔ)言。 SQL語(yǔ)言非常簡(jiǎn)潔。 SQL是關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的國(guó)際標(biāo)準(zhǔn)語(yǔ)言。 5.3.2 SELECT-SQL 命令概述 1.SELECT-SQL 命令的語(yǔ)法格式命令的語(yǔ)法格式 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 命令功能命令功能:從一個(gè)或多個(gè)表中查詢(xún)指定條件的數(shù)據(jù)并輸出。3.參數(shù)說(shuō)明參數(shù)說(shuō)明 (1)SELECT子句:指定查詢(xún)輸出的結(jié)果。ALL:表示查詢(xún)結(jié)果中包括所有滿(mǎn)足查詢(xún)條件的記錄,也包括重復(fù)值。默認(rèn)為ALL。DISTINCT:表
18、示在查詢(xún)結(jié)果中內(nèi)容完全相同的記錄只能出現(xiàn)一次。Alias.Select_Item:指定作為查詢(xún)結(jié)果的列內(nèi)容,可以是字段名、常量或表達(dá)式;Alias表示表名(或表別名),用Alias.標(biāo)識(shí)來(lái)自不同表的同名字段。AS Column_Name:指定查詢(xún)結(jié)果中列的標(biāo)題名稱(chēng)。TOP nExpr PERCENT:限制查詢(xún)記錄的數(shù)目為前nExpr條或占記錄總數(shù)的百分比為nExpr。 注意:TOP參數(shù)必須與ORDER BY子句聯(lián)用。 (2)FROM子句:指定查詢(xún)數(shù)據(jù)所在的表以及在聯(lián)接條件中涉及的表。DatabaseName!TableName AS Local_Alias:TableName表示要操作的表名;
19、DatabaseName表示數(shù)據(jù)庫(kù)名,如果TableName表不是自由表,且包含它的數(shù)據(jù)庫(kù)不是當(dāng)前數(shù)據(jù)庫(kù),則用DatabaseName!指定數(shù)據(jù)庫(kù);Local_Alias表示表的別名。(3)JOIN子句:指定多表之間的聯(lián)接方式。INNER/LEFTOUTER/RIGHT OUTER/FULLOUTERJOIN:內(nèi)部/左(外部)/右(外部)/完全(外部)聯(lián)接。其中的OUTER關(guān)鍵字是任選的,它用來(lái)強(qiáng)調(diào)創(chuàng)建的是一個(gè)外部聯(lián)接。ON 子句:與JOIN子句聯(lián)用,指定多表之間的聯(lián)接條件(JoinCondition)。(4)WHERE子句:指定多表之間的聯(lián)接條件(JoinCondition)和查詢(xún)條件(Fi
20、lterCondition),多個(gè)條件用AND或OR聯(lián)結(jié)。 (5)ORDER BY子句:指定對(duì)查詢(xún)結(jié)果排序的依據(jù)。Order_Item:指定排序所依據(jù)的列。ASC指定查詢(xún)結(jié)果以升序排列,DESC指定查詢(xún)結(jié)果以降序排列。(6)GROUP BY子句:指定對(duì)查詢(xún)結(jié)果分組的依據(jù)。GroupCo1umn:指定分組所依據(jù)的字段。HAVING子句:與GROUP BY子句聯(lián)用,指定對(duì)分組結(jié)果進(jìn)行篩選的條件(FilterCondition)。(7)TO子句:指定查詢(xún)結(jié)果的輸出目標(biāo)。瀏覽窗口:默認(rèn)輸出目標(biāo)(注:查詢(xún)結(jié)果在瀏覽窗內(nèi)只供瀏覽,不能修改)。打印機(jī):TO PRINTER。ASCII文件:TO FILE F
21、ilename?;顒?dòng)窗口:TO SCREEN。 4構(gòu)造構(gòu)造SELECT-SQL命令的方法命令的方法 (1)直接編寫(xiě)SELECT-SQL命令。 (2)用查詢(xún)?cè)O(shè)計(jì)器交互式生成SELECT-SQL命令。 (3)用查詢(xún)向?qū)Ы换ナ缴蒘ELECT-SQL命令。5使用使用SELECT-SQL命令的方式命令的方式 (1)在命令窗口中以命令方式使用SELECT-SQL命令。 (2)通過(guò)查詢(xún)文件以程序方式使用SELECT-SQL命令。 (3)將SELECT-SQL命令嵌入到程序文件或過(guò)程、自定義函數(shù)中以程序方式使用。 5.3.3 用SELECT命令實(shí)現(xiàn)單表查詢(xún) 1無(wú)條件查詢(xún)無(wú)條件查詢(xún) 常用格式:SELECT F
22、ROM (1)查詢(xún)指定表中所有記錄的全部字段內(nèi)容 例例: 查詢(xún)顯示“教學(xué)管理”數(shù)據(jù)庫(kù)中STAFF表中所有教師的詳細(xì)信息。 SELECT * FROM STAFF (2)查詢(xún)指定表中所有記錄的部分字段內(nèi)容 例例: 查詢(xún)STAFF表中所有教師的教工號(hào)、姓名和單位。 SELECT 教工號(hào),姓名,單位 FROM STAFF (3)查詢(xún)指定表中所有記錄的統(tǒng)計(jì)值 例例: 查詢(xún)顯示STAFF表中所有教師的最高工資、最低工資和平均工資,并要求在查詢(xún)結(jié)果的列中使用標(biāo)題名稱(chēng)。 SELECT MAX(基本工資) AS 最高工資,MIN(基本工資) AS 最低工資,;AVG(基本工資) AS 平均工資 FROM ST
23、AFF 函函 數(shù)數(shù)功功 能能MIN()求指定字段的最小值MAX()求指定字段的最大值A(chǔ)VG()求指定字段的平均值SUM()求指定字段值的總和COUNT(*)或COUNT()統(tǒng)計(jì)記錄個(gè)數(shù)SELECT子句中可用的標(biāo)準(zhǔn)統(tǒng)計(jì)函數(shù) 2條件查詢(xún)條件查詢(xún) 常用格式:常用格式:SELECT FROM WHERE 1)關(guān)系運(yùn)算符關(guān)系運(yùn)算符 (大于)(大于) =(大于或等于)(大于或等于) =(小于或等于)(小于或等于)=(等于)(等于) 、!=(不等于)(不等于) 例例: 查詢(xún)查詢(xún)STAFF表中哪些單位有教師基本工資在表中哪些單位有教師基本工資在2000元以上(含元以上(含2000元),顯示單位名稱(chēng)(要求不重復(fù)
24、顯示)。元),顯示單位名稱(chēng)(要求不重復(fù)顯示)。 SELECT DISTINCT 單位單位 FROM STAFF WHERE 基本工資基本工資=2000 2)LIKE 使用格式為: LINK “ 例例: 查詢(xún)顯示STAFF.DBF中姓“錢(qián)”或姓名中含有“民”的教師的信息。 SELECT * FROM STAFF WHERE 姓名 LIKE 錢(qián)% OR 姓名 LIKE %民% 3)BETWEEN:表示介于兩個(gè)值之間,有兩種使用格式: BETWEEN AND BETWEEN(,) 例例: 查詢(xún)STAFF.DBF中出生于50年代的教師的信息。 SELECT * FROM STAFF WHERE 出生日
25、期 BETWEEN 1950/01/01 AND 1959/12/31 4)IN:是成員判斷符,若提供了值的一覽表,IN將會(huì)告訴我們指定值是否在該表中。 使用格式為: IN (,) 例例: 查詢(xún)STAFF.DBF中職稱(chēng)為教授、副教授的教師的信息。 SELECT * FROM STAFF WHERE 職稱(chēng) IN(教授,副教授) 5)IS NULL 用于檢查是否為空值NULL。否定運(yùn)算是IS NOT NULL。 3對(duì)查詢(xún)結(jié)果進(jìn)行排序 常用格式:SELECT FROM WHERE ORDER BY ASC/DESC 說(shuō)明: 列出排序所依據(jù)的列。若依據(jù)多個(gè)列排序,則列名之間用“,”分隔,排序時(shí)先按第一
26、項(xiàng)排序,對(duì)第一項(xiàng)值相同的記錄,再按第二項(xiàng)排序,依次類(lèi)推。 排序方式有ASC和DESC兩種,分別表示升序排列和降序排列,默認(rèn)方式為“ASC”。 例例:查詢(xún)STAFF表中教師的姓名、職稱(chēng)、單位、年齡信息,并按單位降序排列,同一單位的教師按年齡升序排列顯示。 SELECT 姓名, 職稱(chēng),單位,YEAR(DATE()-YEAR(出生日期) AS 年齡 FROM STAFF ORDER BY 單位 DESC,年齡 4分組查詢(xún)分組查詢(xún) 常用格式:常用格式:SELECT FROM WHERE GROUP BY HAVING 例例: 根據(jù)STAFF表查詢(xún)各單位教師數(shù)。 SELECT 單位,COUNT(*) F
27、ROM STAFF GROUP BY 單位 例例: 根據(jù)STAFF表統(tǒng)計(jì)各單位的基本工資總額,輸出基本工資總額大于等于4000元的單位名稱(chēng)和基本工資總額。 SELECT 單位,SUM(基本工資) AS 基本工資總額 FROM STAFF GROUP BY 單位 HAVING 基本工資總額=4000 5.3.4 用SELECT實(shí)現(xiàn)多表查詢(xún) VFP提供了四種聯(lián)接類(lèi)型:內(nèi)部聯(lián)接、左聯(lián)接、右聯(lián)接和完全聯(lián)接,其中內(nèi)部聯(lián)接是最常用的連接方式。 以TEACH和COURSE表為例說(shuō)明各聯(lián)接類(lèi)型的含義和實(shí)現(xiàn)方法,公共屬性“課程號(hào)”是兩表間的關(guān)聯(lián)字段,兩表內(nèi)容如圖。1內(nèi)部聯(lián)接(內(nèi)部聯(lián)接(INNER JOIN)查詢(xún)
28、)查詢(xún) 實(shí)現(xiàn)方法1)使用INNER JOIN和ON子句實(shí)現(xiàn)。 SELECT FROM INNER JOIN ON .=. 實(shí)現(xiàn)方法2)在WHERE子句中實(shí)現(xiàn):SELECT FROM , WHERE .=. 例例:根據(jù)表TEACH和COURSE,查詢(xún)兩表公有的教師的授課信息。 SELECT TEACH.教工號(hào),TEACH.課程號(hào),COURSE.課程名,COURSE.課時(shí),COURSE.學(xué)分 FROM TEACH INNER JOIN COURSE ON TEACH. 課程號(hào)=COURSE. 課程號(hào)(圖1) 2左聯(lián)接(LEFT JOIN)查詢(xún) 實(shí)現(xiàn)方法:使用LEFT JOIN和ON子句實(shí)現(xiàn)。 SE
29、LECT FROM LEFT JOIN ON .=. 例例:根據(jù)表TEACH和COURSE,查詢(xún)所有教師的授課信息,如果某個(gè)課程尚未在COURSE表中登記,也要顯示出該授課教師的信息。 SELECT TEACH.教工號(hào),TEACH.課程號(hào),COURSE.課程名,COURSE.課時(shí),COURSE.學(xué)分 FROM TEACH LEFT JOIN COURSE ON TEACH. 課程號(hào)=COURSE. 課程號(hào)(圖2) 3右聯(lián)接(RIGHT JOIN)查詢(xún) 實(shí)現(xiàn)方法:使用RIGHT JOIN和ON子句實(shí)現(xiàn)。 SELECT FROM RIGHT JOIN ON .=. 例例:根據(jù)表TEACH和COUR
30、SE,查詢(xún)所有教師的授課信息,如果某個(gè)課程目前沒(méi)有教師授課,也要顯示出該課程的信息。 SELECT TEACH.教工號(hào),TEACH.課程號(hào),COURSE.課程名,COURSE.課時(shí),COURSE.學(xué)分 FROM TEACH RIGHT JOIN COURSE ON TEACH. 課程號(hào)=COURSE. 課程號(hào)(圖3) 4完全聯(lián)接(FULL JOIN)查詢(xún) 實(shí)現(xiàn)方法:使用FULL JOIN和ON子句實(shí)現(xiàn)。 SELECT FROM FULL JOIN ON .=. 例例:通過(guò)表TEACH和COURSE 的完全聯(lián)接,查詢(xún)兩表所涉及的所有信息。 SELECT TEACH.教工號(hào),TEACH.課程號(hào),C
31、OURSE.課程名,COURSE.課時(shí),COURSE.學(xué)分 FROM TEACH FULL JOIN COURSE ON TEACH. 課程號(hào)=COURSE. 課程號(hào)(圖4)圖1圖2圖3圖4 5. 多表間的聯(lián)接查詢(xún) 例例:根據(jù)表STAFF 、TEACH和COURSE,按內(nèi)部聯(lián)接查詢(xún)有記錄的教師授課信息,要求輸出教師的教工號(hào)、姓名、課程號(hào)、課程名、課時(shí)、學(xué)分,并按教工號(hào)從小到大排序輸出。 SELECT STAFF.教工號(hào),姓名, COURSE.課程號(hào),課程名,課時(shí),學(xué)分 FROM STAFF INNER JOIN (TEACH INNER JOIN COURSE ON TEACH.課程號(hào)= CO
32、URSE.課程號(hào)) ON STAFF.教工號(hào)=TEACH.教工號(hào) ORDER BY STAFF.教工號(hào)(輸出的內(nèi)容都取自于STAFF和COURSE,TEACH表僅起到“紐帶”作用 )6. 使用嵌套子查詢(xún)實(shí)現(xiàn)多表查詢(xún) 所謂的子查詢(xún)是指嵌套在一個(gè)SELECT-SQL命令中的另一個(gè)SELECT-SQL命令。嵌套子查詢(xún)的SELECT-SQL命令形式如下: SELECT FROM WHERE IN(SELECT FROM WHERE ) 例例:根據(jù)表STAFF和TEACH,查詢(xún)授課教師的教工號(hào)和姓名(要求不重復(fù)顯示)。 SELECT 教工號(hào),姓名 FROM STAFF WHERE 教工號(hào) IN (SEL
33、ECT 教工號(hào) FROM TEACH) 5.3.5 SELECT命令的輸出去向 在SELECT-SQL命令中, 可由INTO子句和TO子句指定查詢(xún)的輸出去向,但是如果同時(shí)使用INTO子句和TO子句時(shí),INTO子句優(yōu)先。 1INTO ARRAY :將查詢(xún)結(jié)果存放到一個(gè)二維數(shù)組中。 2INTO CURSOR :將查詢(xún)結(jié)果保存在一個(gè)只讀臨時(shí)表中。 3INTO TABLE :將查詢(xún)結(jié)果保存在一個(gè)自由表文件(.DBF)中。 4TO FILE ADDITIVE:將查詢(xún)結(jié)果保存在一個(gè)文本文件(默認(rèn)擴(kuò)展名為.TXT)中。 5TO PRINTER:將查詢(xún)結(jié)果直接輸出到打印機(jī)。 6TO SCREEN :將查詢(xún)結(jié)果
34、直接顯示在VFP的系統(tǒng)主窗口中。 7缺省INTO子句和TO子句時(shí)的默認(rèn)值:瀏覽窗口 例例:從STAFF表中查出所有單位名稱(chēng)(不為空、不重復(fù)),并將查詢(xún)結(jié)果保存在數(shù)組DW中。 SELECT DISTINCT 專(zhuān)業(yè) FROM STUDENT WHERE !EMPTY(單位) INTO ARRAY DW 如查出有3個(gè)單位名稱(chēng),則分別存放在數(shù)組元素DW(1,1)、DW(1,2)、DW(1,3)中。 5.3.6 其他的SQL命令 1CREATE TABLE-SQL命令 (1)基本格式: CREATE TABLE ( (,) , (,),) (2)功能:創(chuàng)建一個(gè)給定每個(gè)字段的名稱(chēng)、類(lèi)型、寬度、小數(shù)位數(shù)等參
35、數(shù)的新表(.DBF)。 例例:利用CREATE TABLE-SQL命令創(chuàng)建圖書(shū)表BOOK.DBF,該表包括以下字段:圖書(shū)號(hào)(C,8),圖書(shū)名(C,20),作者(C,8),出版日期(D),出版社(C,20),定價(jià)(N,8,2),簡(jiǎn)介(M)。 CREATE TABLE BOOK(圖書(shū)號(hào) C(8),圖書(shū)名 C(20),作者 C(8),出版日期 D,出版社 C(20),定價(jià) N(8,2),簡(jiǎn)介 M) 2INSERT-SQL命令命令 (1)基本格式:INSERT INTO ( ,) VALUES ( ,) (2)功能:向指定的表末尾追加一條新記錄,新記錄有關(guān)字段的值由VALUES子句中的表達(dá)式指定,未指定值的字段將取空值。 例例: 利用INSERT-SQL命令向BOOK表追加一條新記錄:圖書(shū)號(hào)ISBN-103,圖書(shū)名PASCAL語(yǔ)言,定價(jià)25元。 INSERT INTO BOOK(圖書(shū)號(hào),圖書(shū)名,定價(jià)) VALUE (ISBN-103, PASCAL語(yǔ)言,25.00) 3DELETE-SQL命令命令 (1) 格式:DELETE FROM WHERE條件 (2)功能:將指定表中滿(mǎn)足指定條件的記錄加上刪除標(biāo)記。若要真正從表中刪除,還必須使用PACK命令。 例例: 利用DELETE-SQL命令將BOOK表中1980年以前出版的圖書(shū)記錄刪除。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年存儲(chǔ)用貴金屬材料合作協(xié)議書(shū)
- 八年級(jí)英語(yǔ)下冊(cè) Unit 1 單元綜合測(cè)試卷(人教河南版 2025年春)
- 2025年城市輪渡服務(wù)合作協(xié)議書(shū)
- 2025年五年級(jí)班級(jí)管理工作總結(jié)模版(三篇)
- 2025年互感器租賃合同范文(2篇)
- 2025年交通銀行外匯商品房抵押貸款合同模板(三篇)
- 2025年中外來(lái)件裝配協(xié)議樣本(三篇)
- 2025年二年級(jí)數(shù)學(xué)第一期教學(xué)工作總結(jié)模版(二篇)
- 2025年二年級(jí)上冊(cè)美術(shù)教學(xué)工作總結(jié)范例(2篇)
- 2025年個(gè)人租車(chē)協(xié)議合同(2篇)
- 二零二五年度大型自動(dòng)化設(shè)備買(mǎi)賣(mài)合同模板2篇
- 江西省部分學(xué)校2024-2025學(xué)年高三上學(xué)期1月期末英語(yǔ)試題(含解析無(wú)聽(tīng)力音頻有聽(tīng)力原文)
- GA/T 2145-2024法庭科學(xué)涉火案件物證檢驗(yàn)實(shí)驗(yàn)室建設(shè)技術(shù)規(guī)范
- 2025內(nèi)蒙古匯能煤化工限公司招聘300人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年中國(guó)融通資產(chǎn)管理集團(tuán)限公司春季招聘(511人)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 寵物護(hù)理行業(yè)客戶(hù)回訪制度構(gòu)建
- 電廠檢修管理
- 《SPIN銷(xiāo)售法課件》課件
- 機(jī)動(dòng)車(chē)屬性鑒定申請(qǐng)書(shū)
- 壓力管道基本知識(shí)課件
- 小學(xué)英語(yǔ) 國(guó)際音標(biāo) 練習(xí)及答案
評(píng)論
0/150
提交評(píng)論