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è),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、注:本課件授課內(nèi)容中標(biāo)注的頁(yè)碼與教程一致?!傲?xí)題”來自教程,“練習(xí)”來自一本通第5章 結(jié)構(gòu)化查詢語(yǔ)言(SQL)SQL概述 P86同學(xué)們:SQL的內(nèi)容在筆試和上機(jī)考試中均占到大約30%的比例,此外它還是查詢和視圖的基礎(chǔ),因此是學(xué)習(xí)的重點(diǎn)也是難點(diǎn)。在講解本部分內(nèi)容時(shí),以VFP程序設(shè)計(jì)教程第5章為主,要求大家課后一定要結(jié)合例題解析進(jìn)行復(fù)習(xí)。雖然SQL對(duì)大家來說有一定的難度,但是熟能生巧,大家把書中所涉及的題目和課件中的例題都理解并且操作了,相信SQL這個(gè)難關(guān)一定能攻克。SQL是結(jié)構(gòu)化查詢語(yǔ)言Structure Query Language的縮寫。SQL包含了查詢功能、數(shù)據(jù)定義、數(shù)據(jù)操縱和數(shù)據(jù)控制功能

2、,在VFP中沒有提供數(shù)據(jù)控制功能。SQL主要特點(diǎn):P861 SQL是一種一體化語(yǔ)言。2 SQL是一種高度非過程化的語(yǔ)言。3 SQL語(yǔ)言非常簡(jiǎn)潔。4 SQL語(yǔ)言可直接以命令方式交互使用,也可嵌入到程序設(shè)計(jì)語(yǔ)言中以程序方式使用。第四節(jié) 數(shù)據(jù)查詢功能P94SELECT命令的特點(diǎn):P941 可以自動(dòng)打開數(shù)據(jù)庫(kù)、表文件加以查詢,而不需要事先用OPEN DATABASE或USE命令打開。2 可以直接選取數(shù)據(jù)表中的數(shù)據(jù),而不需要事先用SET RELATION命令建立關(guān)聯(lián)。3 當(dāng)需要的索引文件不存在時(shí),會(huì)自動(dòng)建立暫存索引文件,以支持快速搜索技術(shù)(Rushmore)來查詢。4 其查詢結(jié)果可輸出到文件、表、屏幕或

3、報(bào)表上,還可以轉(zhuǎn)換成統(tǒng)計(jì)圖表。命令格式:SELECT FROM WHERE P94可與 LIST FIELDS FOR 對(duì)照學(xué)習(xí)。關(guān)系操作:投影,選擇,聯(lián)接。說明:功能強(qiáng)大,語(yǔ)法靈活;要處理的數(shù)據(jù)表無須事先打開,通過FROM子句指明并打開。1 SELECT 短語(yǔ):說明要查詢的數(shù)據(jù);對(duì)應(yīng)的關(guān)系操作為投影,類似于FIELDS子句。2 FROM 短語(yǔ):說明要查詢的數(shù)據(jù)來自哪個(gè)或哪些表,可對(duì)單個(gè)表或多個(gè)表進(jìn)行查詢;3 WHERE 短語(yǔ):說明查詢條件;對(duì)應(yīng)的關(guān)系操作為選擇,類似于FOR子句。如是多表查詢還可能過該子句指明聯(lián)接條件,進(jìn)行聯(lián)接。4 GROUP BY 短語(yǔ):用于對(duì)查詢結(jié)果進(jìn)行分組,可利用它進(jìn)行

4、分組匯總;類似于TOTAL命令。5 HAVING 短語(yǔ):跟隨GROUP BY 使用,它用來限定分組必須滿足的條件;6 ORDER BY 短語(yǔ):用于對(duì)查詢的結(jié)果進(jìn)行排序;類似于SORT命令。示例數(shù)據(jù)庫(kù):學(xué)生管理,包括三個(gè)表:學(xué)生,課程,選課(通過該表反映“學(xué)生”與“課程”之間“多對(duì)多”的聯(lián)系。)問題:請(qǐng)同學(xué)們分別指出三個(gè)表的主關(guān)鍵字。一、 簡(jiǎn)單查詢 P95簡(jiǎn)單查詢基于單個(gè)表。例:基本查詢:1、列出學(xué)生信息SELE * FROM 學(xué)生 &&“*”號(hào)代表所有列。類似于:USE 學(xué)生LIST2、列出學(xué)生的學(xué)號(hào),姓名條件查詢:常用運(yùn)算符P951、列出男生學(xué)生的學(xué)號(hào)、姓名及生日SELE 學(xué)

5、號(hào),姓名,生日 FROM 學(xué)生 WHERE 性別=”男”類似于USE 學(xué)生LIST學(xué)號(hào),姓名,生日 FOR性別=”男”2、列出學(xué)分大于5的課程的信息SELE * FROM 課程 WHERE 學(xué)分>5類似于USE 學(xué)生LIST FOR 學(xué)分>5習(xí)題:P95 例5-11,5-12練習(xí):P92 11、13特殊運(yùn)算符 P951 BETWEEN AND 意為“和之間”例:查詢成績(jī)?cè)?0分到90分之間的選課信息。SELE * FROM 選課 WHERE 成績(jī) BETWEEN 80 AND 90等價(jià)于:SELE * FROM 選課 WHERE 成績(jī)>=80 AND 成績(jī)<=90例:查

6、詢成績(jī)不在80分到90分之間的選課信息。SELE * FROM 選課 WHERE 成績(jī) NOT BETWEEN 80 AND 902 LIKE 是字符串匹配運(yùn)算符,通配符“%”表示0個(gè)或多個(gè)字符,“_”表示一個(gè)字符。注意:不是“*”和“?”,不正確!例:從學(xué)生關(guān)系中查詢姓“黃”的學(xué)生信息。SELE * FROM 學(xué)生 WHERE 姓名 LIKE “黃%”不能寫成:SELE * FROM 學(xué)生 WHERE 姓名="黃%" 例:從學(xué)生關(guān)系中查詢不姓“黃”的學(xué)生信息。SELE * FROM 學(xué)生 WHERE 姓名 NOT LIKE “黃%”例:SELE * FROM 學(xué)生 WHE

7、RE 姓名 LIKE "黃_"SELE * FROM 學(xué)生 WHERE 姓名 LIKE "黃_"3、IN:相當(dāng)于集合運(yùn)算符。例:列出湖南和湖北的學(xué)生SELE * FROM 學(xué)生 WHERE 籍貫 IN(“湖南”,”湖北”)練習(xí):P92 9、10使用空值進(jìn)行查詢 空值的概念:空值就是缺值或還沒有確定值,不能把它理解為任何意義的數(shù)據(jù)。比如表示價(jià)格的一個(gè)字段值,空值表示沒有定價(jià),而數(shù)值0可能表示免費(fèi)。空值與空(或空白)字符串、數(shù)值0等具有不同的含義。例:假設(shè)在選課中有些學(xué)生某門課程還沒有考試,則成績(jī)?yōu)榭铡T囌页錾形纯荚嚨倪x課信息。SELE * FROM 選課

8、WHERE 成績(jī) IS NULL注:不能寫成“=NULL”例:試找出成績(jī)不為空的選課信息。SELE * FROM 選課 WHERE 成績(jī) IS NOT NULL二、 聯(lián)接查詢 P97聯(lián)接是關(guān)系的基本操作之一,聯(lián)接查詢基于多個(gè)關(guān)系的查詢,有等值聯(lián)接和非等值聯(lián)接。例:查詢男生學(xué)生的選課信息,包括姓名,學(xué)號(hào)及成績(jī)。分析:本例的查詢結(jié)果包括兩個(gè)表“學(xué)生”與“選課”的屬性,適用于聯(lián)接查詢。SELE 姓名,選課.學(xué)號(hào),成績(jī); FROM 學(xué)生,選課;WHERE 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào) AND 性別=”男” 說明:如果命令太長(zhǎng)一行寫不下可在行末加分號(hào)“:”表續(xù)行選課.學(xué)號(hào): 因?yàn)閮蓚€(gè)表中均有“學(xué)號(hào)”字段,所以

9、必須指明所屬表。學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào):連接條件。還可使用如下SQL語(yǔ)句:SELE 姓名,選課.學(xué)號(hào),成績(jī);FROM 學(xué)生 JOIN 選課 ON 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào);WHERE 性別=”男”說明:JOIN ON :建立表與表之間的聯(lián)接。 超聯(lián)接查詢 P99在兩個(gè)表的超聯(lián)接查詢中,首先保證一個(gè)表中滿足條件的元組都在結(jié)果中,然后將滿足聯(lián)接條件的元組與另一個(gè)表中的元組進(jìn)行聯(lián)接,不滿足聯(lián)接條件的則將應(yīng)來自另一表的屬性置為空值。語(yǔ)法:SELE FROM Talbel INNER|LEFT|RIGHT|FULL JOIN Table ON Join ConditionWHERE 說明:1 INNER

10、JOIN:等價(jià)于JOIN,為普通聯(lián)接。2 ON Join Condition:用于指定聯(lián)接條件。其余說明請(qǐng)同學(xué)們看書。例:比較幾種聯(lián)接方式。SELE 姓名,課程號(hào),成績(jī) FROM 學(xué)生 JOIN 選課 ON 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào)SELE 姓名,課程號(hào),成績(jī) FROM 學(xué)生 LEFT JOIN 選課 ON 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào)SELE 姓名,課程號(hào),成績(jī) FROM 學(xué)生 RIGHT JOIN 選課 ON 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào)SELE 姓名,課程號(hào),成績(jī) FROM 學(xué)生 FULL JOIN 選課 ON 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào)習(xí)題:P98 例5-14 5-15 5-16 5-17三、 嵌套查詢

11、P98嵌套查詢是另一類基于多個(gè)關(guān)系的查詢,此類查詢所要求的結(jié)果出自一個(gè)關(guān)系,但相關(guān)的條件卻涉及多個(gè)關(guān)系。例:查詢女生學(xué)生選課信息,包括學(xué)號(hào),課程號(hào),成績(jī)。SELE *;FROM 選課;WHERE 學(xué)號(hào) IN (SELE 學(xué)號(hào) FROM 學(xué)生 WHERE 性別=”女”)還可使用如下SQL語(yǔ)句:簡(jiǎn)單聯(lián)接查詢SELE 選課.學(xué)號(hào),課程號(hào),成績(jī);FROM 選課 JOIN 學(xué)生 ON 選課.學(xué)號(hào)=學(xué)生.學(xué)號(hào);WHERE 性別=”女” 用量詞和謂詞的嵌套查詢 P101前面已學(xué)過NOT IN運(yùn)算符,此處還有兩種與子查詢相關(guān)的運(yùn)算符。格式1:<表達(dá)式><比較運(yùn)算符>ANY|ALL|SO

12、ME(子查詢)格式2:NOT EXISTS (子查詢)說明:1ANY、ALL和SOME為量詞,ANY和SOME是同義詞,在進(jìn)行比較運(yùn)算時(shí)只要子查詢中有一行能使結(jié)果為真,則結(jié)果為真;ALL則要求子查詢中的所有行都使結(jié)果為真時(shí),結(jié)果才為真。2EXISTS為謂詞,EXISTS和NOT EXISTS是用來檢查在子查詢中是否有結(jié)果返回,也就是存在元組或不存在元組。例:查詢選修有課程的學(xué)生的學(xué)號(hào),姓名,性別及生日。SELE * FROM 學(xué)生 WHERE EXIST (SELE * FROM 選課 WHERE 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào))注:本例中內(nèi)層查詢引用了外層查詢的表,只有這樣使用謂EXISTS或NOT

13、 EXISTS才有意義。例:查詢學(xué)分最高的課程信息。SELE * FROM 課程 WHERE 學(xué)分>=ALL (SELE 學(xué)分 FROM 課程)SELE * FROM 課程 WHERE NOT 學(xué)分<ANY (SELE 學(xué)分 FROM 課程)SELE * FROM 課程 WHERE NOT 學(xué)分<SOME (SELE 學(xué)分 FROM 課程)SELE * FROM 課程 WHERE 學(xué)分=(SELE MAX(學(xué)分) FROM 課程)例:查詢學(xué)分不是最高的課程信息。SELE * FROM 課程 WHERE 學(xué)分<ANY (SELE 學(xué)分 FROM 課程)SELE * FRO

14、M 課程 WHERE 學(xué)分<SOME (SELE 學(xué)分 FROM 課程)習(xí)題:P100 例5-19 5-20練習(xí):P91 6/P94 19四、 排序 P99SQL SELECT 可將查詢結(jié)果排序。排序的短語(yǔ)格式如下:ORDER BY Order_Item ASC|DESC, Order_Item ASC|DESC說明:可按升序或降序排序,允許按一列或多列排序。例:按學(xué)分進(jìn)行升序查詢課程信息。SELE * FROM 課程 ORDER BY 學(xué)分 ASC例:先按學(xué)分進(jìn)行升序排序,學(xué)分相同的再按課程名進(jìn)行降序排序并輸出全部課程信息。SELE * FROM 課程 ORDER BY 學(xué)分,課程名

15、DESC注:ORDER BY 對(duì)最終的查詢結(jié)果進(jìn)行排序,不能在子查詢中使用此短語(yǔ)。習(xí)題:P102 例5-21 5-22練習(xí):P94 20五、 簡(jiǎn)單計(jì)算查詢 P101SQL不但具有一般的檢索能力,而且還有計(jì)算方式的檢索。用于計(jì)算檢索的函數(shù)有:1 COUNT(*):計(jì)數(shù) 自變量通常為數(shù)值型2 SUM():求和3 AVG():算平均值4 MAX():求最大值5 MIN():求最小值上面的函數(shù)可用在SELECT短語(yǔ)中對(duì)查詢結(jié)果進(jìn)行計(jì)算。例:查詢學(xué)號(hào)為“03”的學(xué)生選修課程的考試成績(jī)總分和平均分。SELE SUM(成績(jī)),AVG(成績(jī)) FROM 選課 WHERE 學(xué)號(hào)=”03”SELE SUM(成績(jī))

16、 總分,AVG(成績(jī)) 平均分 FROM 選課 WHERE 學(xué)號(hào)=”03”SELE 姓名,SUM(成績(jī)) AS 總分,AVG(成績(jī)) AS 平均分;FROM 學(xué)生 JOIN 選課 ON 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào);WHERE 學(xué)生.學(xué)號(hào)=”03”習(xí)題:P101 例5-23 5-24練習(xí):P91 5、6 /P94 18六、 分組與計(jì)算查詢 利用GROUP BY 子句進(jìn)行分組計(jì)算查詢使用得更加廣泛。GROUP BY短語(yǔ)格式如下:GROUP BY GroupColumn,GroupColunmHAVING FilterCondition說明:1 可按一列或多列分組,還可以用HAVING進(jìn)一步限定分組的條

17、件。2 GROUP BY子句一般跟在WHERE子句之后,沒有WHERE子句時(shí),跟在FROM子句之后;HAVING子句必須跟在GROUP BY 之后,不能單獨(dú)使用。在查詢中是先用WHERE子句限定元組,然后進(jìn)行分組,最后再用HAVING子句限定分組。例:求每個(gè)學(xué)生選課的考試成績(jī)平均分。SELE 學(xué)號(hào),AVG(成績(jī)) FROM 選課 GROUP BY 學(xué)號(hào)說明:在此查詢中,選按學(xué)號(hào)屬性進(jìn)行分組,然后再計(jì)算每個(gè)學(xué)號(hào)的平均成績(jī)。例:在選課表中求每個(gè)選課門數(shù)為4門的學(xué)生的總分和平均分。SELE 學(xué)號(hào),SUM(成績(jī)) AS 總分,AVG(成績(jī)) AS 平均分;FROM 選課;GROUP BY 學(xué)號(hào) HAV

18、ING COUNT(*)=4SELE 姓名,SUM(成績(jī)) AS 總分,AVG(成績(jī)) AS 平均分;FROM 學(xué)生 JOIN 選課 ON 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào);WHERE 性別=”女”;GROUP BY 選課.學(xué)號(hào) HAVING COUNT(*)=4例:求平均成績(jī)?cè)?0分以上的各課程的課程號(hào)與平均成績(jī)。SELE 課程號(hào),AVG(成績(jī)) FROM 選課; GROUP BY 課程號(hào) HAVING AVG(成績(jī))>80習(xí)題:P102 例5-25練習(xí):P91 7、12、14、15、16七、集合并運(yùn)算 P103可將兩個(gè)SELECT語(yǔ)句的查詢結(jié)果通過并運(yùn)算合并成一個(gè)查詢結(jié)果。為進(jìn)行并運(yùn)算,要求兩

19、個(gè)查詢結(jié)果具有相同的字段個(gè)數(shù),并且對(duì)應(yīng)字段的值要出自同一值域,也就是具有相同的數(shù)據(jù)類型和取值范圍。例:查詢學(xué)號(hào)為01與02的選課信息。SELE * FROM 選課 WHERE 學(xué)號(hào)=”01”;UNION;SELE * FROM 選課 WHERE 學(xué)號(hào)=”02”習(xí)題:P103 例5-26八、VFP中有關(guān)SQL SELECT的幾個(gè)特殊選項(xiàng) P1031 顯示部分結(jié)果格式:TOP n PERCENT功能:只需要滿足條件的前幾個(gè)記錄。說明:(1) n是1至32767之間的整數(shù),說明顯示前幾個(gè)記錄。(2) 當(dāng)使用PERCENT時(shí),說明顯示結(jié)果中前百分之幾的記錄。例:顯示學(xué)分最低的前2項(xiàng)課程記錄。SELE

20、* TOP 2 FROM 課程 ORDER BY 學(xué)分 DESC &&通常與ORDER BY子句連用習(xí)題:P145/46 P152/122 將結(jié)果存放在數(shù)組中 格式:INTO ARRAY ArrayName3 將結(jié)果存放在臨時(shí)文件中格式:INTO CURSOR CursorName說明:臨時(shí)表中一個(gè)只讀的DBF文件,當(dāng)查詢結(jié)束后該臨時(shí)文件是當(dāng)前文件,可像一般的DBF文件一樣使用,當(dāng)關(guān)閉文件時(shí)該文件將自動(dòng)刪除。4 將結(jié)果存放在永久表中,通過該子句可實(shí)現(xiàn)表的復(fù)制。格式:INTO TABLE|DBF TableName5 將結(jié)果存放到文本文件中格式:TO FILE FileName

21、ADDITIVE6 將結(jié)果直接輸出到打印機(jī)格式:TO PRINTER PROMPT習(xí)題:P103 例5-27SELECT語(yǔ)句的工作流程: 首先根據(jù)聯(lián)接條件把幾個(gè)表聯(lián)接成一個(gè)臨時(shí)表,然后根據(jù)WHERE中的查詢條件進(jìn)行過濾,過濾出來的結(jié)果根據(jù)分組條件分成一組一組,然后分別對(duì)這些組進(jìn)行計(jì)算,最后又得出一個(gè)臨時(shí)表,然后又根據(jù)HAVING中的條件對(duì)這個(gè)臨時(shí)表再一次過濾,最后按指定的次序輸出到指定的地方。它中間生成的臨時(shí)表完全由系統(tǒng)自己創(chuàng)建、使用、刪除,完全不受用戶控制。上機(jī)練習(xí):1、完成課件中所有實(shí)例,操作數(shù)據(jù)庫(kù):學(xué)生成績(jī)管理2、完成教程上所有實(shí)例,操作數(shù)據(jù)庫(kù):圖書管理說明:以上練習(xí)要求既會(huì)直接在命令窗

22、口通過SQL語(yǔ)句完成,也要嘗試使用查詢?cè)O(shè)計(jì)器來實(shí)現(xiàn)。如果在上機(jī)課上不能完成,可以在計(jì)算機(jī)課上完成,或者其他業(yè)余時(shí)間完成。請(qǐng)一定在下周上課前完成所有練習(xí)!第三節(jié) 數(shù)據(jù)操作功能 P92一、 插入 命令格式1:INSERT INTO 數(shù)據(jù)表名 (字段名1,字段名2,.) VALUES (表達(dá)式1,表達(dá)式2.)功能:在指定表尾添加一條新記錄,其值為VALUES后面的表達(dá)式的值。命令格式2:INSERT INTO 數(shù)據(jù)表名 FROM ARRAY ArrayName|FROM MEMVAR功能:向指定表中添加一條新記錄,其值來自于數(shù)組或?qū)?yīng)的同名內(nèi)存變量。例:向課程表中插入記錄:(”05”,”數(shù)理邏輯”,

23、”6”,”03”)INSERT INTO 課程 VALUES(”05”,”數(shù)理邏輯”,6,”03”)說明:1 如未使用字段名指明,則VALUES中的表達(dá)式數(shù)目必須與表中的字段數(shù)相同,而且相應(yīng)的數(shù)據(jù)類型必須一致。2 如果表中設(shè)定了主索引,則插入記錄時(shí)只能用該SQL INSERT 命令而不能使用APPEND或INSERT命令。3 注意插入數(shù)據(jù)的數(shù)據(jù)類型必須與表設(shè)計(jì)時(shí)的類型一致。習(xí)題:P92 例5-7,5-8練習(xí):P89 例9 P91 1,3,4二、 更新 命令格式:UPDATE TableName SET 字段名1=表達(dá)式1,字段名2=表達(dá)式2. WHERE Condition類似于REPLACE

24、命令。一次只能在單一的表中更新記錄,通常嵌入在循環(huán)結(jié)構(gòu)內(nèi),用另一個(gè)表的數(shù)據(jù)來修改本表。例:將課程關(guān)系中課程號(hào)為“01”的課程的學(xué)分加1分。UPDATE 課程 SET 學(xué)分=學(xué)分+1 WHERE 課程號(hào)=”01”習(xí)題:P93 例5-10練習(xí):P88 例7,例15 P91 2操作:第三套 二(2)/三三、刪除 P93命令格式:DELETE FROM TableName WHERE Condition說明:類似于VFP的DELE . FOR . 命令。1 若無WHERE子句會(huì)刪除表中的全部記錄。2 此命令為邏輯刪除。用PACK命令進(jìn)行物理刪除。例:刪除課程關(guān)系中課程號(hào)為“05”的元組。DELE FR

25、OM課程 WHERE 課程號(hào)=”05”習(xí)題:P93 例5-9練習(xí):P89 例10,例11,例12,例13,例14第二節(jié) 數(shù)據(jù)定義功能 P87一、表的定義 P87命令格式:CREATE TABLE 數(shù)據(jù)表名(字段名1 字段類型(字段寬度,小數(shù)位數(shù)) NULL|NOT NULLCHECK ERRORDEFAULTPRIMARY KEY|UNIQUE字段名2. .)說明:例:用SQL CREATE命令建立學(xué)生2數(shù)據(jù)表CREATE TABLE 學(xué)生2(學(xué)號(hào)C(2) NOT NULL PRIMARY KEY ,姓名 C(8),;性別 C(2) CHECK 性別=”男” OR 性別=”女” ERROR “

26、性別只能是男或女” DEFAULT “男”,生日 D)習(xí)題:P88 例5-1,例5-2練習(xí):P87 例4,例5,例6,例8例:第十套 一(3)(4)二(1)crea table golden(國(guó)家代碼 C(3),金牌數(shù) int,銀牌數(shù) int,銅牌數(shù) int) &&答案有錯(cuò)insert into golden values("011",9,7,11)*可使用查詢?cè)O(shè)計(jì)器來完成SELECT 國(guó)家.國(guó)家名稱, count(獲獎(jiǎng)牌情況.名次) AS 金牌數(shù); FROM 國(guó)家 INNER JOIN 獲獎(jiǎng)牌情況 ; ON 國(guó)家.國(guó)家代碼 = 獲獎(jiǎng)牌情況.國(guó)家代碼; WH

27、ERE 獲獎(jiǎng)牌情況.名次 = 1; GROUP BY 國(guó)家.國(guó)家名稱; ORDER BY 2 DESC, 國(guó)家.國(guó)家名稱 DESC; INTO TABLE temp.dbf二、表的刪除 P91命令格式:DROP TABLE TableName功能:直接從磁盤上刪除指定的表,執(zhí)行該命令前必須先打開相應(yīng)的數(shù)據(jù)庫(kù)。例:刪除上例中的表“學(xué)生2”DROP TABLE 學(xué)生2習(xí)題:P91 例5-6三、 表結(jié)構(gòu)的修改 一本通 P79命令格式1:ALTER TABLE TableName ADD|ALTER COLUMN 字段名1. 功能:添加(ADD)新的字段并同時(shí)設(shè)置數(shù)據(jù)表字段的有關(guān)屬性;修改(ALTER

28、)已有的字段類型、寬度、有效性規(guī)則、錯(cuò)誤信息、默認(rèn)值、定義主關(guān)鍵字和聯(lián)系等屬性。但不能修改字段名,不能刪除字段,也不能刪除已經(jīng)定義的規(guī)則等;它的句法基本與CREATE TABLE的句法相對(duì)應(yīng)。例:為課程關(guān)系增加長(zhǎng)度為6的字符型的先修課號(hào)屬性。ALTER TABLE 課程 ADD 課程號(hào) C(6)例:課程中的課程號(hào)屬性的長(zhǎng)度由6改為8。ALTER TABLE 課程 ALTER 課程號(hào) C(8)習(xí)題:P90 例5-3 練習(xí):P87 例1,例2,例3,命令格式2:ALTER TABLE 表名 ALTER COLUMN 字段名1 NULL|NOT NULLSET DEFAULT SET CHECK .

29、 ERROR.DROP DEFAULTDROP CHECK說明:此格式主要用于定義、修改和刪除字段一級(jí)的有效性規(guī)則和默認(rèn)值定義。例:為課程關(guān)系增加學(xué)分大于2的有效性規(guī)則ALTER TABLE 課程 ALTER 學(xué)分 SET CHECK 學(xué)分>2習(xí)題:P90 例5-4命令格式3:ALTER TABLE 表名 DROP COLUMN字段名SET CHECK.ERROR.DROP CHECKRENAME COLUMN 字段名 TO 新字段名. . 說明:此格式可刪除字段,可修改字段名,可定義、修改和刪除表一級(jí)的有效性規(guī)則等。例:將課程表的先修課號(hào)字段名改為先修課。ALTER TABLE 課程

30、RENAME 先修課號(hào) TO 先修課例:刪除課程表中的先修課字段 。ALTER TABLE 課程 DROP 先修課習(xí)題:P91 例5-5四、視圖操作1定義視圖命令格式:CREATE VIEW 視圖名 AS select查詢語(yǔ)句說明:視圖是一個(gè)虛表,它一旦建立使用方法跟表十分類似,它不會(huì)形成單獨(dú)的文件,它的內(nèi)容保存在數(shù)據(jù)庫(kù)中,所以自由表不能建立視圖。這是視圖與查詢的一個(gè)區(qū)別。例:CREATE VIEW 學(xué)生成績(jī) AS ;SELE 姓名,SUM(成績(jī)) AS 總分,AVG(成績(jī)) AS 平均分;FROM 學(xué)生 JOIN 選課 ON 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào);GROUP BY 選課.學(xué)號(hào) USE 學(xué)生成績(jī)BROWSELE * FROM 學(xué)生成績(jī)2視圖的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論