




已閱讀5頁(yè),還剩49頁(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)介
第5章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言,5.1 SQL概述 5.2 SQL的數(shù)據(jù)查詢功能 5.3 SQL的定義功能 5.4 SQL的數(shù)據(jù)操作功能,5.1 SQL概述,SQL是Structured Query Language的縮寫(xiě),意思為“結(jié)構(gòu)化查詢語(yǔ)言” 。 SQL特點(diǎn): 語(yǔ)言簡(jiǎn)潔、規(guī)范 非過(guò)程化 高度靈活化 平臺(tái)無(wú)關(guān)性,SQL具有以下功能: 查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù) 更新數(shù)據(jù)庫(kù)中的數(shù)據(jù) 設(shè)置數(shù)據(jù)庫(kù)用戶訪問(wèn)的權(quán)限 修改數(shù)據(jù)庫(kù)表的結(jié)構(gòu) 增加、刪除數(shù)據(jù)庫(kù)中的表、視圖,返回目錄,5.2 SQL的數(shù)據(jù)查詢功能,SELECT語(yǔ)句是數(shù)據(jù)查詢語(yǔ)言組中唯一的語(yǔ)句,它包括單表查詢、多表連接查詢、嵌套查詢和集合查詢等。 5.2.1 SELECT語(yǔ)法格式 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,【說(shuō)明】整個(gè)語(yǔ)句的含義是,根據(jù)WHERE子句的條件表達(dá)式,從FROM子句指定的基本表或視圖中查找出滿足條件的記錄,再按SELECT子句中的目標(biāo)表達(dá)式選出記錄中的字段值形成結(jié)果表。GROUP限定結(jié)果分組,ORDER限定結(jié)果的排序。,SELECT子句對(duì)應(yīng)關(guān)系代數(shù)中的投影運(yùn)算,其后面列出的屬性名集合就是需要進(jìn)行查詢的數(shù)據(jù)集合; FROM說(shuō)明要查詢的數(shù)據(jù)來(lái)自哪個(gè)或哪些表,可以對(duì)單個(gè)表或多個(gè)表進(jìn)行查詢; WHERE說(shuō)明查詢條件,即選擇元組的條件; GROUP BY短語(yǔ)用于對(duì)查詢結(jié)果進(jìn)行分組,可以利用它進(jìn)行分組匯總; HAVING短語(yǔ)必須跟隨GROUP BY使用,它用來(lái)限定分組必須滿足的條件; ORDER BY短語(yǔ)用來(lái)對(duì)查詢的結(jié)果進(jìn)行排序。,5.2.2 簡(jiǎn)單查詢,1. SELECT語(yǔ)句 SELECT語(yǔ)句從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)并將查詢結(jié)果以表格的形式返回,其結(jié)果必是一個(gè)關(guān)系。 在簡(jiǎn)單查詢中,可以從一個(gè)數(shù)據(jù)表中查詢部分或者全部的字段。 【例5.1】查詢“學(xué)生”表中所有學(xué)生的姓名。 SELECT 姓名 FROM 學(xué)生 【例5.2】查詢“課程”表中所有的信息。 SELECT * FROM 課程,查詢結(jié)果也可以是通過(guò)某一字段或者幾個(gè)字段計(jì)算得到的虛擬字段。 【例5.3】查詢“入學(xué)成績(jī)”表中,學(xué)生的學(xué)號(hào)、姓名,以及語(yǔ)文、外語(yǔ)、數(shù)學(xué)的平均成績(jī)。 SELECT 學(xué)號(hào),姓名,(語(yǔ)文+外語(yǔ)+數(shù)學(xué))/3 FROM 入學(xué)成績(jī) 使用“AS”重新為新字段命名的SELECT語(yǔ)句如下。 SELECT 學(xué)號(hào),姓名,(語(yǔ)文+外語(yǔ)+數(shù)學(xué))/3 AS 平均分 FROM 入學(xué)成績(jī),在查詢中,可能產(chǎn)生完全相同的兩個(gè)元組,用“DISTINCT”關(guān)鍵字可以去掉重復(fù)記錄。 【例5.4】查詢“學(xué)生”表中,所有的專業(yè)名稱。 SELECT DISTINCT(專業(yè)) FROM 學(xué)生,2.WHERE子句 帶上WHERE子句的查詢就是條件查詢。查詢的條件主要包括比較、范圍設(shè)定、匹配測(cè)試、NULL值測(cè)試以及組合條件。 (1)比較條件 比較是SQL中最經(jīng)常使用的查詢條件,運(yùn)算符有=、=、。 【例5.5】查詢“學(xué)生”表中,計(jì)算機(jī)專業(yè)學(xué)生的姓名、學(xué)號(hào)以及入學(xué)成績(jī)。 SELECT 姓名,學(xué)號(hào),入學(xué)成績(jī) FROM 學(xué)生 WHERE 專業(yè)=”計(jì)算機(jī)”,(2)范圍設(shè)定 測(cè)試表達(dá)式的值取自某個(gè)范圍時(shí),使用NOTBETWEEN.AND.來(lái)限定。 【例5.6】查詢外語(yǔ)成績(jī)?cè)?10分到130分之間的學(xué)生的姓名。 SELECT 姓名 FROM 入學(xué)成績(jī) WHERE 外語(yǔ) BETWEEN 110 AND 130,(3)匹配測(cè)試 當(dāng)查詢需要進(jìn)行字符串匹配時(shí),使用“LIKE”。在匹配測(cè)試表達(dá)式中使用的通配符百分號(hào)(%)代表任意個(gè)任意字符,下劃線(_)代表一個(gè)任意字符。 【例5.7】查詢所有姓“王”的同學(xué)的信息。 SELECT * FROM 學(xué)生 WHERE 姓名 LIKE “王%”,(4)NULL值測(cè)試 NULL表示空,意思是還沒(méi)有確定,與數(shù)值“0”不一樣,0表示一個(gè)確切的數(shù)。 在判斷NULL值時(shí)要使用“IS”語(yǔ)句 【例5.8】查詢沒(méi)有安排上課教師的課程。 SELECT * FROM 課程 WHERE 教師號(hào) IS NULL,(5)組合條件 搜索條件中還可使用AND、OR、NOT將簡(jiǎn)單的查詢條件進(jìn)行組合,進(jìn)行復(fù)雜的搜索。 【例5.9】查詢計(jì)算機(jī)專業(yè)的女生信息。 SELECT * FROM 學(xué)生 WHERE 性別=”女” AND 專業(yè)=”計(jì)算機(jī)”,5.2.3 嵌套查詢,1.帶有比較運(yùn)算的子查詢和使用量詞的查詢 當(dāng)子查詢的返回結(jié)果是個(gè)單列時(shí),可以使用、=、!=等或使用帶有量詞ANY、SOME、ALL的比較運(yùn)算符進(jìn)行查詢。 其中ANY和SOME是同義詞,在進(jìn)行比較運(yùn)算時(shí)只要子查詢中有一行能使結(jié)果為真,則結(jié)果為真。而ALL則要求子查詢中的所有行都使結(jié)果為真時(shí),結(jié)果才為真。 【例5.10】查詢和劉云飛同一個(gè)專業(yè)的學(xué)生的姓名、性別以及出生日期。 SELECT 姓名,性別,出生日期 FROM 學(xué)生 WHERE 專業(yè)=(SELECT 專業(yè) FROM 學(xué)生 WHERE 姓名=”劉云飛”),【例5.11】查詢課程成績(jī)高于學(xué)號(hào)為“110102”的所有科成績(jī)的學(xué)生學(xué)號(hào)(這里并不是每一門(mén)課程對(duì)應(yīng)比較)。 SELECT 學(xué)號(hào) FROM 選課 WHERE 成績(jī)ALL (SELECT 成績(jī) FROM 選課 WHERE 學(xué)號(hào)=”110102”) 【例5.12】查詢課程成績(jī)至少高于學(xué)號(hào)為“110102”的一門(mén)課成績(jī)的學(xué)生學(xué)號(hào)以及成績(jī)。 SELECT 學(xué)號(hào),成績(jī) FROM 選課 WHERE 成績(jī)SOME (SELECT 成績(jī) FROM 選課; WHERE 學(xué)號(hào)=”110102”),2.使用謂詞的查詢 子查詢中使用最多的是謂詞IN,EXISTS和NOT IN,NOT EXISTS,含義為當(dāng)查詢的指定字段值包含(或不包含)在子查詢結(jié)果字段值表中時(shí)條件為真。 IN用來(lái)測(cè)試集合中的成員,該集合是由SELECT子句產(chǎn)生的一組值的集合。 EXISTS或NOT EXISTS是用來(lái)檢查在子查詢中是否有結(jié)果返回。,【例5.13】查詢計(jì)算機(jī)專業(yè)學(xué)生的學(xué)號(hào)、所選的課程號(hào)以及該門(mén)課的成績(jī)。 SELECT 學(xué)號(hào),課程號(hào),成績(jī) FROM 選課 WHERE 學(xué)號(hào) IN (SELECT 學(xué)號(hào) FROM 學(xué)生; WHERE 專業(yè)=”計(jì)算機(jī)”) EXISTS可測(cè)試一個(gè)子查詢的結(jié)果是否有元組,當(dāng)作為子查詢結(jié)果的集合為非空時(shí)則主查詢返回結(jié)果,否則不返回。NOT EXISTS則與之相反。 【例5.14】查詢沒(méi)有選修任何一門(mén)課的學(xué)生信息。 SELECT * FROM 學(xué)生 WHERE NOT EXISTS (SELECT * FROM 選課; WHERE 學(xué)號(hào)=學(xué)生.學(xué)號(hào)),5.2.4 聯(lián)接查詢,有一些查詢同時(shí)涉及到兩個(gè)或兩個(gè)以上的表時(shí),這種查詢稱之為聯(lián)接查詢(也稱為多表查詢)。 1.簡(jiǎn)單聯(lián)接查詢 【例5.15】查詢所有學(xué)生的姓名、學(xué)號(hào)以及入學(xué)時(shí)該學(xué)生的語(yǔ)文、數(shù)學(xué)、外語(yǔ)、綜合的成績(jī)。 SELECT 學(xué)生.姓名,學(xué)生.學(xué)號(hào),語(yǔ)文,數(shù)學(xué),外語(yǔ),綜合 FROM 學(xué)生,入學(xué)成績(jī); WHERE 學(xué)生.學(xué)號(hào)=入學(xué)成績(jī).學(xué)號(hào) SQL允許在FROM子句中為關(guān)系名定義別名,格式為: . 例5.15的查詢語(yǔ)句可以寫(xiě)做: SELECT S.姓名,S.學(xué)號(hào),語(yǔ)文,數(shù)學(xué),外語(yǔ),綜合 FROM 學(xué)生 S,入學(xué)成績(jī) R; WHERE S.學(xué)號(hào)=R.學(xué)號(hào),聯(lián)接條件,2.超聯(lián)接查詢 如果想要將不符合聯(lián)接條件的記錄也查詢出來(lái),就要利用超聯(lián)接查詢,超聯(lián)接分為內(nèi)聯(lián)接(也稱為等值聯(lián)接)、左聯(lián)接、右聯(lián)接和全聯(lián)接。其語(yǔ)法結(jié)構(gòu)如下: 【格式】 SELECTFROM INNER|LEFT|RIGHT|FULL JOIN ON WHERE,【說(shuō)明】 INNER JOIN 或JOIN為內(nèi)聯(lián)接,也稱為等值聯(lián)接,按照聯(lián)接條件進(jìn)行聯(lián)接,不滿足條件的記錄不會(huì)出現(xiàn)在查詢結(jié)果中,是常用的一種聯(lián)接形式。 LEFT JOIN 為左聯(lián)接,除滿足連接條件的記錄出現(xiàn)在查詢結(jié)果中外,第一個(gè)表不滿足條件的記錄也會(huì)出現(xiàn)在查詢結(jié)果中。 RIGHT JOIN 為右聯(lián)接,除滿足連接條件的記錄出現(xiàn)在查詢結(jié)果中外,第二個(gè)表不滿足條件的記錄也會(huì)出現(xiàn)在查詢結(jié)果中。 FULL JOIN 為全聯(lián)接,除滿足連接條件的記錄出現(xiàn)在查詢結(jié)果中外,兩個(gè)表中不滿足條件的記錄也會(huì)出現(xiàn)在查詢結(jié)果中。 ON 指明聯(lián)接條件,而不能在WHERE后面給出聯(lián)接條件。,【例5.16】?jī)?nèi)聯(lián)接查詢。 SELECT 學(xué)生.學(xué)號(hào), 學(xué)生.姓名,入學(xué)成績(jī),數(shù)學(xué) FROM 學(xué)生 JOIN 入學(xué)成績(jī) ; ON 學(xué)生.學(xué)號(hào)=入學(xué)成績(jī).學(xué)號(hào) 注意:多個(gè)表用“JOIN”語(yǔ)句聯(lián)接的順序要與聯(lián)接條件“ON”的順序恰好相反。 等價(jià)于簡(jiǎn)單聯(lián)接查詢方式。 SELECT 學(xué)生.學(xué)號(hào), 學(xué)生.姓名,入學(xué)成績(jī),數(shù)學(xué) FROM 學(xué)生,入學(xué)成績(jī); WHERE 學(xué)生.學(xué)號(hào)=入學(xué)成績(jī).學(xué)號(hào),【例5.17】左聯(lián)接查詢。 SELECT 學(xué)生.學(xué)號(hào),姓名,課程名,成績(jī) FROM (學(xué)生 LEFT JOIN 選課; ON 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào))LEFT JOIN 課程 ON 選課.課程號(hào)=課程.課程號(hào) 因?yàn)槭亲舐?lián)接查詢,其中學(xué)生表中有四個(gè)學(xué)生記錄沒(méi)有選課,不符合聯(lián)接條件,同樣也被查詢出來(lái),該學(xué)生沒(méi)有選課,因此相應(yīng)的課程名和成績(jī)?yōu)榭铡?【例5.18】右聯(lián)接查詢。 SELECT 學(xué)生.學(xué)號(hào),姓名,課程名,成績(jī) FROM (學(xué)生 RIGHT JOIN 選課; ON 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào))RIGHT JOIN 課程 ON 選課.課程號(hào)=課程.課程號(hào) 因?yàn)槭怯衣?lián)接查詢,其中課程表中有的課程記錄沒(méi)有被學(xué)生所選,不符合聯(lián)接條件,同樣也被查詢出來(lái),該課程沒(méi)有被學(xué)生所選,因此相應(yīng)的學(xué)號(hào)和姓名為空。,【例5.19】全聯(lián)接查詢。 SELECT 學(xué)生.學(xué)號(hào),姓名,課程名,成績(jī) FROM (學(xué)生 FULL JOIN 選課; ON 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào)) FULL JOIN 課程 ON 選課.課程號(hào)=課程.課程號(hào) 全聯(lián)接查詢的結(jié)果是左聯(lián)接查詢和右聯(lián)接查詢結(jié)果的并集。,5.2.5 排序(ORDER BY子句),使用ORDER BY子句對(duì)按照一個(gè)或多個(gè)字段對(duì)查詢結(jié)果進(jìn)行升序(ASC)或降序(DESC)排列,默認(rèn)為升序排列。 ORDER BY語(yǔ)句只能對(duì)最終的查詢結(jié)果進(jìn)行排序,在子查詢中不能使用。 ORDER BY語(yǔ)句后不能接任何運(yùn)算表達(dá)式,不能按某個(gè)表達(dá)式的運(yùn)算結(jié)果進(jìn)行排序。 對(duì)于空值排序,升序時(shí)空值記錄將最后顯示,降序時(shí)將最先顯示。 【例5.20】查詢計(jì)算機(jī)專業(yè)的學(xué)生信息,結(jié)果按入學(xué)成績(jī)降序排列。 SELECT * FROM 學(xué)生 WHERE 專業(yè)=”計(jì)算機(jī)” ORDER BY 入學(xué)成績(jī) DESC,使用TOP PERCENT語(yǔ)句可以只顯示排序之后的前幾條記錄或前百分之多少條記錄。 【例5.21】查詢?nèi)雽W(xué)成績(jī)前五名的學(xué)生信息。 SELECT * TOP 5 FROM 學(xué)生 ORDER BY 入學(xué)成績(jī) DESC 【例5.22】查詢1001這門(mén)課成績(jī)?cè)谇?0%的學(xué)生的學(xué)號(hào)、成績(jī)。查詢結(jié)果如圖5.21所示。 SELECT * TOP 50 PERCENT FROM 選課 WHERE 課程號(hào)=”1001” ORDER BY 成績(jī) DESC 注意: TOP語(yǔ)句要與ORDER BY語(yǔ)句同時(shí)使用才有效。,5.2.6 計(jì)算查詢與分組查詢(GROUP BY 子句),1.計(jì)算查詢 有時(shí)用戶的請(qǐng)求需要對(duì)查詢的內(nèi)容進(jìn)行計(jì)算才能得到結(jié)果。常用的計(jì)算函數(shù)如下: COUNT( ) 統(tǒng)計(jì)元組個(gè)數(shù) COUNT(DISTINCT|ALL ) 統(tǒng)計(jì)一列中值的個(gè)數(shù)。 SUM(DISTINCT|ALL ) 計(jì)算某一列值的總和(此列必須是數(shù)值型)。 AVG(DISTINCT|ALL ) 計(jì)算某一列值的平均值(此列必須是數(shù)值型)。 MAX(DISTINCT|ALL ) 計(jì)算某一列值的最大值。 MIN(DISTINCT|ALL ) 計(jì)算某一列值的最小值。 注意:如果指定DISTINCT短語(yǔ),則表示在計(jì)算時(shí)要取消指定列中的重復(fù)值。,【例5.23】查詢選修了課程的學(xué)生的人數(shù)。 SELECT COUNT(DISTINCT 學(xué)號(hào)) FROM 選課 【例5.24】查詢“入學(xué)成績(jī)”表中,學(xué)生外語(yǔ)的平均成績(jī)。 SELECT AVG(外語(yǔ)) AS 外語(yǔ)平均成績(jī) FROM 入學(xué)成績(jī) 其中,使用“AS”關(guān)鍵字對(duì)查詢結(jié)果的屬性重新命名。,2.分組查詢 GROUP BY子句將查詢結(jié)果按某一列或多列的值分組,值相等的為一組。同時(shí)還可以用HAVING語(yǔ)句對(duì)分組的記錄加以限定再計(jì)算。 HAVING語(yǔ)句不能單獨(dú)使用只能跟在GROUP BY語(yǔ)句之后,在查詢過(guò)程中與WHERE語(yǔ)句并不矛盾,WHERE語(yǔ)句限定所有記錄,HAVING語(yǔ)句只限定分組。,【例5.25】查詢各專業(yè)學(xué)生的入學(xué)成績(jī)平均值。 SELECT 專業(yè),AVG(入學(xué)成績(jī)) FROM 學(xué)生 GROUP BY 專業(yè) 在分組查詢時(shí),有時(shí)要求分組需要滿足某個(gè)條件時(shí)才可以檢索,這時(shí)可以用HAVING子句來(lái)限定分組。 【例5.26】查詢選修了兩門(mén)(含兩門(mén))以上課程的學(xué)生的學(xué)號(hào)以及平均成績(jī)。 SELECT 學(xué)號(hào),AVG(成績(jī)) AS 平均成績(jī) FROM 選課 GROUP BY 學(xué)號(hào); HAVING COUNT(*)=2,【說(shuō)明】HAVING子句和WHERE子句的區(qū)別: (1)WHERE子句是用來(lái)指定表中各行所應(yīng)滿足的條件,用于基表或視圖,而HAVING子句是用來(lái)指定每一分組所滿足的條件,作用于組,只有滿足HAVING條件的那些組才能在結(jié)果中被顯示。 (2)HAVING子句總是跟在GROUP BY子句之后,不可以單獨(dú)使用。HAVING子句和WHERE子句不矛盾,在查詢中是先用WHERE子句限定元組,然后進(jìn)行分組,最后再用HAVING子句限定分組。,5.2.7 集合的并運(yùn)算,使用UNION子句可以進(jìn)行集合的并運(yùn)算,即可以將兩個(gè)SELECT語(yǔ)句的查詢結(jié)果合并成一個(gè)查詢結(jié)果。 【例5.27】查詢“教師”表中教授和副教授的教師號(hào)、姓名、性別和職稱。查詢結(jié)果如圖5.26所示。 SELECT 教師號(hào),姓名,性別,職稱 FROM 教師 WHERE 職稱=“教授“; UNION SELECT 教師號(hào),姓名,性別,職稱 FROM 教師 ; WHERE 職稱=“副教授“,5.2.8 查詢?nèi)ハ?1.在查詢窗口中顯示查詢結(jié)果 使用SELECT語(yǔ)句查詢默認(rèn)情況下,是將結(jié)果顯示在查詢窗口中。 2.利用臨時(shí)表文件存放查詢結(jié)果 使用INTO CURSOR語(yǔ)句可以將查詢結(jié)果存放在臨時(shí)表文件中,該表是一個(gè)只讀的表文件,可以像一般的表文件一樣在程序中使用,程序結(jié)束關(guān)閉文件時(shí)該表文件將自動(dòng)刪除。 【例5.28】將所有的課程信息放到臨時(shí)表tmp中。 SELECT * FROM 課程 INTO CURSOR tmp,3.利用永久表文件存放查詢結(jié)果 使用INTO DBFTABLE 語(yǔ)句可以將查詢結(jié)果存放在永久表文件中,該SELECT語(yǔ)句執(zhí)行完查詢之后,該表將以自由表保存并作為當(dāng)前文件自動(dòng)打開(kāi)。 【例5.29】將所有女生的信息放入永久表girls中。 SELECT * FROM 學(xué)生 WHERE 性別=”女” INTO TABLE girls,4.利用文本文件存放查詢結(jié)果 使用TO FILEADDITIVE語(yǔ)句可以將查詢結(jié)果存放在文本文件中。 如果使用ADDITIVE語(yǔ)句,查詢結(jié)果將追加到該文本文件尾部,否則將覆蓋原有文件。 【例5.30】將每位老師所教授的課程情況存入文本文件course中。 SELECT 教師.姓名,課程.課程名 FROM 教師,課程 WHERE 教師.教師號(hào)=課程.教師號(hào); TO FILE course,5.利用數(shù)組存放查詢結(jié)果 使用INTO ARRAY語(yǔ)句將查詢結(jié)果存放在變量數(shù)組中,如果查詢結(jié)果是多列多條記錄,將其自動(dòng)存在二維數(shù)組中,數(shù)組的行列與記錄的行列元素對(duì)應(yīng)。 在涉及到計(jì)算查詢時(shí),查詢結(jié)果一般是一個(gè)數(shù)值,如平均值、最值等,可以將其存放到一維數(shù)組的第一元素中,然后在程序中再進(jìn)行處理。 【例5.31】計(jì)算學(xué)生表中有多少位男學(xué)生將其存放在變量x中。 SELECT COUNT(*) FROM 學(xué)生 WHERE 性別=”男” INTO ARRAY x 【例5.32】將學(xué)生的信息存放到二維數(shù)組s中。 SELECT * FROM 學(xué)生 INTO ARRAY s 二維數(shù)組s是一個(gè)8行8列的數(shù)組,每一行存放某個(gè)學(xué)生的所有信息字段。例如s(1,1)存放的是“110101”,s(1,2)存放是“王芳”,以此類推。,返回目錄,5.3 SQL的定義功能,5.3.1 表的創(chuàng)建 創(chuàng)建表命令: 【格式】 CREATE TABLE ( ( ,)NULL|NOT NULL CHECK 域完整性約束條件 ERROR 出錯(cuò)信息 DEFAULT 默認(rèn)值 PRIMARY KEY,),【例5.33】建立“教室管理”數(shù)據(jù)庫(kù),在此數(shù)據(jù)庫(kù)中建立“教室”數(shù)據(jù)庫(kù)表。 CREATE DATABASE 教室管理 CREATE TABLE 教室(教室編號(hào) C(4) PRIMARY KEY,樓名 C(12),面積 I CHECK(面積0) ERROR “面積應(yīng)為非負(fù)!“ DEFAULT 100) 【說(shuō)明】其中“教室編號(hào)”是主關(guān)鍵字(主索引,用PRIMARY KEY說(shuō)明),用CHECK為“面積”字段值說(shuō)明了有效性規(guī)則(面積0),用ERROR為該有效性規(guī)則說(shuō)明了出錯(cuò)提示信息“面積應(yīng)為非負(fù)!”,同時(shí)為面積設(shè)置了一個(gè)默認(rèn)值為100。,建立“自習(xí)教室”數(shù)據(jù)庫(kù)表,使用FOREIGN KEYTAGREFERENCES 短語(yǔ),將兩個(gè)表進(jìn)行永久性聯(lián)接。 CREATE TABLE 自習(xí)教室 (教室編號(hào) C(4),使用者 C(12),使用時(shí)間 C(10), FOREIGN KEY 教室編號(hào) TAG 教室編號(hào) REFERENCES 教室) 其中,“FOREIGN KEY 教室編號(hào)”是為“自習(xí)教室”表建立普通索引,“TAG 教室編號(hào)REFERENCES 教室”是通過(guò)“教室編號(hào)”字段與“教室”表進(jìn)行永久性連接。,5.3.2 表的刪除,刪除表命令: 【格式】DROP TABLE 【說(shuō)明】該命令將表從數(shù)據(jù)庫(kù)中物理性的刪除,在執(zhí)行該命令時(shí)最好將數(shù)據(jù)庫(kù)打開(kāi),再刪除其中的表,否則表可以刪除,但是表在數(shù)據(jù)庫(kù)中的信息將不能刪除,此后打開(kāi)數(shù)據(jù)庫(kù)之后將會(huì)出現(xiàn)錯(cuò)誤。,5.3.3 表結(jié)構(gòu)的修改,修改表結(jié)構(gòu)的命令是ALTER TABLE,該命令有三種格式。 【格式1】ALTER TABLE ADD|ALTER COLUMN 數(shù)據(jù)類型 (寬度,小數(shù)位數(shù)) NULL|NOT NULL CHECK域完整性約束條件 ERROR 出錯(cuò)信息DEFAULT 默認(rèn)值 PRIMARY KEY|UNIQUE REFERENCES TAG 標(biāo)識(shí)名 【說(shuō)明】該格式可以添加(ADD)新的字段或修改(ALTER)已有的字段。 從命令格式可以看出,該格式可以修改字段的類型、寬度、有效性規(guī)則、錯(cuò)誤信息、默認(rèn)值,定義主關(guān)鍵字和聯(lián)系等。但是不能修改字段名,不能刪除字段,也不能刪除已經(jīng)定義的規(guī)則等。,【例5.34】向“教室”表中添加一個(gè)“樓層”字段。 ALTER TABLE 教室 ADD樓層 N (3) I CHECK樓層0 ERROR “樓層應(yīng)為非負(fù)”; DEFAULT 100 【例5.35】將“教室”表中的“教室編號(hào)”字段的寬度由4改為6。 ALTER TABLE教室ALTER教室編號(hào) C(6),【格式2】ALTER TABLE ALTERCOLUMN NULL|NOT NULL SET DEFAULT 默認(rèn)值 SET CHECK 域完整性約束條件 ERROR 出錯(cuò)信息 DROP DEFAULT DROP CHECK 說(shuō)明:該格式主要用于定義、修改和刪除有效性規(guī)則和默認(rèn)定義。 【例5.36】修改“教室”表中的“面積”字段的有效性規(guī)則。 ALTER TABLE 教室 ALTER面積SET CHECK面積30 ERROR “面積應(yīng)大于30平方米“ ALTER面積SET DEFAULT 40 【例5.37】刪除“教室”表中的“面積”字段的域完整性約束條件。 ALTER TABLE 教室 ALTER 面積 DROP CHECK 【例5.38】刪除“教室”表中的“面積”字段的默認(rèn)值。 ALTER TABLE 教室 ALTER 面積 DROP DEFAULT,【格式3】ALTER TABLE DROPCOLUMN SET CHECK 域完整性約束條件 ERROR 出錯(cuò)信息 DROP CHECK ADD PRIMARY KEY 字段名 TAG 標(biāo)示名 DROP PRIMARY KEY RENAME COLUMN TO 說(shuō)明:該格式可以刪除字段(DROPCOLUMN)、修改字段名(RENAME COLUMN)等。 【例5.39】修改教室表中“面積”字段的名稱為“使用面積”。 ALTER TABLE 教室 RENAME COLUMN 面積 TO使用面積 【例5.40】刪除教室表中“使用面積”字段。 ALTER TABLE 教室 DROP COLUMN 使用面積,5.3.4 視圖的定義,視圖是一個(gè)虛擬的表,在存儲(chǔ)介質(zhì)中找不到相應(yīng)的存儲(chǔ)文件。 視圖類似SELECT 語(yǔ)句的查詢窗口,視圖保存了這個(gè)查詢窗口,保存了查詢的數(shù)據(jù)是滿足什么樣的條件來(lái)自于哪幾個(gè)表,真正的數(shù)據(jù)還是分別保存在各自的表中。 視圖可引用一個(gè)或多個(gè)表,或者引用其他視圖,視圖是可以更新的,它可引用遠(yuǎn)程表。 視圖最大的特點(diǎn)是,依賴于表,不獨(dú)立存在,雖不保存真正的數(shù)據(jù),但是可以像一般的表一樣進(jìn)行建立查詢、表單、報(bào)表等。,1.定義視圖命令 【格式】CREATE VIEW AS 其中SELECT語(yǔ)句可以是任意的SELECT查詢語(yǔ)句,它說(shuō)明和限定了視圖中的數(shù)據(jù);視圖的字段名與SELECT語(yǔ)句中指定的字段名相同。 (1)從單個(gè)表派生出來(lái)的視圖 【例5.41】建立商品的商品號(hào)、商品名以及產(chǎn)地的視圖。 CREATE VIEW 商品產(chǎn)地信息 AS SELECT 商品號(hào),商品名,產(chǎn)地 FROM 商品 其中“商品產(chǎn)地信息”是視圖的名稱。,(2)從多個(gè)表派生出來(lái)的視圖 【例5.42】建立學(xué)生的學(xué)號(hào)、姓名、所選的課程的課程名以及該門(mén)課的成績(jī)的視圖。 CREATE VIEW 成績(jī)單 AS SELECT 學(xué)生.學(xué)號(hào),姓名,課程名,成績(jī) FROM 學(xué)生,選課,課程 WHERE 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào) AND 課程.課程號(hào)=選課.課程號(hào) 此時(shí),如果要查詢王芳所選的課程以及成績(jī),則使用如下語(yǔ)句: SELECT 學(xué)號(hào),姓名,課程名,成績(jī) FROM 成績(jī)單 WHERE 姓名=”王芳”,(3)視圖中的虛字段 用一個(gè)查詢來(lái)建立一個(gè)視圖的SELECT字句可以包含算術(shù)表達(dá)式或函數(shù),這些表達(dá)式或函數(shù)與視圖的其
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年低碳經(jīng)濟(jì)發(fā)展考試試題及答案動(dòng)態(tài)分析
- 校園運(yùn)動(dòng)會(huì)的一天記事文章(5篇)
- 難忘的班級(jí)集體活動(dòng)事件作文11篇
- 高中英語(yǔ)語(yǔ)法復(fù)習(xí)課教案:時(shí)態(tài)辨析與實(shí)踐運(yùn)用
- 2025年泡騰劑項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 我們一起游泳難忘的夏日時(shí)光作文(12篇)
- 2025年成人高考《語(yǔ)文》古詩(shī)詞文學(xué)性與藝術(shù)性試題庫(kù)
- 2025年春季小學(xué)五年級(jí)數(shù)學(xué)期末沖刺卷:數(shù)學(xué)思維拓展與訓(xùn)練
- 2025年電子商務(wù)師(中級(jí))職業(yè)技能鑒定試卷:電商短視頻電商數(shù)據(jù)分析
- 2025年專升本藝術(shù)概論考試模擬卷(藝術(shù)審美心理與藝術(shù)史研究前沿課題)
- 2025年高考真題-物理(廣東卷) 含答案
- 2025-2030中國(guó)伊利石行業(yè)運(yùn)營(yíng)效益及競(jìng)爭(zhēng)策略展望分析報(bào)告
- 江西省上饒市2022-2023學(xué)年高一下冊(cè)數(shù)學(xué)期末試卷(含答案)
- 2024年證券市場(chǎng)基本法律法規(guī)真題及答案
- 地理:(網(wǎng)絡(luò)參考版)黑吉遼蒙2025年高考真題地理試卷含答案
- 電大:理論聯(lián)系實(shí)際談一談如何傳承發(fā)展中華秀傳統(tǒng)文化?參考答案
- 2025新修訂《全國(guó)人民代表大會(huì)和地方各級(jí)人民代表大會(huì)代表法》宣講
- 四川省成都市高新技術(shù)產(chǎn)業(yè)開(kāi)發(fā)區(qū)2023-2024學(xué)年三年級(jí)下學(xué)期數(shù)學(xué)期末試卷(含答案)
- 部編人教版八年級(jí)語(yǔ)文下冊(cè)期末各單元重點(diǎn)知識(shí)
- 2024-2025學(xué)年八年級(jí)下冊(cè)道德與法治期末測(cè)試模擬卷(統(tǒng)編版)(含答案)
- 宿遷市重點(diǎn)中學(xué)2025屆八下數(shù)學(xué)期末教學(xué)質(zhì)量檢測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論