分享
 
 
 

使用特殊数据

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

特殊数据类型是指那些不适合其它数据类型分类的数据类型。例如,若要将客户调查中"是"或"否"的值相应地用 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 数据类型来记录这些事件和触发器,这样,当发生修改时,就可以自动更新其值。

用户定义的数据类型

用户定义数据类型使您得以使用针对特定用途定制的描述性名称和格式,来扩展 SQL Server 的基本数据类型(如 varchar)。例如,下述语句实现了一个 birthday 用户定义数据类型,它允许 NULL,并使用了 datetime 基本数据类

型:

EXEC sp_addtype birthday, datetime, 'NULL'

当选取实现用户定义数据类型的基本数据类型时,一定要小心。例如,在美国,社会保险号的形式为 nnn-nn-nnnn。虽然社会保险号包含数字,但是这些数字只是用来构成一个标识符,而不能用于数学运算。因此通常的做法是:先将用户定义社会保险号数据类型创建为 varchar 数据类型,然后创建一个 CHECK 约束来执行存储在表中的社会保险号格式。

EXEC sp_addtype SSN, 'VARCHAR(11)', 'NOT NULL'

GO

CREATE TABLE ShowSSNUsage

(EmployeeID INT PRIMARY KEY,

EmployeeSSN SSN,

CONSTRAINT CheckSSN CHECK ( EmployeeSSN LIKE

'[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]' )

)

GO

若通常将 SSN 列用作索引,特别使聚集索引中的键,如果 SSN 用户定义数据类型是使用 int 数据类型实现的,则键的大小可以从 11 个字节缩减到 4 个字节。这种键的大小的缩减能改善数据检索。提高数据检索效率以及避免要求 CHECK 约束,这一点通常比显示或修改 SSN 值时进行从 int 到字符格式的额外的转换处理更为重要。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有