SqlServer中的数据类型UniqueIdentifier
生活随笔
收集整理的這篇文章主要介紹了
SqlServer中的数据类型UniqueIdentifier
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
| SqlServer中的數(shù)據(jù)類型UniqueIdentifier究竟是什么東東? |
該類型一般用來(lái)做為主鍵使用,可用SQL語(yǔ)法的newid()來(lái)生成一個(gè)唯一的值。 我想請(qǐng)問(wèn)的是,這個(gè)值是一個(gè)長(zhǎng)整型的數(shù)據(jù)值呢,還是個(gè)其他的什么值?我在程序中該怎樣去控制他? 歡迎多多交流。 |
| ? |
| ? |
| ? |
摘自幫助: uniqueidentifier 全局唯一標(biāo)識(shí)符?(GUID)。 凝視 uniqueidentifier?數(shù)據(jù)類型的列或局部變量可用兩種方法初始化為一個(gè)值:? 使用?NEWID?函數(shù)。 將字符串常量轉(zhuǎn)換為例如以下形式(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,當(dāng)中每一個(gè)?x?是?0-9?或?a-f?范圍內(nèi)的一個(gè)十六進(jìn)制的數(shù)字)。比如,6F9619FF-8B86-D011-B42D-00C04FC964FF?即為有效的?uniqueidentifier?值。? 比較運(yùn)算符可與?uniqueidentifier?值一起使用。然而,排列并非通過(guò)比較兩個(gè)值的位模式來(lái)實(shí)現(xiàn)。同意對(duì)?uniqueidentifier?值運(yùn)行的操作僅僅有比較?(=,?<>,?<,?>,?<=,?>=)?和檢查?NULL(IS?NULL?和?IS?NOT?NULL)。不同意使用其他算術(shù)運(yùn)算符。全部的列約束及屬性(IDENTITY?除外)均同意用于?uniqueidentifier?數(shù)據(jù)類型。? 使用?uniqueidentifier?數(shù)據(jù) uniqueidentifier?數(shù)據(jù)類型存儲(chǔ)?16?字節(jié)的二進(jìn)制值,該值的使用與全局唯一標(biāo)識(shí)符?(GUID)?一樣。GUID?是一個(gè)唯一的二進(jìn)制數(shù)字;世界上的不論什么兩臺(tái)計(jì)算機(jī)都不會(huì)生成反復(fù)的?GUID?值。GUID?主要用于在擁有多個(gè)節(jié)點(diǎn)、多臺(tái)計(jì)算機(jī)的網(wǎng)絡(luò)中,分配必須具有唯一性的標(biāo)識(shí)符。 uniqueidentifier?列的?GUID?值通常由下面方式獲得:? 在?Transact-SQL?語(yǔ)句、批處理或腳本中調(diào)用?NEWID?函數(shù)。 在應(yīng)用程序代碼中,調(diào)用返回?GUID?值的應(yīng)用程序?API?函數(shù)或方法。? Transact-SQL?NEWID?函數(shù)以及應(yīng)用程序?API?函數(shù)和方法從它們網(wǎng)卡上的標(biāo)識(shí)數(shù)字以及?CPU?時(shí)鐘的唯一數(shù)字生成新的?uniqueidentifier?值。每一個(gè)網(wǎng)卡都有唯一的標(biāo)識(shí)號(hào)。由?NEWID?返回的?uniqueidentifier?使用server上的網(wǎng)卡生成。由應(yīng)用程序?API?函數(shù)和方法返回的?uniqueidentifier?使用客戶機(jī)上的網(wǎng)卡生成。 一般不將?uniqueidentifier?定義為常量,由于非常難保證實(shí)際創(chuàng)建的?uniqueidentifier?具有唯一性。指定?uniqueidentifier?常量的方法有兩種:? 字符串格式? '6F9619FF-8B86-D011-B42D-00C04FC964FF' 二進(jìn)制格式? 0xff19966f868b11d0b42d00c04fc964ff uniqueidentifier?數(shù)據(jù)類型不象IDENTITY?屬性那樣為新插入的行自己主動(dòng)生成新的ID。為了得到新的?uniqueidentifier?值,表必須具有一個(gè)指定?NEWID?函數(shù)的?DEFAULT?子句,或使用?NEWID?函數(shù)的?INSERT?語(yǔ)句: CREATE?TABLE?MyUniqueTable (UniqueColumn?UNIQUEIDENTIFIER?DEFAULT?NEWID(), Characters?VARCHAR(10)?) GO INSERT?INTO?MyUniqueTable(Characters)?VALUES?('abc') INSERT?INTO?MyUniqueTable?VALUES?(NEWID(),?'def') GO uniqueidentifier?列能夠包括多次出現(xiàn)的?uniqueidentifier?值,除非也對(duì)此列指定了?UNIQUE?或?PRIMARY?KEY?約束。當(dāng)有多行引用源表中的同一主鍵時(shí),引用其他表的?uniqueidentifier?主鍵的外鍵列將包括多次出現(xiàn)的個(gè)別?uniqueidentifier?值。 一個(gè)表能夠有多個(gè)?uniqueidentifier?列。每一個(gè)表中能夠指定一個(gè)具有?ROWGUIDCOL?屬性的?uniqueidentifier?列。ROWGUIDCOL?屬性表明此列的?uniqueidentifier?值唯一地標(biāo)識(shí)表中的行??墒?#xff0c;該屬性并沒(méi)有運(yùn)行該唯一性。唯一性必須通過(guò)其他機(jī)制來(lái)運(yùn)行,比方為列指定?PRIMARY?KEY?約束。ROWGUIDCOL?屬性主要用于?SQL?Server?復(fù)制。 uniqueidentifier?數(shù)據(jù)類型的主要長(zhǎng)處是保證由?Transact-SQL?NEWID?函數(shù)或應(yīng)用程序?GUID?函數(shù)生成的值在全球是唯一的。 uniqueidentifier?數(shù)據(jù)類型的具有幾個(gè)缺點(diǎn):? 值長(zhǎng)且難懂。這使用戶難以正確鍵入它們,并且更難記住。 這些值是隨機(jī)的,并且它們不能接受不論什么使它們對(duì)用戶變得更有意義的模式。 沒(méi)有不論什么方式能夠決定生成?uniqueidentifier?值的順序。它們不適用于那些依賴遞增的鍵值的現(xiàn)有應(yīng)用程序。 uniqueidentifier?數(shù)據(jù)類型具有?16?個(gè)字節(jié),與其他那些諸如?4?字節(jié)的整數(shù)相比要相對(duì)大一些。這意味著使用?uniqueidentifier?鍵建立的索引可能會(huì)比使用?int?鍵實(shí)現(xiàn)的索引相對(duì)慢一些。? 假設(shè)全局唯一性并非必須的,或者須要一個(gè)連續(xù)遞增的鍵,則能夠考慮使用?IDENTITY?屬性。 ^_^ |
| ? |
| ? |
1。sql?server幫助里面有具體的答案,自己查找。 2。打開幫助 索引--輸入uniqueidentifier就可以。 |
| ? |
| ? |
uniqueidentifier是全局唯一標(biāo)識(shí)符?(GUID) NEWID()返回類型為uniqueidentifier SQL?SERVER聯(lián)機(jī)幫助中的樣例: declare?@myid?uniqueidentifier set?@myid=newid() print?'Value?of?@myid?is?'+cast(@myid?as?varchar(255)) 每次執(zhí)行以上程序返回不同的uniqueidentifier |
轉(zhuǎn)載于:https://www.cnblogs.com/mengfanrong/p/4351537.html
總結(jié)
以上是生活随笔為你收集整理的SqlServer中的数据类型UniqueIdentifier的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python机器学习笔记:使用sciki
- 下一篇: request.RequestConte