唯一性約束
湘鄉(xiāng)網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
1) 唯一性約束用來(lái)限制不受主鍵約束的列上的數(shù)據(jù)的唯一性,用于作為訪問(wèn)某行的可選手段,一個(gè)表上可以放置多個(gè)唯一性約束.
2) 只要唯一就可以更新.
3) 即表中任意兩行在 指定列上都不允許有相同的值,允許空(NULL).
4) 一個(gè)表上可以放置多個(gè)唯一性約束
唯一性索引
創(chuàng)建唯一索引可以確保任何生成重復(fù)鍵值的嘗試都會(huì)失敗。
約束和索引, 前者是用來(lái)檢查數(shù)據(jù)的正確性,后者用來(lái)實(shí)現(xiàn)數(shù)據(jù)查詢的優(yōu)化,目的不同。
唯一性約束與唯一索引有所不同:
1)創(chuàng)建唯一約束會(huì)在Oracle中創(chuàng)建一個(gè)Constraint,同時(shí)也會(huì)創(chuàng)建一個(gè)該約束對(duì)應(yīng)的唯一索引。
2).創(chuàng)建唯一索引只會(huì)創(chuàng)建一個(gè)唯一索引,不會(huì)創(chuàng)建Constraint。
也就是說(shuō)其實(shí)唯一約束是通過(guò)創(chuàng)建唯一索引來(lái)實(shí)現(xiàn)的。
在刪除時(shí)這兩者也有一定的區(qū)別:
刪除唯一約束時(shí)可以只刪除約束而不刪除對(duì)應(yīng)的索引,所以對(duì)應(yīng)的列還是必須唯一的,
而刪除了唯一索引的話就可以插入不唯一的值
首先說(shuō)明一點(diǎn),主鍵又稱主鍵約束,它也是一種約束,看下它和唯一約束的創(chuàng)建語(yǔ)法:
alter
table
Person
add
constraint
PK_Id
primary
key
(Id)
alter
table
Person
add
constraint
UQ_Name
unique
(Name)
主鍵和唯一約束都要求字段值唯一,除此外,它們還有如下區(qū)別:
·同一張表只能有一個(gè)主鍵,但能有多個(gè)唯一約束;
·主鍵字段值不能為NULL,唯一約束字段值可以為NULL;
·主鍵字段可以做為其他表的外鍵,唯一約束字段不可以做為其他表的外鍵;
·SQLServer默認(rèn)為主鍵字段創(chuàng)建聚集索引,為唯一約束字段創(chuàng)建非聚集索引;
主鍵,唯一,但是不能為空;唯一約束,唯一,但是可以為空
唯一鍵鍵約束和唯一索引功能是一樣的: "唯一性" + "索引"
唯一鍵鍵約束?只是作為一種獨(dú)特的約束(如主鍵約束,唯一鍵約束,check約束,外鍵約束 的一種),以約束的形式管理.但是同時(shí)又自動(dòng)創(chuàng)建了唯一非聚集索引,也就有了索引的性能和部分功能.實(shí)際上唯一鍵約束是用唯一索引來(lái)約束的。
唯一索引?就是一種索引,它對(duì)某字段進(jìn)行唯一性檢查,同時(shí)可以設(shè)置各種參數(shù),非常靈活。
那么我們?cè)趧?chuàng)建列的唯一性時(shí),到底使用哪一種較好呢?(個(gè)人理解)
唯一鍵約束在表中是必定存在的約束的,唯一鍵約束的索引存在于一個(gè)分區(qū)中,并且不會(huì)像索引那樣可以更改。因?yàn)樗饕梢噪S時(shí)改動(dòng)(當(dāng)然也不會(huì)經(jīng)常改動(dòng)),索引個(gè)人建議還是用唯一索引更靈活。管理約束還得管理索引,而管理索引,一個(gè)就好了。但是對(duì)于一些高可用性,也要注意索引是否在其他地方也存在。
unique約束也是通過(guò)unique索引實(shí)現(xiàn)的.
唯一的區(qū)別在于建立和刪除上.
索引是使用 create/drop index 創(chuàng)建和刪除的
而約束是使用 alter table tb add constraint 建立, 使用 drop constraint 刪除
唯一鍵分為主鍵(主鍵索引)和唯一索引(UNIQUE 索引),意思就是在某一列中不能出現(xiàn)重復(fù)值,但主鍵索引和唯一索引的區(qū)別是,主鍵索引不允許為空,而唯一索引允許為空,其中空(null)是可以不唯一的。
設(shè)置方法分別如下:
創(chuàng)建主鍵索引:
alter?table?tablename?add?constraint?主鍵名?primary??key(字段名);
創(chuàng)建唯一索引:
CREATE?UNIQUE?CLUSTERED?INDEX?myclumn_cindex?ON?mytable(mycolumn);
1、未建立表,可以在查詢分析器里,在列的后面添加一個(gè)unique,這就實(shí)現(xiàn)了唯一性約束.
2、已經(jīng)建立表,
alter
table
表名
add
constraint
約束名
unique
(列名[也可稱為字段])
新聞名稱:sqlserver唯一鍵,sqlserver設(shè)置唯一
分享鏈接:http://chinadenli.net/article10/dsicido.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站導(dǎo)航、網(wǎng)站排名、定制網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)