PostgreSQL-主鍵約束和唯一性約束的區別


  本篇文章簡單介紹主鍵和索引的知識

目錄概覽

1)主鍵約束(PRIMARY KEY)

2)唯一性約束(UNIQUE)

3)唯一索引(INDEX)


1)主鍵約束(PRIMARY KEY)

	1) 主鍵用於唯一地標識表中的每一條記錄,可以定義一列或多列為主鍵。 
	2) 是不可能(或很難)更新。 
	3) 主鍵列上沒有任何兩行具有相同值(即重復值),不允許空(NULL)。
	4) 主健可作外健,唯一索引不可。

2)唯一性約束(UNIQUE)

	1) 唯一性約束用來限制不受主鍵約束的列上的數據的唯一性,用於作為訪問某行的可選手段,一個表上可以放置多個唯一性約束。
	2) 只要唯一就可以更新。 
	3) 即表中任意兩行在  指定列上都不允許有相同的值,允許空(NULL)。
	4) 一個表上可以放置多個唯一性約束。

3)唯一索引(INDEX)

	創建唯一索引可以確保任何生成重復鍵值的嘗試都會失敗。
	
	唯一性約束和主鍵約束的區別:
		(1)唯一性約束允許在該列上存在NULL值,而主鍵約束的限制更為嚴格,不但不允許有重復,而且也不允許有空值。
		(2)在創建唯一性約束和主鍵約束時可以創建聚集索引和非聚集索引,但在 默認情況下主鍵約束產生聚集索引,而唯一性約束產生非聚集索引
	
	約束和索引, 前者是用來檢查數據的正確性,后者用來實現數據查詢的優化,目的不同。
	
	唯一性約束與唯一索引有所不同:
	
	(1)創建唯一約束會在Oracle中創建一個Constraint,同時也會創建一個該約束對應的唯一索引。
	(2)創建唯一索引只會創建一個唯一索引,不會創建Constraint。
	
	也就是說其實唯一約束是通過創建唯一索引來實現的。
	
	在刪除時這兩者也有一定的區別:	刪除唯一約束時可以只刪除約束而不刪除對應的索引,所以對應的列還是必須唯一的,而刪除了唯一索引的話就可以插入不唯一的值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM