`
sty2008boy
  • 浏览: 301756 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

使用 uniqueidentifier 数据

sql 
阅读更多

uniqueidentifier 数据类型可存储 16 字节的二进制值,其作用与全局唯一标识符 (GUID) 一样。GUID 是唯一的二进制数;世界上的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络中,分配必须具有唯一性的标识符。

uniqueidentifier 列的 GUID 值通常通过下列方式之一获取:

  • 在 Transact-SQL 语句、批处理或脚本中调用 NEWID 函数。

  • 在应用程序代码中,调用返回 GUID 的应用程序 API 函数或方法。

Transact-SQL NEWID 函数以及应用程序 API 函数和方法用它们的网卡的标识号加上 CPU 时钟的唯一编号来生成新的 uniqueidentifier 值。每个网卡都有唯一的标识号。NEWID 返回的 uniqueidentifier 值是通过使用服务器上的网卡而生成的。应用程序 API 函数和方法返回的 uniqueidentifier 值是通过使用客户端中的网卡而生成的。

uniqueidentifier 值通常不定义为常量。您可以按下列方式指定 uniqueidentifier 常量:

  • 字符串格式: '6F9619FF-8B86-D011-B42D-00C04FC964FF'

  • 二进制格式: 0xff19966f868b11d0b42d00c04fc964ff

uniqueidentifier 数据类型不会按照 IDENTITY 属性的方式为插入的行自动生成新的 ID。例如,若要获取新的 uniqueidentifier 值,则表必须具有指定 NEWID 函数或 NEWSEQUENTIALID 函数的 DEFAULT 子句,或 INSERT 语句必须使用 NEWID 函数。

<script src="/Areas/Global/Content/CodeSnippet.js" type="text/javascript"></script>
CREATE TABLE MyUniqueTable
   (UniqueColumn   UNIQUEIDENTIFIER      DEFAULT NEWID(),
   Characters      VARCHAR(10) )
GO
INSERT INTO MyUniqueTable(Characters) VALUES ('abc')
INSERT INTO MyUniqueTable VALUES (NEWID(), 'def')
GO
注意注意

您可以使用 NEWSEQUENTIALID 生成 GUID 以减少叶级别索引上的页争用。NEWSEQUENTIALID 只能与 uniqueidentifier 类型的表列的 DEFAULT 约束一起使用。

uniqueidentifier 列中可以多次出现某个 uniqueidentifier 值,除非对该列也指定了 UNIQUE 或 PRIMARY KEY 约束。当多个行引用源表中的同一个主键时,引用其他表中 uniqueidentifier 主键的外键列中可以多次出现各个 uniqueidentifier 值。

一个表可以有多个 uniqueidentifier 列。每个表中可以指定一个具有 ROWGUIDCOL 属性的 uniqueidentifier 列。ROWGUIDCOL 属性指明此列的 uniqueidentifier 值可唯一地标识表中的行。但是,属性不会执行任何强制实现唯一性的操作。必须使用其他机制强制实现唯一性,例如指定列的 PRIMARY KEY 约束。ROWGUIDCOL 属性主要用于 MicrosoftSQL Server 复制。具有更新订阅的合并复制和事务复制使用 uniqueidentifier 列来确保在表的多个副本中唯一地标识行。

uniqueidentifier 数据类型具有下列缺点:

  • 值长且难懂。这使用户难以正确键入它们,并且更难记住。

  • 这些值是随机的,而且它们不支持任何使其对用户更有意义的模式。

  • 也没有任何方式可以决定生成 uniqueidentifier 值的顺序。它们不适用于那些依赖递增的键值的现有应用程序。

  • uniqueidentifier 为 16 字节时,其数据类型比其他数据类型(例如 4 字节的整数)大。这意味着使用 uniqueidentifier 键生成索引的速度相对慢于使用 int 键生成索引的速度。

在不要求全局唯一性或首选使用按序列增加的键时,请考虑使用 IDENTITY 属性。

分享到:
评论

相关推荐

    创建 uniqueidentifier 类型的唯一值

    `uniqueidentifier` 数据类型用于存储 16 字节 (128 位) 的二进制数据,通常用来表示全局唯一标识符 (GUID)。在 SQL Server 中,可以使用 `NEWID()` 函数生成一个新的 GUID 并将其赋值给 `uniqueidentifier` 类型的...

    sql server 资源管理

    最后,SQL Server还支持使用uniqueidentifier数据类型,这种数据类型常用于生成全局唯一标识符(GUID),它是创建唯一记录的可靠方式,尤其在分布式系统中。 综上所述,SQL Server的资源管理涉及了数据库的设计、表...

    uniqueidentifier转换成varchar数据类型的sql语句

    在SQL Server中,`uniqueidentifier` 是一种数据类型,用于存储全局唯一标识符(GUID)。GUID 是一个由系统生成的128位数值,保证在全局范围内是唯一的。然而,在某些场景下,我们可能需要将这些`uniqueidentifier`...

    powerdesigner GUID uniqueidentifier测试数据生成补丁

    修正powerdesigner无法为SQL SERVER2005、2008自动生成GUID数据类型的测试数据问题,解压后直接覆盖相关文件。 建立test data profile,进行相关设置即可自动生成GUID测试数据。 具体设置可参照博文:...

    解决sql server保存对象字符串转换成uniqueidentifier失败的问题

    在SQL Server中,`uniqueidentifier`数据类型是用来存储全局唯一标识符(GUID)的,它在数据库中确保每个值都是唯一的。...同时,理解`uniqueidentifier`数据类型的特性和使用方法对于处理这类问题至关重要。

    SQL数据库数据类型说明

    SQL 数据库中的特殊数据类型包括 cursor、timestamp、uniqueidentifier 等。 * cursor 数据类型:用于存储游标的引用,用于存储过程中。 * timestamp 数据类型:用于创建一个数据库范围内的唯一数码,每次插入或...

    SQL SEVER 数据类型

    除了上述数据类型外,SQL Server 还提供了其他数据类型,包括 Decimal、Numeric、Float、Real、Int、Smallint、Tinyint、Money、Smallmoney、Bit、Cursor、Sysname、Timestamp、Uniqueidentifier 等。 数据类型的...

    SqlServer数据库的数据类型

    SQL Server作为一种广泛使用的数据库管理系统,提供了丰富的数据类型来满足各种需求。下面我们将详细介绍SQL Server中的25种数据类型。 #### 1. 二进制数据类型 - **Binary[(n)]**:表示固定长度的二进制数据,...

    sqlserver数据库类型对应Java中的数据类型

    在 Java 中,uniqueidentifier 对应的数据类型是 String。 xml 在 SQL Server 中,xml 是一个 XML 类型,用于存储 XML 数据。在 Java 中,xml 对应的数据类型是 String。 time 在 SQL Server 中,time 是一个...

    sqlserver数据类型详解

    几乎所有的数值型数据都可以使用这种数据类型进行存储。 - **应用场景**:广泛应用于各种需要存储整数的场景,如 ID、计数器等。 3. **smallint**: - **类型说明**:整型 - **描述**:`smallint` 类型可以存储...

    SQL数据类型与C#数据类型转换

    特别是在使用SQL Server作为后端数据库与C#进行交互时,了解这两种环境下的数据类型及其对应关系尤为重要。本文旨在详细介绍SQL Server 2005中的数据类型与C#中的数据类型之间的映射关系。 #### 一、基本数据类型...

    SQL 随机抽取数据

    综上所述,通过使用`NEWID()`函数结合`ORDER BY`子句,我们可以轻松地实现从SQL Server表中随机抽取指定数量数据的需求。这种方法不仅简单易行,而且能够很好地满足各种场景下的随机数据抽取需求。

    数据库技术及应用——SQL Server课件 4数据表管理与使用.ppt

    【数据库技术及应用——SQL Server课件 4数据表管理与使用】 在SQL Server数据库管理系统中,数据表的管理和使用是核心部分,本课件详细介绍了相关知识点,包括数据类型、创建和维护数据表等内容。 **数据类型** ...

    SQL Server 2008中的新数据类型——新的三维数据类型和日期类型可以实现更多功能.pdf

    值得注意的是,使用FILESTREAM类型的表必须包含一个UNIQUEIDENTIFIER类型的列,用于唯一标识文件系统中的文件。 除了FILESTREAM,新的日期和时间类型也提供了更细粒度的时间数据处理能力。在SQL Server 2008之前,...

    数据库数据结构

    例如,对于经常需要进行文本搜索的字段,使用Unicode数据类型可以支持多语言,但会占用更多空间;对于日期/时间字段,根据所需的精度和存储空间限制来选择`Datetime`或`Smalldatetime`。 在SQL Server中,还可以...

    向数据库输入数据PPT学习教案.pptx

    向表中输入新数据通常使用`INSERT INTO`语句,删除数据使用`DELETE`,更新数据则用`UPDATE`。这些基础操作是数据库管理的基础,理解并熟练运用它们对于数据库的设计和维护至关重要。 本章的学习目标不仅涵盖了T-SQL...

    文档-数据库函数-数据类型

    6. 其他类型:如BIT用于存储单个布尔值,NULL表示字段可能为空,UNIQUEIDENTIFIER用于存储全局唯一标识符(GUID),以及XML和JSON类型,用于存储结构化和非结构化的XML或JSON数据。 了解和正确使用这些数据类型对于...

    SQL Server 2000数据类型

    以及**uniqueidentifier** 用于存储全局唯一的标识符(GUID)。 SQL Server 2000 还引入了**sql_variant** 数据类型,它可以存储多种数据类型,方便处理异构数据;而**table** 数据类型则是SQL Server 2000的一个...

    SQL_Server_2008中的数据类型比较详细的 介绍

    SQL Server 2008还支持其他特殊类型,例如timestamp(行版本控制的二进制数字)、sql_variant(可存储不同类型的数据,但不包括text、ntext或image等)、cursor(用于存储游标引用)以及uniqueidentifier(存储全局...

Global site tag (gtag.js) - Google Analytics