免費(fèi)預(yù)覽已結(jié)束,剩余12頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第一章:緒論數(shù)據(jù)庫(DB):長期存儲在計算機(jī)內(nèi)、有組織、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫中的數(shù)據(jù)按照一定的數(shù)據(jù)模型組織、描述和存儲,具有嬌小的冗余度、交稿的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并可為各種用戶共享。數(shù)據(jù)庫管理系統(tǒng)(DBMS):位于用戶和操作系統(tǒng)間的數(shù)據(jù)管理系統(tǒng)的一層數(shù)據(jù)管理軟件。用途:科學(xué)地組織和存儲數(shù)據(jù),高效地獲取和維護(hù)數(shù)據(jù)。包括數(shù)據(jù)定義功能,數(shù)據(jù)組織、存儲和管理,數(shù)據(jù)操縱功能,數(shù)據(jù)庫的事物管理和運(yùn)行管理,數(shù)據(jù)庫的建立和維護(hù)功能,其他功能。數(shù)據(jù)庫系統(tǒng)(DBS):在計算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng),一般由數(shù)據(jù)庫。數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員構(gòu)成。目的:存儲信息并支持用戶檢索和更新所需的信息。數(shù)據(jù)庫系統(tǒng)的特點(diǎn):數(shù)據(jù)結(jié)構(gòu)化;數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充;數(shù)據(jù)獨(dú)立性高;數(shù)據(jù)由DBMS統(tǒng)一管理和控制。概念模型 實(shí)體,客觀存在并可相互區(qū)別的事物稱為實(shí)體。屬性,實(shí)體所具有的某一特性稱為屬性。碼,唯一標(biāo)識實(shí)體的屬性集稱為碼。域,是一組具有相同數(shù)據(jù)類型的值的集合。實(shí)體型,具有相同屬性的實(shí)體必然具有的共同的特征和性質(zhì)。實(shí)體集,同一類型實(shí)體的集合稱為實(shí)體集。聯(lián)系兩個實(shí)體型之間的聯(lián)系 一對一聯(lián)系;一對多聯(lián)系;多對多聯(lián)系關(guān)系模型 關(guān)系,元組,屬性,碼,域,分量,關(guān)系模型關(guān)系數(shù)據(jù)模型的操縱與完整性約束 關(guān)系數(shù)據(jù)模型的操作主要包括查詢,插入,刪除和更新數(shù)據(jù)。這些操作必須滿足關(guān)系完整性約束條件。關(guān)系的完整性約束條件包括三大類:實(shí)體完整性,參照完整性和用戶定義的完整性。數(shù)據(jù)庫系統(tǒng)三級模式結(jié)構(gòu)外模式,模式,內(nèi)模式模式:(邏輯模式)數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。一個數(shù)據(jù)庫只有一個模式。模式的地位:是數(shù)據(jù)庫系統(tǒng)模式結(jié)構(gòu)的中間層,與數(shù)據(jù)的物理存儲細(xì)節(jié)和硬件環(huán)境無關(guān),與具體的應(yīng)用程序、開發(fā)工具及高級程序設(shè)計語言無關(guān)。模式定義的內(nèi)容:數(shù)據(jù)的邏輯結(jié)構(gòu)(數(shù)據(jù)項(xiàng)的名字、類型、取值范圍等),數(shù)據(jù)之間的聯(lián)系,數(shù)據(jù)有關(guān)的安全性、完整性要求外模式:(子模式/用戶模式)數(shù)據(jù)庫用戶(包括應(yīng)用程序員和最終用戶)能夠看見和使用的局部數(shù)據(jù)庫和邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的系統(tǒng)的邏輯表示。一個數(shù)據(jù)庫可以有多個外模式。外模式的地位:介于模式與應(yīng)用之間模式與外模式的關(guān)系:一對多。外模式通常是模式的子集。一個數(shù)據(jù)庫可以有多個外模式。反映了不同的用戶的應(yīng)用需求、看待數(shù)據(jù)的方式、對數(shù)據(jù)保密的要求。對模式中同一數(shù)據(jù),在外模式中的結(jié)構(gòu)、類型、長度、保密級別等都可以不同。外模式與應(yīng)用的關(guān)系:一對多。同一外模式也可以為某一用戶的多個應(yīng)用系統(tǒng)所使用但一個應(yīng)用程序只能使用一個外模式內(nèi)模式:存儲模式或內(nèi)視圖)是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部實(shí)際存儲的表示方式:記錄的存儲方式(順序,B樹,hash方法存儲),索引的組織方式,數(shù)據(jù)是否壓縮存儲,數(shù)據(jù)是否加密。數(shù)據(jù)存儲記錄結(jié)構(gòu)的規(guī)定,一個數(shù)據(jù)庫只有一個內(nèi)模式三級模式的優(yōu)點(diǎn):(1)保證數(shù)據(jù)的獨(dú)立性(內(nèi)模式與模式分開物理獨(dú)立;外模式與模式分開邏輯獨(dú)立)(2)簡化用戶窗口 (3)有利于數(shù)據(jù)共享 (4)利于數(shù)據(jù)的安全保密(5)數(shù)據(jù)存儲由DBMS管理(用戶不用考慮存取路徑等細(xì)節(jié))二級映像功能:(1) 外模式/模式映像(應(yīng)用可擴(kuò)充性)定義外模式(局部邏輯結(jié)構(gòu))與模式(全局邏輯結(jié)構(gòu))之間的對應(yīng)關(guān)系,映象定義通常包含在各自外模式的描述中,每一個外模式,數(shù)據(jù)庫系統(tǒng)都有一個外模式模式映象。用途:保證數(shù)據(jù)的邏輯獨(dú)立性當(dāng)模式改變時,數(shù)據(jù)庫管理員修改有關(guān)的外模式模式映象,使外模式保持不變應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性,簡稱數(shù)據(jù)的邏輯獨(dú)立性。(2) 模式/內(nèi)模式映像(空間利用率,存取效率)模式/內(nèi)模式映像是唯一的,它定義了數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)之間的對應(yīng)關(guān)。數(shù)據(jù)庫中模式內(nèi)模式映象是唯一的。該映象定義通常包含在模式描述中。用途:保證數(shù)據(jù)的物理獨(dú)立性當(dāng)數(shù)據(jù)庫的存儲結(jié)構(gòu)改變了(例如選用了另一種存儲結(jié)構(gòu)),數(shù)據(jù)庫管理員修改模式內(nèi)模式映象,使模式保持不變。應(yīng)用程序不受影響。保證了數(shù)據(jù)與程序的物理獨(dú)立性,簡稱數(shù)據(jù)的物理獨(dú)立性。優(yōu)點(diǎn):(1)保證了數(shù)據(jù)庫外模式的穩(wěn)定性。(2)從底層保證了應(yīng)用程序的穩(wěn)定性,除非應(yīng)用需求本身發(fā)生變化,否則應(yīng)用程序一般不需要修改。(3)數(shù)據(jù)與程序之間的獨(dú)立性,使得數(shù)據(jù)的定義和描述可以從應(yīng)用程序中分離出去。什么叫數(shù)據(jù)與程序的物理獨(dú)立性?什么叫數(shù)據(jù)與程序的邏輯獨(dú)立性? 為什么數(shù)據(jù)庫系統(tǒng)具有數(shù)據(jù)與程序的獨(dú)立性?1、數(shù)據(jù)與程序的邏輯獨(dú)立性:當(dāng)模式改變時,數(shù)據(jù)庫管理員修改有關(guān)的外模式模式映象,使外模式保持不變。從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性,簡稱數(shù)據(jù)的邏輯獨(dú)立性。2、數(shù)據(jù)與程序的物理獨(dú)立性:當(dāng)數(shù)據(jù)庫的存儲結(jié)構(gòu)改變了(例如選用了另一種存儲結(jié)構(gòu)),數(shù)據(jù)庫管理員修改模式內(nèi)模式映象,使模式保持不變。應(yīng)用程序不受影響。保證了數(shù)據(jù)與程序的物理獨(dú)立性,簡稱數(shù)據(jù)的物理獨(dú)立性。數(shù)據(jù)庫管理系統(tǒng)在三級模式之間錯提供的二層影響保證了數(shù)據(jù)系統(tǒng)中的數(shù)據(jù)具有較高的邏輯獨(dú)立性和物理獨(dú)立性。數(shù)據(jù)庫系統(tǒng)的組成 硬件平臺及數(shù)據(jù)庫,軟件,人員第二章:關(guān)系數(shù)據(jù)庫關(guān)系的完整性約束實(shí)體完整性和參照完整性:關(guān)系模型必須滿足的完整性約束條件稱為關(guān)系的兩個不變性,應(yīng)該由關(guān)系系統(tǒng)自動支持。用戶定義的完整性:應(yīng)用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語義約束。外碼,主碼,候選碼的概念候選碼:若關(guān)系中的某一屬性組的職能唯一地標(biāo)識一個元組,則稱該屬性組為候選碼。主碼:若一個關(guān)系有多個候選碼,則選定期中一個為主碼。外部碼:設(shè)F是基本關(guān)系R的一個或一組屬性。但不是關(guān)系R的碼,如果F與基本關(guān)系S的主碼K想對應(yīng),則稱F是基本關(guān)系R的外部碼,簡稱外碼。關(guān)系的3類完整性約束概念實(shí)體完整性:若屬性(指一個或一組屬性)A是基本關(guān)系R的主屬性, A不能取空值。參照完整性:若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它是基本關(guān)系S的主碼K相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值);或者等于S中某個元組的主碼值。用戶定義的完整性:針對某一具體關(guān)系數(shù)據(jù)庫的約束條件。反映某一具體應(yīng)用所設(shè)計的數(shù)據(jù)必須滿足的語義要求。關(guān)系操作的特點(diǎn),關(guān)系代數(shù)中的各種運(yùn)算關(guān)系操作的特點(diǎn)是集合操作方式,即操作的對象和結(jié)果是集合。關(guān)系代數(shù)1、并(RS)仍為n目關(guān)系,由屬于R或?qū)儆赟的元組組成。RS = t|t Rt S 2、差(R S)仍為n目關(guān)系,由屬于R而不屬于S的所有元組組成。R -S = t|tRtS 3、交(RS)仍為n目關(guān)系,由既屬于R又屬于S的元組組成。RS = t|t Rt S RS = R (R-S)4、笛卡爾積R: n目關(guān)系,k1個元組;S: m目關(guān)系,k2個元組;RS。9、選擇:選擇又稱為限制(Restriction):對元組按照條件進(jìn)行篩選。在關(guān)系R中選擇滿足給定條件的諸元組F(R) = t|tRF(t)= 真。10、投影:投影運(yùn)算符的含義:從R中選擇出若干屬性列組成新的關(guān)系A(chǔ)(R) = tA | t R A:R中的屬性列投影操作主要是從列的角度進(jìn)行運(yùn)算。但投影之后不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組(避免重復(fù)行)。11、連接:連接也稱為連接:兩張表中的元組有條件的串接。從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組R S = | tr Rts StrAtsB 外連接:如果把舍棄的元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值(Null),這種連接就叫做外連接。左外連接:如果只把左邊關(guān)系R中要舍棄的元組保留就叫做左外連接(LEFT OUTER JOIN或LEFT JOIN)。右外連接:如果只把右邊關(guān)系S中要舍棄的元組保留就叫做右外連接(RIGHT OUTER JOIN或RIGHT JOIN)。12、除 :給定關(guān)系R (X,Y) 和S (Y,Z),其中X,Y,Z為屬性組;R中的Y與S 中的Y可以有不同的屬性名,但必須出自相同的域集;R與S的除運(yùn)算得到一個新的關(guān)系P(X),P是R中滿足下列條件的元組在 X 屬性列上的投影第三章:關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL注意:SQL(Oracle除外)一般不提供修改視圖定義和索引定義的操作,需要先刪除再重建定義基本表:CREATE TABLE ( , , );列級完整性約束-涉及到該表的一個屬性 NOT NULL :非空值約束 UNIQUE:唯一性(單值約束)約束 PRIMARY KEY:主碼約束 DEFAULT :默認(rèn)(缺?。┘s束 Check :核查約束,定義校驗(yàn)條件 NOT NULL :非空值約束 UNIQUE:唯一性(單值約束)約束 PRIMARY KEY:主碼約束 DEFAULT :默認(rèn)(缺?。┘s束 Check :核查約束,定義校驗(yàn)條件表級完整性約束-涉及到該表的一個或多個屬性。 UNIQUE(屬性列列表) :限定各列取值唯一 PRIMARY KEY (屬性列列表) :指定主碼 FOREIGN KEY (屬性列列表) REFERENCES (屬性列列表) Check() :檢查約束 PRIMARY KEY與 UNIQUE的區(qū)別?例:建立“學(xué)生”表Student,學(xué)號是主碼,姓名取值唯一 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY,/*主碼*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20); 數(shù)據(jù)類型修改基本表:ALTER TABLE ADD 完整性約束 DROP | ALTER COLUMN ;例:向Student表增加“入學(xué)時間”列,其數(shù)據(jù)類型為日期型ALTER TABLE Student ADD S_entrance DATE;不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值將年齡的數(shù)據(jù)類型由字符型(假設(shè)原來的數(shù)據(jù)類型是字符型)改為整數(shù)ALTER TABLE Student ALTER COLUMN Sage INT;注:修改原有的列定義有可能會破壞已有數(shù)據(jù) 增加課程名稱必須取唯一值的約束條件。ALTER TABLE Course ADD UNIQUE(Cname); 直接刪除屬性列:(新標(biāo)準(zhǔn)) 例: ALTER TABLE Student Drop Sage;刪除基本表 :DROP TABLE RESTRICT| CASCADE;RESTRICT:(受限) 欲刪除的基本表不能被其他表的約束所引用,如果存在依賴該表的對象(觸發(fā)器,視圖等),則此表不能被刪除。CASCADE:(級聯(lián))在刪除基本表的同時,相關(guān)的依賴對象一起刪除。例:刪除Student表 DROP TABLE Student CASCADE ;基本表定義被刪除,數(shù)據(jù)被刪除;表上建立的索引、視圖、觸發(fā)器等一般也將被刪除 。刪除索引 :DROP INDEX ;刪除索引時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。例: 刪除Student表的Stusname索引:DROP INDEX Stusname2、數(shù)據(jù)查詢:基本格式單表查詢 選擇表中的若干列 (投影)查詢指定列 (相當(dāng)于A(R),A= A1,A2,An ) 例;查詢?nèi)w學(xué)生的學(xué)號與姓名SELECT Sno,SnameFROM Student;查詢?nèi)苛校涸赟ELECT關(guān)鍵字后面列出所有列名按用戶指定順序顯示。 將指定為 *按關(guān)系模式中的屬性順序顯示。例:查詢?nèi)w學(xué)生的詳細(xì)記錄SELECT Sno,Sname,Ssex,Sdept , SageFROM Student; 或 SELECT *FROM Student;P.S: SELECT子句的可以為:查詢經(jīng)過計算的值例:查全體學(xué)生的姓名及其出生年份SELECT Sname,2011-Sage /*假定當(dāng)年的年份為2011年*/FROM Student;輸出結(jié)果:Sname 2011-Sage李勇 1991劉晨 1992字符串常量、函數(shù)例:查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名SELECT Sname,Year of Birth: ,2004-Sage,ISLOWER(Sdept)FROM Student;輸出結(jié)果:Sname Year of Birth: 2004-Sage ISLOWER(Sdept)李勇 Year of Birth: 1984 cs劉晨 Year of Birth: 1985 is列別名SELECT Sname as NAME,Year of Birth: as BIRTH,2011-Sage as BIRTHDAY,LOWER(Sdept) as DEPARTMENTFROM Student;輸出結(jié)果:NAME BIRTH BIRTHDAY DEPARTMENT- - - -李勇 Year of Birth: 1991 cs劉晨 Year of Birth: 1992 is選擇表中的若干元組(選擇)消除重復(fù)性:指定DISTINCT關(guān)鍵詞,去掉表中重復(fù)的行 SELECT DISTINCT Sno FROM SC;注意 DISTINCT短語的作用范圍是所有目標(biāo)列 錯誤的寫法 SELECT DISTINCT Cno,DISTINCT Grade FROM SC;正確的寫法 SELECT DISTINCT Cno,Grade FROM SC;SELECT 子句缺省情況是保留重復(fù)元組(ALL), 例:查詢選修了課程的學(xué)生學(xué)號。SELECT Sno FROM SC;等價于:SELECT ALL Sno FROM SC;查詢滿足條件的元組WHERE子句常用的查詢條件(相當(dāng)于F)比較大小使用比較運(yùn)算符 或邏輯運(yùn)算符NOT + 比較運(yùn)算符例:查詢計算機(jī)科學(xué)系全體學(xué)生的名單SELECT SnameFROM StudentWHERE Sdept=CS; 例:查詢所有年齡在20歲以下的學(xué)生姓名及其年齡SELECT Sname,Sage FROM Student WHERE Sage =20確定范圍 BETWEEN AND NOT BETWEEN AND 例;查詢年齡在2023歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND 23;/Sage=20 and Sage=23例:查詢年齡不在2023歲之間的學(xué)生姓名、系別和年齡SELECT Sname,Sdept,SageFROM StudentWHERE Sage NOT BETWEEN 20 AND 23;/Sage23確定集合IN , NOT IN 例:查詢信息系(IS)、數(shù)學(xué)系(MA)和計算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別SELECT Sname,SsexFROM StudentWHERE Sdept IN ( IS,MA,CS );例:查詢既不是信息系、數(shù)學(xué)系,也不是計算機(jī)科學(xué)系的學(xué)生的姓名和性別SELECT Sname,SsexFROM StudentWHERE Sdept NOT IN ( IS,MA,CS );自負(fù)匹配NOT LIKE ESCAPE 匹配串為固定字符串例:查詢學(xué)號為200215121的學(xué)生的詳細(xì)情況。SELECT * SELECT *FROM Student 等價于: FROM Student WHERE Sno LIKE 200215121; WHERE Sno = 200215121 ;匹配串為含通配符的字符串%:代表任意長度(可以是0)的字符串_:代表任意單個字符字符串本身就含有 % 或 _ 時,在% 或 _ 之前加上轉(zhuǎn)義符“”要使用ESCAPE 將通配符轉(zhuǎn)義為普通字符。如果 要作為一個普通字符,用連續(xù)兩個 表示一個真正的。例:查詢以DB_開頭,且倒數(shù)第3個字符為 i的課程的詳細(xì)情況。SELECT *FROM CourseWHERE Cname LIKE DB_%i_ _ ESCAPE ;涉及空值的查詢 IS NULL 或 IS NOT NULL “IS” 不能用 “=” 代替例:查所有有成績的學(xué)生學(xué)號和課程號SELECT Sno,CnoFROM SCWHERE Grade IS NOT NULL;多重條件查詢:AND和 OR來聯(lián)結(jié)多個查詢條件,AND的優(yōu)先級高于OR,可以用括號改變優(yōu)先級,可用來實(shí) 現(xiàn)多種其他謂詞。NOT INNOT BETWEEN AND 改寫 例:查詢信息系(IS)、數(shù)學(xué)系(MA)和計算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別SELECT Sname,SsexFROM StudentWHERE Sdept IN ( IS,MA,CS )可改寫為:SELECT Sname,SsexFROM StudentWHERE Sdept= IS OR Sdept= MA OR Sdept= CS ORDER BY子句:對查詢結(jié)果排序 可以按一個或多個屬性列排序:升序:ASC;降序:DESC;缺省值為升序。當(dāng)排序列含空值時:空值最大ASC:排序列為空值的元組最后顯示;DESC:排序列為空值的元組最先顯示。例:查詢選修了3號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分?jǐn)?shù)降序排列SELECT Sno,GradeFROM SCWHERE Cno= 3 ORDER BY Grade DESC;聚集函數(shù):對查詢結(jié)果集中的某列進(jìn)行計算或統(tǒng)計。計數(shù)COUNT(DISTINCT|ALL *) COUNT(DISTINCT|ALL )計算總和SUM(DISTINCT|ALL )計算平均值 AVG(DISTINCT|ALL )最大最小值MAX(DISTINCT|ALL ) MIN(DISTINCT|ALL )例:查詢學(xué)生200215012選修課程的總學(xué)分?jǐn)?shù)SELECT SUM(Ccredit)FROM SC, CourseWHER Sno=200215012 AND SC.Cno=Course.Cno; 注:除Count(*),都要跳過空值;Where子句不能使用聚集函數(shù)。GROUP BY子句:對查詢結(jié)果分組。用途細(xì)化聚集函數(shù)的作用對象未對查詢結(jié)果分組,聚集函數(shù)將作用于整個查詢結(jié)果對查詢結(jié)果分組后,聚集函數(shù)將分別作用于每個組使用GROUP BY 后:其SELECT子句的列名列表中只能出現(xiàn)分組屬性和集函數(shù)。 如果分組后還要按照條件對這些組進(jìn)行篩選,可使用having 短語指定篩選條件例: 查詢選修了3門以上課程的學(xué)生學(xué)號SELECT SnoFROM SCGROUP BY SnoHAVING COUNT(*) 3; 例:查詢有3門以上課程是90分以上學(xué)生的學(xué)號及(90分以上的)課程數(shù)SELECT Sno, COUNT(*) FROM SCWhere Grade 90GROUP BY SnoHAVING COUNT(*) 3;HAVING短語與WHERE子句的區(qū)別:作用對象不同WHERE子句作用于基表或視圖,從中選擇滿足條件的元組HAVING短語作用于組,從中選擇滿足條件的組。*連接查詢*p100頁*嵌套查詢*p104頁 *重點(diǎn)*數(shù)據(jù)更新(1)插入數(shù)據(jù)插入元組INSERTINTO (,)VALUES ( , )功能:將新元組插入指定表中;新元組的屬性列1的值為常量1,屬性列2的值為常量2,。INTO子句:屬性列的順序可與表定義中的順序不一致,但須指定列名;沒有指定屬性列,表示要插入的是一條完整的元組;指定部分屬性列,未指定的屬性列取空值,具有NOT NULL的屬性列除外。VALUES子句:提供的值必須與INTO子句匹配,值的個數(shù),值的類型。例:將一個新學(xué)生元組(學(xué)號:200215128;姓名:陳冬;性別:男;所在系:IS;年齡:18歲)插入到Student表中INSERTINTO Student (Sno,Sname,Ssex,Sdept,Sage)VALUES (200215128,陳冬,男,IS,18);例: 將學(xué)生張成民的信息插入到Student表中INSERTINTO StudentVALUES (200215126, 張成民, 男,18,CS);例:插入一條選課記錄( 200215128,1 )。INSERTINTO SC(Sno,Cno)VALUES ( 200215128 , 1 );RDBMS將在新插入記錄的Grade列上自動地賦空值?;蛘撸篒NSERTINTO SCVALUES ( 200215128 , 1 ,NULL);因?yàn)闆]有指出SC的屬性名,在GRADE列上要明確給出空值插入子查詢結(jié)果Insert Into (,)子查詢(select等);(2)修改數(shù)據(jù)UPDATE SET =,=WHERE ;SET子句:指定修改方式,要修改的列,修改后取值:。WHERE子句:指定要修改的元組,缺省表示要修改表中的所有元組。功能:修改指定表中滿足WHERE子句條件的元組。修改某一個元組的值例:將學(xué)生200215121的年齡改為22歲UPDATE StudentSET Sage=22WHERE Sno= 200215121 ;修改多個元組的值例:將所有學(xué)生的年齡增加1歲UPDATE StudentSET Sage= Sage+1;帶子查詢的修改語句 子查詢須放在比較運(yùn)算符之后例:將計算機(jī)科學(xué)系全體學(xué)生的成績置零。UPDATE SCSET Grade=0WHERE CS=(SELETE SdeptFROM StudentWHERE Student.Sno = SC.Sno);(3)刪除數(shù)據(jù)DELETEFROM WHERE ;功能:刪除指定表中滿足WHERE子句條件的元組。WHERE子句:指定要刪除的元組;缺省表示要刪除表中的全部元組,表的定義仍在數(shù)據(jù)字典中。刪除某一個元組的值例:刪除學(xué)號為200215128的學(xué)生記錄DELETEFROM StudentWHERE Sno= 200215128 ;刪除多個元組的值例:刪除所有的學(xué)生選課記錄DELETEFROM SC;帶子查詢的刪除語句例:刪除計算機(jī)科學(xué)系所有學(xué)生的選課記錄DELETEFROM SCWHERE CS=(SELETE SdeptFROM StudentWHERE Student.Sno=SC.Sno);4、視 圖特點(diǎn):虛表,是從一個或幾個基本表(或視圖)導(dǎo)出的表;只存放視圖的定義,不存放視圖對應(yīng)的數(shù)據(jù);基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變?;谝晥D的操作: 查詢、刪除、受限更新、定義基于該視圖的新視圖。(1)定義視圖建立視圖CREATE VIEW ( ,)AS WITH CHECK OPTION;子查詢:不允許含有ORDER BY子句和DISTINCT短語。WITH CHECK OPTION:表示對視圖進(jìn)行UPDATE,INSERT和DELETE操作時要保證更新、插入或刪除的行滿足視圖定義中的謂詞條件(即子查詢中的條件表達(dá)式)。組成視圖的屬性列名:全部省略或全部指定,但在下列三種情況下必須明確指定組成視圖的所有列名:某個目標(biāo)列不是單純的屬性名,而是聚集函數(shù)或列表達(dá)式;多表連接時選出了幾個同名列作為視圖的字段;需要在視圖中為某個列啟用新的名字。RDBMS執(zhí)行CREATE VIEW語句時只是把視圖定義存入數(shù)據(jù)字典,并不執(zhí)行其中的SELECT語句。在對視圖查詢時,按視圖的定義從基本表中將數(shù)據(jù)查出。行列子集視圖:從單個基本表導(dǎo)出 ,只是去掉了基本表的某些行和某些列保留了主碼例:建立信息系學(xué)生的視圖CREATE VIEW IS_StudentAS SELECT Sno,Sname,SageFROM StudentWHERE Sdept= IS;WITH CHECK OPTION 例:建立信息系學(xué)生的視圖,并要求進(jìn)行修改和插入操作時仍需保證該視圖只有信息系的學(xué)生 CREATE VIEW IS_StudentAS SELECT Sno,Sname,SageFROM StudentWHERE Sdept= ISWITH CHECK OPTION;加上了WITH CHECK OPTION子句:RDBMS對IS_Student視圖的更新操作:修改操作:自動加上Sdept= IS的條件;刪除操作:自動加上Sdept= IS的條件;插入操作:自動檢查Sdept屬性值是否為IS 。如果不是,則拒絕該插入操作。如果沒有提供Sdept屬性值,則自動定義Sdept為IS?;诙鄠€基表的視圖例:建立信息系選修了1號課程的學(xué)生視圖CREATE VIEW IS_S1(Sno,Sname,Grade)AS SELECT Student.Sno,Sname,GradeFROM Student,SCWHERE Sdept= IS ANDStudent.Sno=SC.Sno ANDSC.Cno= 1;基于視圖的視圖例:建立信息系選修了1號課程且成績在90分以上的學(xué)生的視圖CREATE VIEW IS_S2ASSELECT Sno,Sname,GradeFROM IS_S1WHERE Grade=90;由于視圖中的數(shù)據(jù)不會實(shí)際存儲,所以定義視圖時可根據(jù)應(yīng)用的需要,設(shè)置一些派生屬性列或虛擬列,以便于查詢和統(tǒng)計。以 SELECT * 方式創(chuàng)建的視圖可擴(kuò)充性差,應(yīng)盡可能避免 。缺點(diǎn):修改基表Student的結(jié)構(gòu)后,Student表與F_Student視圖的映象關(guān)系被破壞,導(dǎo)致該視圖不能正確工作。刪除視圖DROP VIEW ;該語句從數(shù)據(jù)字典中刪除指定的視圖定義。如果該視圖上還導(dǎo)出了其他視圖,使用CASCADE級聯(lián)刪除語句,把該視圖和由它導(dǎo)出的所有視圖一起刪除 。刪除基表時,由該基表導(dǎo)出的所有視圖定義都必須顯式地使用DROP VIEW語句刪除。例:刪除視圖BT_S:DROP VIEW BT_S; 刪除視圖IS_S1:拒絕執(zhí)行級聯(lián)刪除:DROP VIEW IS_S1 CASCADE; (2) 查詢視圖:查詢視圖與查詢基本表相同,視圖定義后,就可以像對待基本表一樣對視圖進(jìn)行查詢(SELECT)操作。視圖消解法(View Resolution)進(jìn)行有效性檢查,檢查查詢的表、視圖等是否存在。如果存在,則從數(shù)據(jù)字典中取出視圖的定義 ;轉(zhuǎn)換成等價的對基本表的查詢,把視圖定義中的子查詢與用戶的查詢結(jié)合起來;執(zhí)行修正后的查詢。例:在信息系學(xué)生的視圖中找出年齡小于20歲的學(xué)生SELECT Sno,SageFROM IS_StudentWHERE Sage20;視圖消解轉(zhuǎn)換后的查詢語句為:SELECT Sno,Sage FROM StudentWHERE Sdept= IS AND Sage=90;S_G視圖的子查詢定義: CREATE VIEW S_G (Sno,Gavg)AS SELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;(3) 更新視圖DBMS實(shí)現(xiàn)視圖更新的方法:轉(zhuǎn)換為對基本表的更新。視圖消解法(View Resolution)。 只有對成為“可更新”視圖才能進(jìn)行更新操作。SQL2對“可更新”視圖給出正式定義:從關(guān)系R選出某些屬性(用select 而不是 select distinct)定義的視圖,R本身可以是可更新的視圖;Where中不能嵌套涉及R的子查詢;Select必須包括足夠多的屬性,所有not null的屬性必須包括。對于視圖元組的更新操作(INSERT、DELETE、UPDATA),有以下三條規(guī)則:如果一個視圖是從多個基本表使用聯(lián)接操作導(dǎo)出的,那么不允許對這個視圖執(zhí)行更新操作。如果在導(dǎo)出視圖的過程中,使用了分組和聚集函數(shù)操作,也不允許對這個視圖執(zhí)行更新操作。行列子集視圖可以執(zhí)行更新操作。在SQL2中,允許更新的視圖在定義時,必須加上“WITH CHECK OPTION”短語。DBMS在更新視圖時會進(jìn)行檢查,防止用戶通過視圖對不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進(jìn)行更新。例:將信息系學(xué)生視圖IS_Student中學(xué)號200215122的學(xué)生姓名改為“劉辰”。UPDATE IS_StudentSET Sname= 劉辰WHERE Sno= 200215122 ;轉(zhuǎn)換后的語句:UPDATE StudentSET Sname= 劉辰WHERE Sno= 200215122 AND Sdept= IS;例:向信息系學(xué)生視圖IS_S中插入一個新的學(xué)生記錄:200215129,趙新,20歲INSERTINTO IS_StudentVALUES(95029,趙新,20);轉(zhuǎn)換為對基本表的更新:INSERTINTO Student(Sno,Sname,Sage,Sdept)VALUES(200215129 ,趙新,20,IS );例:刪除信息系學(xué)生視圖IS_Student中學(xué)號為200215129的記錄 DELETEFROM IS_StudentWHERE Sno= 200215129 ;轉(zhuǎn)換為對基本表的更新:DELETEFROM StudentWHERE Sno= 200215129 AND Sdept= IS;更新視圖的限制:一些視圖是不可更新的,因?yàn)閷@些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對相應(yīng)基本表的更新。對其他類型視圖的更新不同系統(tǒng)有不同限制:(1) 若視圖是由兩個以上基本表導(dǎo)出的,則此視圖不允許更新(2) 若視圖的字段來自字段表達(dá)式或常數(shù),則不允許對此視圖執(zhí)行INSERT和UPDATE操作,但允許執(zhí)行DELETE操作。(3) 若視圖的字段來自集函數(shù),則此視圖不允許更新。(4) 若視圖定義中含有GROUP BY子句,則此視圖不允許更新。(5) 若視圖定義中含有DISTINCT短語,則此視圖不允許更新。(6) 若視圖定義中有嵌套查詢,并且內(nèi)層查詢的FROM子句中涉及的表也是導(dǎo)出該視圖的基本表,則此視圖不允許更新。(7) 一個不允許更新的視圖上定義的視圖也不允許更新第四章:數(shù)據(jù)庫的安全性計算機(jī)系統(tǒng)的三類安全性問題技術(shù)安全,管理安全,政策法律數(shù)據(jù)庫安全性控制(6種)1. 用戶標(biāo)識與鑒別 用戶標(biāo)識,口令2. 存取控制3.自主存取控制方法:定義各個用戶對不同數(shù)據(jù)對象的存取權(quán)限。當(dāng)用戶要訪問數(shù)據(jù)庫時,首先要檢查其存取權(quán)限,以防止非法用戶對數(shù)據(jù)庫進(jìn)行存取?!白灾鞔嫒】刂啤敝小白灾鳌钡暮x:用戶可以將自己所擁有的存取權(quán)限“自主”地授予他人,即用戶具有一定的“自主”權(quán)。4.授權(quán)與收回語句。GRANT 語句和 REVOKE 語句實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫系統(tǒng)中存取控制權(quán)限:1、GRANT(授權(quán))GRANT語句的一般格式:GRANT ,. ON , TO ,.WITH GRANT OPTION;將對指定操作對象的指定操作權(quán)限授予指定的用戶發(fā)出GRANT:DBA,數(shù)據(jù)庫對象創(chuàng)建者(即屬主Owner),擁有該權(quán)限的用戶接受權(quán)限的用戶 :一個或多個具體用戶;PUBLIC(全體用戶)。例:把查詢Student表權(quán)限授給用戶U1GRANT SELECT ON TABLE Student TO U1;例:把查詢Student表和修改學(xué)生學(xué)號的權(quán)限授給用戶U4 GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;對屬性列的授權(quán)時必須明確指出相應(yīng)屬性列名 2、REVOKE:授予的權(quán)限可以由DBA或其他授權(quán)者用REVOKE語句收回REVOKE語句的一般格式為:REVOKE ,. ON , FROM ,. CASCADE|RESTRICT;把指定對象的指定操作權(quán)限從指定用戶處收回。例:把用戶U4修改學(xué)生學(xué)號的權(quán)限收回REVOKE UPDATE(Sno)ON TABLE Student FROM U4;例:收回所有用戶對表SC的查詢權(quán)限REVOKE SELECT ON TABLE SC FROM PUBLIC;例:把用戶U5對SC表的INSERT權(quán)限收回REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;(缺省是RESTRICT)將用戶U5的INSERT權(quán)限收回的時候必須級聯(lián)(CASCADE)收回,因?yàn)閁5將SC的INSERT權(quán)限授予U6,U6又將其授予U7,CASCADE系統(tǒng)只收回直接或間接從U5處獲得的權(quán)限。Grant 和Revoke向用戶授予或收回對數(shù)據(jù)的操作權(quán)限3、創(chuàng)建數(shù)據(jù)庫模式的權(quán)限 :DBA在創(chuàng)建用戶時實(shí)現(xiàn)CREATE USER語句格式CREATE USER WITHDBA | RESOURCE | CONNECT擁有DBA權(quán)限的用戶是系統(tǒng)中的超級用戶;只有系統(tǒng)的超級用戶才有權(quán)創(chuàng)建新的數(shù)據(jù)庫用戶;如果沒有指定創(chuàng)建的新用戶的權(quán)限,默認(rèn)該用戶擁有CONNECT權(quán)限,只能登錄數(shù)據(jù)庫.。5. 數(shù)據(jù)庫角色 角色的創(chuàng)建,給角色授權(quán),將一個角色授予其他角色或用戶6. 強(qiáng)制存取控制方法:每一個數(shù)據(jù)對象被(強(qiáng)制地)標(biāo)以一定的加密級別,每位用戶也被(強(qiáng)制地)授予某一級別的許可證。系統(tǒng)規(guī)定只有具有某一許可證級別的用戶才能存取加密級別的數(shù)據(jù)對象。強(qiáng)制存取控制(MAC)是對數(shù)據(jù)本身進(jìn)行密級標(biāo)記,無論數(shù)據(jù)如何復(fù)制,標(biāo)記與數(shù)據(jù)是一個不可分的整體,只有符合密級標(biāo)記要求的用戶才可以操縱數(shù)據(jù),從而提高了更高級別的安全性。第五章:數(shù)據(jù)庫的完整性 看書。實(shí)體完整性(定義)參照完整性 用戶定義完整性第六章:關(guān)系數(shù)據(jù)理論1、函數(shù)依賴:設(shè)R(U)是一個屬性集U上的關(guān)系模式,X和Y是U的子集, 若對于R(U)的任意一個可能的關(guān)系r,r中不可能存在兩個元組在X上的屬性值相等, 而在Y上的屬性值不等, 則稱 “X函數(shù)確定Y” 或 “Y函數(shù)依賴于X”,記作XY。所謂函數(shù)依賴是指關(guān)系中屬性或?qū)傩越M的值可以決定其它屬性的值,設(shè)R(U)是屬性集U上的關(guān)系模式,X、Y是U的子集:如果X和Y之間是1:1關(guān)系(一對一關(guān)系),如學(xué)校和校長之間就是1:1關(guān)系,則存在函數(shù)依賴X Y和Y X。如果X和Y之間是1:n關(guān)系(一對多關(guān)系),如年齡和姓名之間就是1:n關(guān)系,則存在函數(shù)依賴Y X。如果X和Y之間是m:n關(guān)系(多對多關(guān)系),如學(xué)生和課程之間就是m:n關(guān)系,則X和Y之間不存在函數(shù)依賴。在關(guān)系模式R(U)中,對于U的子集X和Y,如果XY,但Y X,則稱XY是非平凡的函數(shù)依賴;若XY,但Y X, 則稱XY是平凡的函數(shù)依賴。例:在關(guān)系SC(Sno, Cno, Grade)中,非平凡函數(shù)依賴: (Sno, Cno) Grade;平凡函數(shù)依賴: (Sno, Cno) Sno (Sno, Cno) Cno若XY,則X稱為這個函數(shù)依賴的決定屬性組,也稱為決定因素(Determinant)。2、 完全函數(shù)依賴: 在R(U)中,如果XY,并且對于X的任何一個真子集X,都有X Y, 則稱Y對X完全函數(shù)依賴,記作。3、部分函數(shù)依賴:若XY,但Y不完全函數(shù)依賴于X,則稱Y對X部分函數(shù)依賴,記作例:中 (Sno,Cno)Grade是完全函數(shù)依賴,(Sno,Cno)Sdept是部分函數(shù)依賴Sno Sdept成立,且Sno是(Sno,Cno)的真子集。當(dāng)存在部分依賴時,就會產(chǎn)生數(shù)據(jù)冗余。4、傳遞函數(shù)依賴:在R(U)中,如果XY,(YX) ,YX ,YZ,Z Y,則稱Z對X傳遞函數(shù)依賴,記為:注: 如果YX, 即XY,則Z直接依賴于X。例: 在關(guān)系Std(Sno, Sname,Sdept, Mname)中,有:Sno Sdept,Sdept MnameMname傳遞函數(shù)依賴于Sno5、侯選碼:設(shè)K為R中的屬性或?qū)傩越M,若KU (每個屬性), 則K稱為R的侯選碼(Candidate Key)注K滿足兩個條件:1K完全函數(shù)決定該關(guān)系的所有其它屬性。2.K的任何真子集都不能完全函數(shù)決定R的所有其它屬性,K必須是最小的。 若候選碼多于一個,則選定其中的一個做為主碼(Primary Key),通常稱之為碼。主屬性(Prime attribute):包含在任何一個候選碼中的屬性。非主屬性或非碼屬性:不包含在任何碼中的屬性。例:關(guān)系模式S(Sno,Sdept,Sage),單個屬性Sno是碼,SC(Sno,Cno,Grade)中,(Sno,Cno)是碼由于碼能唯一確定一個元組,所以關(guān)系的碼函數(shù)決定該關(guān)系的所有屬;一個關(guān)系中的所有屬性都函數(shù)依賴于該關(guān)系的碼。例:關(guān)系模式R(P,W,A)P:演奏者 W:作品 A:聽眾:一個演奏者可以演奏多個作品,某一作品可被多個演奏者演奏,聽眾可以欣賞不同演奏者的不同作品。碼為(P,W,A),即All-Key 6、外部碼: 關(guān)系模式 R 中屬性或?qū)傩越MX 并非 R的碼,但 X 是另一個關(guān)系模式的碼,則稱 X 是R 的外部碼(Foreign key)也稱外碼如在SC(Sno,Cno,Grade)中,Sno不是碼,但Sno是關(guān)系模式S(Sno,Sdept,Sage)的碼,則Sno是關(guān)系模式SC的外部碼 主碼與外部碼一起提供了表示關(guān)系之間聯(lián)系的手段各種范式之間存在聯(lián)系:1、1NF :如果一個關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),則R1NF第一范式是對關(guān)系模式的最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫;簡而言之,第一范式就是無重復(fù)的列,關(guān)系數(shù)據(jù)庫研究的關(guān)系都是規(guī)范化的關(guān)系。但是滿足第一范式的關(guān)系模式并不一定是一個好的關(guān)系模式。例:關(guān)系模式 S-L-C
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年HDTV彩色顯像管及其材料和部件項(xiàng)目發(fā)展計劃
- 成都師范學(xué)院《農(nóng)業(yè)裝備控制工程基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 成都理工大學(xué)工程技術(shù)學(xué)院《現(xiàn)代素描》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024新能源車輛租賃運(yùn)營服務(wù)合同
- 2024年版房屋買賣合同范例
- 成都錦城學(xué)院《職業(yè)安全與健康》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度個人創(chuàng)業(yè)項(xiàng)目股權(quán)融資借款合同3篇
- 2024年適用:企業(yè)短期融資借款合同2篇
- 2025年度新型投資基金代持與合規(guī)管理合同3篇
- 2024版五金商品購銷合同
- 2025年上半年河南省西峽縣部分事業(yè)單位招考易考易錯模擬試題(共500題)試卷后附參考答案-1
- 深交所創(chuàng)業(yè)板注冊制發(fā)行上市審核動態(tài)(2020-2022)
- 手術(shù)室護(hù)理組長競聘
- 電力系統(tǒng)繼電保護(hù)試題以及答案(二)
- 小學(xué)生防打架斗毆安全教育
- 2024-2025學(xué)年九年級英語上學(xué)期期末真題復(fù)習(xí) 專題09 單詞拼寫(安徽專用)
- 網(wǎng)絡(luò)運(yùn)營代銷合同范例
- 2024年新人教版七年級上冊歷史 第14課 絲綢之路的開通與經(jīng)營西域
- 植保無人機(jī)安全飛行
- 醫(yī)療糾紛事件匯報
- 2024年村干部個人工作總結(jié)例文(3篇)
評論
0/150
提交評論