日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

SqlServer中的数据类型UniqueIdentifier

發(fā)布時(shí)間:2023/12/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。