Oracle數(shù)據(jù)庫(kù)唯一約束和唯一索引的區(qū)別詳解
Oracle數(shù)據(jù)庫(kù)***約束和***索引的區(qū)別是本文我們主要介紹的內(nèi)容,在使用TOAD來操作Oracle數(shù)據(jù)庫(kù)時(shí),會(huì)注意到創(chuàng)建約束時(shí)有Primary Key、Check、Unique和Foreign Key四種類型的約束,這與SQL Server中的約束沒有什么區(qū)別,這里的Check約束除了用于一般的Check約束外,在Oracle中也用于非空約束的實(shí)現(xiàn)。也就是說如果一個(gè)字段不允許為空,則系統(tǒng)將會(huì)創(chuàng)建一個(gè)系統(tǒng)的Check約束,該約束定了某字段不能為空。
除了約束,還有另外一個(gè)概念是索引,在TOAD中創(chuàng)建索引的界面如下:
我們可以注意到在***性組中有三個(gè)選項(xiàng):不***、***和主鍵。那么創(chuàng)建索引時(shí)的***、主鍵與創(chuàng)建約束時(shí)候的***約束和主鍵約束有什么區(qū)別呢?
這里的可能容易產(chǎn)生誤解,其實(shí)創(chuàng)建主鍵的結(jié)果是一樣的,不管是在創(chuàng)建約束時(shí)創(chuàng)建還是創(chuàng)建索引時(shí)創(chuàng)建,都會(huì)創(chuàng)建一個(gè)主鍵約束和對(duì)應(yīng)的一個(gè)***索引。
創(chuàng)建***約束與創(chuàng)建***索引有所不同:
創(chuàng)建***約束會(huì)在Oracle中創(chuàng)建一個(gè)Constraint,同時(shí)也會(huì)創(chuàng)建一個(gè)該約束對(duì)應(yīng)的***索引。
創(chuàng)建***索引只會(huì)創(chuàng)建一個(gè)***索引,不會(huì)創(chuàng)建Constraint。
也就是說其實(shí)***約束是通過創(chuàng)建***索引來實(shí)現(xiàn)的。對(duì)于前端開發(fā)人員來說這兩者有什么區(qū)別嗎?好像沒有。都是不能插入重復(fù)的值。在刪除時(shí)這兩者也有一定的區(qū)別,刪除***約束時(shí)可以只刪除約束而不刪除對(duì)應(yīng)的索引,所以對(duì)于的列還是必須***的,而刪除了***索引的話就可以插入不***的值。
關(guān)于Oracle數(shù)據(jù)庫(kù)***約束和***索引的區(qū)別就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】






