




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第5章 關(guān)系數(shù)據(jù)庫規(guī)范言語 5.1 SQL概述 5.2 SQL的數(shù)據(jù)查詢功能 5.3 SQL的定義功能 5.4 SQL的數(shù)據(jù)操作功能5.1 SQL概述 SQL是Structured Query Language的縮寫,意思為“構(gòu)造化查詢言語 。 SQL特點: 言語簡約、規(guī)范 非過程化 高度靈敏化 平臺無關(guān)性 SQL具有以下功能: 查詢數(shù)據(jù)庫中的數(shù)據(jù) 更新數(shù)據(jù)庫中的數(shù)據(jù) 設(shè)置數(shù)據(jù)庫用戶訪問的權(quán)限 修正數(shù)據(jù)庫表的構(gòu)造 添加、刪除數(shù)據(jù)庫中的表、視圖5.2 SQL的數(shù)據(jù)查詢功能的數(shù)據(jù)查詢功能 SELECT語句是數(shù)據(jù)查詢言語組中獨一的語句,它包括單表查詢、多表銜接查詢、嵌套查詢和集合查詢等。 5.2.1
2、 SELECT語法格式 SELECT ALL|DISTINCT TOP|PERCENT , AS FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC INTO ARRAY |INTO CURSOR |INTO DBF|TABLE |TO FILE ADDITIVE|TO PRINTERPROMPT 【闡明】整個語句的含義是,根據(jù)WHERE子句的條件表達(dá)式,從FROM子句指定的根本表或視圖中查找出滿足條件的記錄,再按SELECT子句中的目的表達(dá)式選出記錄中的字段值構(gòu)成結(jié)果表。GROUP限定結(jié)果分組,ORDER限定結(jié)果的排序。 SELECT子句對應(yīng)關(guān)系代數(shù)
3、中的投影運算,其后面列出的屬性名集合就是需求進(jìn)展查詢的數(shù)據(jù)集合; FROM闡明要查詢的數(shù)據(jù)來自哪個或哪些表,可以對單個表或多個表進(jìn)展查詢; WHERE闡明查詢條件,即選擇元組的條件; GROUP BY短語用于對查詢結(jié)果進(jìn)展分組,可以利用它進(jìn)展分組匯總; HAVING短語必需跟隨GROUP BY運用,它用來限定分組必需滿足的條件; ORDER BY短語用來對查詢的結(jié)果進(jìn)展排序。5.2.2 簡單查詢1. SELECT語句 SELECT語句從數(shù)據(jù)庫中檢索數(shù)據(jù)并將查詢結(jié)果以表格的方式前往,其結(jié)果必是一個關(guān)系。 在簡單查詢中,可以從一個數(shù)據(jù)表中查詢部分或者全部的字段?!纠?.1】查詢“學(xué)生表中一切學(xué)生的
4、姓名。 SELECT 姓名 FROM 學(xué)生【例5.2】查詢“課程表中一切的信息。 SELECT * FROM 課程 查詢結(jié)果也可以是經(jīng)過某一字段或者幾個字段計算得到的虛擬字段。 【例5.3】查詢“入學(xué)成果表中,學(xué)生的學(xué)號、姓名,以及語文、外語、數(shù)學(xué)的平均成果。 SELECT 學(xué)號,姓名,(語文+外語+數(shù)學(xué))/3 FROM 入學(xué)成果 運用“AS重新為新字段命名的SELECT語句如下。 SELECT 學(xué)號,姓名,(語文+外語+數(shù)學(xué))/3 AS 平均分 FROM 入學(xué)成果 在查詢中,能夠產(chǎn)生完全一樣的兩個元組,用“DISTINCT關(guān)鍵字可以去掉反復(fù)記錄。 【例5.4】查詢“學(xué)生表中,一切的專業(yè)稱號。
5、 SELECT DISTINCT(專業(yè)) FROM 學(xué)生2.WHERE子句 帶上WHERE子句的查詢就是條件查詢。查詢的條件主要包括比較、范圍設(shè)定、匹配測試、NULL值測試以及組合條件。1比較條件比較是SQL中最經(jīng)常運用的查詢條件,運算符有=、=、?!纠?.5】查詢“學(xué)生表中,計算機(jī)專業(yè)學(xué)生的姓名、學(xué)號以及入學(xué)成果。SELECT 姓名,學(xué)號,入學(xué)成果 FROM 學(xué)生 WHERE 專業(yè)=計算機(jī) 2范圍設(shè)定 測試表達(dá)式的值取自某個范圍時,運用NOTBETWEEN.AND.來限定。 【例5.6】查詢外語成果在110分到130分之間的學(xué)生的姓名。 SELECT 姓名 FROM 入學(xué)成果 WHERE 外
6、語 BETWEEN 110 AND 130 3匹配測試 當(dāng)查詢需求進(jìn)展字符串匹配時,運用“LIKE。在匹配測試表達(dá)式中運用的通配符百分號%代表恣意個恣意字符,下劃線_代表一個恣意字符。 【例5.7】查詢一切姓“王的同窗的信息。 SELECT * FROM 學(xué)生 WHERE 姓名 LIKE “王% 4NULL值測試 NULL表示空,意思是還沒有確定,與數(shù)值“0不一樣,0表示一個確切的數(shù)。 在判別NULL值時要運用“IS語句 【例5.8】查詢沒有安排上課教師的課程。 SELECT * FROM 課程 WHERE 教師號 IS NULL 5組合條件 搜索條件中還可運用AND、OR、NOT將簡單的查詢
7、條件進(jìn)展組合,進(jìn)展復(fù)雜的搜索。 【例5.9】查詢計算機(jī)專業(yè)的女生信息。 SELECT * FROM 學(xué)生 WHERE 性別=女 AND 專業(yè)=計算機(jī)5.2.3 嵌套查詢 1.1.帶有比較運算的子查詢和運用量詞的查詢帶有比較運算的子查詢和運用量詞的查詢 當(dāng)子查詢的前往結(jié)果是個單列時,可以運用當(dāng)子查詢的前往結(jié)果是個單列時,可以運用 、= =、!=!=等或運用帶有量詞等或運用帶有量詞ANYANY、SOMESOME、ALLALL的比較運算的比較運算符進(jìn)展查詢。符進(jìn)展查詢。 其中其中ANYANY和和SOMESOME是同義詞,在進(jìn)展比較運算時只需子是同義詞,在進(jìn)展比較運算時只需子查詢中有一行能使結(jié)果為真,
8、那么結(jié)果為真。而查詢中有一行能使結(jié)果為真,那么結(jié)果為真。而ALLALL那么要求子查詢中的一切行都使結(jié)果為真時,結(jié)果那么要求子查詢中的一切行都使結(jié)果為真時,結(jié)果才為真。才為真。 【例【例5.105.10】查詢和劉云飛同一個專業(yè)的學(xué)生的姓名、】查詢和劉云飛同一個專業(yè)的學(xué)生的姓名、性別以及出生日期。性別以及出生日期。 SELECT SELECT 姓名姓名, ,性別性別, ,出生日期出生日期 FROM FROM 學(xué)生學(xué)生 WHERE WHERE 專專業(yè)業(yè)=(SELECT =(SELECT 專業(yè)專業(yè) FROM FROM 學(xué)生學(xué)生 WHERE WHERE 姓名姓名= =劉云飛劉云飛) ) 【例5.11】查
9、詢課程成果高于學(xué)號為“110102的一切科成果的學(xué)生學(xué)號這里并不是每一門課程對應(yīng)比較。 SELECT 學(xué)號 FROM 選課 WHERE 成果ALL (SELECT 成果 FROM 選課 WHERE 學(xué)號=110102) 【例5.12】查詢課程成果至少高于學(xué)號為“110102的一門課成果的學(xué)生學(xué)號以及成果。 SELECT 學(xué)號,成果 FROM 選課 WHERE 成果SOME (SELECT 成果 FROM 選課; WHERE 學(xué)號=110102) 2.2.運用謂詞的查詢運用謂詞的查詢 子查詢中運用最多的是謂詞子查詢中運用最多的是謂詞ININ,EXISTSEXISTS和和NOT INNOT IN,
10、NOT EXISTSNOT EXISTS,含義為當(dāng)查詢的,含義為當(dāng)查詢的指定字段值包含或不包含在子查詢結(jié)指定字段值包含或不包含在子查詢結(jié)果字段值表中時條件為真。果字段值表中時條件為真。 ININ用來測試集合中的成員,該集合是由用來測試集合中的成員,該集合是由SELECTSELECT子句產(chǎn)生的一組值的集合。子句產(chǎn)生的一組值的集合。 EXISTSEXISTS或或NOT EXISTSNOT EXISTS是用來檢查在子查詢是用來檢查在子查詢中能否有結(jié)果前往。中能否有結(jié)果前往。 【例5.13】查詢計算機(jī)專業(yè)學(xué)生的學(xué)號、所選的課程號以及該門課的成果。 SELECT 學(xué)號,課程號,成果 FROM 選課 WH
11、ERE 學(xué)號 IN (SELECT 學(xué)號 FROM 學(xué)生; WHERE 專業(yè)=計算機(jī)) EXISTS可測試一個子查詢的結(jié)果能否有元組,當(dāng)作為子查詢結(jié)果的集合為非空時那么主查詢前往結(jié)果,否那么不前往。NOT EXISTS那么與之相反。 【例5.14】查詢沒有選修任何一門課的學(xué)生信息。 SELECT * FROM 學(xué)生 WHERE NOT EXISTS (SELECT * FROM 選課; WHERE 學(xué)號=學(xué)生.學(xué)號)5.2.4 聯(lián)接查詢 有一些查詢同時涉及到兩個或兩個以上的表時,這種查詢稱之為聯(lián)接查詢也稱為多表查詢。 1.簡單聯(lián)接查詢 【例5.15】查詢一切學(xué)生的姓名、學(xué)號以及入學(xué)時該學(xué)生的語
12、文、數(shù)學(xué)、外語、綜合的成果。 SELECT 學(xué)生.姓名,學(xué)生.學(xué)號,語文,數(shù)學(xué),外語,綜合 FROM 學(xué)生,入學(xué)成果; WHERE 學(xué)生.學(xué)號=入學(xué)成果.學(xué)號 SQL允許在FROM子句中為關(guān)系名定義別名,格式為: . 例5.15的查詢語句可以寫做: SELECT S.姓名,S.學(xué)號,語文,數(shù)學(xué),外語,綜合 FROM 學(xué)生 S,入學(xué)成果 R; WHERE S.學(xué)號=R.學(xué)號 聯(lián)接條件聯(lián)接條件 2.2.超聯(lián)接查詢超聯(lián)接查詢 假設(shè)想要將不符合聯(lián)接條件的記錄也查詢出來,假設(shè)想要將不符合聯(lián)接條件的記錄也查詢出來,就要利用超聯(lián)接查詢,超聯(lián)接分為內(nèi)聯(lián)接也稱為就要利用超聯(lián)接查詢,超聯(lián)接分為內(nèi)聯(lián)接也稱為等值聯(lián)接
13、、左聯(lián)接、右聯(lián)接和全聯(lián)接。其語法構(gòu)等值聯(lián)接、左聯(lián)接、右聯(lián)接和全聯(lián)接。其語法構(gòu)造如下:造如下: 【格式】【格式】 SELECTFROM SELECTFROM INNER|LEFT|RIGHT|FULL JOIN INNER|LEFT|RIGHT|FULL JOIN ON ON WHERE WHERE【闡明】INNER JOIN 或JOIN為內(nèi)聯(lián)接,也稱為等值聯(lián)接,按照聯(lián)接條件進(jìn)展聯(lián)接,不滿足條件的記錄不會出如今查詢結(jié)果中,是常用的一種聯(lián)接方式。LEFT JOIN 為左聯(lián)接,除滿足銜接條件的記錄出如今查詢結(jié)果中外,第一個表不滿足條件的記錄也會出如今查詢結(jié)果中。RIGHT JOIN 為右聯(lián)接,除滿足
14、銜接條件的記錄出如今查詢結(jié)果中外,第二個表不滿足條件的記錄也會出如今查詢結(jié)果中。FULL JOIN 為全聯(lián)接,除滿足銜接條件的記錄出如今查詢結(jié)果中外,兩個表中不滿足條件的記錄也會出如今查詢結(jié)果中。ON 指明聯(lián)接條件,而不能在WHERE后面給出聯(lián)接條件。 【例5.16】內(nèi)聯(lián)接查詢。 SELECT 學(xué)生.學(xué)號, 學(xué)生.姓名,入學(xué)成果,數(shù)學(xué) FROM 學(xué)生 JOIN 入學(xué)成果 ; ON 學(xué)生.學(xué)號=入學(xué)成果.學(xué)號 留意:多個表用“JOIN語句聯(lián)接的順序要與聯(lián)接條件“ON的順序恰好相反。 等價于簡單聯(lián)接查詢方式。 SELECT 學(xué)生.學(xué)號, 學(xué)生.姓名,入學(xué)成果,數(shù)學(xué) FROM 學(xué)生,入學(xué)成果; WH
15、ERE 學(xué)生.學(xué)號=入學(xué)成果.學(xué)號 【例5.17】左聯(lián)接查詢。 SELECT 學(xué)生.學(xué)號,姓名,課程名,成果 FROM (學(xué)生 LEFT JOIN 選課; ON 學(xué)生.學(xué)號=選課.學(xué)號)LEFT JOIN 課程 ON 選課.課程號=課程.課程號 由于是左聯(lián)接查詢,其中學(xué)生表中有四個學(xué)生記錄沒有選課,不符合聯(lián)接條件,同樣也被查詢出來,該學(xué)生沒有選課,因此相應(yīng)的課程名和成果為空。 【例5.18】右聯(lián)接查詢。 SELECT 學(xué)生.學(xué)號,姓名,課程名,成果 FROM (學(xué)生 RIGHT JOIN 選課; ON 學(xué)生.學(xué)號=選課.學(xué)號)RIGHT JOIN 課程 ON 選課.課程號=課程.課程號 由于是
16、右聯(lián)接查詢,其中課程表中有的課程記錄沒有被學(xué)生所選,不符合聯(lián)接條件,同樣也被查詢出來,該課程沒有被學(xué)生所選,因此相應(yīng)的學(xué)號和姓名為空。 【例5.19】全聯(lián)接查詢。 SELECT 學(xué)生.學(xué)號,姓名,課程名,成果 FROM (學(xué)生 FULL JOIN 選課; ON 學(xué)生.學(xué)號=選課.學(xué)號) FULL JOIN 課程 ON 選課.課程號=課程.課程號 全聯(lián)接查詢的結(jié)果是左聯(lián)接查詢和右聯(lián)接查詢結(jié)果的并集。5.2.5 排序排序ORDER BY子句子句 運用ORDER BY子句對按照一個或多個字段對查詢結(jié)果進(jìn)展升序ASC或降序DESC陳列,默以為升序陳列。 ORDER BY語句只能對最終的查詢結(jié)果進(jìn)展排序
17、,在子查詢中不能運用。 ORDER BY語句后不能接任何運算表達(dá)式,不能按某個表達(dá)式的運算結(jié)果進(jìn)展排序。 對于空值排序,升序時空值記錄將最后顯示,降序時將最先顯示。 【例5.20】查詢計算機(jī)專業(yè)的學(xué)生信息,結(jié)果按入學(xué)成果降序陳列。 SELECT * FROM 學(xué)生 WHERE 專業(yè)=計算機(jī) ORDER BY 入學(xué)成果 DESC 運用TOP PERCENT語句可以只顯示排序之后的前幾條記錄或前百分之多少條記錄。 【例5.21】查詢?nèi)雽W(xué)成果前五名的學(xué)生信息。 SELECT * TOP 5 FROM 學(xué)生 ORDER BY 入學(xué)成果 DESC 【例5.22】查詢1001這門課成果在前50%的學(xué)生的學(xué)
18、號、成果。查詢結(jié)果如圖5.21所示。 SELECT * TOP 50 PERCENT FROM 選課 WHERE 課程號=1001 ORDER BY 成果 DESC 留意: TOP語句要與ORDER BY語句同時運用才有效。5.2.6 計算查詢與分組查詢計算查詢與分組查詢GROUP BY 子句子句 1.1.計算查詢計算查詢 有時用戶的懇求需求對查詢的內(nèi)容進(jìn)展計算才干得到結(jié)果。有時用戶的懇求需求對查詢的內(nèi)容進(jìn)展計算才干得到結(jié)果。常用的計算函數(shù)如下:常用的計算函數(shù)如下: COUNT(COUNT() )統(tǒng)計元組個數(shù)統(tǒng)計元組個數(shù) COUNT(DISTINCT|ALL COUNT(DISTINCT|AL
19、L ) ) 統(tǒng)計一列中值的個數(shù)。統(tǒng)計一列中值的個數(shù)。 SUM(DISTINCT|ALL SUM(DISTINCT|ALL ) 計算某一列值的總和計算某一列值的總和( (此列此列必需是數(shù)值型必需是數(shù)值型) )。 AVG(DISTINCT|ALL AVG(DISTINCT|ALL ) 計算某一列值的平均值計算某一列值的平均值( (此此列必需是數(shù)值型列必需是數(shù)值型) )。 MAX(DISTINCT|ALL MAX(DISTINCT|ALL ) 計算某一列值的最大值。計算某一列值的最大值。 MIN(DISTINCT|ALL MIN(DISTINCT|ALL ) 計算某一列值的最小值。計算某一列值的最小
20、值。 留意:假設(shè)指定留意:假設(shè)指定DISTINCTDISTINCT短語,那么表示在計算時要取消指短語,那么表示在計算時要取消指定列中的反復(fù)值。定列中的反復(fù)值。 【例5.23】查詢選修了課程的學(xué)生的人數(shù)。 SELECT COUNT(DISTINCT 學(xué)號) FROM 選課 【例5.24】查詢“入學(xué)成果表中,學(xué)生外語的平均成果。 SELECT AVG(外語) AS 外語平均成果 FROM 入學(xué)成果 其中,運用“AS關(guān)鍵字對查詢結(jié)果的屬性重新命名。 2.2.分組查詢分組查詢 GROUP BYGROUP BY子句將查詢結(jié)果按某一列或多列子句將查詢結(jié)果按某一列或多列的值分組,值相等的為一組。同時還可以的
21、值分組,值相等的為一組。同時還可以用用HAVINGHAVING語句對分組的記錄加以限定再計語句對分組的記錄加以限定再計算。算。 HAVINGHAVING語句不能單獨運用只能跟在語句不能單獨運用只能跟在GROUP GROUP BYBY語句之后,在查詢過程中與語句之后,在查詢過程中與WHEREWHERE語句并語句并不矛盾,不矛盾,WHEREWHERE語句限定一切記錄,語句限定一切記錄,HAVINGHAVING語句只限定分組。語句只限定分組。 【例5.25】查詢各專業(yè)學(xué)生的入學(xué)成果平均值。 SELECT 專業(yè),AVG(入學(xué)成果) FROM 學(xué)生 GROUP BY 專業(yè) 在分組查詢時,有時要求分組需求
22、滿足某個條件時才可以檢索,這時可以用HAVING子句來限定分組。 【例5.26】查詢選修了兩門含兩門以上課程的學(xué)生的學(xué)號以及平均成果。 SELECT 學(xué)號,AVG(成果) AS 平均成果 FROM 選課 GROUP BY 學(xué)號; HAVING COUNT(*)=2 【闡明】HAVING子句和WHERE子句的區(qū)別: 1WHERE子句是用來指定表中各行所應(yīng)滿足的條件,用于基表或視圖,而HAVING子句是用來指定每一分組所滿足的條件,作用于組,只需滿足HAVING條件的那些組才干在結(jié)果中被顯示。 2HAVING子句總是跟在GROUP BY子句之后,不可以單獨運用。HAVING子句和WHERE子句不矛
23、盾,在查詢中是先用WHERE子句限定元組,然后進(jìn)展分組,最后再用HAVING子句限定分組。5.2.7 集合的并運算 運用UNION子句可以進(jìn)展集合的并運算,即可以將兩個SELECT語句的查詢結(jié)果合并成一個查詢結(jié)果。 【例5.27】查詢“教師表中教授和副教授的教師號、姓名、性別和職稱。查詢結(jié)果如圖5.26所示。 SELECT 教師號,姓名,性別,職稱 FROM 教師 WHERE 職稱=教授; UNION SELECT 教師號,姓名,性別,職稱 FROM 教師 ; WHERE 職稱=副教授5.2.8 查詢?nèi)ハ?1.在查詢窗口中顯示查詢結(jié)果 運用SELECT語句查詢默許情況下,是將結(jié)果顯示在查詢窗口
24、中。 2.利用暫時表文件存放查詢結(jié)果 運用INTO CURSOR語句可以將查詢結(jié)果存放在暫時表文件中,該表是一個只讀的表文件,可以像普通的表文件一樣在程序中運用,程序終了封鎖文件時該表文件將自動刪除。 【例5.28】將一切的課程信息放到暫時表tmp中。 SELECT * FROM 課程 INTO CURSOR tmp 3.利用永久表文件存放查詢結(jié)果 運用INTO DBFTABLE 語句可以將查詢結(jié)果存放在永久表文件中,該SELECT語句執(zhí)行完查詢之后,該表將以自在表保管并作為當(dāng)前文件自動翻開。 【例5.29】將一切女生的信息放入永久表girls中。 SELECT * FROM 學(xué)生 WHERE
25、 性別=女 INTO TABLE girls 4.利用文本文件存放查詢結(jié)果 運用TO FILEADDITIVE語句可以將查詢結(jié)果存放在文本文件中。 假設(shè)運用ADDITIVE語句,查詢結(jié)果將追加到該文本文件尾部,否那么將覆蓋原有文件。 【例5.30】將每位教師所教授的課程情況存入文本文件course中。 SELECT 教師.姓名,課程.課程名 FROM 教師,課程 WHERE 教師.教師號=課程.教師號; TO FILE course 5.利用數(shù)組存放查詢結(jié)果 運用INTO ARRAY語句將查詢結(jié)果存放在變量數(shù)組中,假設(shè)查詢結(jié)果是多列多條記錄,將其自動存在二維數(shù)組中,數(shù)組的行列與記錄的行列元素對
26、應(yīng)。 在涉及到計算查詢時,查詢結(jié)果普通是一個數(shù)值,如平均值、最值等,可以將其存放到一維數(shù)組的第一元素中,然后在程序中再進(jìn)展處置。 【例5.31】計算學(xué)生表中有多少位男學(xué)生將其存放在變量x中。 SELECT COUNT(*) FROM 學(xué)生 WHERE 性別=男 INTO ARRAY x 【例5.32】將學(xué)生的信息存放到二維數(shù)組s中。 SELECT * FROM 學(xué)生 INTO ARRAY s 二維數(shù)組s是一個8行8列的數(shù)組,每一行存放某個學(xué)生的一切信息字段。例如s(1,1)存放的是“110101,s(1,2)存放是“王芳,以此類推。5.3 SQL的定義功能 5.3.1 5.3.1 表的創(chuàng)建表的
27、創(chuàng)建 創(chuàng)建表命令:創(chuàng)建表命令: 【格式】【格式】 CREATE TABLE CREATE TABLE ( ( ( ( , ,)NULL|NOT NULL CHECK )NULL|NOT NULL CHECK 域完好性域完好性約束條件約束條件 ERROR ERROR 出錯信息出錯信息 DEFAULT DEFAULT 默許值默許值 PRIMARY KEY PRIMARY KEY, 2 【例5.33】建立“教室管理數(shù)據(jù)庫,在此數(shù)據(jù)庫中建立“教室數(shù)據(jù)庫表。 CREATE DATABASE 教室管理 CREATE TABLE 教室(教室編號 C(4) PRIMARY KEY,樓名 C(12),面積 I
28、CHECK(面積0) ERROR 面積應(yīng)為非負(fù)! DEFAULT 100) 【闡明】其中“教室編號是主關(guān)鍵字主索引,用PRIMARY KEY闡明,用CHECK為“面積字段值闡明了有效性規(guī)那么面積0,用ERROR為該有效性規(guī)那么闡明了出錯提示信息“面積應(yīng)為非負(fù)!,同時為面積設(shè)置了一個默許值為100。 建立“自習(xí)教室數(shù)據(jù)庫表,運用FOREIGN KEYTAGREFERENCES 短語,將兩個表進(jìn)展永久性聯(lián)接。 CREATE TABLE 自習(xí)教室 (教室編號 C(4),運用者 C(12),運用時間 C(10), FOREIGN KEY 教室編號 TAG 教室編號 REFERENCES 教室) 其中,
29、“FOREIGN KEY 教室編號是為“自習(xí)教室表建立普通索引,“TAG 教室編號REFERENCES 教室是經(jīng)過“教室編號字段與“教室表進(jìn)展永久性銜接。5.3.2 表的刪除 刪除表命令: 【格式】DROP TABLE 【闡明】該命令將表從數(shù)據(jù)庫中物理性的刪除,在執(zhí)行該命令時最好將數(shù)據(jù)庫翻開,再刪除其中的表,否那么表可以刪除,但是表在數(shù)據(jù)庫中的信息將不能刪除,以后翻開數(shù)據(jù)庫之后將會出現(xiàn)錯誤。5.3.3 表構(gòu)造的修正 修正表構(gòu)造的命令是ALTER TABLE,該命令有三種格式。 【格式1】ALTER TABLE ADD|ALTER COLUMN 數(shù)據(jù)類型 (寬度,小數(shù)位數(shù)) NULL|NOT N
30、ULL CHECK域完好性約束條件 ERROR 出錯信息DEFAULT 默許值 PRIMARY KEY|UNIQUE REFERENCES TAG 標(biāo)識名 【闡明】該格式可以添加ADD新的字段或修正ALTER已有的字段。從命令格式可以看出,該格式可以修正字段的類型、寬度、有效性規(guī)那么、錯誤信息、默許值,定義主關(guān)鍵字和聯(lián)絡(luò)等。但是不能修正字段名,不能刪除字段,也不能刪除曾經(jīng)定義的規(guī)那么等。 【例5.34】向“教室表中添加一個“樓層字段。 ALTER TABLE 教室 ADD樓層 N (3) I CHECK樓層0 ERROR “樓層應(yīng)為非負(fù); DEFAULT 100 【例5.35】將“教室表中的“
31、教室編號字段的寬度由4改為6。 ALTER TABLE教室ALTER教室編號 C(6) 【格式2】ALTER TABLE ALTERCOLUMN NULL|NOT NULL SET DEFAULT 默許值 SET CHECK 域完好性約束條件 ERROR 出錯信息 DROP DEFAULT DROP CHECK 闡明:該格式主要用于定義、修正和刪除有效性規(guī)那么和默許定義。 【例5.36】修正“教室表中的“面積字段的有效性規(guī)那么。 ALTER TABLE 教室 ALTER面積SET CHECK面積30 ERROR 面積應(yīng)大于30平方米 ALTER面積SET DEFAULT 40 【例5.37】刪
32、除“教室表中的“面積字段的域完好性約束條件。 ALTER TABLE 教室 ALTER 面積 DROP CHECK 【例5.38】刪除“教室表中的“面積字段的默許值。 ALTER TABLE 教室 ALTER 面積 DROP DEFAULT 【格式3】ALTER TABLE DROPCOLUMN SET CHECK 域完好性約束條件 ERROR 出錯信息 DROP CHECK ADD PRIMARY KEY 字段名 TAG 標(biāo)示名 DROP PRIMARY KEY RENAME COLUMN TO 闡明:該格式可以刪除字段DROPCOLUMN、修正字段名RENAME COLUMN等。 【例5.
33、39】修正教室表中“面積字段的稱號為“運用面積。 ALTER TABLE 教室 RENAME COLUMN 面積 TO運用面積 【例5.40】刪除教室表中“運用面積字段。 ALTER TABLE 教室 DROP COLUMN 運用面積5.3.4 視圖的定義 視圖是一個虛擬的表,在存儲介質(zhì)中找不到相應(yīng)的存儲文件。 視圖類似SELECT 語句的查詢窗口,視圖保管了這個查詢窗口,保管了查詢的數(shù)據(jù)是滿足什么樣的條件來自于哪幾個表,真正的數(shù)據(jù)還是分別保管在各自的表中。 視圖可援用一個或多個表,或者援用其他視圖,視圖是可以更新的,它可援用遠(yuǎn)程表。 視圖最大的特點是,依賴于表,不獨立存在,雖不保管真正的數(shù)據(jù)
34、,但是可以像普通的表一樣進(jìn)展建立查詢、表單、報表等。 1.1.定義視圖命令定義視圖命令 【格式】【格式】CREATE VIEW CREATE VIEW AS AS 其中其中SELECTSELECT語句可以是恣意的語句可以是恣意的SELECTSELECT查詢語查詢語句,它闡明和限定了視圖中的數(shù)據(jù);視圖的句,它闡明和限定了視圖中的數(shù)據(jù);視圖的字段名與字段名與SELECTSELECT語句中指定的字段名一樣。語句中指定的字段名一樣。 1 1從單個表派生出來的視圖從單個表派生出來的視圖 【例【例5.415.41】建立商品的商品號、商品名以及】建立商品的商品號、商品名以及產(chǎn)地的視圖。產(chǎn)地的視圖。 CREA
35、TE VIEW CREATE VIEW 商品產(chǎn)地信息商品產(chǎn)地信息 AS SELECT AS SELECT 商品商品號號, ,商品名商品名, ,產(chǎn)地產(chǎn)地 FROM FROM 商品商品 其中其中“商品產(chǎn)地信息是視圖的稱號。商品產(chǎn)地信息是視圖的稱號。 2 2從多個表派生出來的視圖從多個表派生出來的視圖 【例【例5.425.42】建立學(xué)生的學(xué)號、姓名、所選的】建立學(xué)生的學(xué)號、姓名、所選的課程的課程名以及該門課的成果的視圖。課程的課程名以及該門課的成果的視圖。 CREATE VIEW CREATE VIEW 成果單成果單 AS SELECT AS SELECT 學(xué)生學(xué)生. .學(xué)號學(xué)號, ,姓名姓名, ,
36、課程名課程名, ,成果成果 FROM FROM 學(xué)生學(xué)生, ,選課選課, ,課程課程 WHERE WHERE 學(xué)生學(xué)生. .學(xué)號學(xué)號= =選課選課. .學(xué)號學(xué)號 AND AND 課程課程. .課程課程號號= =選課選課. .課程號課程號 此時,假設(shè)要查詢王芳所選的課程以及成果,此時,假設(shè)要查詢王芳所選的課程以及成果,那么運用如下語句:那么運用如下語句: SELECT SELECT 學(xué)號學(xué)號, ,姓名姓名, ,課程名課程名, ,成果成果 FROM FROM 成果成果單單 WHERE WHERE 姓名姓名= =王芳王芳 3 3視圖中的虛字段視圖中的虛字段用一個查詢來建立一個視圖的用一個查詢來建立一
37、個視圖的SELECTSELECT字句可以字句可以包含算術(shù)表達(dá)式或函數(shù),這些表達(dá)式或函數(shù)與視包含算術(shù)表達(dá)式或函數(shù),這些表達(dá)式或函數(shù)與視圖的其他字段一樣對待,由于它們是計算得來的,圖的其他字段一樣對待,由于它們是計算得來的,并不存儲在表中,所以稱為虛字段。并不存儲在表中,所以稱為虛字段。例如有一個根本表構(gòu)造為:職工職工號,職例如有一個根本表構(gòu)造為:職工職工號,職工姓名,工資工姓名,工資 建立一個視圖建立一個視圖“職工薪金,運用的命令如職工薪金,運用的命令如下:下: CREATE VIEW CREATE VIEW 職工薪金職工薪金 AS SELECT AS SELECT 職工號職工號, ,工資工資 AS AS 月薪月薪, ,工資工資* *12 AS 12 AS 年薪年薪; ; FROM FROM 職工職工 這里這里SELECTSELECT短語中利用
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家校合作課題申報書
- 省級課題申報書查重
- 課題立項申報書查重
- 甲狀腺課題申報書
- 課題申報評審書模本
- 創(chuàng)業(yè)課題申報書范本模板
- 醫(yī)生晉升課題申報書
- 音樂小課題研究申報書音樂
- 圖書情報課題申報書
- 借電合同范本
- 浙江省杭州市2023-2024學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 公共危機(jī)管理題庫
- 完整版:美制螺紋尺寸對照表(牙數(shù)、牙高、螺距、小徑、中徑外徑、鉆孔)
- 品牌全球化體育營銷趨勢洞察報告 2024
- 安徽省蕪湖市普通高中2025屆高考全國統(tǒng)考預(yù)測密卷物理試卷含解析
- 第2課++生涯規(guī)劃+筑夢未來(課時2)【中職專用】中職思想政治《心理健康與職業(yè)生涯》高效課堂 (高教版基礎(chǔ)模塊)
- 《批判性思維原理和方法》全套教學(xué)課件
- 臨床診療指南(急診醫(yī)學(xué))
- 人教PEP英語五年級下冊全冊教案(表格教學(xué)設(shè)計)
- 密目網(wǎng)覆蓋施工方案
- 家族族譜資料收集表
評論
0/150
提交評論