一:關系數據庫的描述
1:實體間的聯系: 1:1、1:n、m:n
2:候選碼:關系中某一屬性組的值能唯一標識一個元組(記錄)而其子集不能,則該屬性組所包含的屬性們稱為候選碼。
主碼:若有多個候選碼,選一個作為主碼。
全碼:關系模式的所有屬性都是候選碼,稱為全碼。
二:關系代數
1:傳統集合運算
並:兩種關系R、S的並集由R跟S的記錄合並得到;
差:R-S的表記錄由R表中有而S表中沒有的記錄組成;
交:R、S的交集由既屬於R表又屬於S表的記錄組成;
笛卡爾積:若R有k1條記錄,S有k2條記錄,則R、S的笛卡爾積有k1*k2條記錄,每條記錄有r+s列,前r列為R的記錄,后s列為S的記錄。即:遍歷R中每一條記錄,在其后面依次拼接S表的記錄。共循環了k1*k2次。
2:專門關系運算
選擇:從表中選出符合條件的元組(記錄)組成結果表;(行查詢)
投影:從表中選出若干屬性列組成結果表;(列查詢)
連接:從兩個關系的笛卡爾積中選出屬性間滿足某條件的元組。
等值連接:從R、S關系的笛卡爾積中,選取R中某些屬性值與S中某些屬性值相等的元組;
自然連接:一種特殊的等值連接,選出R、S中同名的屬性組的值相等的元組,並在結果中去掉重復的屬系列留下一個即可;
通過自然連接利用兩個關系某相同屬性把兩個表拼接在了一起,此時會出現以下情況:
懸浮元組:在R、S通過屬性B的值拼接時,如果出現R中的某B屬性值bn在S中沒有相等值,則此時bn所在元組就會被舍棄,不加入結果表中。
外連接:如果把懸浮元組也加入結果表中,則把bn屬性所在行在另一個表中取不到值的列設為NULL值。
左外連接:只保留左邊關系R的懸浮元組。即:R中bn在S中無等值,把R中bn元組加入結果表,元組中屬於S的屬性列賦NULL值。
右外連接:只保留右邊關系S的懸浮元組。即:S中的bn在R中無等值,把S中bn所在元組加入結果表,該元組中屬性R的屬性列賦NULL值。
三:SQL語言
1:定義模式(定義數據庫):CREATE SCHEMA 模式名(數據庫名) AUTHORIZATION 用戶名
2:刪除模式(刪除數據庫):DROP SCHEMA 模式名[CASCADE|RESTRICT] 級聯刪除或限制不能刪除
3:創建表:CREATE TABLE 表名 (列名 數據類型 約束條件,...);
4:修改表:ALTER TABLE 表名
ADD 列名 數據類型 約束條件
DROP 列名[CASCADE|RESTRICT]
ALTER COLUMN 列名 數據類型
5:刪除表:DROP TABLE 表名[CASCADE|RESTRICT]
6:數據查詢:SELECT[ALL|DISTINCT] 表達式 FROM 表名 WHERE 表達式 GROUP BY 列名 HAVING 表達式 ORDER BY 列名[ASC|DESC];
去除重復屬性 對groupby結果進一步篩選 升序|降序
WHERE 表達式常用條件:
比較:=,>,<,<=,>=,!=......
范圍:between...and...
歸屬:in、not in
模糊查詢:like 、not like (%作通配符表示模糊內容)
7:插入數據:INSERT INTO 表名 屬性列名 VALUES(屬性值,...,...)
8:修改數據:UPDATE 表名 SET 列名=修改值 where 條件
9:刪除數據:DELETE FROM 表名 where 條件
四:視圖
視圖不是一個具體的表,它只不過是一個“窗戶”,透過它可以看到某個表中某些特定的數據以及變化。
五:數據庫安全
1:自主存取控制
通過GRANT、REVOKE賦予用戶、角色某些權限或撤銷其權限;
2:強制存取控制
為用戶賦予許可證,為數據設定密級。
只有當用戶許可證級別大於等於數據密級時,才允許讀取數據;
只有當用戶許可證級別小於等於數據密級時,才允許寫數據;(是寫入而不是修改,低等級用戶只擁有向表中增加數據的權限,不能查看,不能修改)
六:完整性約束
1:定義主鍵:PRIMARY KEY(屬性名)
2:定義外鍵:FOREIGN KEY(屬性名) REFERENCES 外表名(參考屬性名)
3:自定義約束:自定義某屬性的約束條件:Check 條件
七:觸發器
觸發器又叫 事件—條件—動作 規則。即:某事件(數據庫的增刪查改)發生前/后—符合某條件—執行某動作
八:關系理論
第一范式:基本表,表中無表(即屬性不可再分)。
第二范式:在第一范式的基礎上,每一個非主屬性都可由任意一個主屬性推出。
第三范式:在第二范式基礎上,每個非主屬性由任意一個主屬性直接推出而不傳遞或部分推出。
第四范式:每一個主屬性都可推出所有非主屬性,並且沒有任何一個非主屬性能推出主屬性。
九:數據庫恢復
1:事務:用戶定義的一系列數據庫操作,要么全做,要么不做。具有ACID特征:
原子性:事務不可分割。
一致性:事務結果使數據庫從一個一致性狀態變到另一個一致性狀態。
隔離性:事務間相互獨立,互不干擾。
持續性:事務一旦成功提交,對數據庫的改變是永久的而不是暫時的。
十:並發控制
1:數據庫並發操作引起數據不一致:丟失修改、不可重復讀、讀到“臟”數據
2:封鎖技術:事務T操作某個數據對象前先加鎖,然后進行操作。在鎖釋放期間其他事務不能操作該數據對象。分兩種:排它鎖(寫鎖,其他事務不能讀不能寫)、共享鎖(讀鎖,其他事務也可以讀)。
3:死鎖:兩個事務互相等待對方釋放鎖,導致死鎖。
4:處理死鎖:選擇一個造成死鎖的最小代價的事務將其撤銷,等待其他事務優先執行完再執行。