




已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言,5.1 SQL概述 5.2 SQL的數(shù)據(jù)查詢功能 5.3 SQL的定義功能 5.4 SQL的數(shù)據(jù)操作功能,5.1 SQL概述,SQL是Structured Query Language的縮寫,意思為“結(jié)構(gòu)化查詢語言” 。 SQL特點: 語言簡潔、規(guī)范 非過程化 高度靈活化 平臺無關(guān)性,SQL具有以下功能: 查詢數(shù)據(jù)庫中的數(shù)據(jù) 更新數(shù)據(jù)庫中的數(shù)據(jù) 設(shè)置數(shù)據(jù)庫用戶訪問的權(quán)限 修改數(shù)據(jù)庫表的結(jié)構(gòu) 增加、刪除數(shù)據(jù)庫中的表、視圖,返回目錄,5.2 SQL的數(shù)據(jù)查詢功能,SELECT語句是數(shù)據(jù)查詢語言組中唯一的語句,它包括單表查詢、多表連接查詢、嵌套查詢和集合查詢等。 5.2.1 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子句中的目標(biāo)表達(dá)式選出記錄中的字段值形成結(jié)果表。GROUP限定結(jié)果分組,ORDER限定結(jié)果的排序。,SELECT子句對應(yīng)關(guān)系代數(shù)中的投影運(yùn)算,其后面列出的屬性名集合就是需要進(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ù)表中查詢部分或者全部的字段。 【例5.1】查詢“學(xué)生”表中所有學(xué)生的姓名。 SELECT 姓名 FROM 學(xué)生 【例5.2】查詢“課程”表中所有的信息。 SELECT * FROM 課程,查詢結(jié)果也可以是通過某一字段或者幾個字段計算得到的虛擬字段。 【例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è)名稱。 SELECT DISTINCT(專業(yè)) FROM 學(xué)生,2.WHERE子句 帶上WHERE子句的查詢就是條件查詢。查詢的條件主要包括比較、范圍設(shè)定、匹配測試、NULL值測試以及組合條件。 (1)比較條件 比較是SQL中最經(jīng)常使用的查詢條件,運(yùn)算符有=、=、。 【例5.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 外語 BETWEEN 110 AND 130,(3)匹配測試 當(dāng)查詢需要進(jìn)行字符串匹配時,使用“LIKE”。在匹配測試表達(dá)式中使用的通配符百分號(%)代表任意個任意字符,下劃線(_)代表一個任意字符。 【例5.7】查詢所有姓“王”的同學(xué)的信息。 SELECT * FROM 學(xué)生 WHERE 姓名 LIKE “王%”,(4)NULL值測試 NULL表示空,意思是還沒有確定,與數(shù)值“0”不一樣,0表示一個確切的數(shù)。 在判斷NULL值時要使用“IS”語句 【例5.8】查詢沒有安排上課教師的課程。 SELECT * FROM 課程 WHERE 教師號 IS NULL,(5)組合條件 搜索條件中還可使用AND、OR、NOT將簡單的查詢條件進(jìn)行組合,進(jìn)行復(fù)雜的搜索。 【例5.9】查詢計算機(jī)專業(yè)的女生信息。 SELECT * FROM 學(xué)生 WHERE 性別=”女” AND 專業(yè)=”計算機(jī)”,5.2.3 嵌套查詢,1.帶有比較運(yùn)算的子查詢和使用量詞的查詢 當(dāng)子查詢的返回結(jié)果是個單列時,可以使用、=、!=等或使用帶有量詞ANY、SOME、ALL的比較運(yùn)算符進(jìn)行查詢。 其中ANY和SOME是同義詞,在進(jìn)行比較運(yùn)算時只要子查詢中有一行能使結(jié)果為真,則結(jié)果為真。而ALL則要求子查詢中的所有行都使結(jié)果為真時,結(jié)果才為真。 【例5.10】查詢和劉云飛同一個專業(yè)的學(xué)生的姓名、性別以及出生日期。 SELECT 姓名,性別,出生日期 FROM 學(xué)生 WHERE 專業(yè)=(SELECT 專業(yè) FROM 學(xué)生 WHERE 姓名=”劉云飛”),【例5.11】查詢課程成績高于學(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.使用謂詞的查詢 子查詢中使用最多的是謂詞IN,EXISTS和NOT IN,NOT EXISTS,含義為當(dāng)查詢的指定字段值包含(或不包含)在子查詢結(jié)果字段值表中時條件為真。 IN用來測試集合中的成員,該集合是由SELECT子句產(chǎn)生的一組值的集合。 EXISTS或NOT EXISTS是用來檢查在子查詢中是否有結(jié)果返回。,【例5.13】查詢計算機(jī)專業(yè)學(xué)生的學(xué)號、所選的課程號以及該門課的成績。 SELECT 學(xué)號,課程號,成績 FROM 選課 WHERE 學(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é)生的語文、數(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)接條件,2.超聯(lián)接查詢 如果想要將不符合聯(lián)接條件的記錄也查詢出來,就要利用超聯(lián)接查詢,超聯(lián)接分為內(nèi)聯(lián)接(也稱為等值聯(lián)接)、左聯(lián)接、右聯(lián)接和全聯(lián)接。其語法結(jié)構(gòu)如下: 【格式】 SELECTFROM INNER|LEFT|RIGHT|FULL JOIN ON WHERE,【說明】 INNER JOIN 或JOIN為內(nèi)聯(lián)接,也稱為等值聯(lián)接,按照聯(lián)接條件進(jìn)行聯(lián)接,不滿足條件的記錄不會出現(xiàn)在查詢結(jié)果中,是常用的一種聯(lián)接形式。 LEFT JOIN 為左聯(lián)接,除滿足連接條件的記錄出現(xiàn)在查詢結(jié)果中外,第一個表不滿足條件的記錄也會出現(xiàn)在查詢結(jié)果中。 RIGHT JOIN 為右聯(lián)接,除滿足連接條件的記錄出現(xiàn)在查詢結(jié)果中外,第二個表不滿足條件的記錄也會出現(xiàn)在查詢結(jié)果中。 FULL JOIN 為全聯(lián)接,除滿足連接條件的記錄出現(xiàn)在查詢結(jié)果中外,兩個表中不滿足條件的記錄也會出現(xiàn)在查詢結(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é)成績; WHERE 學(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)的課程名和成績?yōu)榭铡?【例5.18】右聯(lián)接查詢。 SELECT 學(xué)生.學(xué)號,姓名,課程名,成績 FROM (學(xué)生 RIGHT JOIN 選課; ON 學(xué)生.學(xué)號=選課.學(xué)號)RIGHT JOIN 課程 ON 選課.課程號=課程.課程號 因為是右聯(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)排列,默認(rèn)為升序排列。 ORDER BY語句只能對最終的查詢結(jié)果進(jìn)行排序,在子查詢中不能使用。 ORDER BY語句后不能接任何運(yùn)算表達(dá)式,不能按某個表達(dá)式的運(yùn)算結(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é)號、成績。查詢結(jié)果如圖5.21所示。 SELECT * TOP 50 PERCENT FROM 選課 WHERE 課程號=”1001” ORDER BY 成績 DESC 注意: TOP語句要與ORDER BY語句同時使用才有效。,5.2.6 計算查詢與分組查詢(GROUP BY 子句),1.計算查詢 有時用戶的請求需要對查詢的內(nèi)容進(jìn)行計算才能得到結(jié)果。常用的計算函數(shù)如下: COUNT( ) 統(tǒng)計元組個數(shù) COUNT(DISTINCT|ALL ) 統(tǒng)計一列中值的個數(shù)。 SUM(DISTINCT|ALL ) 計算某一列值的總和(此列必須是數(shù)值型)。 AVG(DISTINCT|ALL ) 計算某一列值的平均值(此列必須是數(shù)值型)。 MAX(DISTINCT|ALL ) 計算某一列值的最大值。 MIN(DISTINCT|ALL ) 計算某一列值的最小值。 注意:如果指定DISTINCT短語,則表示在計算時要取消指定列中的重復(fù)值。,【例5.23】查詢選修了課程的學(xué)生的人數(shù)。 SELECT COUNT(DISTINCT 學(xué)號) FROM 選課 【例5.24】查詢“入學(xué)成績”表中,學(xué)生外語的平均成績。 SELECT AVG(外語) AS 外語平均成績 FROM 入學(xué)成績 其中,使用“AS”關(guān)鍵字對查詢結(jié)果的屬性重新命名。,2.分組查詢 GROUP BY子句將查詢結(jié)果按某一列或多列的值分組,值相等的為一組。同時還可以用HAVING語句對分組的記錄加以限定再計算。 HAVING語句不能單獨使用只能跟在GROUP BY語句之后,在查詢過程中與WHERE語句并不矛盾,WHERE語句限定所有記錄,HAVING語句只限定分組。,【例5.25】查詢各專業(yè)學(xué)生的入學(xué)成績平均值。 SELECT 專業(yè),AVG(入學(xué)成績) FROM 學(xué)生 GROUP BY 專業(yè) 在分組查詢時,有時要求分組需要滿足某個條件時才可以檢索,這時可以用HAVING子句來限定分組。 【例5.26】查詢選修了兩門(含兩門)以上課程的學(xué)生的學(xué)號以及平均成績。 SELECT 學(xué)號,AVG(成績) AS 平均成績 FROM 選課 GROUP BY 學(xué)號; HAVING COUNT(*)=2,【說明】HAVING子句和WHERE子句的區(qū)別: (1)WHERE子句是用來指定表中各行所應(yīng)滿足的條件,用于基表或視圖,而HAVING子句是用來指定每一分組所滿足的條件,作用于組,只有滿足HAVING條件的那些組才能在結(jié)果中被顯示。 (2)HAVING子句總是跟在GROUP BY子句之后,不可以單獨使用。HAVING子句和WHERE子句不矛盾,在查詢中是先用WHERE子句限定元組,然后進(jìn)行分組,最后再用HAVING子句限定分組。,5.2.7 集合的并運(yùn)算,使用UNION子句可以進(jìn)行集合的并運(yùn)算,即可以將兩個SELECT語句的查詢結(jié)果合并成一個查詢結(jié)果。 【例5.27】查詢“教師”表中教授和副教授的教師號、姓名、性別和職稱。查詢結(jié)果如圖5.26所示。 SELECT 教師號,姓名,性別,職稱 FROM 教師 WHERE 職稱=“教授“; UNION SELECT 教師號,姓名,性別,職稱 FROM 教師 ; WHERE 職稱=“副教授“,5.2.8 查詢?nèi)ハ?1.在查詢窗口中顯示查詢結(jié)果 使用SELECT語句查詢默認(rèn)情況下,是將結(jié)果顯示在查詢窗口中。 2.利用臨時表文件存放查詢結(jié)果 使用INTO CURSOR語句可以將查詢結(jié)果存放在臨時表文件中,該表是一個只讀的表文件,可以像一般的表文件一樣在程序中使用,程序結(jié)束關(guān)閉文件時該表文件將自動刪除。 【例5.28】將所有的課程信息放到臨時表tmp中。 SELECT * FROM 課程 INTO CURSOR tmp,3.利用永久表文件存放查詢結(jié)果 使用INTO DBFTABLE 語句可以將查詢結(jié)果存放在永久表文件中,該SELECT語句執(zhí)行完查詢之后,該表將以自由表保存并作為當(dāng)前文件自動打開。 【例5.29】將所有女生的信息放入永久表girls中。 SELECT * FROM 學(xué)生 WHERE 性別=”女” INTO TABLE girls,4.利用文本文件存放查詢結(jié)果 使用TO FILEADDITIVE語句可以將查詢結(jié)果存放在文本文件中。 如果使用ADDITIVE語句,查詢結(jié)果將追加到該文本文件尾部,否則將覆蓋原有文件。 【例5.30】將每位老師所教授的課程情況存入文本文件course中。 SELECT 教師.姓名,課程.課程名 FROM 教師,課程 WHERE 教師.教師號=課程.教師號; TO FILE course,5.利用數(shù)組存放查詢結(jié)果 使用INTO ARRAY語句將查詢結(jié)果存放在變量數(shù)組中,如果查詢結(jié)果是多列多條記錄,將其自動存在二維數(shù)組中,數(shù)組的行列與記錄的行列元素對應(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 表的創(chuàng)建 創(chuàng)建表命令: 【格式】 CREATE TABLE ( ( ,)NULL|NOT NULL CHECK 域完整性約束條件 ERROR 出錯信息 DEFAULT 默認(rèn)值 PRIMARY KEY,),【例5.33】建立“教室管理”數(shù)據(jù)庫,在此數(shù)據(jù)庫中建立“教室”數(shù)據(jù)庫表。 CREATE DATABASE 教室管理 CREATE TABLE 教室(教室編號 C(4) PRIMARY KEY,樓名 C(12),面積 I CHECK(面積0) ERROR “面積應(yīng)為非負(fù)!“ DEFAULT 100) 【說明】其中“教室編號”是主關(guān)鍵字(主索引,用PRIMARY KEY說明),用CHECK為“面積”字段值說明了有效性規(guī)則(面積0),用ERROR為該有效性規(guī)則說明了出錯提示信息“面積應(yīng)為非負(fù)!”,同時為面積設(shè)置了一個默認(rèn)值為100。,建立“自習(xí)教室”數(shù)據(jù)庫表,使用FOREIGN KEYTAGREFERENCES 短語,將兩個表進(jìn)行永久性聯(lián)接。 CREATE TABLE 自習(xí)教室 (教室編號 C(4),使用者 C(12),使用時間 C(10), FOREIGN KEY 教室編號 TAG 教室編號 REFERENCES 教室) 其中,“FOREIGN KEY 教室編號”是為“自習(xí)教室”表建立普通索引,“TAG 教室編號REFERENCES 教室”是通過“教室編號”字段與“教室”表進(jìn)行永久性連接。,5.3.2 表的刪除,刪除表命令: 【格式】DROP TABLE 【說明】該命令將表從數(shù)據(jù)庫中物理性的刪除,在執(zhí)行該命令時最好將數(shù)據(jù)庫打開,再刪除其中的表,否則表可以刪除,但是表在數(shù)據(jù)庫中的信息將不能刪除,此后打開數(shù)據(jù)庫之后將會出現(xiàn)錯誤。,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 出錯信息DEFAULT 默認(rèn)值 PRIMARY KEY|UNIQUE REFERENCES TAG 標(biāo)識名 【說明】該格式可以添加(ADD)新的字段或修改(ALTER)已有的字段。 從命令格式可以看出,該格式可以修改字段的類型、寬度、有效性規(guī)則、錯誤信息、默認(rèn)值,定義主關(guān)鍵字和聯(lián)系等。但是不能修改字段名,不能刪除字段,也不能刪除已經(jīng)定義的規(guī)則等。,【例5.34】向“教室”表中添加一個“樓層”字段。 ALTER TABLE 教室 ADD樓層 N (3) I CHECK樓層0 ERROR “樓層應(yīng)為非負(fù)”; DEFAULT 100 【例5.35】將“教室”表中的“教室編號”字段的寬度由4改為6。 ALTER TABLE教室ALTER教室編號 C(6),【格式2】ALTER TABLE ALTERCOLUMN NULL|NOT NULL SET DEFAULT 默認(rèn)值 SET CHECK 域完整性約束條件 ERROR 出錯信息 DROP DEFAULT DROP CHECK 說明:該格式主要用于定義、修改和刪除有效性規(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 出錯信息 DROP CHECK ADD PRIMARY KEY 字段名 TAG 標(biāo)示名 DROP PRIMARY KEY RENAME COLUMN TO 說明:該格式可以刪除字段(DROPCOLUMN)、修改字段名(RENAME COLUMN)等。 【例5.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ù),但是可以像一般的表一樣進(jìn)行建立查詢、表單、報表等。,1.定義視圖命令 【格式】CREATE VIEW AS 其中SELECT語句可以是任意的SELECT查詢語句,它說明和限定了視圖中的數(shù)據(jù);視圖的字段名與SELECT語句中指定的字段名相同。 (1)從單個表派生出來的視圖 【例5.41】建立商品的商品號、商品名以及產(chǎn)地的視圖。 CREATE VIEW 商品產(chǎn)地信息 AS SELECT 商品號,商品名,產(chǎn)地 FROM 商品 其中“商品產(chǎn)地信息”是視圖的名稱。,(2)從多個表派生出來的視圖 【例5.42】建立學(xué)生的學(xué)號、姓名、所選的課程的課程名以及該門課的成績的視圖。 CREATE VIEW 成績單 AS SELECT 學(xué)生.學(xué)號,姓名,課程名,成績 FROM 學(xué)生,選課,課程 WHERE 學(xué)生.學(xué)號=選課.學(xué)號 AND 課程.課程號=選課.課程號 此時,如果要查詢王芳所選的課程以及成績,則使用如下語句: SELECT 學(xué)號,姓名,課程名,成績 FROM 成績單 WHERE 姓名=”王芳”,(3)視圖中的虛字段 用一個查詢來建立一個視圖的SELECT字句可以包含算術(shù)表達(dá)式或函數(shù),這些表達(dá)式或函數(shù)與視圖的其
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)士晉級考試題及答案
- 山西中考數(shù)學(xué)試題及答案
- 養(yǎng)老護(hù)理員試題及答案
- 團(tuán)拜活動春節(jié)活動方案
- 海淀高考試題及答案
- 啤酒相親活動方案
- 喜氣洋洋迎新年活動方案
- 商場福利活動方案
- 國慶文藝演出活動方案
- 周年慶活動超市活動方案
- 2025年育嬰師職業(yè)資格考試試題及答案
- 北京市八十中學(xué)2025屆八年級英語第二學(xué)期期中經(jīng)典試題含答案
- 2025年四川省達(dá)州市中考英語真題(原卷版)
- 2025年高考真題-物理(廣東卷) 含答案
- 2025-2030中國伊利石行業(yè)運(yùn)營效益及競爭策略展望分析報告
- 江西省上饒市2022-2023學(xué)年高一下冊數(shù)學(xué)期末試卷(含答案)
- 2025春季學(xué)期國開電大本科《管理英語3》一平臺機(jī)考真題及答案(第十套)
- 2024年證券市場基本法律法規(guī)真題及答案
- 湖南省2025年高考公安院校公安專業(yè)考生檔案審核表
- 地理:(網(wǎng)絡(luò)參考版)黑吉遼蒙2025年高考真題地理試卷含答案
- 電大:理論聯(lián)系實際談一談如何傳承發(fā)展中華秀傳統(tǒng)文化?參考答案
評論
0/150
提交評論