当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 使用特殊数据

MSSQL
MS SQL数据库备份和恢复存储过程
深入SQL SERVER 2000的内存管理机制(三)
深入SQL SERVER 2000的内存管理机制(二)
全接触sqlserver异常与孤立事务
理解odbc和ole
sql优化器探讨
SQL备份并压缩备份文件
SQL SERVER 2000 SP4新特性概述
SQL服务器外网IP测试故障解决
保卫你的SQL Server数据库
SQL Server密码安全追踪和存储
SQL Server的链接服务器技术小结
一些Select检索高级用法
SQL Server中发送邮件的新方式
深入探讨SQL Server 2000对XML的支持
SQLServer和Oracle的常用函数对比
SQL Server的用户及权限
SQL注入攻击通杀
SQL Server 安全检查列表
SQL Server中处理死锁

MSSQL 中的 使用特殊数据


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 80 ::
收藏到网摘: n/a

  特殊数据类型是指那些不适合其它数据类型分类的数据类型。例如,若要将客户调查中"是"或"否"的值相应地用 1 或 0 进行存储,则可使用 bit 数据类型。Microsoft® SQL Server™ 2000 在该分类中有几个数据类型:

bit
bit 数据不必放在单引号中。它是与 SQL Server 的整型和数字数据相似的数字数据,但 bit 列只能存储 0 和 1。

sql_variant
SQL Server 中的 sql_variant 数据类型允许单个列、参数或变量存储不同数据类型的数据值。sql_variant 列的每个实例都记录数据值和描述该值的元数据:该值的基本数据类型、最大大小、小数位数、精度和排序规则。

下例中的第二个表包含一个 sql_variant 列:

CREATE TABLE ObjectTable
    (ObjectID            int
                            CONSTRAINT PKObjectTable PRIMARY KEY,
    ObjectName            nvarchar(80),
    ObjectWeight        decimal(10,3),
    ObjectColor        nvarchar(20)
    )

CREATE TABLE VariablePropertyTable
    (ObjectID            int REFERENCES ObjectTable(ObjectID),
    PropertyName        nvarchar(100),
    PropertyValue        sql_variant,
    CONSTRAINT PKVariablePropertyTable
                    PRIMARY KEY(ObjectID, PropertyName)
    )

若要获得任何一个特定 sql_variant 实例的元数据信息,请使用 SQL_VARIANT_PROPERTY 函数。

table
table 数据类型类似是一个临时表,可以用于存储一个结果集以便以后处理。这种数据类型只能用于定义 table 类型的局部变量和用户定义函数的返回值。

一个 table 变量或返回值的定义包括列、数据类型、精度、每列的小数位数以及可选的 PRIMARY KEY、UNIQUE 和CHECK 约束。

存储在 table 变量中或用户定义函数返回值中的行的格式,必须在声明变量或创建函数时定义。其语法基于 CREATE
TABLE 的语法。例如:

DECLARE @TableVar TABLE
  (Cola int PRIMARY KEY,
   Colb char(3))

INSERT INTO @TableVar VALUES (1, 'abc')
INSERT INTO @TableVar VALUES (2, 'def')

SELECT * FROM @TableVar
GO

返回一个 table 的 table 变量和用户定义函数只能用于某些 SELECT 和 INSERT 语句,而且其中 UPDATE、DELETE 和
DECLARE CURSOR 语句支持表。返回 table 的 table 变量和用户定义函数不能用于任何其它 Transact-SQL 语句。

在该表中使用的索引或其它约束必须被定义为 DECLARE variable 或 CREATE FUNCTION 语句的一部分。不得过后再使用它
们,因为 CREATE INDEX 或 ALTER TABLE 语句不能引用表变量和用户定义的函数。

有关用于定义 table 变量和用户定义函数的语法的更多信息,请参见 DECLARE @local_variable (T-SQL) 和 CREATE
FUNCTION (T-SQL)。

timestamp
SQL Server timestamp 数据类型与时间和日期无关。SQL Server timestamp 是二进制数字,它表明数据库中数据修改发生的相对顺序。实现 timestamp 数据类型最初是为了支持 SQL Server 恢复算法。每次修改页时,都会使用当前的
@@DBTS 值对其做一次标记,然后 @@DBTS 加1。这样做足以帮助恢复过程确定页修改的相对次序,但是 timestamp 值与时间没有任何关系。

在 SQL Server 7.0 版和 SQL Server 2000 中,@@DBTS 只在 timestamp 列中使用时其值才会递增。如果一个表包含 timestamp 列,则每次由 INSERT、UPDATE 或DELETE 语句修改一行时,此行的 timestamp 值就被置为当前的 @@DBTS 值,然后 @@DBTS 加1。
因为每一次修改时 timestamp 值都会改变,所以千万不要在键(特别是主键)中使用 timestamp 列。

若要记录表中发生的数据修改次数,可用 datetime 或 smalldatetime 数据类型来记录这些事件和触发器,这样,当发生修改时,就可以自动更新其值。