第四章VF關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL教案_第1頁(yè)
第四章VF關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL教案_第2頁(yè)
第四章VF關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL教案_第3頁(yè)
第四章VF關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL教案_第4頁(yè)
第四章VF關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL教案_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ǔ)言SQLSQL:是結(jié)構(gòu)化查詢語(yǔ)言,它包括數(shù)據(jù)查詢、數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)控制四部分。但在VF中只紹介查詢、定義、操縱三個(gè)方面。SQL命令動(dòng)詞:SQL功能命令動(dòng)詞數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE、DROP、ALTER數(shù)據(jù)操縱INSERT、UPDATE、DELETE數(shù)據(jù)控制GRANT、REVOKE一、查詢功能 1、SQL語(yǔ)言的核心是查詢。查詢的基本形式:SELECT <字段名/表達(dá)式> FROM <表名/視圖名> WHERE <條件>由于表是由行和列組成就像數(shù)學(xué)中所學(xué)的坐標(biāo)由X軸和Y軸構(gòu)成,所需確定某個(gè)點(diǎn)需要說(shuō)明X為多少Y為多少

2、。而表中需要查詢某些數(shù)據(jù)就必需指明行和列,所以在查詢時(shí):1           FROM<表名/視圖名>:說(shuō)明查詢的數(shù)據(jù)來(lái)自于所需要的表或視圖。若某于多個(gè)表時(shí),各個(gè)表之間用逗號(hào)隔開(kāi)。2           SELECT<字段名/表達(dá)式>:說(shuō)明從表或視圖中所查詢結(jié)果是哪些字段名或表達(dá)式的值(各字段名或表達(dá)式之間用逗號(hào)隔開(kāi))即針對(duì)表的列來(lái)操作(限定列)。3  

3、;         WHERE<條件>:說(shuō)明從表或視圖中所查詢結(jié)果是哪些行即記錄針對(duì)表的行來(lái)操作(限定行)。關(guān)于其它短語(yǔ)的說(shuō)明:短語(yǔ)說(shuō)明表名.*來(lái)自于某(些)表的所有字段(屬性)DISTINCT去掉查詢結(jié)果中的重復(fù)記錄(元組)IN相當(dāng)于數(shù)學(xué)集合“”只需屬于其中一個(gè)元素(值)就是滿足條件;NOT IN則不屬于其中任意一個(gè)元素(值)就滿足條件BETWEENAND表示和之間,注意和第二章BETWEEN()函數(shù)的區(qū)別LIKE字符串匹配運(yùn)算符,注意通配符是“%”和“_”與第二章LIKE()函數(shù)區(qū)別ORDER BY

4、對(duì)指定某個(gè)(些)字段排序,只能對(duì)最終的查詢結(jié)果排序,不能用于子查詢GROUP BY用于分組計(jì)算查詢(指定分組依據(jù))HAVING對(duì)GROUP BY分組計(jì)算查詢的結(jié)果進(jìn)一步的加以限定即限定分組(對(duì)分組之后的限定),必須跟GROUP連用,不能單獨(dú)使用。但與WHERE條件無(wú)關(guān),因WHERE條件是對(duì)分組之前限定某些元組(記錄)是否來(lái)參加分組。(注:HAVING與WHERE使用的區(qū)別)IS NULL查詢某字段為空值的記錄(元組),但不能用“=NULL”表示IS NOT NULL查詢某字段不為空值的記錄(元組),但不能用“#NULL”或“NOT IS NULL”ANY/SOME子查詢中只需一行為 .T.則外

5、層就滿足條件ALL子查詢中所有的行都為 .T.則外層就滿足條件EXISTS子查詢中只需有結(jié)果(無(wú)論多少),則外層就滿足條件NOT EXISTS子查詢中只需有結(jié)果,則外層就滿足條件COUNT()統(tǒng)計(jì)查詢結(jié)果的記錄(元組)條數(shù)這五個(gè)函數(shù)只能跟在后面,不能直接跟在其它短語(yǔ)后面MAX()對(duì)某列(數(shù)值類型)求最大值MIN()對(duì)某列(數(shù)值類型)求最小值A(chǔ)VG()對(duì)某列(數(shù)值類型)求平均值SUM()對(duì)某列(數(shù)值類型)求和INNERJOIN普通(內(nèi)部)連接即只有滿足條件的記錄才出現(xiàn)在查詢結(jié)果當(dāng)中LEFT JOIN左連接即除滿足條件的記錄外,第一個(gè)表不滿足條件的記錄也出現(xiàn)在查詢結(jié)果當(dāng)中RIGHT JOIN右連接

6、即除滿足條件的記錄外,第二個(gè)表不滿足條件的記錄都會(huì)出現(xiàn)在查詢結(jié)果當(dāng)中FULL JOIN全連接即除滿足條件的記錄外,第一個(gè)表和第二個(gè)表中不滿足條件的記錄都會(huì)出現(xiàn)在查詢結(jié)果當(dāng)中UNIONSQL查詢中唯一的一個(gè)并運(yùn)算,將兩個(gè)SELECT查詢語(yǔ)句的查詢的結(jié)果合并成一個(gè)查詢結(jié)果TOP顯示前面的部分記錄,必須跟ORDER BY 連用。注意TOP必須書寫在查詢結(jié)果第一個(gè)字段的前面如:SELECT TOP2 姓名,出生日期 FROM XSINTO ARRAY把查詢結(jié)果存儲(chǔ)到某個(gè)數(shù)組當(dāng)中INTO CURSOR把查詢結(jié)果存儲(chǔ)到某個(gè)臨時(shí)表當(dāng)中INTO TABLE/DBF把查詢結(jié)果存儲(chǔ)到某個(gè)永久表(自由表)中TO F

7、ILE把查詢結(jié)果存儲(chǔ)到某個(gè)文本文件當(dāng)中TO PRINTER把查詢結(jié)果輸出到打印機(jī)可以在3個(gè)區(qū)域中創(chuàng)建SELECT命令。1           在命令窗口中;2           在VFP程序中3           在查詢?cè)O(shè)計(jì)器中注:當(dāng)FROM后面來(lái)自于多個(gè)表時(shí),必須寫連接條件(通常根據(jù)表的公共字

8、段作為連接條件),此時(shí)在書寫公共字段之前必須加以別名限定。定義表的別名方法見(jiàn)教材P137,超連接的格式見(jiàn)教材P140FROM書寫不要寫成=>FORM二、查詢方法:1、 簡(jiǎn)單查詢:例:從職工表中檢索所有的工資值。 SELECT 工資 FROM 職工表或者SELECT * FROM 職工表 如果要去掉重復(fù)值用:DISTINCT例:檢索哪些倉(cāng)庫(kù)有工資多于1260元的職工號(hào)SELECT DISTICT 倉(cāng)庫(kù)號(hào) FROM 職工表 WHERE工資>12602、 單擊的連接查詢:類似于多個(gè)表的查詢,與嵌套查詢的區(qū)別是要查詢的結(jié)果呆以出自多個(gè)表中。而嵌套查詢的結(jié)果是基于一個(gè)表中。例:找出

9、工資多于1250元的職工號(hào)與他們所在的城市。這里所要求檢索的住處分別出自職工表和倉(cāng)庫(kù)表兩個(gè)關(guān)系,這樣的檢索肯定是基于多個(gè)關(guān)系的,這類查詢一般用連接查詢來(lái)實(shí)現(xiàn)。 SELECT 職工號(hào),城市 FORM 職工表,倉(cāng)庫(kù)表 WHERE(工資>1250)AND (職工表.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù)表.倉(cāng)庫(kù)號(hào)) WHERE 地址!=“北京”SELECT * FROM 倉(cāng)庫(kù)表 WHERE NOT (地址=“北京”)四、排序: 命令格式為:ORDER BY 字段名 asc/desc例:按職工表中的工資值升序查找出所有職工信息SELECT * FROM 職工表 ORDER BY 工資注:ORDER BY 是對(duì)最終結(jié)果進(jìn)行

10、排序,不能在子查詢中使用。五、簡(jiǎn)單的計(jì)算查詢: 例:查詢供應(yīng)商表中所在地的數(shù)目;SELECT COUNT(DISTINCT 地址)FROM供應(yīng)商表六、分組計(jì)算查詢: 格式為:GROUP BY 字段名 HAVING 條件例:求每個(gè)倉(cāng)庫(kù)的職工的平均工資。 SELECT 倉(cāng)庫(kù)號(hào),AVG(工資)FROM 職工表 GROUP BY 倉(cāng)庫(kù)號(hào)注:GROUP BY 短語(yǔ)一般跟在WHERE短語(yǔ)后面,若沒(méi)有WHERE短語(yǔ),就跟在FROM短語(yǔ)后面。另外,GROUP BY 還可以根據(jù)多個(gè)屬性進(jìn)行分組,在分組查詢時(shí),有時(shí)要求查詢滿足條件的記錄時(shí),可以用HAVING短語(yǔ)來(lái)限定分組。七、利用空值查詢: SQL支持NULL,

11、所以也可以利用空值進(jìn)行查詢。NULL值具有以下特點(diǎn):1         不等價(jià)于沒(méi)有任何值;2         與0、空格和空字符串不同3         排序時(shí)具有最大的優(yōu)先權(quán)。4         可以用于計(jì)算和大多數(shù)的函數(shù)中。5    

12、     NULL值不改變變量或字段的數(shù)據(jù)類型。6        NULL值會(huì)影響命令、函數(shù)、表達(dá)式的執(zhí)行。例:查詢已經(jīng)確定供應(yīng)商號(hào)的供應(yīng)商信息: SELECT * FROM 供應(yīng)商表 WHERE 供應(yīng)商號(hào) IS NOT NULL注:查詢空值時(shí)使用IS NULL =NULL是無(wú)效的,空值是一個(gè)不確定的值,所以不能用等于號(hào)進(jìn)行比較。八、自連接與別名查詢:注:別名并不是必需的,在關(guān)系的自連接操作中,別名是必不可少的,SQL不僅可以以對(duì)多個(gè)表進(jìn)行連接操作,還可以將同一關(guān)系與其自身進(jìn)行連接,這

13、種連接就稱為自連接,可以進(jìn)行自連接的關(guān)系,實(shí)際上它們之間存在著一種特殊的遞歸聯(lián)系。1           內(nèi)外層相互關(guān)聯(lián)的嵌套查詢2           使用量詞和謂詞的查詢:3           超連接查詢:4       &

14、#160;   集合并運(yùn)算;并運(yùn)算的格式:UNION ALL SELCTE Command 一、VFP中SQL SELECT的幾個(gè)特殊選項(xiàng); 1、顯示部分結(jié)果:命令格式為:TOP nExpr PERCENTTop 30注:(1)符號(hào)查詢條件的所有記錄中,選擇指定數(shù)量或百分比的記錄;(2)TOP子句必須與ORDER BY 子句同時(shí)使用;當(dāng)不使用PERCENT時(shí),nExpr可以是1-32767之間的整數(shù),顯示查詢結(jié)果的前幾個(gè)記錄;(3)當(dāng)使用PERCENT時(shí),nExpr是0.01-99.99之間的實(shí)數(shù),顯示查詢結(jié)果的前百分之幾個(gè)記錄。 例:顯示工資最高的4位職工的信息。 SEL

15、ECT * TOP 4 FROM 職工表 ORDER 工資 DESC二、將查詢結(jié)果放到數(shù)組中: 命令格式為:INTO ARRAY ArrayName(數(shù)組變量名) 可以將查詢結(jié)果存放到二維數(shù)組中,每行對(duì)應(yīng)一條記錄。 例:將查詢到的AA信息存放在數(shù)組ABC中。 SELECT *FROM AA INTO ARRAY ABC 三、將查詢結(jié)果放到臨時(shí)文件中: 命令格式為:INTO CURSOR CursorName(臨時(shí)文件名) 例:將查詢到的職工信息存放到臨時(shí)文件ABC中。SELECT * FROM 職工表 INTO CURSOR ABC注:INTO CURSOR短語(yǔ)一般用于存放一些臨時(shí)結(jié)果,當(dāng)使用

16、完后這些臨時(shí)文件會(huì)自動(dòng)刪除。 四、將查詢結(jié)果存放到永久表中: 命令格式為:INTO DBF|TABLE 表名例:將工資最高的那30%的職工信息存放到一個(gè)永久表中。 SELECT * TOP 30 PERCENT FROM 職工表 INTO TABLE ABC ORDER BY DESC。五、將查詢結(jié)果存放到文本文件中: 命令格式為:TO FILE 文件名例:將工資最高的那30%的職工信息存放到一文本文件AA中。 SELECT * TOP 30 PERCENT FROM 職工表 ORDER BY 工資 DESC TO FILE ABC 數(shù)據(jù)的操作SQL數(shù)據(jù)操作:包括數(shù)據(jù)插入、更新和刪除。一、插入

17、記錄: 1、格式1:INSERT INTO <表名>字段名表 VALUES(<表達(dá)式1>,<表達(dá)式2>,)功能:在表中插入新記錄:例:在供應(yīng)商表關(guān)系中插入元組:(E4,S3,OR02,2002/01/22,13000) INSERT INTO 供應(yīng)商表 VALUES (“E4”,”S3”,”O(jiān)R02”,2002-01-22,13000) 2、格式2:INSERT INTO <表名> FROM ARRAY <數(shù)組名> 功能:在表中插入新記錄,數(shù)據(jù)來(lái)自于指定的數(shù)組名二、修改記錄: 命令格式:UPDATE <表名> SET &l

18、t;被修改的字段名>=<表達(dá)式> WHERE <條件> 功能:用新的值去更新表中的記錄例:將“選課”表中“學(xué)生號(hào)”為001號(hào)的學(xué)生成績(jī)?cè)黾?0分 UPDATE 選課 SET 成績(jī)=成績(jī)+10 WHERE 學(xué)生號(hào)=“001”注:一般使用WHERE子句指定條件,以更新滿足條件的一些記錄的字段值,并且一次可以更新多個(gè)字段;如果不使用WHERE子句,則更新全部記錄,UPDATE命令只能用來(lái)更新單個(gè)表中的記錄。三、刪除記錄: 命令格式:DELETE FROM <表名> WHERE<條件>功能:邏輯刪除表中記錄 例:要?jiǎng)h除“選課”表中成績(jī)小于60分的記

19、錄DELECT FROM 選課 WHERE 成績(jī)<60注:FROM指定從哪個(gè)表中刪除數(shù)據(jù),WHERE指定被刪除的記錄所滿足的條件,如果不使用WHERE子句,則刪除該表中的全部記錄。帶有刪除標(biāo)記的記錄在PACK命令之前并不從表中做物理刪除,可以用RECALL FOR命令恢復(fù)帶有刪除標(biāo)記的記錄。注:這三個(gè)SQL語(yǔ)句對(duì)表操作的命令與第三章VF中對(duì)表操作命令的區(qū)別。四、數(shù)據(jù)定義: 表的定義創(chuàng)建表:命令格式:CREATE TABLE|DBF <表名> (<字段名> <類型>(<字段寬度>), )說(shuō)明:1    

20、     理解數(shù)據(jù)的說(shuō)明;2         理解創(chuàng)建方法;3         撐握如下短語(yǔ): PRIMARY KEY(建立主索引);CHECK(設(shè)置規(guī)則);ERROR(設(shè)置錯(cuò)誤信息);DEFAULT(默認(rèn)值);FREE(建立自由表;UNIQUE(建立候選索引);NULL或NOT NULL(是否允許為NULL值)等例:用命令創(chuàng)建學(xué)生表。該表分別由字段學(xué)生號(hào)、姓名、性別、年齡構(gòu)成,并且以學(xué)生為主索引,為年齡字段指定了有效性規(guī)則(年齡19)和顯示的錯(cuò)誤信息;CREATE TABLE 學(xué)生 (學(xué)生號(hào)N(3)PRIMARY KEY,姓名 C(3),性別 L(1),年齡 N(2) CHECK(年齡>=19) ERROR“年齡必須滿19歲”)五、表的刪除: 命令格式為:DROP TABLE <表名> 功能:從磁盤上刪除指定表文件注:執(zhí)行

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論