一、約束
1、唯一約束
唯一約束用來保證一個列中的數據唯一,他們和主鍵的區別是:
- 表可包含多個唯一約束,但每個表只有一個主鍵
- 唯一約束列可包含null值
- 唯一約束列可修改、更新及重複使用
2、檢查約束
檢查約束用來保證一個列中的數據滿足一組指定的條件,常見用途是:
- 檢查最小或最大值
- 指定範圍
- 只允許特定值
以下對order表施加了一個檢查約束,保證所有物品的數量大於0
create table order {
order_num integer not null,
quantity integer not null check (quantity > 0)
}
二、索引
數據庫表的主鍵總是排序的,我們可以很快速地檢索主鍵,這是DBMS幫我們做的工作,但是,搜索其他列中的值通常效率不高。這個時候,我們就可以使用索引來排序數據以加快搜索和排序操作的速度。
重點注意:
- 索引改善了檢索操作的性能,但是降低了數據插入、修改和刪除的性能。
- 索引數據可能要佔用大量的存儲空間。
- 並非所有的數據都適合索引。唯一性不好的數據不適合做索引
- 索引用於數據過濾和數據排序。
- 可以在索引中定義多個列。
創建索引:
create index之後是索引名,on用來指定被索引的表,而索引中包含的列在表名後的圓括號中給出。
create index prod_name_ind
on products (prod_name);
三、觸發器
觸發器是特殊的存儲過程,它在特定的數據庫活動發生時自動執行。
觸發器可以與特定表上的insert、update和delete操作相關聯。
觸發器的常見用途:
- 保證數據一致
- 基於某個表的變動在其他表上執行活動
- 進行額外的驗證並根據需要回退數據
- 計算計算列的值或更新時間戳
總結:
約束是實施引用完整性的一個重要的成分;索引可改善數據檢索的性能;觸發器可以用來執行運行前後的處理;而安全選項可用來管理數據訪問。