VFP課件(新5).ppt_第1頁
VFP課件(新5).ppt_第2頁
VFP課件(新5).ppt_第3頁
VFP課件(新5).ppt_第4頁
VFP課件(新5).ppt_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第五章 SQL查詢語言,5.1 SOL簡介 5.2 數(shù)據(jù)查詢 5.3 數(shù)據(jù)操作 5.4 數(shù)據(jù)定義,5.1 SQL簡介,SQL是Sturctured Query Language(結(jié)構(gòu)化查詢語 言)的縮寫。SQL包含數(shù)據(jù)查詢、數(shù)據(jù)定義、數(shù)據(jù) 操縱和數(shù)據(jù)控制等功能。其中查詢是SQL語言的重 要組成部分。 SQL是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,所有的關(guān)系數(shù)據(jù)庫 管理系統(tǒng)都支持SQL。,5.1 SQL簡介,SQL語言主要特點: 一體化語言 高度非過程化 語言簡潔,易學(xué)易用 統(tǒng)一的語法格式,不同的工作方式 視圖數(shù)據(jù)結(jié)構(gòu),SQL操作的兩個基本數(shù)據(jù)結(jié)構(gòu)對象是:表和視圖,5.2 數(shù)據(jù)查詢,格式: SELECT ALL

2、|DISTINCT , FROM , WHERE AND AND |OR GROUP By , UNION ALL ORDER By ASCENDING|DESCENDING,ASCENDING|DESCENDING ,5.2 數(shù)據(jù)查詢,INTO | TO FILE ADDITIVE | TO PRINTER | TO SCREEN|into cursor|into table,建議:多多操作! 來加深印象!,5.2 數(shù)據(jù)查詢,ALL:在查詢結(jié)果中包含所有的行(包括重復(fù)值)。它是 系統(tǒng)的默認設(shè)置。 DISTINCT:在查詢結(jié)果中刪除重復(fù)行 :當(dāng)涉及到多表查詢時,需要通過別名來區(qū)分不同 表文件中

3、的字段。 :檢索項主要是FROM子句中所給出的表文件中的 字段名。選中的字段名可以和SQL函數(shù)一起使用。,常用到的函數(shù)有:,平均值函數(shù)AVG(): 求一列數(shù)據(jù)的平均值,最小值函數(shù)MIN(): 求一列數(shù)的最小值,最大值函數(shù)MAX(): 求一列數(shù)的最大值,計數(shù)函數(shù)COUNT(): 求一列中該字段的個數(shù),求和函數(shù)SUM(): 求一列數(shù)的總和,5.2 數(shù)據(jù)查詢,FROM:form子句也是命令中不可缺少的成分,用于指定數(shù) 據(jù)來源,其后列出所有要查詢的表文件名,可以加上相應(yīng)的 別名。 WHERE:WHERE是命令可選項,其后各子句含義為: 是指多表文件查詢的條件;是指單表 文件的查詢條件.,5.2 數(shù)據(jù)查

4、詢,GRONP By短語:將查詢結(jié)果按某一列(或多個列)的值進行 分組; HAVING子句: HAVING子句,只與GROUP By配合使用, 用于說明分組條件; UNION ALL :說明將兩個查詢結(jié)果合并在一 起輸出;若無ALL,重復(fù)記錄將被自動取消,若有ALL表示 結(jié)果全部合并;,5.2 數(shù)據(jù)查詢,ORDER By ASC|DESC:ORDER BY子句指定 按哪個字段對查詢結(jié)果排序,ASC為升序, DESC為降序;,5.2 數(shù)據(jù)查詢,INTO Destination:指定在何處保存查詢結(jié)果。如果在同 一個查詢中同時包含了INTO子句和TO子句,則TO子句不起 作用。如果沒有包含INTO

5、子句,查詢結(jié)果顯示在“瀏覽”窗 口中。,Destination可以是下列三種子句之一,DBF TableName|TABLE TableName: 將查詢結(jié)果保存到一個表中,如果指定 的表已經(jīng)打開,并且SET SAFETY設(shè)置 為OFF,則VFP在不給出任何警告信息 的情況下改寫該表。執(zhí)行完SELECT語 句后,該表仍然保持打開活動狀態(tài)。,CURSOR CursorName:將查詢結(jié) 果保存到臨時表中。如果指定了一 個已打開表的名稱,則VFP產(chǎn)生錯 誤信息。執(zhí)行完SELECT語句后, 臨時表仍然保持打開,但只讀。一 旦關(guān)閉臨時表,則自動刪除它。,ARRAY ArrayName: 將查詢結(jié)果保存

6、到數(shù)組中。如果查詢 結(jié)果中不包含任何記錄,則不創(chuàng)建這 個數(shù)組。,5.2 數(shù)據(jù)查詢,TO FILE FileName ADDITIVE | TO PRINTER PROMPT | TO SCREEN:如果命令中包含了TO子句,但沒有包括 INTO子句,則查詢結(jié)果定向輸出到名為FileName的ASCII 碼文件、打印機或主窗口。包含ADDITIVE子句使查詢結(jié)果 追加到所指定的文本文件的內(nèi)容后面。,5.2.1 簡單查詢,簡單查詢基于單個表,由select-from構(gòu)成無條件查詢, select-from-where構(gòu)成條件查詢 無條件查詢:select-from構(gòu)成 1.查詢表中部分字段 例5.

7、1查詢student表中學(xué)生的學(xué)號和姓名 select 學(xué)號,姓名 from student 例5.2 查詢department表中所有的系名 Select 系名 from department,5.2.1 簡單查詢,2.使用distinct短語 例5.3 列出學(xué)生表中的班級名稱 (無重復(fù)行) select distinct 班級 from student 3.查詢表中全部字段 例5.4 查詢學(xué)生表中全部字段 select * from student 例5.5 查詢course表中的所有元組 Select * from course,Distinct:去掉查詢結(jié)果中的重復(fù)值,“*”是通配符,

8、表示所有字段,5.2.1 簡單查詢,條件查詢:select-from-where結(jié)構(gòu) 4.簡單的條件查詢 例5.6 查詢1992年9月1日以后出生的學(xué)生名單 Select 姓名 from student where 出生日期ctod(“09/01/92”) 例5.7 列出選修課的課程名稱和課程號 Select 課程名,課程號 from course where 課程性質(zhì)=“選修” 例5.8 查詢課程號是0600101,成績大于80分的學(xué)生學(xué)號及成績, 且將成績由高到低列出 Select 學(xué)號,成績 from grade where 課程號=“0600101” and 成績80 order by

9、 成績 desc,5.2.1 簡單查詢,4.簡單的條件查詢 例5.9 查詢teacher表中工資多于2200元的職工所在的系號 Select distinct 系號 from teacher where 工資2200 例5.10 給出在系號“01”或“02”工作并且工資少于3000 元的教師編號 select 教師編號 from teacher where 工資3000 and (系號 =01 OR 系號=02),多個查詢條件可以用AND、OR或者NOT連接,5.2.2 簡單連接查詢,連接是關(guān)系的基本操作之一,連接查詢是一種基于多個關(guān)系 (表)的查詢。 對于連接查詢,檢索項來自不同的關(guān)系,在F

10、ROM短語后多 個數(shù)據(jù)表的名稱之間用逗號隔開,在WHERE短語中必須指 定數(shù)據(jù)表之間進行的連接條件。,5.2.2 簡單連接查詢,1.等值連接 對于等值連接,連接條件通常是兩個數(shù)據(jù)表的公共字段的值相等。 例5.11找出工資多于2200元的教師編號和他們所在的系名。 select 教師編號,系名 from teacher,department; where (工資2200) and (teacher.系號=department.系號) 例5.12找出成績大于90分的學(xué)生的學(xué)號、姓名及成績。 select student.學(xué)號,姓名,成績 from student,grade where 成 績90

11、 and student.學(xué)號=grade.學(xué)號 或者 select s.學(xué)號,姓名,成績 from student s,grade g where 成 績90 and s.學(xué)號=g.學(xué)號,在連接查詢中引用兩個表的公共字段時,須在公共字段名前添加表名或表別名作為前綴,否則系統(tǒng)會提示出錯。對于只在一個數(shù)據(jù)表中出現(xiàn)的字段,則無須指定前綴。,在select查詢的from子句中,可以對數(shù)據(jù)表指定別名,格式為. ,指定別名后,在引用該數(shù)據(jù)表的字段時,應(yīng)以別名作為數(shù)據(jù)表的前綴。,5.2.2 簡單連接查詢,1.等值連接 例5.13 查詢上官小梅所學(xué)課程的課程名及其對應(yīng)的成績 select 姓名,課程名,成績

12、 from student s,course c,grade g where 姓名=上官小梅 and s.學(xué)號=g.學(xué)號 and g.課程號=c. 課程號,對于3個表的連接查詢,使用where子句指定查詢條件時,其形式為:from , where and ,5.2.2 簡單連接查詢,2.自連接查詢:同一關(guān)系與自身進行連接 例5.14 找出至少選修0200101號課和0600201號課學(xué)生的學(xué) 號 select x.學(xué)號 from grade x, grade y where x.學(xué)號=y.學(xué)號 and x.課程號=0200101 and y.課程號=0600201,5.2.3 嵌套查詢,在一個

13、select命令的where子句中,如果還出現(xiàn)了另一個select命令,則這種查詢稱為嵌套查詢。 Vfp只支持單層嵌套查詢。 嵌套查詢所要求的結(jié)果出自一個關(guān)系,但相關(guān)的條件卻涉及多個關(guān)系:一般外層查詢的條件依賴內(nèi)層查詢的結(jié)果,而內(nèi)層查詢與外層查詢無關(guān)。,5.2.3 嵌套查詢,例5.15 查詢哪些系至少有一個教師的工資為2200元。 select 系名 from department where 系號 in (select 系號 from teacher where 工資=2200) 例5.16 查詢所有教師的工資都多于2200元的系的信息。 select * from department w

14、here 系號 not in (select 系 號 from teacher where 工資=2200) and 系號 in (select 系號 from teacher),5.2.3 嵌套查詢,例5.17 查詢還沒有被學(xué)生選修課程的課程號和課程名 select 課程號,課程名 from course where 課程號 not in (select 課程號 from grade) 例5.18 查詢選修“管理學(xué)”的所有學(xué)生的學(xué)號及成績 Select 學(xué)號,成績 from grade where 課程號= (select distinct 課程號 from course where 課程名

15、=管理學(xué)),5.2.3 嵌套查詢,例5.19 查詢同時選修了課程號為0200101和0600201兩門課 程的學(xué)生姓名 select 姓名 from student where 學(xué)號 in (select g1.學(xué)號 from grade g1,grade g2 where g1.學(xué)號=g2.學(xué)號 and g1. 課程號=0200101 and g2.課程號=0600201),5.2.4 特殊運算符,特殊運算符:betweenand, in, like, not,!= 1.確定范圍的查詢:betweenand 例5.20 查詢成績在80分到90分之間的學(xué)生得分情況 select * from

16、grade where 成績 between 80 and 90 或 select * from grade where 成績=80 and 成績=90 例5.21查詢工資不在2200元到2500元范圍內(nèi)的教師信息。 select * from teacher where 工資 not between 2200 and 2500,注意in和between的區(qū)別,5.2.4 特殊運算符,2. In 例5.22 列出課程號是0200101和課程號是0600201的全體學(xué) 生的學(xué)號、課程號和成績. select 學(xué)號,課程號,成績 from grade where 課程號 in (0200101,0

17、600201) 或 select 學(xué)號,課程號,成績 from grade where 課程號= 0200101 or 課程號=0600201,In運算符后面接一個集合,集合中的元素可以是數(shù)值、字符、日期和邏輯表達式等。,5.2.4 特殊運算符,3. !=和NOT 例5.23 查詢不在市場營銷11-1班學(xué)生的信息。 select * from student where 班級 !=市場營銷11-1 或 select * from student where not 班級 =市場營銷11-1“ 例5.24 查詢成績不在80分到90分之間的學(xué)生得分情況 select * from grade wh

18、ere 成績 not between 80 and 90,5.2.4 特殊運算符,4.模糊查詢like 例5.25 在student表中,查詢2011級學(xué)生的基本情況 select * from student where 學(xué)號 like2011% 例5.26 在student表中,查詢所有姓“王”的學(xué)生名單 select 姓名 from student where 姓名 like 王%,注意like的使用及%與_的區(qū)別,5.2.5 空值查詢,例5.27 查詢teacher表中出生日期還沒有確定的教師信息。 select * from teacher where 出生日期 is null 例5

19、.28 查詢teacher表中已經(jīng)確定了出生日期的教師信息。 select * from teacher where 出生日期 is not null,空值怎么查?,Is null,空值查詢時要用is null,而不是“=null”,因為空值不是一個確定的值,所以不能用“=”這樣的運算符進行比較,5.2.6 簡單的計算查詢(庫函數(shù)查詢),用于計算檢索的庫函數(shù)有: count( )、 sum( )、avg( )、 max( )、min( ) 例5.29 統(tǒng)計student表中班級的個數(shù) select count(distinct 班級) as 班級個數(shù) from student 例5.30 統(tǒng)計

20、student表中男生人數(shù) select count(*) from student where 性別=“男 例5.31查詢1992年1月1日后出生的學(xué)生人數(shù) select count(*) from student where 出生日期1992-01-01,As的作用是在查詢結(jié)果中將指定列命名為一個新的名稱,Count(*)是count()函數(shù)的一種特殊形式,用來統(tǒng)計查詢結(jié)果的記錄個數(shù),5.2.6 簡單的計算查詢(庫函數(shù)查詢),例5.32 查詢grade表中成績的最高分、最低分及平均分。 select max(成績)as 最高分,min(成績)as 最低分,avg(成 績) as 平均分 f

21、rom grade 例5.33 查詢grade表中所有選修課的成績總和 select sum(成績)from grade where 課程號 in (select 課 程號 from course where 課程性質(zhì)=選修),5.2.7 分組與計算查詢,GRONP By短語: 將查詢結(jié)果按某一列(或多個列)的值進行分組; HAVING子句: HAVING子句,只與GROUP By配合使用,用于說明分組條件;,5.2.7 分組與計算查詢,例5.34 查詢男女生人數(shù) Select 性別,count(*) from student group by 性別 或 Select 性別,count(性別)

22、 from student group by 性別 例5.35 求每個系的教師的平均工資 select 系號,avg(工資) from teacher group by 系號 例5.36 求至少有兩名教師的每個系的平均工資 select 系號,count(*),avg(工資) from teacher group by 系號 having count(*)=2,Count(*)為每一組的記錄個數(shù),5.2.7 分組與計算查詢,例5.37 列出各門課的平均成績、最高成績、最低成績和選課 人數(shù) select 課程號, AVG(成績) AS 平均成績, MAX(成績) AS 最 高分, MIN(成績)

23、 AS 最低分, COUNT(學(xué)號) AS 選課人數(shù) from grade group by 課程號 例5.38 列出最少選修二門課程的學(xué)生姓名 select 姓名 from student where 學(xué)號 in(select 學(xué)號 from grade group by 學(xué)號 having count(*)=2),5.2.7 分組與計算查詢,例5.39 求出總分大于180的學(xué)生的學(xué)號,姓名及總成績 select s.學(xué)號,姓名,sum(成績) as 總成績 from student s, grade g where s.學(xué)號=g.學(xué)號 group by g.學(xué)號 having sum(成績

24、)180,5.2.8 排序,ORDER By ASC|DESC:指定將查詢結(jié)果按哪個 字段排序,ASC為升序, DESC為降序; 例5.40 對學(xué)生表按姓名排序 Select * from student order by 姓名 例5.41 對teacher表按工資升序檢索出全部教師的信息。 select * from teacher order by 工資 例5.42 先按系號排序,再按工資降序排序輸出全部教師信息 select * from teacher order by 系號,工資 desc,5.2.8 排序,顯示前幾項記錄:有時只需要查找滿足條件的前幾個記錄, 這時可使用top短語

25、格式:TOP nExpr PERCENT 說明: nExpr為數(shù)字表達式,當(dāng)不使用PERCENT時, nExpr為1至32767間的整數(shù),說明顯示前幾個記錄;當(dāng)使用 PERCENT時, nExpr是0.01至99.99間的實數(shù),說明顯示結(jié) 果中前百分之幾的記錄。,5.2.8 排序,例5.43 顯示teacher表工資最高的3位教師的信息 select * top 3 from teacher order by 工資 desc 例5.44 顯示teacher表工資最低的那20%教師的信息 select * top 20 percent from teacher order by 工資 例5.45

26、 在grade表中查詢成績最高的5位學(xué)生的得分情況。 select * top 5 from grade order by 成績 desc 例5.46 在grade表中查詢成績最低的30%學(xué)生的得分情況 select * top 30 percent from grade order by 成績,top短語必須和order by短語配合起來使用才有效,它不能單獨使用,5.2.9 超連接查詢,用where指定的連接條件一般都是等值連接,即只有滿足連接條件的記錄才會出現(xiàn)在查詢結(jié)果中。 在SQL標(biāo)準(zhǔn)中還支持表的超連接,使用下面的命令: Select From Table1 Inner | Left

27、| Right | Full JoinTable2 On Where 其中,inner代表內(nèi)連接,即普通連接;Left、Right、Full 分別代表左連接、右連接和全連接,Left、Right、Full三種 連接方式也稱為外連接。,5.2.9 超連接查詢,INNER JOIN(JOIN),普通連接:只有滿足連接條件的記錄才出現(xiàn)在查詢結(jié)果中。 LIFT JOIN,左連接:在進行連接運算時,首先將滿足連接條件的所有元組放在結(jié)果關(guān)系中,同時將第一個表(或稱Join左邊的表)中不滿足連接條件的元組也放入結(jié)果關(guān)系中,這些元組對應(yīng)第二個表(或稱Join右邊的表)的屬性值為空值。,5.2.9 超連接查詢,

28、RIGHT JOIN,右連接:在進行連接運算時,首先將滿足連接條件的所有元組放在結(jié)果關(guān)系中,同時將第二個表(或稱Join右邊的表)中不滿足連接條件的元組也放入結(jié)果關(guān)系中,這些元組對應(yīng)第一個表(或稱Join左邊的表)的屬性值為空值。 FULL JOIN,全連接:在進行連接運算時,首先將滿足連接條件的所有元組放在結(jié)果關(guān)系中,同時將兩個表中不滿足連接條件的元組也放入結(jié)果關(guān)系中,這些元組對應(yīng)另一個表的屬性值為空值。,5.2.9 超連接查詢,例5.47 普通連接(將teacher表和department表的部分字段 通過公共的字段“系號”進行連接) select d.系號, 系名,教師編號,教師姓名 f

29、rom Department d,teacher t where d.系號=t.系號 等價于 select d.系號, 系名,教師編號,教師姓名 from Department d join teacher t on d.系號=t.系號 等價于 select d.系號, 系名,教師編號,教師姓名 from Department d inner join teacher t on d.系號=t.系號,5.2.9 超連接查詢,例5.48 左連接 select d.系號, 系名,教師編號,教師姓名 from Department d Left join teacher t on d.系號=t.系號

30、例5.49 右連接 假設(shè)teacher表插入一條記錄 “2006108”,“07”, “劉麗”,1972-06-24, “副教授”,2500.00 select d.系號, 系名,教師編號,教師姓名 from Department d Right join teacher t on d.系號=t.系號,5.2.9 超連接查詢,例5.50 全連接 select d.系號, 系名,教師編號,教師姓名 from Department d Full join teacher t on d.系號=t.系號,Join 連接格式在連接多個表時的書寫方法要特別注意,在這種格式中join和on的順序很重要,特別

31、要注意join的順序與on的順序正好相反,5.2.10 使用量詞和謂詞的查詢,格式1:比較運算符ANYALLSOME(子查詢) 量詞:ANY、ALL、SOME,其中ANY與SOME為同義詞,在進行比較運算時只要子查詢中有一行能使結(jié)果為真,則結(jié)果就為真;而ALL則要求子查詢中的所有行都使結(jié)果為真時,結(jié)果才為真。 格式2:NOTEXISTS(子查詢) 謂詞:EXISTS,EXISTS或NOT EXISTS是用來檢查在子查詢中是否有結(jié)果返回(即存在元組或不存在元組),5.2.10 使用量詞和謂詞的查詢,例5.51 檢索那些系中還沒有教師的系的信息。 select * from department

32、where not exists (select * from teacher where 系號=department.系號) 等價于 select * from department where 系號 not in (select 系號 from teacher ) 例5.52 檢索那些系中至少已經(jīng)有一個教師的系的信息。 select * from department where exists (select * from teacher Where 系號=department.系號) 等價于 select * from department where 系號 in (select 系號

33、from teacher),5.2.10 使用量詞和謂詞的查詢,例5.53 查詢還沒有被學(xué)生選修課程的課程號和課程名 Select 課程號,課程名 from course where not exist (select * from grade where course.課程號=grade.課程號),注意:NOTEXISTS只是 判斷子查詢中是否有或沒有結(jié)果返回,它本身并沒有任何運算或比較。,5.2.10 使用量詞和謂詞的查詢,例5.54 求必修課程號是0200101的學(xué)生中成績比必修課號 是0600201課的最低成績要高的學(xué)生的學(xué)號與成績 select 學(xué)號,成績 from grade wh

34、ere 課程號=0200101 and 成績any (select 成績 from grade where 課程號 =0600201) 等價于 select 學(xué)號,成績 from grade where 課程號=0200101 and 成績 (select min(成績) from grade where 課程號 =0600201),5.2.10 使用量詞和謂詞的查詢,例5.55 求必修課程號是0200101的學(xué)生中成績比必修課號 是0600201課的最高成績要高的學(xué)生的學(xué)號與成績 select 學(xué)號,成績 from grade where 課程號=0200101 and 成績all(sele

35、ct 成績 from grade where 課程號 =0600201) 等價于 select 學(xué)號,成績 from grade where 課程號=0200101 and 成績 (select max(成績) from grade where 課程號 =0600201),5.2.11 集合的并運算,SQL支持集合的并(UNION)運算,即可以將兩個SELECT 語 句的查詢結(jié)果通過并運算合并成一個查詢結(jié)果。為了進行并 運算,要求兩個查詢結(jié)果具有相同的字段個數(shù),并且對應(yīng)字 段的值要出自同一個值域。 格式:UNION ALL 說明將兩個查詢結(jié)果合并在一起輸出;若無ALL,重復(fù)記錄將被自動取消,若

36、有ALL表示結(jié)果全部合并;,5.2.11 集合的并運算,例5.56 以下結(jié)果為系名為自動化系和經(jīng)濟系的教師信息 select * from teacher where 系號=(select 系號 from department where 系名=自動化系) union; select * from teacher where 系號=(select 系號 from department where 系名=經(jīng)濟系),5.2.11 集合的并運算,例5.57 以下結(jié)果為“選修課”和“必修課”的課程相關(guān)信息。 select 課程名,課程號 from course where 課程性質(zhì)=選修“ Union

37、 select 課程名,課程號 from course where 課程性質(zhì)=“必修“,5.2.12 查詢結(jié)果的輸出,查詢結(jié)果的輸出去向 Into Array Into Cursor Into Dbf|Table To File To Printer prompt,Into cursor產(chǎn)生的臨時表文件是只讀的.dbf文件,當(dāng)查詢結(jié)束后該臨時文件是當(dāng)前文件,可像一般的.dbf文件使用,當(dāng)該臨時文件被關(guān)閉后,文件將自動被刪除。,執(zhí)行完into table 后,系統(tǒng)將在默認路徑下建立數(shù)據(jù)表文件,同時打開該文件,并將其設(shè)為當(dāng)前數(shù)據(jù)表。與臨時表文件不同,該表文件存放在磁盤上,關(guān)閉后不會被自動刪除。,T

38、o fileadditive可將查詢結(jié)果保存到一個文本文件,文本文件的默認擴展名是.txt,若使用additive可將查詢結(jié)果追加到原文本文件的尾部,否則將覆蓋原有文件。,5.2.12 查詢結(jié)果的輸出,1.將查詢結(jié)果存放在數(shù)組 例5.58 將查詢到的選修課的課程號和課程名存放在數(shù)組xx中。 select 課程號,課程名 from course where 課程性質(zhì)=“選修” into array xx ?xx(1,1),xx(1,2) ?xx(2,1),xx(2,2),5.2.12 查詢結(jié)果的輸出,2.將查詢結(jié)果存放到臨時表文件 例5.59 將查詢到的選修課的課程號和課程名存放在臨時.dbf表

39、 文件xx中。 select 課程號,課程名 from course where 課程性質(zhì)=選修“ into cursor xx 3.將查詢結(jié)果存放到永久表文件 例5.60 將查詢到選修課的課程號和課程名存放在永久表文件 yy中 select 課程號,課程名 from course where 課程性質(zhì)=“選修“ into table yy,5.2.12 查詢結(jié)果的輸出,4.將查詢結(jié)果存放到文本文件 若命令中包含了to子句,但沒有包含into子句,則to子句起 作用。 例5.61 將查詢到的選修課的課程號和課程名存放在文本文件 xx中。 select 課程號,課程名 from course w

40、here 課程性質(zhì)=選修 to file xx 5.將查詢結(jié)果直接輸出到打印機 使用子句to printerprompt可以直接將查詢結(jié)果輸出到打印 機,若使用了prompt選項,則在打印之前還會打開打印機設(shè) 置對話框。,5.3 數(shù)據(jù)操作,SQL的數(shù)據(jù)操作功能是指對數(shù)據(jù)庫中的數(shù)據(jù)進行操 作的功能,主要包括數(shù)據(jù)的插入、數(shù)據(jù)的更新和數(shù) 據(jù)的刪除,對應(yīng)的SQL命令動詞分別是INSERT、 UPDATE和DELETE。,5.3.1.插入數(shù)據(jù),格式1:INSERT INTO (, ) VALUES (, ) 功能:向指定的數(shù)據(jù)表尾部插入一條記錄,并用指定的表達式對字段賦值。 說明: 當(dāng)對新記錄的所有字段

41、都賦值時,可省略字段名。若只對某些字段賦值,即插入的不是完整的記錄時,則需要指定要賦值的字段名稱。 VALUES子句中各個表達式的值為賦給每個字段的值,表達式和對應(yīng)字段的數(shù)據(jù)類型、取值范圍必須一致。,5.3.1.插入數(shù)據(jù),例5.62 在course表中插入記錄。 Insert into course values(“0600010”,”,48,3,”選修”) c(8), 性別 c(2), 年齡 n(3) null, 入學(xué)年月 d),5.4.1 表的定義,例5.68 建立教學(xué)管理數(shù)據(jù)庫,再用SQL命令建立學(xué)生表、課 程表、成績表。 create database 教學(xué)管理 create tabl

42、e 學(xué)生(學(xué)號 c(8) primary key, 姓名 c(8) not null, 性別 c(2), 年齡 n(3) check 年齡16 and 年齡25 error “年 齡范圍在16-25,請輸入正確的年齡”, 是否團員 l, 入學(xué)年月 d default ctod(“09/06/2002”), 備注 m) create table 課程(課號 c(4) primary key, 課程名 c(12) not null, 學(xué)分 n(2),5.4.1 表的定義,create table 成績(學(xué)號 c(8) references 學(xué)生, 課號 c(4), 成 績 n(5,2), prim

43、ary key 學(xué)號+課號 tag 學(xué)號課號, foreign key 課號 tag 課號 references 課程2 tag 課號),5.4.1 表的定義,例5.69 創(chuàng)建訂貨管理數(shù)據(jù)庫,并用SQL命令建立倉庫表、職 工表、供應(yīng)商表及訂購單表。 create database 訂貨管理 create table 倉庫(倉庫號 C(5) primary key,城市 c(10),面積 i check (面積0) error 面積應(yīng)該大于0),5.4.1 表的定義,create table 職工(倉庫號 C(5),職工號 c(5) primary key,工 資 i check(工資=1000

44、 and 工資=5000)error “工資值的范 圍在1000-5000!“ default 1200,foreign key 倉庫號 tag 倉 庫號 references 倉庫) create table 供應(yīng)商(供應(yīng)商號 c(5) primary key,供應(yīng)商名 c(20),地址 c(20),5.4.1 表的定義,create table 訂購單(職工號 c(5),供應(yīng)商號 c(5),訂購單號 c(5) primary key,訂購日期 d,foreign key 職工號 tag 職工號 references 職工,foreign key 供應(yīng)商號 tag 供應(yīng)商號 referenc

45、es 供應(yīng)商),5.4.2 表結(jié)構(gòu)的修改,Alter Table命令用于修改表結(jié)構(gòu),可以增添字段、刪除字段、改變字段的定義、增添或刪除約束等。,5.4.2 表結(jié)構(gòu)的修改,Alter Table命令有3種格式。 格式1: Alter Table Add | Alter Column (字段寬度, ) Null | Not Null CheckError Default Primary Key | Unique References Tag ,5.4.2 表結(jié)構(gòu)的修改,功能:這種格式用來添加字段或修改字段的參數(shù) 。可以修改 字段的類型、寬度、有效性規(guī)則等,但不能修改字段名,不 能刪除字段及已定義的

46、字段有效性規(guī)則。不管是否修改字段 類型,必須將字段名和類型一同在命令中列出。,5.4.2 表結(jié)構(gòu)的修改,例5.70 為課程表增加一個新的字段“學(xué)時”(數(shù)值型,寬度2)。 Alter table 課程 add 學(xué)時 n(2) check 學(xué)時0 error “學(xué)時應(yīng)該 大于0 例5.71將課程表的“課程名”字段的寬度改為14 Alter table 課程 alter 課程名c(14) 例5.72 為“訂購單”表增加一個新字段“總金額”(貨幣類型) alter table 訂購單 add 總金額 y check 總金額0 error “總金 額應(yīng)該大于0“ 例5.73 將訂購單的“訂購單號”字段的

47、寬度改為6 alter table 訂購單 alter 訂購單號 c(6),5.4.2 表結(jié)構(gòu)的修改,格式2: ALTER TABLE ALTER COLUMN NULL | NOT NULL SET CHECKERROR SET DEFAULT DROP DEFAULT DROP CHECK 功能:這種格式主要用于定義、修改和刪除字段的有效性規(guī) 則和默認值定義。,5.4.2 表結(jié)構(gòu)的修改,例5.74 修改“訂購單”表字段“總金額”的有效性規(guī)則 alter table 訂購單 alter 總金額 set check 總金額100 error 總金額應(yīng)該大于100“ 例5.75 刪除“訂購單”表

溫馨提示

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

評論

0/150

提交評論