《數據庫技術》複習
第一章
基本概念:
關係數據模型:
是由若干個關係模式組成的集合。
關係模式:
關係模式的實例稱爲關係,每個關係可以看成由行和列交叉組成的二維表格,表中的一行稱爲一個元組,可以用來標識實體集中的一個實體。(實體:實際存在的個體。)
關係:
表中的列稱爲屬性,列名集屬性名,表中的屬性名不能相同。列的取值範圍稱爲域,同列具有相同的域,不同的列也可以有相同的域。
性質:表中的任意兩行(元組)不能相同。
屬性值具有原子性,不可分解。
沒有重複的元組。
理論上沒有行序,但是有時候使用時可以有行序。
主鍵:
能唯一標識表中不同行的屬性或屬性組稱爲主鍵。
關係完整性:
關係模型的完整性規則是對數據的約束。
- 實體完整性,這是指關係的主屬性不能爲空值。空值就是指不知道或是不能使用的值,並不是指空字符串。
- 參照完整性,如果關係的外鍵R1與關係R2中的主鍵相符,那麼外鍵的每個值必須在關係R2中主鍵的值中找到或者是空值。
- 用戶定義完整性,針對某一具體的實際數據庫的約束條件。它由應用環境決定,反映某一具體應用所涉及的數據必須滿足要求。關係模型提供定義和檢驗這類完整性的機制,以便用統一的、系統的方法處理,而不必由應用程序承擔這一功能。
範式理論:
範式是設計數據庫時所遵循的規則,主要用於消除數據庫表中的冗餘數據,改進數據庫整體組織,增強數據的一致性,增加數據庫設計的靈活性。
第一範式:如果關係模式R的每個關係r的屬性都是不可分的數據項,那麼就稱R是第一範式的模式。即列不可再分。
第二範式:如果關係模式R是第一範式,且每個非主屬性完全函數依賴於候選鍵,那麼就稱R是第二範式的模式。即屬性依賴。
第三範式:如果關係模型R是第二範式,且關係模型R(U,F)中的所有非主屬性對應任何候選鍵都不存在傳遞依賴,則關係R是屬於第三範式的模式。即非依賴傳遞。
考試內容主要以選擇題、問題分析題爲主。
例如:
①範式是設計數據庫時所遵循的規則,如果學生表的聯繫方式屬性列即有手機號又有郵箱,則認爲學生表是不符合【 A 】。
A.第一範式 B. 第二範式 C. 第三範式 D. 第四範式
②關係模型中爲了保證對數據的約束,提供了相應的規則,請簡述這些規則是如何約束關係模型的完整性的。(見關係完整性)
第二章
基本概念:
物理存儲結構(包括哪些文件,各自作用是什麼)
由儲存在磁盤中的操作系統文件所組成,包括數據文件(*.dbf)控制文件(*.ctl)和重做日誌文件(*.log)。
數據文件:指存儲數據庫數據的文件。
控制文件:很小的二進制文件,用於描述和維護數據庫的物理結構。
重做日誌文件:是記錄數據庫中所有修改信息的文件。
邏輯存儲結構(組成及其關係)
主要包括表空間、段、區和數據塊。
一個數據庫由一個表空間組成;一個表空間由一個或多個段組成;一個段由一個或多個區組成;一個區由一個或多個數據塊組成。
表空間的大小等於構成該表空間的所有數據文件大小的總和。表空間用於存儲用戶在數據庫中創建的所有內容。
段視爲一個單位的數據庫對象,例如表或索引。段是數據庫終端用戶將處理的最小存儲單位。
區是磁盤空間分配的最小單位。
數據塊是用來管理存儲空間的最基本單位。
Oracle的進程結構(包括哪些,各自作用)
DBWn進程 (Database Writer 數據庫寫入):將數據庫緩衝區中的數據寫入數據文件的進程。
LGWR進程(Log Writer 日誌寫入):負責管理日誌緩衝區的一個後臺進程,用於將日誌緩衝區中的日誌數據寫入磁盤的日誌文件中。
CKPT進程(Check Point 檢查點):一般在發生日誌切換時自動產生,用於縮短實例恢復所需的時間。
SMON進程(System Monitor系統監控):用於數據庫實例出現故障或系統崩潰時,通過將聯機重做日誌文件中的條目應用於數據文件,執行崩潰恢復。
PMON進程(Process Monitor 進程監控):用於在用戶進程出現故障時執行進程恢復操作,負責清理內存存儲區和釋放該進程所使用的資源。
ARCn進程(Archive Process 歸檔):用於將寫滿的日誌文件複製到歸檔日誌文件中,防止日誌文件組中的日誌信息由於日誌文件組的循環使用而被覆蓋。
RECO進程(Recovery 恢復):進程存在於分佈式數據庫系統中,用於自動解決在分佈式數據庫中出現的事務故障。
Oracle的內存結構
系統全局區是Oracle爲系統分配的一組共享的內存結構,可以包含一個數據庫實例的數據或控制信息。包含數據緩衝區,日誌緩衝區, 共享池,大型池,Java池等。
程序全局區是Oracle系統分配給一個進程的私有內存區域。通過SHOW PARAMETER查看該參數的信息。
數據字典
是由Oracle自動創建並更新的一組表,它是Oracle數據庫的重要組成部分,提供了數據庫結構、數據庫對象空間分配和數據庫用戶等有關的信息。數據字典的所有者爲sys用戶,而數據字典表和數據字典視圖都被保存在system表空間裏。
考試內容主要以選擇題、問題分析題爲主。
例如:
- 請簡述Oracle數據庫保存在物理介質上的文件有哪些,其作用是什麼?
數據文件,控制文件,日誌文件。
數據文件:指存儲數據庫數據的文件。
控制文件:很小的二進制文件,用於描述和維護數據庫的物理結構。
重做日誌文件:是記錄數據庫中所有修改信息的文件。
- 試分析Oracle的邏輯存儲結構的組成。
一個數據庫由一個表空間組成;一個表空間由一個或多個段組成;一個段由一個或多個區組成;一個區由一個或多個數據塊組成。
③當系統突然掉電時,以下哪個對象的數據不會丟失?【 D 】
A. 數據緩衝區 B. 共享池 C. 日誌緩衝區 D. 日誌文件
④下面哪個進程負責將日誌緩衝區中的日誌數據寫入磁盤的日誌文件【 B 】
A. DBWn進程 B. LGWR進程 C. CKPT進程 D. SMON進程
⑤下面關於數據字典的說法,錯誤的是【 C 】。
A. 數據字典是由Oracle自動創建並更新的一組表
B. 數據字典的所有者爲sys用戶
C. 數據字典可以讀寫,用戶可以更改其中的數據信息和結構
D. 數據字典提供了數據庫結構、數據庫對象空間分配和數據庫用戶等有關信息。
⑥對於創建好的表,如果想要了解其信息,可以查詢數據字典【 C 】
A. user_functions B. user_source
C. dba_tables D. user_files
⑦P37三、1、2;P36 二、1、3、5
- 下面對數據文件的敘述中,正確的是( C )
- 一個表空間只能對應一個數據文件
- 一個數據文件可以對應多個表空間
- 一個表空間可以對應多個數據文件
- 數據文件存儲了數據庫中的所有日誌信息
- 下面哪種後臺進程用於將數據緩衝區中的數據寫入數據文件?( B )
A.LGWR B. DBWn C. CKPT D.ARCn
3. 解析後的SQL語句會緩存在SGA的哪個區域中?( C )
A. Java池 B.大型池 C.共享池 D.數據緩衝區
第三章
掌握SQL*Plus的基本命令,describe、save、get、start、edit、spool
DESCRIBE:可以返回數據庫中所存儲的對象的描述。可以列出各個列以及各個列的屬性。
SAVE:可以將當前緩衝區的內容保存到文件中。
save file_name(無法保存到沒有創建的文件)
GET:讀取文件內容到緩衝區(不執行)
GET file_name
START:讀取文件中的內容到緩衝區(然後在SQL*plus中運行這些內容)
EDIT:將緩衝區中的內容複製到一個名爲afiedt.buf(默認)文件中。
SPOOL:將SQL*plus中的輸出結果複製到一個指定文件中(屏幕錄製)
SPOOL file_name 結束 SPOOL OFF
考試內容主要以選擇題爲主。
例如:
- P62二、3,5;三、1,
第四章
基本概念:表空間
P63-66表空間的創建語法,重點掌握例4.1
考試內容主要以選擇題、問題分析題爲主。
例如:
- P86 二、4、5;P87三、5
第五章
表的創建和修改、完整性約束、索引的概念、視圖的創建、序列的創建和使用。
考試內容主要以選擇題、操作題、程序題爲主。
例如:
①Oracle中視圖的定義是【 】
A. 一個基表中導出的基表
B. 一個基表中導出的虛表
C. 一個或幾個基表或視圖中導出的基表
D. 一個或幾個基表或視圖中導出的虛表
②根據如下所示內容,寫出表創建語句,注意屬性的數據類型及表的完整性約束。
序號 |
列名 |
含義 |
數據類型 |
長度 |
約束 |
1 |
CID |
課程號 |
字符型(char) |
4 |
主鍵 |
2 |
cname |
課程名 |
字符型(varchar) |
20 |
非空 |
3 |
Cfen |
學分 |
整數(number) |
|
範圍【1,10】 |
成績表sc(學號sno,課程號cno,成績grade)
具體示例可以參看P107頁
注意建表時,性別的約束,外鍵的約束。
學分範圍的約束:check(cfen>=0 and cfen<=100)
多個屬性構成主鍵的寫法:constraint PK_SC primary key(sno,cno)
P91-92頁示例,表的屬性列添加,刪除等操作
③創建視圖V_Student,要求列名用中文名稱(學號,姓名, 性別,年齡), 視圖返回的成績在80分以上的學生。
視圖的創建P113-115
④P124二、5,6;
第七、八章
重點:數據庫的增、刪、改、查,select的語法及其各個子句,事務的概念和提交回滾;子查詢和高級查詢(主要是2個表的高級查詢)。
考試內容主要以選擇題、操作題、程序題爲主。
例如:
- 請查詢emp表中員工人數大於3的部門編號和人員數。
- 向sc表插入一條記錄(1001,1000,79)
- SQL語句將爲計算列SAL*12生成別名Annual Salary語句正確的是【 】
- SELECT ename,sal*12 ‘Annual Salary’ FROM emp;
- SELECT ename,sal*12 ”Annual Salary” FROM emp;
- SELECT ename,sal*12 as Annual Salary FROM emp;
- SELECT ename,sal*12 is Annual Salary FROM emp;
- 修改emp表中smith所在部門編號爲200
- 查詢工資在3000-5000的員工姓名和ID號
- 查詢工資高於Smith的所有員工
- 查詢所有男員工的信息。
- 查詢每個部門工資最高的員工信息。
- P169二、1-5;三1,5;P195三、2,4,5;
第九章
PL/SQL程序的基本語法(變量定義、條件選擇語句、循環語句),能夠讀懂程序。瞭解異常的概念。
考試內容主要以選擇題、操作題、程序題爲主。
例如:
- 閱讀如下程序,給出程序運行結果
declare
a number:=100;
b number:=10;
begin
if a>10 then
b:=20;
elsif a>40 then
b:=30;
else
b:=50;
end if;
dbms_output.put_line(b);
end;
- 請根據成績分數給出優良中差的輸出結果,P206
- PL/SQL程序設計中,拋出異常的字句是【 】
A. throw B. throws C. raise D. cast
④P220二、2,3,4,;三、2
第十章
存儲過程的定義與調用(in和out參數的概念),函數的定義與調用,存儲過程與函數的區別,觸發器的定義與概念
考試內容主要以選擇題、問題分析題、操作題、程序題爲主。
例如:
- 定義了一個存儲過程create or replace procedure getsum(pid in number),下列執行該存儲過程的語句正確的是【 】
- Exec getsum(pid=100)
- Execute getsum
- Exec getsum(1000)
- Exec getsum(pid->19)
- 創建一個存儲過程,可以根據學號,查詢該學生的成績,並輸出成績等級。
- 給出調用上述存儲過程的語句
- 定義觸發器的語句是什麼?
- P242 二、1、2、3、4;三1,2;
第十二章
用戶、角色的創建與管理,權限授予的基本語法
考試內容主要以選擇題、問題分析題、操作題爲主。
例如:
- 創建用戶yang,密碼爲1234
- 創建角色teacher,並將角色分配給用戶yang
- 將emp表的查詢權限賦給yang,並允許其將權限傳播給其他用戶
- P285二、5;三、1,2;
請仔細理解書上例題