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的更多相关文章

  1. SQLServer中查询表结构(表主键 、列说明、列数据类型、所有表名)的Sql语句

    SQLServer中查询表结构(表主键 .列说明.列数据类型.所有表名)的Sql语句 1.查询数据库中的所有表名称: SELECT name FROM SysObjects Where XType=' ...

  2. SQLServer中间接实现函数索引或者Hash索引

    本文出处:http://www.cnblogs.com/wy123/p/6617700.html SQLServer中没有函数索引,在某些场景下查询的时候要根据字段的某一部分做查询或者经过某种计算之后 ...

  3. SQLSERVER中的LOB页面简单研究

    SQLSERVER中的LOB页面简单研究 这篇文章和我另一篇文章是相辅相成的,在看<SQLSERVER2012 列存储索引的简单研究和测试>这篇文章之前希望大家先看一下这篇文章o(∩_∩) ...

  4. SQLSERVER中NULL位图的作用

    SQLSERVER中NULL位图的作用 首先感谢宋沄剑提供的文章和sqlskill网站:www.sqlskills.com,看下面文章之前请先看一下下面两篇文章 SQL Server误区30日谈-Da ...

  5. C#批量插入数据到Sqlserver中的四种方式

    我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...

  6. Sqlserver中一直在用又经常被忽略的知识点一

    已经有快2个月没有更新博客了,实在是因为最近发生了太多的事情,辞了工作,在湘雅医院待了一个多月,然后又新换了工作...... 在平时的工作中,Sqlserver中许多知识点是经常用到的,但是有时候我们 ...

  7. SQLSERVER中的假脱机spool

    SQLSERVER中的假脱机spool 我发现网上对于假脱机的解释都非常零散,究竟假脱机是什么? 这几天在家里研究了一下,收集了很多网上的资料 假脱机是中文的翻译,而英文的名字叫做 spool 在徐老 ...

  8. (转)笔记320 SQLSERVER中的加密函数 2013-7-11

    1 --SQLSERVER中的加密函数 2013-7-11 2 ENCRYPTBYASYMKEY() --非对称密钥 3 ENCRYPTBYCERT() --证书加密 4 ENCRYPTBYKEY() ...

  9. C#批量插入数据到Sqlserver中的三种方式

    本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生 成 ...

随机推荐

  1. iOS 把图片从Mac本地添加到iOS Simulator中

    [把图片从Mac本地添加到iOS Simulator中] 1. 把图片从Mac本机拖动到iOS Simulator中: 2. iOS Simulator会自动打开Safari去打开对应的图片,然后你用 ...

  2. Calling 64-bit assembly language functions lodged inside the Delphi source code

    Code: http://www.atelierweb.com/calling-64-bit-assembly-language-functions-lodged-inside-the-delphi- ...

  3. 引用 U-boot给kernel传参数和kernel读取参数—struct tag

    引用 清风徐徐 的 U-boot给kernel传参数和kernel读取参数—struct tag U-boot会给Linux Kernel传递很多参数,如:串口,RAM,videofb等.而Linux ...

  4. 基于visual Studio2013解决C语言竞赛题之0422牛顿迭代法

      题目

  5. python模块学习---HTMLParser(解析HTML文档元素)

    HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. 使用时需要定义一个从类HTMLParser继承的类,重定义 ...

  6. Xcode4.5 本地化,多语言设置

    网上已有很多关于ios本地化的博客和资料,由于部分原作者使用的Xcode版本较早,4.5以后的版本已不再支持该方法,后来也没有更新,因此在此写一点学习资料分享出来.废话不多说.     ios本地化主 ...

  7. The connection to adb is down, and a severe error has occured.问题解决

    遇到问题描述: 运行android程序控制台输出 [2013-06-25 11:10:32 - MyWellnessTracker] The connection to adb is down, an ...

  8. C++成员变量与函数内存分配

    关于结构体和C++类的内存地址问题 C++类是由结构体发展得来的,所以他们的成员变量(C语言的结构体只有成员变量)的内存分配机制是一样的.下面我们以类来说明问题,如果类的问题通了,结构体也也就没问题啦 ...

  9. stm32之ADC

    将模拟量转换为数字量的过程称为模式(A/D)转换,完成这一转换的期间成为模数转换器(简称ADC);将数字量转换为模拟量的过程为数模(D/A)转换,完成这一转换的器件称为数模转换器(简称DAC). 模拟 ...

  10. Oracle中查询各种对象的方法小结

    --查看当前库中的所有表select * from all_tables a where a.table_name='INFOCODE_P20081'--查看表结构select * from all_ ...