![VFP課件(新5).ppt_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/2/00c1eaec-57b9-48c3-accf-9757b94f732e/00c1eaec-57b9-48c3-accf-9757b94f732e1.gif)
![VFP課件(新5).ppt_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/2/00c1eaec-57b9-48c3-accf-9757b94f732e/00c1eaec-57b9-48c3-accf-9757b94f732e2.gif)
![VFP課件(新5).ppt_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/2/00c1eaec-57b9-48c3-accf-9757b94f732e/00c1eaec-57b9-48c3-accf-9757b94f732e3.gif)
![VFP課件(新5).ppt_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/2/00c1eaec-57b9-48c3-accf-9757b94f732e/00c1eaec-57b9-48c3-accf-9757b94f732e4.gif)
![VFP課件(新5).ppt_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/2/00c1eaec-57b9-48c3-accf-9757b94f732e/00c1eaec-57b9-48c3-accf-9757b94f732e5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第五章 SQL查詢語言,5.1 SOL簡介 5.2 數據查詢 5.3 數據操作 5.4 數據定義,5.1 SQL簡介,SQL是Sturctured Query Language(結構化查詢語 言)的縮寫。SQL包含數據查詢、數據定義、數據 操縱和數據控制等功能。其中查詢是SQL語言的重 要組成部分。 SQL是關系數據庫的標準語言,所有的關系數據庫 管理系統(tǒng)都支持SQL。,5.1 SQL簡介,SQL語言主要特點: 一體化語言 高度非過程化 語言簡潔,易學易用 統(tǒng)一的語法格式,不同的工作方式 視圖數據結構,SQL操作的兩個基本數據結構對象是:表和視圖,5.2 數據查詢,格式: SELECT ALL
2、|DISTINCT , FROM , WHERE AND AND |OR GROUP By , UNION ALL ORDER By ASCENDING|DESCENDING,ASCENDING|DESCENDING ,5.2 數據查詢,INTO | TO FILE ADDITIVE | TO PRINTER | TO SCREEN|into cursor|into table,建議:多多操作! 來加深印象!,5.2 數據查詢,ALL:在查詢結果中包含所有的行(包括重復值)。它是 系統(tǒng)的默認設置。 DISTINCT:在查詢結果中刪除重復行 :當涉及到多表查詢時,需要通過別名來區(qū)分不同 表文件中
3、的字段。 :檢索項主要是FROM子句中所給出的表文件中的 字段名。選中的字段名可以和SQL函數一起使用。,常用到的函數有:,平均值函數AVG(): 求一列數據的平均值,最小值函數MIN(): 求一列數的最小值,最大值函數MAX(): 求一列數的最大值,計數函數COUNT(): 求一列中該字段的個數,求和函數SUM(): 求一列數的總和,5.2 數據查詢,FROM:form子句也是命令中不可缺少的成分,用于指定數 據來源,其后列出所有要查詢的表文件名,可以加上相應的 別名。 WHERE:WHERE是命令可選項,其后各子句含義為: 是指多表文件查詢的條件;是指單表 文件的查詢條件.,5.2 數據查
4、詢,GRONP By短語:將查詢結果按某一列(或多個列)的值進行 分組; HAVING子句: HAVING子句,只與GROUP By配合使用, 用于說明分組條件; UNION ALL :說明將兩個查詢結果合并在一 起輸出;若無ALL,重復記錄將被自動取消,若有ALL表示 結果全部合并;,5.2 數據查詢,ORDER By ASC|DESC:ORDER BY子句指定 按哪個字段對查詢結果排序,ASC為升序, DESC為降序;,5.2 數據查詢,INTO Destination:指定在何處保存查詢結果。如果在同 一個查詢中同時包含了INTO子句和TO子句,則TO子句不起 作用。如果沒有包含INTO
5、子句,查詢結果顯示在“瀏覽”窗 口中。,Destination可以是下列三種子句之一,DBF TableName|TABLE TableName: 將查詢結果保存到一個表中,如果指定 的表已經打開,并且SET SAFETY設置 為OFF,則VFP在不給出任何警告信息 的情況下改寫該表。執(zhí)行完SELECT語 句后,該表仍然保持打開活動狀態(tài)。,CURSOR CursorName:將查詢結 果保存到臨時表中。如果指定了一 個已打開表的名稱,則VFP產生錯 誤信息。執(zhí)行完SELECT語句后, 臨時表仍然保持打開,但只讀。一 旦關閉臨時表,則自動刪除它。,ARRAY ArrayName: 將查詢結果保存
6、到數組中。如果查詢 結果中不包含任何記錄,則不創(chuàng)建這 個數組。,5.2 數據查詢,TO FILE FileName ADDITIVE | TO PRINTER PROMPT | TO SCREEN:如果命令中包含了TO子句,但沒有包括 INTO子句,則查詢結果定向輸出到名為FileName的ASCII 碼文件、打印機或主窗口。包含ADDITIVE子句使查詢結果 追加到所指定的文本文件的內容后面。,5.2.1 簡單查詢,簡單查詢基于單個表,由select-from構成無條件查詢, select-from-where構成條件查詢 無條件查詢:select-from構成 1.查詢表中部分字段 例5.
7、1查詢student表中學生的學號和姓名 select 學號,姓名 from student 例5.2 查詢department表中所有的系名 Select 系名 from department,5.2.1 簡單查詢,2.使用distinct短語 例5.3 列出學生表中的班級名稱 (無重復行) select distinct 班級 from student 3.查詢表中全部字段 例5.4 查詢學生表中全部字段 select * from student 例5.5 查詢course表中的所有元組 Select * from course,Distinct:去掉查詢結果中的重復值,“*”是通配符,
8、表示所有字段,5.2.1 簡單查詢,條件查詢:select-from-where結構 4.簡單的條件查詢 例5.6 查詢1992年9月1日以后出生的學生名單 Select 姓名 from student where 出生日期ctod(“09/01/92”) 例5.7 列出選修課的課程名稱和課程號 Select 課程名,課程號 from course where 課程性質=“選修” 例5.8 查詢課程號是0600101,成績大于80分的學生學號及成績, 且將成績由高到低列出 Select 學號,成績 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 簡單連接查詢,連接是關系的基本操作之一,連接查詢是一種基于多個關系 (表)的查詢。 對于連接查詢,檢索項來自不同的關系,在F
10、ROM短語后多 個數據表的名稱之間用逗號隔開,在WHERE短語中必須指 定數據表之間進行的連接條件。,5.2.2 簡單連接查詢,1.等值連接 對于等值連接,連接條件通常是兩個數據表的公共字段的值相等。 例5.11找出工資多于2200元的教師編號和他們所在的系名。 select 教師編號,系名 from teacher,department; where (工資2200) and (teacher.系號=department.系號) 例5.12找出成績大于90分的學生的學號、姓名及成績。 select student.學號,姓名,成績 from student,grade where 成 績90
11、 and student.學號=grade.學號 或者 select s.學號,姓名,成績 from student s,grade g where 成 績90 and s.學號=g.學號,在連接查詢中引用兩個表的公共字段時,須在公共字段名前添加表名或表別名作為前綴,否則系統(tǒng)會提示出錯。對于只在一個數據表中出現的字段,則無須指定前綴。,在select查詢的from子句中,可以對數據表指定別名,格式為. ,指定別名后,在引用該數據表的字段時,應以別名作為數據表的前綴。,5.2.2 簡單連接查詢,1.等值連接 例5.13 查詢上官小梅所學課程的課程名及其對應的成績 select 姓名,課程名,成績
12、 from student s,course c,grade g where 姓名=上官小梅 and s.學號=g.學號 and g.課程號=c. 課程號,對于3個表的連接查詢,使用where子句指定查詢條件時,其形式為:from , where and ,5.2.2 簡單連接查詢,2.自連接查詢:同一關系與自身進行連接 例5.14 找出至少選修0200101號課和0600201號課學生的學 號 select x.學號 from grade x, grade y where x.學號=y.學號 and x.課程號=0200101 and y.課程號=0600201,5.2.3 嵌套查詢,在一個
13、select命令的where子句中,如果還出現了另一個select命令,則這種查詢稱為嵌套查詢。 Vfp只支持單層嵌套查詢。 嵌套查詢所要求的結果出自一個關系,但相關的條件卻涉及多個關系:一般外層查詢的條件依賴內層查詢的結果,而內層查詢與外層查詢無關。,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 查詢還沒有被學生選修課程的課程號和課程名 select 課程號,課程名 from course where 課程號 not in (select 課程號 from grade) 例5.18 查詢選修“管理學”的所有學生的學號及成績 Select 學號,成績 from grade where 課程號= (select distinct 課程號 from course where 課程名
15、=管理學),5.2.3 嵌套查詢,例5.19 查詢同時選修了課程號為0200101和0600201兩門課 程的學生姓名 select 姓名 from student where 學號 in (select g1.學號 from grade g1,grade g2 where g1.學號=g2.學號 and g1. 課程號=0200101 and g2.課程號=0600201),5.2.4 特殊運算符,特殊運算符:betweenand, in, like, not,!= 1.確定范圍的查詢:betweenand 例5.20 查詢成績在80分到90分之間的學生得分情況 select * from
16、grade where 成績 between 80 and 90 或 select * from grade where 成績=80 and 成績=90 例5.21查詢工資不在2200元到2500元范圍內的教師信息。 select * from teacher where 工資 not between 2200 and 2500,注意in和between的區(qū)別,5.2.4 特殊運算符,2. In 例5.22 列出課程號是0200101和課程號是0600201的全體學 生的學號、課程號和成績. select 學號,課程號,成績 from grade where 課程號 in (0200101,0
17、600201) 或 select 學號,課程號,成績 from grade where 課程號= 0200101 or 課程號=0600201,In運算符后面接一個集合,集合中的元素可以是數值、字符、日期和邏輯表達式等。,5.2.4 特殊運算符,3. !=和NOT 例5.23 查詢不在市場營銷11-1班學生的信息。 select * from student where 班級 !=市場營銷11-1 或 select * from student where not 班級 =市場營銷11-1“ 例5.24 查詢成績不在80分到90分之間的學生得分情況 select * from grade wh
18、ere 成績 not between 80 and 90,5.2.4 特殊運算符,4.模糊查詢like 例5.25 在student表中,查詢2011級學生的基本情況 select * from student where 學號 like2011% 例5.26 在student表中,查詢所有姓“王”的學生名單 select 姓名 from student where 姓名 like 王%,注意like的使用及%與_的區(qū)別,5.2.5 空值查詢,例5.27 查詢teacher表中出生日期還沒有確定的教師信息。 select * from teacher where 出生日期 is null 例5
19、.28 查詢teacher表中已經確定了出生日期的教師信息。 select * from teacher where 出生日期 is not null,空值怎么查?,Is null,空值查詢時要用is null,而不是“=null”,因為空值不是一個確定的值,所以不能用“=”這樣的運算符進行比較,5.2.6 簡單的計算查詢(庫函數查詢),用于計算檢索的庫函數有: count( )、 sum( )、avg( )、 max( )、min( ) 例5.29 統(tǒng)計student表中班級的個數 select count(distinct 班級) as 班級個數 from student 例5.30 統(tǒng)計
20、student表中男生人數 select count(*) from student where 性別=“男 例5.31查詢1992年1月1日后出生的學生人數 select count(*) from student where 出生日期1992-01-01,As的作用是在查詢結果中將指定列命名為一個新的名稱,Count(*)是count()函數的一種特殊形式,用來統(tǒng)計查詢結果的記錄個數,5.2.6 簡單的計算查詢(庫函數查詢),例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 課程性質=選修),5.2.7 分組與計算查詢,GRONP By短語: 將查詢結果按某一列(或多個列)的值進行分組; HAVING子句: HAVING子句,只與GROUP By配合使用,用于說明分組條件;,5.2.7 分組與計算查詢,例5.34 查詢男女生人數 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(*)為每一組的記錄個數,5.2.7 分組與計算查詢,例5.37 列出各門課的平均成績、最高成績、最低成績和選課 人數 select 課程號, AVG(成績) AS 平均成績, MAX(成績) AS 最 高分, MIN(成績)
23、 AS 最低分, COUNT(學號) AS 選課人數 from grade group by 課程號 例5.38 列出最少選修二門課程的學生姓名 select 姓名 from student where 學號 in(select 學號 from grade group by 學號 having count(*)=2),5.2.7 分組與計算查詢,例5.39 求出總分大于180的學生的學號,姓名及總成績 select s.學號,姓名,sum(成績) as 總成績 from student s, grade g where s.學號=g.學號 group by g.學號 having sum(成績
24、)180,5.2.8 排序,ORDER By ASC|DESC:指定將查詢結果按哪個 字段排序,ASC為升序, DESC為降序; 例5.40 對學生表按姓名排序 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為數字表達式,當不使用PERCENT時, nExpr為1至32767間的整數,說明顯示前幾個記錄;當使用 PERCENT時, nExpr是0.01至99.99間的實數,說明顯示結 果中前百分之幾的記錄。,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位學生的得分情況。 select * top 5 from grade order by 成績 desc 例5.46 在grade表中查詢成績最低的30%學生的得分情況 select * top 30 percent from grade order by 成績,top短語必須和order by短語配合起來使用才有效,它不能單獨使用,5.2.9 超連接查詢,用where指定的連接條件一般都是等值連接,即只有滿足連接條件的記錄才會出現在查詢結果中。 在SQL標準中還支持表的超連接,使用下面的命令: Select From Table1 Inner | Left
27、| Right | Full JoinTable2 On Where 其中,inner代表內連接,即普通連接;Left、Right、Full 分別代表左連接、右連接和全連接,Left、Right、Full三種 連接方式也稱為外連接。,5.2.9 超連接查詢,INNER JOIN(JOIN),普通連接:只有滿足連接條件的記錄才出現在查詢結果中。 LIFT JOIN,左連接:在進行連接運算時,首先將滿足連接條件的所有元組放在結果關系中,同時將第一個表(或稱Join左邊的表)中不滿足連接條件的元組也放入結果關系中,這些元組對應第二個表(或稱Join右邊的表)的屬性值為空值。,5.2.9 超連接查詢,
28、RIGHT JOIN,右連接:在進行連接運算時,首先將滿足連接條件的所有元組放在結果關系中,同時將第二個表(或稱Join右邊的表)中不滿足連接條件的元組也放入結果關系中,這些元組對應第一個表(或稱Join左邊的表)的屬性值為空值。 FULL JOIN,全連接:在進行連接運算時,首先將滿足連接條件的所有元組放在結果關系中,同時將兩個表中不滿足連接條件的元組也放入結果關系中,這些元組對應另一個表的屬性值為空值。,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 右連接 假設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為同義詞,在進行比較運算時只要子查詢中有一行能使結果為真,則結果就為真;而ALL則要求子查詢中的所有行都使結果為真時,結果才為真。 格式2:NOTEXISTS(子查詢) 謂詞:EXISTS,EXISTS或NOT EXISTS是用來檢查在子查詢中是否有結果返回(即存在元組或不存在元組),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 檢索那些系中至少已經有一個教師的系的信息。 select * from department where exists (select * from teacher Where 系號=department.系號) 等價于 select * from department where 系號 in (select 系號
33、from teacher),5.2.10 使用量詞和謂詞的查詢,例5.53 查詢還沒有被學生選修課程的課程號和課程名 Select 課程號,課程名 from course where not exist (select * from grade where course.課程號=grade.課程號),注意:NOTEXISTS只是 判斷子查詢中是否有或沒有結果返回,它本身并沒有任何運算或比較。,5.2.10 使用量詞和謂詞的查詢,例5.54 求必修課程號是0200101的學生中成績比必修課號 是0600201課的最低成績要高的學生的學號與成績 select 學號,成績 from grade wh
34、ere 課程號=0200101 and 成績any (select 成績 from grade where 課程號 =0600201) 等價于 select 學號,成績 from grade where 課程號=0200101 and 成績 (select min(成績) from grade where 課程號 =0600201),5.2.10 使用量詞和謂詞的查詢,例5.55 求必修課程號是0200101的學生中成績比必修課號 是0600201課的最高成績要高的學生的學號與成績 select 學號,成績 from grade where 課程號=0200101 and 成績all(sele
35、ct 成績 from grade where 課程號 =0600201) 等價于 select 學號,成績 from grade where 課程號=0200101 and 成績 (select max(成績) from grade where 課程號 =0600201),5.2.11 集合的并運算,SQL支持集合的并(UNION)運算,即可以將兩個SELECT 語 句的查詢結果通過并運算合并成一個查詢結果。為了進行并 運算,要求兩個查詢結果具有相同的字段個數,并且對應字 段的值要出自同一個值域。 格式:UNION ALL 說明將兩個查詢結果合并在一起輸出;若無ALL,重復記錄將被自動取消,若
36、有ALL表示結果全部合并;,5.2.11 集合的并運算,例5.56 以下結果為系名為自動化系和經濟系的教師信息 select * from teacher where 系號=(select 系號 from department where 系名=自動化系) union; select * from teacher where 系號=(select 系號 from department where 系名=經濟系),5.2.11 集合的并運算,例5.57 以下結果為“選修課”和“必修課”的課程相關信息。 select 課程名,課程號 from course where 課程性質=選修“ Union
37、 select 課程名,課程號 from course where 課程性質=“必修“,5.2.12 查詢結果的輸出,查詢結果的輸出去向 Into Array Into Cursor Into Dbf|Table To File To Printer prompt,Into cursor產生的臨時表文件是只讀的.dbf文件,當查詢結束后該臨時文件是當前文件,可像一般的.dbf文件使用,當該臨時文件被關閉后,文件將自動被刪除。,執(zhí)行完into table 后,系統(tǒng)將在默認路徑下建立數據表文件,同時打開該文件,并將其設為當前數據表。與臨時表文件不同,該表文件存放在磁盤上,關閉后不會被自動刪除。,T
38、o fileadditive可將查詢結果保存到一個文本文件,文本文件的默認擴展名是.txt,若使用additive可將查詢結果追加到原文本文件的尾部,否則將覆蓋原有文件。,5.2.12 查詢結果的輸出,1.將查詢結果存放在數組 例5.58 將查詢到的選修課的課程號和課程名存放在數組xx中。 select 課程號,課程名 from course where 課程性質=“選修” into array xx ?xx(1,1),xx(1,2) ?xx(2,1),xx(2,2),5.2.12 查詢結果的輸出,2.將查詢結果存放到臨時表文件 例5.59 將查詢到的選修課的課程號和課程名存放在臨時.dbf表
39、 文件xx中。 select 課程號,課程名 from course where 課程性質=選修“ into cursor xx 3.將查詢結果存放到永久表文件 例5.60 將查詢到選修課的課程號和課程名存放在永久表文件 yy中 select 課程號,課程名 from course where 課程性質=“選修“ into table yy,5.2.12 查詢結果的輸出,4.將查詢結果存放到文本文件 若命令中包含了to子句,但沒有包含into子句,則to子句起 作用。 例5.61 將查詢到的選修課的課程號和課程名存放在文本文件 xx中。 select 課程號,課程名 from course w
40、here 課程性質=選修 to file xx 5.將查詢結果直接輸出到打印機 使用子句to printerprompt可以直接將查詢結果輸出到打印 機,若使用了prompt選項,則在打印之前還會打開打印機設 置對話框。,5.3 數據操作,SQL的數據操作功能是指對數據庫中的數據進行操 作的功能,主要包括數據的插入、數據的更新和數 據的刪除,對應的SQL命令動詞分別是INSERT、 UPDATE和DELETE。,5.3.1.插入數據,格式1:INSERT INTO (, ) VALUES (, ) 功能:向指定的數據表尾部插入一條記錄,并用指定的表達式對字段賦值。 說明: 當對新記錄的所有字段
41、都賦值時,可省略字段名。若只對某些字段賦值,即插入的不是完整的記錄時,則需要指定要賦值的字段名稱。 VALUES子句中各個表達式的值為賦給每個字段的值,表達式和對應字段的數據類型、取值范圍必須一致。,5.3.1.插入數據,例5.62 在course表中插入記錄。 Insert into course values(“0600010”,”,48,3,”選修”) c(8), 性別 c(2), 年齡 n(3) null, 入學年月 d),5.4.1 表的定義,例5.68 建立教學管理數據庫,再用SQL命令建立學生表、課 程表、成績表。 create database 教學管理 create tabl
42、e 學生(學號 c(8) primary key, 姓名 c(8) not null, 性別 c(2), 年齡 n(3) check 年齡16 and 年齡25 error “年 齡范圍在16-25,請輸入正確的年齡”, 是否團員 l, 入學年月 d default ctod(“09/06/2002”), 備注 m) create table 課程(課號 c(4) primary key, 課程名 c(12) not null, 學分 n(2),5.4.1 表的定義,create table 成績(學號 c(8) references 學生, 課號 c(4), 成 績 n(5,2), prim
43、ary key 學號+課號 tag 學號課號, foreign key 課號 tag 課號 references 課程2 tag 課號),5.4.1 表的定義,例5.69 創(chuàng)建訂貨管理數據庫,并用SQL命令建立倉庫表、職 工表、供應商表及訂購單表。 create database 訂貨管理 create table 倉庫(倉庫號 C(5) primary key,城市 c(10),面積 i check (面積0) error 面積應該大于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 供應商(供應商號 c(5) primary key,供應商名 c(20),地址 c(20),5.4.1 表的定義,create table 訂購單(職工號 c(5),供應商號 c(5),訂購單號 c(5) primary key,訂購日期 d,foreign key 職工號 tag 職工號 references 職工,foreign key 供應商號 tag 供應商號 referenc
45、es 供應商),5.4.2 表結構的修改,Alter Table命令用于修改表結構,可以增添字段、刪除字段、改變字段的定義、增添或刪除約束等。,5.4.2 表結構的修改,Alter Table命令有3種格式。 格式1: Alter Table Add | Alter Column (字段寬度, ) Null | Not Null CheckError Default Primary Key | Unique References Tag ,5.4.2 表結構的修改,功能:這種格式用來添加字段或修改字段的參數 ??梢孕薷?字段的類型、寬度、有效性規(guī)則等,但不能修改字段名,不 能刪除字段及已定義的
46、字段有效性規(guī)則。不管是否修改字段 類型,必須將字段名和類型一同在命令中列出。,5.4.2 表結構的修改,例5.70 為課程表增加一個新的字段“學時”(數值型,寬度2)。 Alter table 課程 add 學時 n(2) check 學時0 error “學時應該 大于0 例5.71將課程表的“課程名”字段的寬度改為14 Alter table 課程 alter 課程名c(14) 例5.72 為“訂購單”表增加一個新字段“總金額”(貨幣類型) alter table 訂購單 add 總金額 y check 總金額0 error “總金 額應該大于0“ 例5.73 將訂購單的“訂購單號”字段的
47、寬度改為6 alter table 訂購單 alter 訂購單號 c(6),5.4.2 表結構的修改,格式2: ALTER TABLE ALTER COLUMN NULL | NOT NULL SET CHECKERROR SET DEFAULT DROP DEFAULT DROP CHECK 功能:這種格式主要用于定義、修改和刪除字段的有效性規(guī) 則和默認值定義。,5.4.2 表結構的修改,例5.74 修改“訂購單”表字段“總金額”的有效性規(guī)則 alter table 訂購單 alter 總金額 set check 總金額100 error 總金額應該大于100“ 例5.75 刪除“訂購單”表
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園師幼互動的幾種形式
- 加盟按摩店合同范本
- 江蘇達芯半導體有限公司介紹企業(yè)發(fā)展分析報告模板
- oa辦公合同范本
- 共同投資租賃公司合同范例
- 2025年度城市綜合體運營維護協議合同
- 依法催收欠款合同范本
- 買賣與服務合同范本
- 公司合伙人分配合同范本
- 全新服務器購買合同范例
- mil-std-1916抽樣標準(中文版)
- 城鄉(xiāng)環(huán)衛(wèi)一體化內部管理制度
- 廣匯煤炭清潔煉化有限責任公司1000萬噸年煤炭分級提質綜合利用項目變更環(huán)境影響報告書
- 小學數學六年級解方程練習300題及答案
- 大數據在化工行業(yè)中的應用與創(chuàng)新
- 光伏十林業(yè)可行性報告
- 小學綜合實踐《我做環(huán)保宣傳員 保護環(huán)境人人有責》
- 鋼煤斗內襯不銹鋼板施工工法
- 出國勞務派遣合同(專業(yè)版)電子版正規(guī)范本(通用版)
- 公路工程安全風險辨識與防控手冊
- 供應商評估報告范本
評論
0/150
提交評論