網(wǎng)站建設(shè)請(qǐng)示文件茶葉網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃方案
前言
今天剛結(jié)束考試,考的范圍基本沒(méi)有超過(guò)這套重點(diǎn)內(nèi)容,覺(jué)得整理的這份資料還算比較有用,遂睡前整理了下分享給大家,希望能幫到要準(zhǔn)備數(shù)據(jù)庫(kù)期末又時(shí)間緊張的學(xué)弟學(xué)妹~
文章參考:
1.課程老師發(fā)《數(shù)據(jù)庫(kù)期末考試復(fù)習(xí)重點(diǎn)(2022)》
2.HNU數(shù)據(jù)庫(kù)系統(tǒng)教學(xué)PPT
3.《數(shù)據(jù)庫(kù)系統(tǒng)概論》官網(wǎng)考試平臺(tái) http
重點(diǎn)大綱
- 前言
- 文章參考:
- 第一章 緒論
- 1.1 數(shù)據(jù)庫(kù)的4個(gè)基本概念(數(shù)據(jù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng))
- 1.2數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)、數(shù)據(jù)庫(kù)系統(tǒng)與文件系統(tǒng)的區(qū)別與聯(lián)系
- 1.3數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)(外模式、模式、內(nèi)模式)
- 數(shù)據(jù)庫(kù)的二級(jí)映像功能與數(shù)據(jù)獨(dú)立性(邏輯獨(dú)立性、物理獨(dú)立性)
- 第二章 關(guān)系數(shù)據(jù)庫(kù)
- 2.1 碼、主屬性、非主屬性、外碼
- 2.2 關(guān)系代數(shù) 并、差、交、笛卡爾積、選擇、投影、連接、除運(yùn)算。
- 2.3關(guān)系代數(shù)查詢(xún)及關(guān)系運(yùn)算
- 第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL
- 3.1 SQL的基本概念,基本表、視圖。
- 3.2基本表及視圖的定義、查詢(xún)、更新
- 3.3 數(shù)據(jù)查詢(xún):常用的SQL語(yǔ)句,常用的查詢(xún)、修改、刪除、分組、排序等SQL 語(yǔ)句
- 3.4 能熟練使用通配符
- 3.5多表連接查詢(xún)、復(fù)合條件連接查詢(xún)、嵌套查詢(xún)
- 3.6 數(shù)據(jù)更新 插入數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)
- 3.7 空值的處理
- 第四章 數(shù)據(jù)庫(kù)安全性
- 4.1 數(shù)據(jù)庫(kù)的安全性
- 4.2實(shí)現(xiàn)數(shù)據(jù)庫(kù)安全性控制常用的方法和技術(shù)
- 4.3能熟練使用SQL語(yǔ)句完成對(duì)關(guān)系模式的授權(quán)/回收操作
- 第五章 數(shù)據(jù)庫(kù)的完整性
- 5.1數(shù)據(jù)庫(kù)的完整性
- 5.2實(shí)體完整性、參照完整性、用戶(hù)定義完整性
- 第六章 關(guān)系數(shù)據(jù)理論
- 6.1對(duì)函數(shù)依賴(lài)、碼、主屬性、非主屬性、外碼等有深入的理解
- 多值依賴(lài):
- 6.2掌握規(guī)范化理論,能夠判斷給定關(guān)系模式的規(guī)范化程度
- 6.3掌握模式的分解,能夠按要求對(duì)給定關(guān)系模式進(jìn)行分解,修改為符合更高一級(jí)的范式
- 6.4 掌握數(shù)據(jù)依賴(lài)的公理系統(tǒng),能求解閉包和最小依賴(lài)集。
- 求XF+的算法
- 極小函數(shù)依賴(lài)集
- 第七章 數(shù)據(jù)庫(kù)設(shè)計(jì)
- 7.1掌握數(shù)據(jù)庫(kù)的設(shè)計(jì)方法與設(shè)計(jì)的步驟
- 7.2根據(jù)語(yǔ)義設(shè)計(jì)系統(tǒng)的E-R圖,并將E-R圖轉(zhuǎn)換為關(guān)系模式(寫(xiě)出關(guān)系名稱(chēng)和所有屬性)
- 7.3數(shù)據(jù)庫(kù)設(shè)計(jì)方面有自己獨(dú)到的理解
- 第八章 嵌入式SQL
- 8.1理解主變量
- 8.2理解嵌入式SQL中引入游標(biāo)的作用
- 8.3 理解存儲(chǔ)過(guò)程
- 第九章 關(guān)系查詢(xún)處理和查詢(xún)優(yōu)化
- 9.1關(guān)系代數(shù)表達(dá)式的優(yōu)化策略及步驟
- 9.2代數(shù)優(yōu)化、物理優(yōu)化
- 第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù)
- 10.1對(duì)事務(wù)的基本概念及事務(wù)的ACID特性有一定的理解和掌握
- 10.2 理解數(shù)據(jù)庫(kù)系統(tǒng)中故障的種類(lèi)
- 10.3掌握數(shù)據(jù)庫(kù)恢復(fù)技術(shù)(數(shù)據(jù)轉(zhuǎn)儲(chǔ)、登記日志文件),對(duì)恢復(fù)子系統(tǒng)及其功能有一定的掌握。
- 10.4掌握并能熟練使用具有檢查點(diǎn)的恢復(fù)技術(shù)。
- 第十一章 并發(fā)控制
- 11.1并發(fā)控制及并發(fā)操作帶來(lái)的數(shù)據(jù)不一致性
- 11.2封鎖技術(shù)及基本封鎖類(lèi)型(排他鎖和共享鎖)、三級(jí)封鎖協(xié)議
- 11.3活鎖和死鎖,死鎖的預(yù)防、診斷與解除
- 11.4可串行化調(diào)度及兩段鎖協(xié)議,判斷一個(gè)并發(fā)調(diào)度是不是沖突可串行化調(diào)度。
- 11.5理解封鎖粒度及多粒度封鎖。
- 11.6能熟練使用并發(fā)控制進(jìn)行事務(wù)調(diào)度
第一章 緒論
1.1 數(shù)據(jù)庫(kù)的4個(gè)基本概念(數(shù)據(jù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng))
數(shù)據(jù):描述事物的符號(hào)記錄,是數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象
數(shù)據(jù)庫(kù):是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi),有組織的,可共享的大量數(shù)據(jù)的集合
數(shù)據(jù)庫(kù)管理系統(tǒng):位于用戶(hù)與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件;是基礎(chǔ)軟件,是一個(gè)大型復(fù)雜的軟件系統(tǒng)
數(shù)據(jù)庫(kù)系統(tǒng):由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、應(yīng)用程序和數(shù)據(jù)庫(kù)管理員組成的存儲(chǔ)、管理、處理和維護(hù)數(shù)據(jù)的系統(tǒng)
1.2數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)、數(shù)據(jù)庫(kù)系統(tǒng)與文件系統(tǒng)的區(qū)別與聯(lián)系
特點(diǎn):
-
數(shù)據(jù)結(jié)構(gòu)化
-
數(shù)據(jù)的共享性高,冗余度低且易擴(kuò)充
-
數(shù)據(jù)的獨(dú)立性高
-
數(shù)據(jù)由數(shù)據(jù)庫(kù)管理系統(tǒng)統(tǒng)一管理和控制
區(qū)別:
文件系統(tǒng)面向某一應(yīng)用程序,共享性差,冗余度大,獨(dú)立性差,記錄內(nèi)有結(jié)構(gòu),整體無(wú)結(jié)構(gòu),應(yīng)用程序自己控制。
數(shù)據(jù)庫(kù)系統(tǒng)面向現(xiàn)實(shí)世界,共享度高,冗余度小,具有高度的物理獨(dú)立性和一定的邏輯獨(dú)立性,整體結(jié)構(gòu)化,用數(shù)據(jù)模型描述,由數(shù)據(jù)庫(kù)管理系統(tǒng)提供數(shù)據(jù)安全性、完整性、并發(fā)控制和恢復(fù)能力
聯(lián)系:
文件系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)都是計(jì)算機(jī)系統(tǒng)中管理數(shù)據(jù)的軟件。數(shù)據(jù)庫(kù)中數(shù)據(jù)的組織和存儲(chǔ)是通過(guò)操作系統(tǒng)中文件系統(tǒng)來(lái)實(shí)現(xiàn)的。
1.3數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)(外模式、模式、內(nèi)模式)
數(shù)據(jù)庫(kù)的二級(jí)映像功能與數(shù)據(jù)獨(dú)立性(邏輯獨(dú)立性、物理獨(dú)立性)
外模式:亦稱(chēng)子模式或用戶(hù)模式,是數(shù)據(jù)庫(kù)用戶(hù)能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶(hù)的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。
模式:亦稱(chēng)邏輯模式,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶(hù)的公共數(shù)據(jù)視圖。模式描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu)。
內(nèi)模式:亦稱(chēng)存儲(chǔ)模式,是數(shù)據(jù)在數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部的表示,即對(duì)數(shù)據(jù)的物理結(jié)構(gòu)和存儲(chǔ)方式的描述。
三級(jí)模式結(jié)構(gòu)的優(yōu)點(diǎn):數(shù)據(jù)庫(kù)的三級(jí)模式是對(duì)數(shù)據(jù)的三個(gè)抽象級(jí)別,它把數(shù)據(jù)的具體組織留給DBMS管理,使用戶(hù)能邏輯抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中地存儲(chǔ)和表示。
為了能在內(nèi)部實(shí)現(xiàn)這三個(gè)抽象層次地聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫(kù)系統(tǒng)在這三級(jí)模式之間提供了兩層映像:外模式/模式映像和模式/內(nèi)模式映像。正是這兩層映像保證了數(shù)據(jù)庫(kù)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性。
邏輯獨(dú)立性:當(dāng)模式改變時(shí),由數(shù)據(jù)庫(kù)管理員對(duì)各個(gè)外模式/模式的映像作相應(yīng)改變,可以使外模式保持不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫(xiě)的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性。
物理獨(dú)立性:當(dāng)數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)改變,由數(shù)據(jù)庫(kù)管理員對(duì)模式/內(nèi)模式映像作相應(yīng)改變,可以使模式保持不變,從而應(yīng)用程序也不必改變,保證了數(shù)據(jù)與程序的物理獨(dú)立性。
第二章 關(guān)系數(shù)據(jù)庫(kù)
2.1 碼、主屬性、非主屬性、外碼
候選碼:能唯一地標(biāo)示一個(gè)元組的某一個(gè)屬性組,而其子集不能
全碼:關(guān)系模式的所有屬性組是這個(gè)關(guān)系模式的候選碼
主碼:若一個(gè)關(guān)系有多個(gè)候選碼,則選定其中一個(gè)為主碼
主屬性:候選碼的諸屬性稱(chēng)為主屬性
非主屬性:不包含任何候選碼中的屬性
外碼:設(shè)F是基本關(guān)系R的一個(gè)或一組屬性,但不是關(guān)系R的碼。如果F與基本關(guān)系S的主碼Ks相對(duì)應(yīng),則稱(chēng)F是R的外碼
2.2 關(guān)系代數(shù) 并、差、交、笛卡爾積、選擇、投影、連接、除運(yùn)算。
除運(yùn)算步驟:R÷S
1.找R中和S不重合屬性的取值集合
2.對(duì)每個(gè)值求在重合屬性上象集
3.求S在重合屬性組上的投影
4.象集包含投影的值為答案
2.3關(guān)系代數(shù)查詢(xún)及關(guān)系運(yùn)算
題目中含有"至少(多個(gè))","全部"的就包含除法,除數(shù)為這個(gè)至少/全部的限制
第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL
3.1 SQL的基本概念,基本表、視圖。
SQL:結(jié)構(gòu)化查詢(xún)語(yǔ)言,是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言
基本表:本身獨(dú)立存在的表;SQL中一個(gè)關(guān)系就對(duì)應(yīng)一個(gè)基本表;一個(gè)或多個(gè)基本表對(duì)應(yīng)一個(gè)存儲(chǔ)文件;一個(gè)表可以帶若干索引
視圖:是從一個(gè)或多個(gè)基本表中導(dǎo)出的表;數(shù)據(jù)庫(kù)中只存放視圖的定義而不存放視圖對(duì)應(yīng)的數(shù)據(jù);視圖是一個(gè)虛表;用戶(hù)可以在視圖上再定義視圖
3.2基本表及視圖的定義、查詢(xún)、更新
表
定義
CREATE TABLE Student(Sno CHAR(9) RRIMARY KEY,Sname CHAR(20) UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20)
);CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY (Sno) REFERENCES Student(Sno),FOREIGN KEY (Cno) REFERENCES Course(Cno)
);更新:
ALTER TABLE Student ADD S_en DATE;
ALTER TABLE Student ALTER COLUMN Sage INT;刪除:
DROP TABLE Student CASCADE;
DROP TABLE Student RESTRICT;
視圖
定義
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS'
WITH CHECK OPTION;//刪除
DROP VIEW IS_Student CASCADE;//查詢(xún)更新同基本表 更新無(wú)法轉(zhuǎn)換為對(duì)基本表的更新則不能執(zhí)行
3.3 數(shù)據(jù)查詢(xún):常用的SQL語(yǔ)句,常用的查詢(xún)、修改、刪除、分組、排序等SQL 語(yǔ)句
SELECT Sno,Sname FROM Student;
SELECT * FROM Student;//查詢(xún)經(jīng)過(guò)計(jì)算的值并取別名(空格)
SELECT Sname Name,2014-Sage BIRTHDAY,LOWER(Sdept) DEP FROM Student;//去除表中重復(fù)的行
SELECT DISTINCT Sno FROM SC;//簡(jiǎn)寫(xiě)條件
WHERE Sage BETWEEN 20 AND 23; //包括20和23
WHERE Sdept IN ('CS','MA');
WHERE Sdept='CS' AND Sage<20;//ORDER BY
SELECT Sno,Grade
FROM SC
WHERE Cno='3'
ORDER BY Grade DESC; //默認(rèn)為ASC 升序//聚集函數(shù) 除了COUNT,還有AVG MAX MIN SUM
SELECT COUNT(*) FROM Student; //查詢(xún)學(xué)生總?cè)藬?shù)
SELECT COUTN(DISTINCT Sno) FROM SC; //查詢(xún)選修了課程的學(xué)生人數(shù)//GROUP BY
//求各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)
SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;
//使用HAVING選擇滿(mǎn)足條件的組
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3;
3.4 能熟練使用通配符
WHERE Sname LIKE '劉%';
WHERE Sname NOT LIKE '歐_';
WHERE Cname LIKE 'DB\_%I__' ESCAPE'\'; \\ ESCAPE'\'表示“\”為換碼字符
3.5多表連接查詢(xún)、復(fù)合條件連接查詢(xún)、嵌套查詢(xún)
多表連接查詢(xún)
//1.等值
WHERE Student.Sno=SC.Sno//2.自然連接 顯式指出保留哪個(gè)值
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student,SC
WHERE Student.Sno=SC.Sno;//多表
SELECT Student.Sno,Sname,Cname,Grade
FROM Student.Sno=SC.SnoAND SC.Cno=Course.Cno;
復(fù)合條件連接查詢(xún)
SELECT Student.Sno,Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno ANDSC.Cno='2' AND SC.Grade>90;
自身連接 需取別名以區(qū)分
SELECT FIRST.Cno,SECOND.Cno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno=SECOND.Cno;
嵌套查詢(xún)
SELECT Sno
FROM Studen
WHERE Sdept IN(SELECT SdeptFROM StudentWHERE Sname='劉晨');
省EXIST
UNION 并集去重
UNION ALL 并集不去重
INTERSECT 交集
EXCEPT 差集
3.6 數(shù)據(jù)更新 插入數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)
插入
INSERT INTO Student(Sno,Sname,Sage) VALUES('200801','陳東',18);INSERT INTO SC VALUES('200801',1,NULL);INSERT INTO Dept_age(Sdept,Avg_age)SELECT Sdept,AVG(Sage)FROM StudentGROUP BY Sdept;
修改
UPDATE Student SET Sage=22 WHERE Sno='234345';UPDATE SC
SET Grade=0
WHERE Sno IN(SELECT SnoFROM StudentWHERE Sdept='CS');
刪除
DELETE FROM Student WHERE Sno='23456';DELETE FROM Studen;DELETE
FROM SC
WHERE Sno IN(SELECT SnoFROM StudentWHERE Sdept='CS');
3.7 空值的處理
WHERE Grade IS NULL;
WHERE Grade IS NOT NULL;
第四章 數(shù)據(jù)庫(kù)安全性
4.1 數(shù)據(jù)庫(kù)的安全性
保護(hù)數(shù)據(jù)庫(kù)以防止不合法使用所造成的數(shù)據(jù)泄露、更改或破壞
4.2實(shí)現(xiàn)數(shù)據(jù)庫(kù)安全性控制常用的方法和技術(shù)
1.用戶(hù)標(biāo)識(shí)和鑒別:該方法由系統(tǒng)提供一定的方法讓用戶(hù)標(biāo)識(shí)自己的名字或身份。每次用戶(hù)要求進(jìn)入系統(tǒng)時(shí),由系統(tǒng)進(jìn)行核對(duì),通過(guò)鑒定后才提供系統(tǒng)的使用權(quán)
2.存取控制:通過(guò)用戶(hù)權(quán)限定義和合法權(quán)檢查確保只有合法權(quán)限的用戶(hù)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),所有未被授權(quán)的人員無(wú)法存取數(shù)據(jù)。例如C2級(jí)別中的自主存取控制,B1級(jí)別中的強(qiáng)制存取控制
3.視圖機(jī)制:為不同的用戶(hù)定義視圖,通過(guò)視圖機(jī)制把要保密的數(shù)據(jù)對(duì)無(wú)權(quán)存取的用戶(hù)隱藏起來(lái),從而自動(dòng)地對(duì)數(shù)據(jù)提供一定程度地安全保護(hù)
4.審計(jì):建立審計(jì)日志,把用戶(hù)對(duì)數(shù)據(jù)庫(kù)的所有操作自動(dòng)記錄下來(lái)放入審計(jì)日志中,DBA可以利用審計(jì)跟蹤信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫(kù)現(xiàn)有狀況的一系列事件,找出非法存取數(shù)據(jù)的人、時(shí)間和內(nèi)容等
5.數(shù)據(jù)加密:對(duì)存儲(chǔ)和傳輸?shù)臄?shù)據(jù)進(jìn)行加密處理,從而使得不知道解密算法的人無(wú)法獲知數(shù)據(jù)的內(nèi)容
補(bǔ)充:
自主存取控制方法:定義各個(gè)用戶(hù)對(duì)不同數(shù)據(jù)對(duì)象的存取權(quán)限。當(dāng)用戶(hù)對(duì)數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)時(shí)首先檢查用戶(hù)的存取權(quán)限。防止不合法用戶(hù)對(duì)數(shù)據(jù)庫(kù)的存取。
強(qiáng)制存取控制方法:每一個(gè)數(shù)據(jù)對(duì)象被(強(qiáng)制地)標(biāo)以一定的密級(jí),每一個(gè)用戶(hù)也被(強(qiáng)制地)授予某一個(gè)級(jí)別的許可證。系統(tǒng)規(guī)定只有具有某一許可證級(jí)別的用戶(hù)才能存取某一個(gè)密級(jí)的數(shù)據(jù)對(duì)象。
4.3能熟練使用SQL語(yǔ)句完成對(duì)關(guān)系模式的授權(quán)/回收操作
授權(quán)
GRANT UPDATE(Sno) SELECT
ON TABLE Student
TO U1
WITH GRANT OPTION;//全部權(quán)限
GRANT ALL PRIVILIGES
ON TABLE Student,Course
TO U2,U3;//全部用戶(hù)
GRANT SELECT
ON TABLE Student
TO PUBLIC;
回收
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;REVOKE UPDATE(Sno) SELECT
ON TABLE Student
FROM U1 CASCADE; //級(jí)聯(lián)收回
角色
CREATE ROLE R1;GRANT SELECT
ON TABLE Student
TO R1;GRANT R1 TO U1;
REVOKE R1 FROM U1;REVOKE SELECT
ON TABLE Student
FROM R1;
第五章 數(shù)據(jù)庫(kù)的完整性
5.1數(shù)據(jù)庫(kù)的完整性
據(jù)庫(kù)的完整性是指數(shù)據(jù)的正確性和相容性
5.2實(shí)體完整性、參照完整性、用戶(hù)定義完整性
實(shí)體完整性:主碼 PRIMARY KEY
- 檢查主碼是否唯一,不唯一則拒絕插入或修改
- 檢查主碼的各個(gè)屬性是否為空,只要有一個(gè)為空將拒絕插入或修改
參照完整性:外碼 FOREIGN KEY
FOREIGN KEY(Sno) REFERENCES Student(Sno)ON DELETE CASCADEON UPDATE CASCADE,
FOREIGN KEY(Cno) REFERENCES Course(Cno)ON DELETE NO ACTIONON UPDATE CASCADE,
用戶(hù)定義完整性:
- NOT NULL
- UNIQUE
- CHECK (…) 列級(jí)表級(jí)皆可
完整性約束命名子句(創(chuàng)建表時(shí))
CONSTRAINT C1 CHECK (Sage<30)CONSTRAINT C1 NOT NULL//刪除
ALTER TABLE Student
DROP CONSTRAINT C1;
第六章 關(guān)系數(shù)據(jù)理論
6.1對(duì)函數(shù)依賴(lài)、碼、主屬性、非主屬性、外碼等有深入的理解
X—>Y:關(guān)系r中不可能存在兩個(gè)元組在X上的屬性值相等,而在Y上的屬性值不等,則稱(chēng)X函數(shù)確定Y或Y函數(shù)依賴(lài)于X
ps:函數(shù)依賴(lài)是指R的一切關(guān)系均要滿(mǎn)足的約束條件
非平凡的函數(shù)依賴(lài):X—>Y,但Y?x
平凡的函數(shù)依賴(lài):X—>Y,但Y∈x 對(duì)任一關(guān)系模式,平凡函數(shù)依賴(lài)必然成立
決定因素:若X—>Y,則稱(chēng)X為這個(gè)函數(shù)依賴(lài)的決定屬性組
Y對(duì)X完全函數(shù)依賴(lài):在R(U)中,如果X—>Y,并且對(duì)于X的任一真子集X’,都有X-\->Y。記作:
部分函數(shù)依賴(lài):X—>Y,但Y不完全函數(shù)依賴(lài)于X。記作:
傳遞函數(shù)依賴(lài):
多值依賴(lài):
定義有點(diǎn)繞,其實(shí)就是從函數(shù)依賴(lài)的一對(duì)一關(guān)系,變成了一對(duì)多
平凡的多值依賴(lài):X—>—>Y,而Z=?,即Z為空
性質(zhì):
- 對(duì)稱(chēng)性。若X—>—>Y,則X—>—>Z,其中Z=U-X-Y
- 傳遞性。若X—>—>Y,Y—>—>Z,則X—>—>Z-Y
- 函數(shù)依賴(lài)可以看做是多值依賴(lài)的特殊情況
- 若X—>—>Y,X—>—>Z,則X—>—>YZ
- 若X—>—>Y,X—>—>Z,則X—>—>Y∩Z
- 若X—>—>Y,X—>—>Z,則X—>—>Y-Z,X—>—>Z-Y
多值依賴(lài)和函數(shù)依賴(lài)的區(qū)別
- 多值依賴(lài)的有效性與屬性集的范圍有關(guān)
候選碼:K為R<U,F>中的屬性或?qū)傩越M合,若U完全依賴(lài)于K,則K為R的候選碼
超碼:U部分函數(shù)依賴(lài)于K。 候選碼是最小的超碼
主碼:候選碼中的一個(gè)
主屬性:包含在任何一個(gè)候選碼中的屬性
全碼:整個(gè)屬性是碼(候選碼/主碼)
外碼:關(guān)系模式R中的屬性X并非R中的碼,但X是另一個(gè)關(guān)系模式的碼,則稱(chēng)X為R的外部碼
6.2掌握規(guī)范化理論,能夠判斷給定關(guān)系模式的規(guī)范化程度
6.3掌握模式的分解,能夠按要求對(duì)給定關(guān)系模式進(jìn)行分解,修改為符合更高一級(jí)的范式
實(shí)行模式分解的三條準(zhǔn)則:
-
分解具有無(wú)損連接性(lossless join)
-
分解要保持函數(shù)依賴(lài)(preserve functional dependency)
-
分解既要保持函數(shù)依賴(lài),又要具有無(wú)損連接性
6.4 掌握數(shù)據(jù)依賴(lài)的公理系統(tǒng),能求解閉包和最小依賴(lài)集。
Armstrong公理系統(tǒng)
求XF+的算法
極小函數(shù)依賴(lài)集
第七章 數(shù)據(jù)庫(kù)設(shè)計(jì)
7.1掌握數(shù)據(jù)庫(kù)的設(shè)計(jì)方法與設(shè)計(jì)的步驟
-
需求分析:準(zhǔn)確了解與分析用戶(hù)需求(包括數(shù)據(jù)與處理)。
-
概念結(jié)構(gòu)設(shè)計(jì):通過(guò)對(duì)用戶(hù)需求進(jìn)行綜合、歸納與抽象,形成一個(gè)獨(dú)立于具體DBMS的概念模型。
-
邏輯結(jié)構(gòu)設(shè)計(jì):將概念結(jié)構(gòu)轉(zhuǎn)換為某個(gè)DBMS所支持的數(shù)據(jù)模型,并對(duì)其進(jìn)行優(yōu)化。
-
數(shù)據(jù)庫(kù)物理設(shè)計(jì):為邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)和存取方法)。
-
數(shù)據(jù)庫(kù)實(shí)施:設(shè)計(jì)人員運(yùn)用DBMS提供的數(shù)據(jù)語(yǔ)言、工具及宿主語(yǔ)言,根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果建立數(shù)據(jù)庫(kù),編制與調(diào)試應(yīng)用程序,組織數(shù)據(jù)入庫(kù),并進(jìn)行試運(yùn)行。
-
數(shù)據(jù)庫(kù)運(yùn)行和維護(hù):在數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行過(guò)程中對(duì)其進(jìn)行評(píng)價(jià)、調(diào)整與修改。
7.2根據(jù)語(yǔ)義設(shè)計(jì)系統(tǒng)的E-R圖,并將E-R圖轉(zhuǎn)換為關(guān)系模式(寫(xiě)出關(guān)系名稱(chēng)和所有屬性)
例子:
7.3數(shù)據(jù)庫(kù)設(shè)計(jì)方面有自己獨(dú)到的理解
第八章 嵌入式SQL
8.1理解主變量
在SQL語(yǔ)句中使用的主語(yǔ)言程序變量簡(jiǎn)稱(chēng)為主變量
8.2理解嵌入式SQL中引入游標(biāo)的作用
游標(biāo)是系統(tǒng)為用戶(hù)開(kāi)設(shè)的一個(gè)數(shù)據(jù)緩沖區(qū),存放SQL語(yǔ)句的執(zhí)行結(jié)果
用戶(hù)可以用SQL語(yǔ)句逐一從游標(biāo)中獲取記錄,并賦給主變量,交由主語(yǔ)言進(jìn)一步處理
8.3 理解存儲(chǔ)過(guò)程
存儲(chǔ)過(guò)程:由過(guò)程化SQL語(yǔ)句書(shū)寫(xiě)的過(guò)程,經(jīng)編譯和優(yōu)化后存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中,使用時(shí)只要調(diào)用即可。
第九章 關(guān)系查詢(xún)處理和查詢(xún)優(yōu)化
9.1關(guān)系代數(shù)表達(dá)式的優(yōu)化策略及步驟
優(yōu)化策略:
- 選擇盡可能先做
- 投影選擇同時(shí)進(jìn)行
- 把投影和其前或其后的雙目運(yùn)算(笛卡爾乘積、自然連接)結(jié)合起來(lái)執(zhí)行
- 把某些選擇同在它前面要執(zhí)行的笛卡爾積結(jié)合起來(lái)成為一個(gè)連接運(yùn)算
- 找出公共子表達(dá)式
- 選取合適的連接運(yùn)算
查詢(xún)優(yōu)化的一般步驟:
- 把查詢(xún)轉(zhuǎn)換成某種內(nèi)部的表示(語(yǔ)法樹(shù))
- 利用優(yōu)化算法,把原始的語(yǔ)法樹(shù)轉(zhuǎn)換成優(yōu)化的形式
- 選擇低層的存取路徑
- 生成查詢(xún)計(jì)劃,選擇代價(jià)最小的
9.2代數(shù)優(yōu)化、物理優(yōu)化
代數(shù)優(yōu)化:改變查詢(xún)語(yǔ)句中操作的次序和組合,不涉及底層的存取路徑
物理優(yōu)化:就是要選擇高效合理的操作算法或存取路徑,求得優(yōu)化的查詢(xún)計(jì)劃
第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù)
10.1對(duì)事務(wù)的基本概念及事務(wù)的ACID特性有一定的理解和掌握
事務(wù):是用戶(hù)定義的一個(gè)數(shù)據(jù)庫(kù)操作序列,這些操作要么全做,要么全不做,是一個(gè)不可分割的工作單位
事務(wù)是恢復(fù)和并發(fā)控制的基本單位
事務(wù)的ACID特性:
-
原子性
事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位
-
一致性
事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)
-
隔離性
一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾
-
持續(xù)性/永久性
事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就是永久的
10.2 理解數(shù)據(jù)庫(kù)系統(tǒng)中故障的種類(lèi)
-
事務(wù)內(nèi)部的故障
-
運(yùn)算溢出
-
并發(fā)事務(wù)發(fā)生死鎖而被選中撤銷(xiāo)該事務(wù)
-
違反了某些完整性限制而被終止等
恢復(fù):事務(wù)撤銷(xiāo)(UNDO)
-
-
系統(tǒng)故障
-
整個(gè)系統(tǒng)的正常運(yùn)行突然被破壞
-
操作系統(tǒng)故障
-
數(shù)據(jù)庫(kù)管理系統(tǒng)代碼錯(cuò)誤
-
系統(tǒng)斷電
恢復(fù):1.撤銷(xiāo)所有未完成的事務(wù);重做所有已提交的事務(wù)
-
-
介質(zhì)故障/硬故障/外存故障
-
磁盤(pán)損壞
-
磁頭碰撞
-
瞬時(shí)強(qiáng)磁場(chǎng)干擾
恢復(fù):需要重新裝入發(fā)生介質(zhì)故障前某個(gè)時(shí)刻的數(shù)據(jù)庫(kù)數(shù)據(jù)副本,并重做(REDO)自備份相應(yīng)副本數(shù)據(jù)庫(kù)之后的所有成功執(zhí)行事務(wù),將這些事務(wù)已提交的更新結(jié)果重新反應(yīng)到數(shù)據(jù)庫(kù)中去。無(wú)需UNDO操作
-
-
計(jì)算機(jī)病毒
恢復(fù):通過(guò)數(shù)據(jù)庫(kù)的安全機(jī)制、審計(jì)機(jī)制等實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的授權(quán)訪(fǎng)問(wèn)和保護(hù)
10.3掌握數(shù)據(jù)庫(kù)恢復(fù)技術(shù)(數(shù)據(jù)轉(zhuǎn)儲(chǔ)、登記日志文件),對(duì)恢復(fù)子系統(tǒng)及其功能有一定的掌握。
數(shù)據(jù)轉(zhuǎn)儲(chǔ):數(shù)據(jù)庫(kù)管理員定期地將整個(gè)數(shù)據(jù)庫(kù)復(fù)制到磁盤(pán)、磁帶或其他存儲(chǔ)介質(zhì)上保存起來(lái)的過(guò)程
要想恢復(fù)到故障發(fā)生時(shí)的狀態(tài),必須重新運(yùn)行自轉(zhuǎn)儲(chǔ)以后的所有更新事務(wù)
-
靜態(tài)轉(zhuǎn)儲(chǔ):在系統(tǒng)中無(wú)運(yùn)行事務(wù)時(shí)進(jìn)行的轉(zhuǎn)儲(chǔ)操作(降低了數(shù)據(jù)庫(kù)的可用性)
-
動(dòng)態(tài)轉(zhuǎn)儲(chǔ):轉(zhuǎn)儲(chǔ)操作與用戶(hù)事務(wù)并發(fā)進(jìn)行(不能保證副本中的數(shù)據(jù)正確有效)。需要把動(dòng)態(tài)轉(zhuǎn)儲(chǔ)期間各事務(wù)對(duì)數(shù)據(jù)庫(kù)的修改活動(dòng)登記下來(lái),建立日志文件
-
海量轉(zhuǎn)儲(chǔ):每次轉(zhuǎn)儲(chǔ)全部數(shù)據(jù)庫(kù)
-
增量轉(zhuǎn)儲(chǔ):只轉(zhuǎn)儲(chǔ)上次轉(zhuǎn)儲(chǔ)后更新過(guò)的數(shù)據(jù)
日志文件:用來(lái)記錄事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新操作的文件
以記錄為單位的日志文件:
作用: 進(jìn)行事務(wù)故障恢復(fù);進(jìn)行系統(tǒng)故障恢復(fù);協(xié)助后備副本進(jìn)行介質(zhì)故障恢復(fù)。
原則:
- 登記的次序嚴(yán)格按并發(fā)事務(wù)執(zhí)行的時(shí)間次序
- 必須先寫(xiě)日志文件,后寫(xiě)數(shù)據(jù)庫(kù)
事故恢復(fù)的基本步驟:
- 反向掃描日志文件,查找該事務(wù)的更新操作
- 對(duì)該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值”寫(xiě)入數(shù)據(jù)庫(kù)
- 讀到此事務(wù)的開(kāi)始標(biāo)志,事務(wù)故障恢復(fù)就完成了
系統(tǒng)故障的恢復(fù):
- 正向掃描日志文件
- 重做隊(duì)列
- 撤銷(xiāo)隊(duì)列
- Undo故障發(fā)生時(shí)未完成的事務(wù):反向掃描日志文件,對(duì)每個(gè)撤銷(xiāo)事務(wù)的更新操作執(zhí)行逆操作
- Redo已完成的事務(wù):正向掃描日志我文件,對(duì)每個(gè)重做事務(wù)重新執(zhí)行登記的操作(即將“更新后的值”寫(xiě)入是數(shù)據(jù)庫(kù))
介質(zhì)故障的恢復(fù)(需要數(shù)據(jù)庫(kù)管理員的介入)
- 重裝數(shù)據(jù)庫(kù)
- 裝入有關(guān)的日志文件副本,重做已完成的事務(wù)
10.4掌握并能熟練使用具有檢查點(diǎn)的恢復(fù)技術(shù)。
提高恢復(fù)效率
- 在日志文件中增加檢查點(diǎn)記錄
- 增加重新開(kāi)始文件
- 恢復(fù)子系統(tǒng)在登錄日志文件期間動(dòng)態(tài)地維護(hù)日志
檢查點(diǎn)記錄:建立檢查點(diǎn)時(shí)刻所有正在執(zhí)行的事務(wù)清單;這些事務(wù)最近一個(gè)日志記錄的地址
重新開(kāi)始文件:記錄各個(gè)檢查點(diǎn)記錄在日志文件中的地址
動(dòng)態(tài)維護(hù)日志文件的方法
周期性的執(zhí)行:建立檢查點(diǎn),保存數(shù)據(jù)庫(kù)狀態(tài)
利用檢查點(diǎn)的恢復(fù)步驟:
- 從重新開(kāi)始文件中找到最后一個(gè)檢查點(diǎn)記錄在日志文件中的地址,由該地址在日志文件中找到最后一個(gè)檢查點(diǎn)記錄
- 由該檢查點(diǎn)記錄得到檢出點(diǎn)建立時(shí)刻所有正在執(zhí)行的事務(wù)清單
- 從檢查點(diǎn)開(kāi)始正向掃描日志文件,直到日志文件結(jié)束
- 撤銷(xiāo)檢查點(diǎn)后未完成事務(wù)(包括檢查點(diǎn)前,事務(wù)開(kāi)始后的修改);重做檢查點(diǎn)后已完成事務(wù)(只重做檢查點(diǎn)后的)
第十一章 并發(fā)控制
11.1并發(fā)控制及并發(fā)操作帶來(lái)的數(shù)據(jù)不一致性
由于并發(fā)操作破壞了事務(wù)的隔離性
- 丟失修改
- 不可重復(fù)讀
- 讀"臟"數(shù)據(jù)
11.2封鎖技術(shù)及基本封鎖類(lèi)型(排他鎖和共享鎖)、三級(jí)封鎖協(xié)議
封鎖:事務(wù)T在對(duì)某個(gè)數(shù)據(jù)對(duì)象操作之前,先向系統(tǒng)發(fā)出請(qǐng)求,對(duì)其加鎖。加鎖后事務(wù)T就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制,在事務(wù)T釋放它的鎖之前,其他的事務(wù)不能更新此數(shù)據(jù)對(duì)象
排他鎖/寫(xiě)鎖:若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上X鎖,則其他事務(wù)在T釋放A上的鎖之前不能再讀取和修改A
共享鎖/讀鎖:若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上S鎖,則事務(wù)T可以讀A但不能修改A,其他事務(wù)只能再對(duì)A加S鎖,而不能加X(jué)鎖,直到T釋放A上的鎖(大家都可以讀)
三級(jí)封鎖協(xié)議
一級(jí):在事務(wù)T修改數(shù)據(jù)R之前必須先對(duì)其加X(jué)鎖,直到事務(wù)結(jié)束才釋放(只讀不鎖,還存在2、3問(wèn)題)
二級(jí):一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,讀完后即可釋放S鎖(還存在2問(wèn)題)
三級(jí):一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,直到事務(wù)結(jié)束才釋放
11.3活鎖和死鎖,死鎖的預(yù)防、診斷與解除
活鎖:某事務(wù)T永遠(yuǎn)等待
避免方法:采用先來(lái)先服務(wù)
死鎖:你等我,我等你,幾個(gè)事務(wù)永遠(yuǎn)不能結(jié)束
預(yù)防:
-
一次封鎖法
要求每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則不能繼續(xù)執(zhí)行
問(wèn)題:過(guò)早加鎖,降低系統(tǒng)并發(fā)度;難于事先精確確定封鎖對(duì)象
-
順序封鎖法
預(yù)先對(duì)數(shù)據(jù)對(duì)象規(guī)定一個(gè)封鎖順序,所有事務(wù)都按這個(gè)順序?qū)嵭蟹怄i
問(wèn)題:維護(hù)成本高;難于實(shí)現(xiàn)
診斷與解除:由DBMS的并發(fā)控制子系統(tǒng)定期檢測(cè)系統(tǒng)中是否存在死鎖,一旦檢測(cè)到,就要設(shè)法解除
診斷:
-
超時(shí)法
如果一個(gè)事務(wù)的等待時(shí)間超過(guò)了規(guī)定的時(shí)限,就認(rèn)為發(fā)生了死鎖
-
等待圖法
用事務(wù)等待圖G=(T,U)動(dòng)態(tài)反映所有事務(wù)的等待情況(生成回路,則表示系統(tǒng)中出現(xiàn)了死鎖)
解除:選擇一個(gè)處理死鎖代價(jià)最小的事務(wù),將其撤銷(xiāo),釋放此事務(wù)持有的所有的鎖,使其他事務(wù)能繼續(xù)運(yùn)行下去
11.4可串行化調(diào)度及兩段鎖協(xié)議,判斷一個(gè)并發(fā)調(diào)度是不是沖突可串行化調(diào)度。
可串行化調(diào)度:多個(gè)事務(wù)的并發(fā)執(zhí)行是正確的,并且僅當(dāng)其結(jié)果與按某一次序串行地執(zhí)行這些事務(wù)時(shí)的結(jié)果相同
沖突操作:讀寫(xiě)、寫(xiě)寫(xiě)
沖突可串行化調(diào)度:一個(gè)調(diào)度Sc在保證沖突操作的次序不變的情況下,通過(guò)交換兩個(gè)事務(wù)不沖突操作的次序得到另一個(gè)調(diào)度Sc’,如果Sc’是串行的,稱(chēng)調(diào)度Sc是沖突可串行化的調(diào)度
兩段鎖協(xié)議:指所有事務(wù)必須分兩個(gè)階段對(duì)數(shù)據(jù)項(xiàng)加鎖和解鎖(是可串行化調(diào)度的充分條件)
- 在對(duì)任何數(shù)據(jù)進(jìn)行讀、寫(xiě)操作之前,事務(wù)首先要獲得對(duì)該數(shù)據(jù)的封鎖
- 在釋放一個(gè)封鎖之后,事務(wù)不再申請(qǐng)和獲得任何其他封鎖
遵守三級(jí)封鎖協(xié)議(在不同程度上保證數(shù)據(jù)一致性)必然遵守兩段鎖協(xié)議(保證并發(fā)調(diào)度的正確性)
11.5理解封鎖粒度及多粒度封鎖。
封鎖粒度:封鎖對(duì)象的大小
封鎖粒度越小,并發(fā)度越高,系統(tǒng)開(kāi)銷(xiāo)越大
多粒度封鎖:在一個(gè)系統(tǒng)中同時(shí)支持多種封鎖粒度供不同的事務(wù)選擇
對(duì)某個(gè)數(shù)據(jù)對(duì)象加鎖,系統(tǒng)要檢查:
- 該數(shù)據(jù)對(duì)象
- 所有上級(jí)結(jié)點(diǎn)
- 所有下級(jí)結(jié)點(diǎn)
意向鎖:對(duì)任一結(jié)點(diǎn)加基本鎖,必須先對(duì)它的上層結(jié)點(diǎn)加意向鎖
無(wú)需逐個(gè)檢查下一級(jí)結(jié)點(diǎn)的顯示封鎖,提高了對(duì)某個(gè)數(shù)據(jù)對(duì)象加鎖時(shí)系統(tǒng)的檢查效率
- 意向共享鎖 \ IS鎖
- 意向排他鎖 \ IX鎖
- 共享意向排他鎖 \ SIX鎖
鎖的強(qiáng)度:
11.6能熟練使用并發(fā)控制進(jìn)行事務(wù)調(diào)度
注:標(biāo)“*”號(hào)章節(jié)不考,第8章需要復(fù)習(xí)8.1到8.3