數據庫的高級SQL特性

一、約束

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操作相關聯。
觸發器的常見用途:

  • 保證數據一致
  • 基於某個表的變動在其他表上執行活動
  • 進行額外的驗證並根據需要回退數據
  • 計算計算列的值或更新時間戳

總結:
約束是實施引用完整性的一個重要的成分;索引可改善數據檢索的性能;觸發器可以用來執行運行前後的處理;而安全選項可用來管理數據訪問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章