SqlServer中的資料類型UniqueIdentifier

來源:互聯網
上載者:User

標籤:

SqlServer中的資料類型UniqueIdentifier究竟是什麼東東?

該類型一般用來做為主鍵使用,可用SQL文法的newid()來產生一個唯一的值。
我想請問的是,這個值是一個長整型的資料值呢,還是個其他的什麼值?我在程式中該怎樣去控制他?
歡迎多多交流。
 
 
 

摘自協助:

uniqueidentifier
通用唯一識別碼 (GUID)。

凝視
uniqueidentifier 資料類型的列或局部變數可用兩種方法初始化為一個值: 

使用 NEWID 函數。


將字串常量轉換為例如以下形式(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,當中每一個 x 是 0-9 或 a-f 範圍內的一個十六進位的數字)。比如,6F9619FF-8B86-D011-B42D-00C04FC964FF 即為有效 uniqueidentifier 值。 
比較運算子可與 uniqueidentifier 值一起使用。然而,排列並非通過比較兩個值的位元模式來實現。同意對 uniqueidentifier 值啟動並執行操作僅僅有比較 (=, <>, <, >, <=, >=) 和檢查 NULL(IS NULL 和 IS NOT NULL)。不同意使用其他算術運算子。全部的列約束及屬性(IDENTITY 除外)均同意用於 uniqueidentifier 資料類型。 


使用 uniqueidentifier 資料
uniqueidentifier 資料類型儲存 16 位元組的二進位值,該值的使用與通用唯一識別碼 (GUID) 一樣。GUID 是一個唯一的位元字;世界上的不論什麼兩台電腦都不會產生反覆的 GUID 值。GUID 主要用於在擁有多個節點、多台電腦的網路中,分配必須具有唯一性的標識符。

uniqueidentifier 列的 GUID 值通常由下面方式獲得: 

在 Transact-SQL 語句、批處理或指令碼中調用 NEWID 函數。


在應用程式代碼中,調用返回 GUID 值的應用程式 API 函數或方法。 
Transact-SQL NEWID 函數以及應用程式 API 函數和方法從它們網卡上的標識數字以及 CPU 時鐘的唯一數字產生新的 uniqueidentifier 值。每一個網卡都有唯一的標識號。由 NEWID 返回的 uniqueidentifier 使用server上的網卡產生。由應用程式 API 函數和方法返回的 uniqueidentifier 使用客戶機上的網卡產生。

一般不將 uniqueidentifier 定義為常量,由於非常難保證實際建立的 uniqueidentifier 具有唯一性。指定 uniqueidentifier 常量的方法有兩種: 

字串格式 
‘6F9619FF-8B86-D011-B42D-00C04FC964FF‘

二進位格式 
0xff19966f868b11d0b42d00c04fc964ff

uniqueidentifier 資料類型不象IDENTITY 屬性那樣為新插入的行自己主動產生新的ID。為了得到新的 uniqueidentifier 值,表必須具有一個指定 NEWID 函數的 DEFAULT 子句,或使用 NEWID 函數的 INSERT 語句:

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 列能夠包括多次出現的 uniqueidentifier 值,除非也對此列指定了 UNIQUE 或 PRIMARY KEY 約束。當有多行引用源表中的同一主鍵時,引用其他表的 uniqueidentifier 主鍵的外鍵列將包括多次出現的個別 uniqueidentifier 值。

一個表能夠有多個 uniqueidentifier 列。每一個表中能夠指定一個具有 ROWGUIDCOL 屬性的 uniqueidentifier 列。ROWGUIDCOL 屬性工作表明此列的 uniqueidentifier 值唯一地標識表中的行。可是,該屬性並沒有運行該唯一性。唯一性必須通過其他機制來運行,比方為列指定 PRIMARY KEY 約束。ROWGUIDCOL 屬性主要用於 SQL Server 複製。

uniqueidentifier 資料類型的主要長處是保證由 Transact-SQL NEWID 函數或應用程式 GUID 函數產生的值在全球是唯一的。

uniqueidentifier 資料類型的具有幾個缺點: 

值長且難懂。這使使用者難以正確鍵入它們,並且更難記住。


這些值是隨機的,並且它們不能接受不論什麼使它們對使用者變得更有意義的模式。


沒有不論什麼方式能夠決定產生 uniqueidentifier 值的順序。它們不適用於那些依賴遞增的索引值的現有應用程式。


uniqueidentifier 資料類型具有 16 個位元組,與其他那些諸如 4 位元組的整數相比要相對大一些。這意味著使用 uniqueidentifier 鍵建立的索引可能會比使用 int 鍵實現的索引相對慢一些。 
假設全域唯一性並非必須的,或者須要一個連續遞增的鍵,則能夠考慮使用 IDENTITY 屬性。


^_^
 
 

1。sql server協助裡面有具體的答案,自己尋找。
2。開啟協助
索引--輸入uniqueidentifier就可以。

 
 

uniqueidentifier是通用唯一識別碼 (GUID)
NEWID()傳回型別為uniqueidentifier
SQL SERVER線上說明中的範例:
declare @myid uniqueidentifier
set @myid=newid()
print ‘Value of @myid is ‘+cast(@myid as varchar(255))
每次執行以上程式返回不同的uniqueidentifier
 

SqlServer中的資料類型UniqueIdentifier

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.