主鍵與唯一鍵
可用於標識或訪問數據庫中的一行或一組行的列或一組列稱為鍵。唯一鍵是可以唯一標識關係數據庫上下文中表中的行的鍵。唯一鍵由一列或一組列組成。主鍵也是表中唯一標識行的列的組合。但它被認為是一種特殊情況下的唯一鑰匙。
什麼是唯一鍵?
如前所述,unique key是一個或一組列,可以唯一地標識表中的一行。因此,一個唯一的鍵被約束,使得它的兩個值都不相等。一個重要的屬性是唯一鍵不強制NOTNULL約束。由於NULL表示缺少值,如果一列中有兩行為NULL,則不意味著值相等。定義為唯一鍵的列只允許該列中有一個空值。然後可以使用它唯一地標識該行。例如,在包含學生信息的表中,學生ID可以定義為唯一鍵。因為沒有兩個學生可以有相同的ID,它唯一地識別一個學生。因此,student ID列滿足唯一鍵的所有屬性。根據數據庫的設計,一個表可能有多個唯一鍵。
什麼是主鍵?
主鍵也是唯一定義關係數據庫表中一行的列或列的組合。一個表最多隻能有一個主鍵。主鍵強制隱式NOT NULL約束。因此,定義為主鍵的列中不能有空值。主鍵可以是表中保證唯一的常規屬性,如社會保險號,也可以是數據庫管理系統生成的唯一值,如Microsoft SQL Server中的全局唯一標識符(GUID)。主鍵是通過ansisql標準中的主鍵約束定義的。也可以在創建表時定義主鍵。SQL允許主鍵由一個或多個列組成,並且主鍵中包含的每個列都隱式定義為NOT NULL。但是一些數據庫管理系統要求主鍵列顯式地不為空。
主鍵和唯一鍵的區別