1、約束(constraint)
約束是表示管理如何插入或處理資料庫資料的規則。dbms通過在資料庫上施加約束來實施引用完整性。有的約束是在建立表的時候定義的,有的約束可以在建立表之後再定義。下面列舉一些常見的約束:
--在建立表的時候定義主鍵
create
table
table_name;--
在表建立後定義主鍵
alter
table
table_name
addconstraint
primary
key (row_id)
--在建立表的時候定義外來鍵
create
table
table_name;--
在表建立後定義外來鍵
alter
table
table_name
addconstraint
foreign
key (other_id) references other_table_name (other_id)
唯一約束用來保證一列或一組列中的資料是唯一的,可以通過關鍵字unique來定義;唯一約束雖然類似於主鍵,但是它們之間還是有差異的:
(1)表可以包含多個唯一約束,但每個表中只允許乙個主鍵
(2)唯一約束列可以含null值
(3)唯一約束列可以修改或更新
(4)唯一約束列的值可以重複使用
(5)唯一約束不能用來定義外來鍵,而主鍵是可以的
檢查約束用來保證一列或一組列中的資料滿足一組指定的條件,可以通過關鍵字check來實現,以下場景中可以用到它:
(1)檢查最小值和最大值
(2)指定範圍
(3)只允許特定的值,例如欄位的資料型別檢查
--在建立表的時候進行欄位的檢查約束定義
create
table
table_name
--在建立表後進行欄位的檢查約束定義
alter
table
table_name
addconstraint
check (field_name like
'[mf]
')
2、索引(index)
主鍵資料總是排序的,所以按主鍵檢索特定行總是一種快速有效的操作。可以在表的一列或者多列上定義索引,使得dbms儲存其內容的乙個排序的列表,索引可以改善資料檢索的效能。使用索引時需要注意以下幾點:
(1)索引改善檢索操作的效能,但是會降低資料插入、修改和刪除的效能,因為這些操作過程中,dbms必須動態地更新索引
(2)索引資料可能要佔據大量的儲存空間
(3)索引用於資料過濾和資料排序
(4)定期檢查索引,並根據需要對索引進行調整
--建立索引示例
create
index
col_name_index
on table_name (col_name);
3、觸發器
觸發器可以用來執行執行前後的處理流程,請參考此連線
22 高階SQL特性
1.約束為正確地進行關聯式資料庫設計,需要一種方法來保證只在表中插入合法的資料。例如,如果 orders 表儲存訂單資訊,orderitems 表儲存訂單詳細內容,應該保證 orderitems 中引用的任何訂單 id存在於 orders 中。類似地,在 orders 表中引用的任意使用者必須存在於...
SQL基礎 理解高階SQL特性
在本節課中,介紹幾種sql中的高階資料操作特性 約束 索引和觸發器 關聯式資料庫將資料儲存為多個表,每個表儲存相關資料。鍵用於建立從乙個表到另乙個表的引用 因此稱為引用完整性 要使關聯式資料庫設計正常工作,需要確保只有有效的資料被插入到表中。儘管可以在插入新行之前執行檢查 在另乙個表上執行selec...
SQL必知必會 22 高階SQL特性
主鍵是一種特殊的約束,用來保證一列 或一列組 中的值是唯一的,而且永不改動。表中任意列只要滿足以下條件,都可以用於主鍵 外來鍵是表中的一列,其值必須列在另一表的主鍵中。唯一約束用來保證一列 或一組列 中的資料是唯一的,他們類似於主鍵,存在以下重要區別 檢查約束用來保證一列 或一列組 中的資料滿足一組...