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 请求数据 error

    解决办法如下: 0x1 ->请求数据时加上缺少的类型 AFHTTPSessionManager *manager = [selfAFHTTPSessionManager];//    manag ...

  2. 写一方法用来计算1+2+3+...n,其中n作为参数输入,返回值可以由方法名返回,也可以由参数返回

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. Fragment实现不支持左右滑动的Tab

    主要思想:顶部标题top.xml,中间Fragment,底部Tab导航. top.xml具体实现: <?xml version="1.0" encoding="ut ...

  4. 史上最详细的Android Studio系列教程一--下载和安装

    链接地址:http://segmentfault.com/a/1190000002401964#articleHeader4 原文链接:http://stormzhang.com/devtools/2 ...

  5. 我的cocos2d-x集成sharesdk之旅(转)

    链接地址:http://blog.csdn.net/yeungxuguang/article/details/18227153 本文出自:http://www.iteye.com/topic/1130 ...

  6. 安卓Launcher之获取手机安装的应用列表,安卓launcher

    Launcher中最主要的就是获取所有应用列表的入口以及图标,一般获取的方法有两种: PackageInfo ResolveInfo 运行获取所有APP的Launcher并且允许进行点击事件,进入到应 ...

  7. 0-1背包的动态规划算法,部分背包的贪心算法和DP算法------算法导论

    一.问题描述 0-1背包问题,部分背包问题.分别实现0-1背包的DP算法,部分背包的贪心算法和DP算法. 二.算法原理 (1)0-1背包的DP算法 0-1背包问题:有n件物品和一个容量为W的背包.第i ...

  8. ogr2ogr: Export Well Known Text (WKT) for one feature to a CSV file

    Perhaps you’re looking for this? ogr2ogr -f “CSV” “E:\4_GIS\NorthArkCartoData\UnitedStates\MO_wkt” “ ...

  9. struct 和 class 不同点

    在 C++ 里面 struct 和 class 没有本质的差别 仅仅是成员和继承方式的默认不同 struct 是 public class 是 private 我的个人建议是仅仅要须要实现成员函数的就 ...

  10. ListView属性解释

    1.android:scrollbarStyle 定义滚动条的样式和位置 参考:http://www.trinea.cn/android/android-scrollbarstyle/ 2.andro ...