SQL數(shù)據(jù)庫(kù)完全操作手冊(cè)范本_第1頁(yè)
SQL數(shù)據(jù)庫(kù)完全操作手冊(cè)范本_第2頁(yè)
SQL數(shù)據(jù)庫(kù)完全操作手冊(cè)范本_第3頁(yè)
SQL數(shù)據(jù)庫(kù)完全操作手冊(cè)范本_第4頁(yè)
SQL數(shù)據(jù)庫(kù)完全操作手冊(cè)范本_第5頁(yè)
已閱讀5頁(yè),還剩5頁(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)介

1、SQL數(shù)據(jù)庫(kù)完全操作手冊(cè)SQL是Structured Quevy Language(結(jié)構(gòu)化查詢語(yǔ)言)的縮寫。SQL是專為數(shù)據(jù)庫(kù)而建立的操作命令集,是一種功能齊全的數(shù)據(jù)庫(kù)語(yǔ)言。在使用它時(shí),只需要發(fā)出“做什么”的命令,“怎么做”是不用使用者考慮的。SQL功能強(qiáng)大、簡(jiǎn)單易學(xué)、使用方便,已經(jīng)成為了數(shù)據(jù)庫(kù)操作的基礎(chǔ),并且現(xiàn)在幾乎所有的數(shù)據(jù)庫(kù)均支持SQL。 #1二、SQL數(shù)據(jù)庫(kù)數(shù)據(jù)體系結(jié)構(gòu) SQL數(shù)據(jù)庫(kù)的數(shù)據(jù)體系結(jié)構(gòu)基本上是三級(jí)結(jié)構(gòu),但使用術(shù)語(yǔ)與傳統(tǒng)關(guān)系模型術(shù)語(yǔ)不同。在SQL中,關(guān)系模式(模式)稱為“基本表”(base table);存儲(chǔ)模式(模式)稱為“存儲(chǔ)文件”(stored file);子模式(外模

2、式)稱為“視圖”(view);元組稱為“行”(row);屬性稱為“列”(column)。名稱對(duì)稱如00100009a: #1三、SQL語(yǔ)言的組成 在正式學(xué)習(xí)SQL語(yǔ)言之前,首先讓我們對(duì)SQL語(yǔ)言有一個(gè)基本認(rèn)識(shí),介紹一下SQL語(yǔ)言的組成: 1.一個(gè)SQL數(shù)據(jù)庫(kù)是表(Table)的集合,它由一個(gè)或多個(gè)SQL模式定義。 2.一個(gè)SQL表由行集構(gòu)成,一行是列的序列(集合),每列與行對(duì)應(yīng)一個(gè)數(shù)據(jù)項(xiàng)。 3.一個(gè)表或者是一個(gè)基本表或者是一個(gè)視圖。基本表是實(shí)際存儲(chǔ)在數(shù)據(jù)庫(kù)的表,而視圖是由若干基本表或其他視圖構(gòu)成的表的定義。 4.一個(gè)基本表可以跨一個(gè)或多個(gè)存儲(chǔ)文件,一個(gè)存儲(chǔ)文件也可存放一個(gè)或多個(gè)基本表。每個(gè)存儲(chǔ)

3、文件與外部存儲(chǔ)上一個(gè)物理文件對(duì)應(yīng)。 5.用戶可以用SQL語(yǔ)句對(duì)視圖和基本表進(jìn)行查詢等操作。在用戶角度來(lái)看,視圖和基本表是一樣的,沒(méi)有區(qū)別,都是關(guān)系(表格)。 6.SQL用戶可以是應(yīng)用程序,也可以是終端用戶。SQL語(yǔ)句可嵌入在宿主語(yǔ)言的程序中使用,宿主語(yǔ)言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada語(yǔ)言等。SQL用戶也能作為獨(dú)立的用戶接口,供交互環(huán)境下的終端用戶使用。 #1四、對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作 SQL包括了所有對(duì)數(shù)據(jù)庫(kù)的操作,主要是由4個(gè)部分組成: 1.數(shù)據(jù)定義:這一部分又稱為“SQLDDL”,定義數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu),包括定義數(shù)據(jù)庫(kù)、基本表、視圖和索引4部分。 2.數(shù)據(jù)操縱:這

4、一部分又稱為“SQLDML”,其中包括數(shù)據(jù)查詢和數(shù)據(jù)更新兩大類操作,其中數(shù)據(jù)更新又包括插入、刪除和更新三種操作。 3.數(shù)據(jù)控制:對(duì)用戶訪問(wèn)數(shù)據(jù)的控制有基本表和視圖的授權(quán)、完整性規(guī)則的描述,事務(wù)控制語(yǔ)句等。 4.嵌入式SQL語(yǔ)言的使用規(guī)定:規(guī)定SQL語(yǔ)句在宿主語(yǔ)言的程序中使用的規(guī)則。 下面我們將分別介紹: #2(一)數(shù)據(jù)定義 SQL數(shù)據(jù)定義功能包括定義數(shù)據(jù)庫(kù)、基本表、索引和視圖。 首先,讓我們了解一下SQL所提供的基本數(shù)據(jù)類型:(如00100009b) 1.數(shù)據(jù)庫(kù)的建立與刪除 (1)建立數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)是一個(gè)包括了多個(gè)基本表的數(shù)據(jù)集,其語(yǔ)句格式為: CREATE DATABASE其它參數(shù) 其中,在

5、系統(tǒng)中必須是唯一的,不能重復(fù),不然將導(dǎo)致數(shù)據(jù)存取失誤。其它參數(shù)因具體數(shù)據(jù)庫(kù)實(shí)現(xiàn)系統(tǒng)不同而異。 例:要建立項(xiàng)目管理數(shù)據(jù)庫(kù)(xmmanage),其語(yǔ)句應(yīng)為: CREATE DATABASExmmanage (2) 數(shù)據(jù)庫(kù)的刪除:將數(shù)據(jù)庫(kù)與其全部容從系統(tǒng)中刪除。 其語(yǔ)句格式為:DROP DATABASE 例:刪除項(xiàng)目管理數(shù)據(jù)庫(kù)(xmmanage),其語(yǔ)句應(yīng)為: DROP DATABASExmmanage 2.基本表的定義與變更 本身獨(dú)立存在的表稱為基本表,在SQL語(yǔ)言中一個(gè)關(guān)系唯一對(duì)應(yīng)一個(gè)基本表?;颈淼亩x指建立基本關(guān)系模式,而變更則是指對(duì)數(shù)據(jù)庫(kù)中已存在的基本表進(jìn)行刪除與修改。 (1)基本表的定義

6、:基本表是非導(dǎo)出關(guān)系,其定義涉與表名、列名與數(shù)據(jù)類型等,其語(yǔ)句格式為: CREATE TABLE. ( 數(shù)據(jù)類型缺省值NOTNULL / NULL , 數(shù)據(jù)類型缺省值NOTNULL / NULL. ,UNIQUE(列名,列名.) ,PRIMARY KEY(列名) ,F(xiàn)OREIGN KEY(列名,列名.)REFERENCE (列名,列名.) ,CHECK(條件)其它參數(shù)) 其中,數(shù)據(jù)庫(kù)名.指出將新建立的表存放于該數(shù)據(jù)庫(kù)中; 新建的表由兩部分組成:其一為表和一組列名,其二是實(shí)際存放的數(shù)據(jù)(即可在定義表的同時(shí),直接存放數(shù)據(jù)到表中); 列名為用戶自定義的易于理解的名稱,列名中不能使用空格; 數(shù)據(jù)類型為

7、上面所介紹的幾種標(biāo)準(zhǔn)數(shù)據(jù)類型; NOT NULL/NULL指出該列是否允許存放空值,SQL語(yǔ)言支持空值的概念,所謂空值是“不知道”或“無(wú)意義”的值,值得注意的是數(shù)據(jù)“0”和空格都不是空值,系統(tǒng)一般默認(rèn)允許為空值,所以當(dāng)不允許為空值時(shí),必須明確使用NOT NULL; ,UNIQUE將列按照其規(guī)定的順序進(jìn)行排列,如不指定排列順序,則按列的定義順序排列; PRIMARY KEY用于指定表的主鍵(即關(guān)系中的主屬性),實(shí)體完整性約束條件規(guī)定:主鍵必須是唯一的,非空的; ,F(xiàn)OREIGN KEY (列名,列名.) REFERENCE(列名,列名.)是用于指定外鍵參照完整性約束條件,F(xiàn)OREIGN KEY指

8、定相關(guān)列為外鍵,其參照對(duì)象為另外一個(gè)表的指定列,即使用REFERENCE引入的外表中的列,當(dāng)不指定外表列名時(shí),系統(tǒng)將默認(rèn)其列名與參照鍵的列名一樣,要注意的是:使用外鍵時(shí)必須使用參照,另外數(shù)據(jù)的外鍵參照完整性約束條件規(guī)定:外鍵的值要么與相對(duì)應(yīng)的主鍵一樣,要么為空值(具體由實(shí)現(xiàn)系統(tǒng)不同而異) ,CHECK用于使用指定條件對(duì)存入表中的數(shù)據(jù)進(jìn)行檢查,以確定其合法性,提高數(shù)據(jù)的安全性。 例:要建立一個(gè)學(xué)生情況表(student) CREATE TABLE student /創(chuàng)建基本表student (st_class CHAR(8),/ 定義列st_class班級(jí),數(shù)據(jù)類型為8位定長(zhǎng)字符串 st_no

9、CHAR(10) NOT NULL,/定義列st_no學(xué)號(hào),類型為10位定長(zhǎng)字符串,非空 st_name CHAR(8) NOT NULL,/定義列st_name,類型為8位定長(zhǎng)字符串,非空 st_sex CHAR(2),/定義列st_sex性別,類型為2位定長(zhǎng)字符串 st_age SMALLINT,/定義列st_age年齡,類型為短整型 PRIMARY KEY (st_no)/定義st_no學(xué)號(hào)為主鍵。 例:要建立課程設(shè)置表(subject) CREATE TABLE subject/創(chuàng)建基本表subject (su_no CHAR(4) NOT NULL,/ 定義列su_no課號(hào),類型為4

10、位定長(zhǎng)字符串,非空 su_subject CHAR(20) NOT NULL,/ 定義列su_subject課程名,類型為20位定長(zhǎng)字符串,非空 su_credit INTEGER,/ 定義列su_credit學(xué)分,類型為長(zhǎng)整數(shù) su_period INTEGER,/定義列su_period學(xué)時(shí),類型為長(zhǎng)整數(shù) su_preno CHAR(4),/定義列su_preno先修課號(hào),類型為4位定長(zhǎng)字符串 PRIMARY KEY(su_no)/定義su_no課號(hào)為主鍵。 例:要建立學(xué)生選課表(score) CREATE TABLE score /創(chuàng)建基本表score (st_no CHAR(10),/

11、定義列st_no學(xué)號(hào),類型為10位定長(zhǎng)字符串 su_no CHAR(4),/定義列su_no課號(hào),類型為4位定長(zhǎng)字符串 sc_score INTEGER NULL,/定義列sc_score,類型為長(zhǎng)整形,可以為空值 FOREIGN KEY (st_no) REFERENCE student,/從表student中引入?yún)⒄胀怄Ist_no,以確保本表與表student的關(guān)聯(lián)與同步 FOREIGN KEY (suno) REFERENCE subject)/從表subject中引入?yún)⒄胀怄Isu_no,以確保本表與表subject的關(guān)聯(lián)與同步 (2)基本表的刪除:用以從數(shù)據(jù)庫(kù)中刪除一個(gè)基本表與其全部容

12、,其語(yǔ)句格式為: DROP TABLE.表名 例如:將上面建立的表都刪除 DROP TABLE student,subject,score (3)基本表的修改:在基本表建立并使用一段時(shí)間后,可能需要根據(jù)實(shí)際要求對(duì)基本表的結(jié)構(gòu)進(jìn)行修改,即增加新的屬性或刪除屬性。 增加屬性的語(yǔ)句格式為: ALTER TABLE .表名 ADD ( 數(shù)據(jù)類型 缺省值 NOT NULL / NULL , 數(shù)據(jù)類型缺省值NOT NULL / NULL. ,UNIQUE (列名,列名.) ,PRIMARY KEY(列名) ,F(xiàn)OREIGN KEY(列名,列名.) REFERENCE (列名,列名.) ,CHECK(條件)

13、其它參數(shù)) 例如:在基本表student中加入列stborn出生日期,數(shù)據(jù)類型為DATE,且不能為空值 ALTER TABLE student ADD (stborn DATE NOT NULL) 刪除屬性的語(yǔ)句格式為: ALTER TABLE .表名 DROP ( 數(shù)據(jù)類型 缺省值NOT NULL / NULL , 數(shù)據(jù)類型 缺省值NOT NULL / NULL.) 例如:將基本表student中的列st_age刪除 ALTER TABLE student DROP (st_age) 3.視圖定義與刪除 在SQL中,視圖是外模式一級(jí)數(shù)據(jù)結(jié)構(gòu)的基本單位。它是從一個(gè)或幾個(gè)基本表中導(dǎo)出的表,是從現(xiàn)

14、有基本表中抽取若干子集組成用戶的“專用表”。這種構(gòu)造方式必須使用SQL中的SELECT語(yǔ)句來(lái)實(shí)現(xiàn)。在定義一個(gè)視圖時(shí),只是把其定義存放在系統(tǒng)的數(shù)據(jù)中,而并不直接存儲(chǔ)視圖對(duì)應(yīng)的數(shù)據(jù),直到用戶使用視圖時(shí)才去求得對(duì)應(yīng)的數(shù)據(jù)。 (1)視圖的定義:定義視圖可以使用CREATE VIEW語(yǔ)句實(shí)現(xiàn),其語(yǔ)句格式為: CREATE VIEW 視圖名 AS SELECT語(yǔ)句 從一個(gè)基本表中導(dǎo)出視圖: 例:從基本表student中導(dǎo)出只包括女學(xué)生情況的視圖 CREATE VIEW WOMANVIEW AS /創(chuàng)建一個(gè)視圖WOMANVIEW SELECT st_class,st_no,st_name,st_age /選

15、擇列st_class,st_no,st_name,st_age顯示 FROM student /從基本表student引入 WHERE st_sex=女/引入條件為性別為“女”,注意字符變量都使用單引號(hào)引用 從多個(gè)基本表中導(dǎo)出視圖: 例如:從基本表student和score中導(dǎo)出只包括女學(xué)生且分?jǐn)?shù)在60分以上的視圖 CREATEVIEW WOMAN_SCORE AS /定義視圖WOMANSCORE SELECT student.st_class,student.st_no,student.st_name,student.st_age,score.sc_score /有選擇性顯示相關(guān)列 FROM

16、 student.score /從基本表student和score中引入 WHERE student.st_sex=女AND score.sc_score=60 AND student.st_no=score.st_no /選擇條件:性別為“女” 且分?jǐn)?shù)在60分以上。并使用st_no將兩表聯(lián)系起來(lái)。 以后如果進(jìn)行這一視圖的應(yīng)用,則只需使用語(yǔ)句 SELECT * FROM WOMAN_SCORE /其中“*”為通配符,代表所有元素 (2)視圖的刪除:用于刪除已不再使用的視圖,其語(yǔ)句格式如下: DROP VIEW 視圖名 例:將上面建立的WOMAN_SCORE視圖刪除 DROP VIEW WOMA

17、N_SCORE 4.索引的定義與刪除 索引屬于物理存儲(chǔ)概念,而不是邏輯的概念。在SQL中拋棄了索引概念,直接使用主鍵概念。值得一提的是,有些關(guān)系DBMS同時(shí)包括索引機(jī)制和主鍵機(jī)制,這里我們推薦使用主鍵機(jī)制,因?yàn)樗鼘?duì)系統(tǒng)資源占用較低且效率較高。 (1)索引的定義:索引是建立在基本表之上的,其語(yǔ)句格式為: CREATE UNIQUE INDEX 索引名 ON .表名(列名 ASC/DESC,列名 ASC/DESC.) 這里,保留字UNIQUE表示基本表中的索引值不允許重復(fù),若缺省則表示索引值在表中允許重復(fù);DESC表示按索引鍵降序排列,若缺省或ASC表示升序排列。 例:對(duì)基本表student中的s

18、t_no和st_age建立索引,分別為升序與降序,且索引值不允許重復(fù) CREATE UNIQUE INDEX STINDEX ON/創(chuàng)建索引STINDEX student(st_no ASC,st_age DESC)/對(duì)student中的st_no和st_age建立索引 (2)索引的刪除: DROP INDEX 索引名 例:刪除上面建立的索引STINDEX DROP INDEX STINDEX #2 (二)數(shù)據(jù)查詢 SQL是一種查詢功能很強(qiáng)的語(yǔ)言,只要是數(shù)據(jù)庫(kù)存在的數(shù)據(jù),總能通過(guò)適當(dāng)?shù)姆椒▽⑺鼜臄?shù)據(jù)庫(kù)中查找出來(lái)。SQL中的查詢語(yǔ)句只有一個(gè):SELECT,它可與其它語(yǔ)句配合完成所有的查詢功能。S

19、ELECT語(yǔ)句的完整語(yǔ)法,可以有6個(gè)子句。完整的語(yǔ)法如下: SELECT 目標(biāo)表的列名或列表達(dá)式集合 FROM 基本表或(和)視圖集合 WHERE條件表達(dá)式 GROUP BY列名集合 HAVING組條件表達(dá)式 ORDER BY列名集合 整個(gè)語(yǔ)句的語(yǔ)義如下:從FROM子句中列出的表中,選擇滿足WHERE子句中給出的條件表達(dá)式的元組,然后按GROUPBY子句(分組子句)中指定列的值分組,再提取滿足HAVING子句中組條件表達(dá)式的那些組,按SELECT子句給出的列名或列表達(dá)式求值輸出。ORDER子句(排序子句)是對(duì)輸出的目標(biāo)表進(jìn)行重新排序,并可附加說(shuō)明ASC(升序)或DESC(降序)排列。 在WHE

20、RE子句中的條件表達(dá)式F中可出現(xiàn)下列操作符和運(yùn)算函數(shù): 算術(shù)比較運(yùn)算符:,=,=,。 邏輯運(yùn)算符:AND,OR,NOT。 集合運(yùn)算符:UNION(并),INTERSECT(交),EXCEPT(差)。 集合成員資格運(yùn)算符:IN,NOT IN 謂詞:EXISTS(存在量詞),ALL,SOME,UNIQUE。 聚合函數(shù):AVG(平均值),MIN(最小值),MAX(最大值),SUM(和),COUNT(計(jì)數(shù))。 F中運(yùn)算對(duì)象還可以是另一個(gè)SELECT語(yǔ)句,即SELECT語(yǔ)句可以嵌套。 上面只是列出了WHERE子句中可出現(xiàn)的幾種主要操作,由于WHERE子句中的條件表達(dá)式可以很復(fù)雜,因此SELECT句型能表

21、達(dá)的語(yǔ)義遠(yuǎn)比其數(shù)學(xué)原形要復(fù)雜得多。 下面,我們以上面所建立的三個(gè)基本表為例,演示一下SELECT的應(yīng)用: 1.無(wú)條件查詢 例:找出所有學(xué)生的的選課情況 SELECT st_no,su_no FROM score 例:找出所有學(xué)生的情況 SELECT* FROM student “*”為通配符,表示查找FROM中所指出關(guān)系的所有屬性的值。 2.條件查詢 條件查詢即帶有WHERE子句的查詢,所要查詢的對(duì)象必須滿足WHERE子句給出的條件。 例:找出任何一門課成績(jī)?cè)?0以上的學(xué)生情況、課號(hào)與分?jǐn)?shù) SELECT UNIQUE student.st_class,student.st_no,student

22、.st_name,student.st_sex,student.st_age,score.su_no,score.score FROM student,score WHERE score.score=70 AND score.stno=student.st_no 這里使用UNIQUE是不從查詢結(jié)果集中去掉重復(fù)行,如果使用DISTINCT則會(huì)去掉重復(fù)行。另外邏輯運(yùn)算符的優(yōu)先順序?yàn)镹OTANDOR。 例:找出課程號(hào)為c02的,考試成績(jī)不與格的學(xué)生 SELECT st_no FROM score WHERE su_no=c02AND score60 3.排序查詢 排序查詢是指將查詢結(jié)果按指定屬性的升

23、序(ASC)或降序(DESC)排列,由ORDER BY子句指明。 例:查找不與格的課程,并將結(jié)果按課程號(hào)從大到小排列 SELECT UNIQUE su_no FROM score WHERE score80 ) 這里需要明確的是:當(dāng)查詢涉與多個(gè)基本表時(shí)用嵌套查詢逐次求解層次分明,具有結(jié)構(gòu)程序設(shè)計(jì)特點(diǎn)。在嵌套查詢中,IN是常用到的謂詞。若用戶能確切知道層查詢返回的是單值,那么也可用算術(shù)比較運(yùn)算符表示用戶的要求。 5.計(jì)算查詢 計(jì)算查詢是指通過(guò)系統(tǒng)提供的特定函數(shù)(聚合函數(shù))在語(yǔ)句中的直接使用而獲得某些只有經(jīng)過(guò)計(jì)算才能得到的結(jié)果。常用的函數(shù)有: COUNT(*) 計(jì)算元組的個(gè)數(shù) COUNT(列名)

24、對(duì)某一列中的值計(jì)算個(gè)數(shù) SUM(列名) 求某一列值的總和(此列值是數(shù)值型) AVG(列名) 求某一列值的平均值(此列值是數(shù)值型) MAX(列名) 求某一列值中的最大值 MIN(列名) 求某一列值中的最小值 例:求男學(xué)生的總?cè)藬?shù)和平均年齡 SELECT COUNT(*),AVG(st_age) FROM student WHERE st_sex=男 例:統(tǒng)計(jì)選修了課程的學(xué)生的人數(shù) SELECT COUNT(DISTINCT st_no) FROM score 注意:這里一定要加入DISTINCT,因?yàn)橛械膶W(xué)生可能選修了多門課程,但統(tǒng)計(jì)時(shí)只能按1人統(tǒng)計(jì),所以要使用DISTINCT進(jìn)行過(guò)濾。 #2

25、(三) 數(shù)據(jù)更新 數(shù)據(jù)更新包括數(shù)據(jù)插入、刪除和修改操作。它們分別由INSERT語(yǔ)句,DELETE語(yǔ)句與UPDATE語(yǔ)句完成。這些操作都可在任何基本表上進(jìn)行,但在視圖上有所限制。其中,當(dāng)視圖是由單個(gè)基本表導(dǎo)出時(shí),可進(jìn)行插入和修改操作,但不能進(jìn)行刪除操作;當(dāng)視圖是從多個(gè)基本表中導(dǎo)出時(shí),上述三種操作都不能進(jìn)行。 1.數(shù)據(jù)插入 將數(shù)據(jù)插入SQL的基本表有兩種方式:一種是單元組的插入,另一種是多元組的插入。 單元組的插入:向基本表score中插入一個(gè)成績(jī)?cè)M(100002,c02,95),可使用以下語(yǔ)句: INSERT INTO score(st_no,su_no,score) VALUES(10000

26、2,c02,95) 由此,可以給出單元組的插入語(yǔ)句格式: INSERT INTO表名(列名1,列名2) VALUES(列值1,列值2) 其中,列名序列為要插入值的列名集合,列值序列為要插入的對(duì)應(yīng)值。若插入的是一個(gè)表的全部列值,則列名可以省略不寫如上面的(st_no,su_no,score)可以省去;若插入的是表的部分列值,則必須列出相應(yīng)列名,此時(shí),該關(guān)系中未列出的列名取空值。 多元組的插入:這是一種把SELECT語(yǔ)句查詢結(jié)果插入到某個(gè)已知的基本表中的方法。 例如:需要在表score中求出每個(gè)學(xué)生的平均成績(jī),并保留在某個(gè)表中。此時(shí)可以先創(chuàng)建一個(gè)新的基本表stu_avggrade,再用INSERT

27、語(yǔ)句把表score中求得的每一個(gè)學(xué)生的平均成績(jī)(用SELECT求得)插入至stu_avggrade中。 CREATE TABLE stu_avggrade (st_no CHAR(10) NOT NULL,/定義列st_no學(xué)號(hào),類型為10位定長(zhǎng)字符串,非空 age_grade SMALLINT NOT NULL )/ 定義列age_grade平均分,類型為短整形,非空 INSERT INTO stu_avggrade(st_no,age_grade) SELECT st_no,AVG(score) FROM score GROUP BY st_no /因?yàn)橐竺恳粋€(gè)學(xué)生所有課程的平均成績(jī),必

28、須按學(xué)號(hào)分組進(jìn)行計(jì)算。 2.數(shù)據(jù)刪除 SQL的刪除操作是指從基本表中刪除滿足WHERE的記錄。如果沒(méi)有WHERE子句,則刪除表中全部記錄,但表結(jié)構(gòu)依然存在。其語(yǔ)句格式為: DELETE FROM表名WHERE 條件表達(dá)式 下面舉例說(shuō)明: 單元組的刪除:把學(xué)號(hào)為100002的學(xué)生從表student中刪除,可用以下語(yǔ)句: DELETE FROM student WHERE st_no=100002/因?yàn)閷W(xué)號(hào)為100002的學(xué)生在表student中只有一個(gè),所以為單元組的刪除 多元組的刪除:學(xué)號(hào)為100002的成績(jī)從表score中刪除,可用以下語(yǔ)句: DELETE FROM score WHERE

29、st_no=100002/由于學(xué)號(hào)為100002的元組在表score中可能有多個(gè),所以為多元組刪除 帶有子查詢的刪除操作:刪除所有不與格的學(xué)生記錄,可用以下語(yǔ)句 DELETE FROM student WHERE st_no IN (SELETE st_no FROM score WHERE score=70 SQL的刪除語(yǔ)句和修改語(yǔ)句中的WHERE子句用法與SELECT中WHERE子句用法一樣。數(shù)據(jù)的刪除和修改操作,實(shí)際上要先做SELECT查詢操作,然后再把找到的元組刪除或修改。 #2 (四) 數(shù)據(jù)控制 由于數(shù)據(jù)庫(kù)管理系統(tǒng)是一個(gè)多用戶系統(tǒng),為了控制用戶對(duì)數(shù)據(jù)的存取權(quán)利,保持?jǐn)?shù)據(jù)的共享與完全性

30、,SQL語(yǔ)言提供了一系列的數(shù)據(jù)控制功能。其中,主要包括安全性控制、完整性控制、事務(wù)控制和并發(fā)控制。 1.安全性控制 數(shù)據(jù)的安全性是指保護(hù)數(shù)據(jù)庫(kù),以防非法使用造成數(shù)據(jù)泄露和破壞。保證數(shù)據(jù)安全性的主要方法是通過(guò)對(duì)數(shù)據(jù)庫(kù)存取權(quán)力的控制來(lái)防止非法使用數(shù)據(jù)庫(kù)中的數(shù)據(jù)。即限定不同用戶操作不同的數(shù)據(jù)對(duì)象的權(quán)限。 存取權(quán)控制包括權(quán)力的授與、檢查和撤消。權(quán)力授與和撤消命令由數(shù)據(jù)庫(kù)管理員或特定應(yīng)用人員使用。系統(tǒng)在對(duì)數(shù)據(jù)庫(kù)操作前,先核實(shí)相應(yīng)用戶是否有權(quán)在相應(yīng)數(shù)據(jù)上進(jìn)行所要求的操作。 (1)權(quán)力授與:權(quán)力授與有數(shù)據(jù)庫(kù)管理員專用的授權(quán)和用戶可用的授權(quán)兩種形式。數(shù)據(jù)庫(kù)管理員專用授權(quán)命令格式如下: |CONNECT | G

31、RANT|RESOURCE|TO 用戶名IDENTIFED BY 口令 |DBA | 其中,CONNECT表示數(shù)據(jù)庫(kù)管理員允許指定的用戶具有連接到數(shù)據(jù)庫(kù)的權(quán)力,這種授權(quán)是針對(duì)新用戶;RESOURCE表示允許用戶建立自己的新關(guān)系模式,用戶獲得CONNECT權(quán)力后,必須獲得RESOURCE權(quán)力才能創(chuàng)建自己的新表;DBA表示數(shù)據(jù)庫(kù)管理員將自己的特權(quán)授與指定的用戶。若要同時(shí)授與某用戶上述三種授權(quán)中的多種權(quán)力,則必須通過(guò)三個(gè)相應(yīng)的GRANT命令指定。 另外,具有CONNECT和RESOURCE授權(quán)的用戶可以建立自己的表,并在自己建立的表和視圖上具有查詢、插入、修改和刪除的權(quán)力。但通常不能使用其他用戶的關(guān)

32、系,除非能獲得其他用戶轉(zhuǎn)授給他的相應(yīng)權(quán)力。 例:若允許用戶SSE連接到數(shù)據(jù)庫(kù)并可以建立他自己的關(guān)系,則可通過(guò)如下命令授與權(quán)力: GRANT CONNECT TO SSE INENTIFIED BY BD1928 GRANT RESOURCE TO SSE 用戶可用的授權(quán)是指用戶將自己擁有的部分或全部權(quán)力轉(zhuǎn)授給其他用戶的命令形式,其命令格式如下: |SELECT | |INSERT | |DELETE | GRANT|UPDATE(列名1,列名2)|ON|表名 |TO|用戶名|WITH GRANT OPTION |ALTER | |視圖名| |PUBLIC| |NDEX | |ALL | 若對(duì)某

33、一用戶同時(shí)授與多種操作權(quán)力,則操作命令符號(hào)可用“,”相隔。 PUBLIC 表示將權(quán)力授與數(shù)據(jù)庫(kù)的所有用戶,使用時(shí)要注意: 任選項(xiàng)WITH GRANT OPTION表示接到授權(quán)的用戶,具有將其所得到的同時(shí)權(quán)力再轉(zhuǎn)授給其他用戶權(quán)力。 例:如果將表student的查詢權(quán)授與所有用戶,可使用以下命令: GRANT SELECT ON student TO PUBLIC 例:若將表subject的插入與修改權(quán)力授與用戶SSE并使得他具有將這種權(quán)力轉(zhuǎn)授他人的權(quán)力,則可使用以下命令: GRANT INSERT,UPDATE(su_subject) ON subject TO SSE WITH GRANT O

34、PTION 這里,UPDATE后面跟su_subject是指出其所能修改的列。 (2)權(quán)力回收:權(quán)力回收是指回收指定用戶原已授與的某些權(quán)力。與權(quán)力授與命令相匹配,權(quán)力回收也有數(shù)據(jù)庫(kù)管理員專用和用戶可用的兩種形式。 DBA專用的權(quán)力回收命令格式為: |CONNECT | REVOKE|RESOURCE|FROM用戶名 |DBA | 用戶可用的權(quán)力回收命令格式為: |SELECT | |INSERT | |DELETE | REVOKE|UPDATE(列名1,列名2) |ON|表名 |FROM |用戶名| |ALTER | |視圖名| |PUBLIC| |INDEX | |ALL | 例:回收用戶

35、SSE的DBA權(quán)力: REVOKE DBA FROM SSE 2.完整性控制 數(shù)據(jù)庫(kù)的完整性是指數(shù)據(jù)的正確性和相容性,這是數(shù)據(jù)庫(kù)理論中的重要概念。完整性控制的主要目的是防止語(yǔ)義上不正確的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)。關(guān)系系統(tǒng)中的完整性約束條件包括實(shí)體完整性、參照完整性和用戶定義完整性。而完整性約束條件的定義主要是通過(guò)CREATE TABLE語(yǔ)句中的CHECK子句來(lái)完成。另外,還有一些輔助命令可以進(jìn)行數(shù)據(jù)完整性保護(hù)。如UNIQUE和NOT NULL,前者用于防止重復(fù)值進(jìn)入數(shù)據(jù)庫(kù),后者用于防止空值。3.事務(wù)控制 事務(wù)是并發(fā)控制的基本單位,也是恢復(fù)的基本單位。在SQL中支持事務(wù)的概念。所謂事務(wù),是用戶定義的一個(gè)操

36、作序列(集合),這些操作要么都做,要么一個(gè)都不做,是一個(gè)不可分割的整體。一個(gè)事務(wù)通常以BEGIN TRANSACTION開(kāi)始,以COMMIT或ROLLBACK結(jié)束。 SQL提供了事務(wù)提交和事務(wù)撤消兩種命令: (1)事務(wù)提交:事務(wù)提交的命令為: COMMIT WORK 事務(wù)提交標(biāo)志著對(duì)數(shù)據(jù)庫(kù)的某種應(yīng)用操作成功地完成,所有對(duì)數(shù)據(jù)庫(kù)的操作都必須作為事務(wù)提交給系統(tǒng)時(shí)才有效。事務(wù)一經(jīng)提交就不能撤消。 (2)事務(wù)撤消:事務(wù)撤消的命令是: ROLLBACK WORK 事務(wù)撤消標(biāo)志著相應(yīng)事務(wù)對(duì)數(shù)據(jù)庫(kù)操作失敗,因而要撤消對(duì)數(shù)據(jù)庫(kù)的改變,即要“回滾”到相應(yīng)事務(wù)開(kāi)始時(shí)的狀態(tài)。 當(dāng)系統(tǒng)非正常結(jié)束時(shí)(如掉電、系統(tǒng)死機(jī)),將自動(dòng)執(zhí)行ROLLBACK命令 S

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論