微软认证考试70-461 Work with Data 数据处理 --27%比重--(3)
附注:微软认证考试70-461范围[*]Create Database Objects创建数据库对象 (24%)
[*]Work with Data数据处理 (27%)
[*]Modify Data数据修改 (24%)
[*]Troubleshoot & Optimize故障排解及SQL优化 (25%)
本文是第二节Work with Data 数据处理 。第一部分直通车第二部分直通车
第三部分:Implement data types. May include but not limited to: use appropriate data; understand the uses and limitations of each data type; impact of GUID (newid, newsequentialid) on database performance;when to use what data type for columns. 数据类型实现。可能包含但不仅限于:合理使用数据;理解各种数据类型的使用和限制;GUID对数据库性能的影响(newid, newsequentialid);掌握特定情况下针对列使特定的数据类型;数据类型实现什么是数据类型?在 SQL Server 中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。数据类型是一种属性,用于指定对象可保存的数据的类型:整数数据、字符数据、货币数据、日期和时间数据、二进制字符串等。换句话说,数据类型是一种约束,限制其列上输入的值。比如整型列不会存储字符串或小数。另外,每一个数据类型都有其自己的范围去存储值,并且最多占用的磁盘或内存空间不会超过其范围。
注意:废弃的数据类型(Deprecated data types)不建议使用,因为它们会在未来的新版本删除掉。下面列出各种SQL Server数据类型:SQL数字类型:
数据类型范围存储
bigint-9,000,000,000,000,000,000
to 9,000,000,000,000,000,000 8 bytes
bit1 or 01 byte
decimal
Varies
int-2,000,000,000 to 2,000,000,0004 bytes
money-922,337,203,685,477.508 to 922,337,203685,477.58078 bytes
numeric
smallint-32,000 to 32,0002 bytes
smallmoney-214,748.3648 to 214,748.36474 bytes
tinyint0 to 2551 byte
符点数据类型通常用于科学计算或用作近似值数字类型
数据类型范围存储
float
real
日期和时间类型:以不同的格式存储日期和时间
数据类型 范围存储
date103 bytes
datetime219 to 27Varies
datetime19 to 238 bytes
datetimeoffset26 to 3410 bytes
smalldatetime194 bytes
time8 to 165 bytes
字符串类型:通常用于存储英文字符串
数据类型 范围存储
char1 to 8,000Varies
text2,000,000,000Varies
varchar8,000Varies
UNICODE字符串类型:通常用于存储各种非英文语言字符串,如中文。
数据类型范围存储
nchar1 to 4,000Varies
ntext1,000,000,000Varies
nvarchar4,000Varies
二进制数据类型:
数据类型范围存储
binary Varies
image Varies
varbinary Varies
其它数据类型:
数据类型范围存储
cursor
hierarchyid
sql_variant
table
timestamp
uniqueidentifier
xml
参考:http://www.katieandemil.com/sql-server-2012-data-typesGUID对数据库性能的影响(newid, newsequentialid);两个点:1:newid比newsequentialid慢。2:newsequentialid不是绝对安全的,因为它是可猜测的。newid是随机的,是随机数的不错替代选择。NEWID:创建 uniqueidentifier 类型的唯一值。使用:NEWID()
DECLARE @myid uniqueidentifierSET @myid = NEWID()PRINT 'Value of @myid is: '+ CONVERT(varchar(255), @myid)结果:Value of @myid is: 6F9619FF-8B86-D011-B42D-00C04FC964FF注意:此值是随机的!参考:http://msdn.microsoft.com/zh-cn/library/ms190348.aspx
NEWSEQUENTIALID()在启动 Windows 后在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。在重新启动 Windows 后,GUID 可以再次从一个较低的范围开始,但仍是全局唯一的。在 GUID 列用作行标识符时,使用 NEWSEQUENTIALID 可能比使用 NEWID 函数的速度更快。其原因在于,NEWID 函数导致随机行为并且使用更少的缓存数据页。 使用 NEWSEQUENTIALID 还有助于完全填充数据和索引页。NEWSEQUENTIALID() 只能与 uniqueidentifier 类型表列上的 DEFAULT 约束一起使用。例如:CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID())当 NEWSEQUENTIALID() 用于 DEFAULT 表达式时,不能与其他标量运算符结合使用。例如,您不能执行以下操作:CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID()))在上一个示例中,myfunction() 是接受并返回uniqueidentifier 值的标量用户定义标量函数。
NEWSEQUENTIALID() 不能在查询中引用。您可以使用 NEWSEQUENTIALID() 生成 GUID 以减少叶级别索引上的页争用。使用 NEWSEQUENTIALID() 生成的每个 GUID 在该计算机上都是唯一的。仅当源计算机具有网卡时,使用 NEWSEQUENTIALID() 生成的 GUID 在多台计算机上才是唯一的。参考:http://msdn.microsoft.com/zh-cn/library/ms189786(v=sql.110).aspx
有竞争才有进步嘛 我在马路边丢了一分钱 为中华而努力读书!一包中华好多钱啊~~~ 写的真的很不错 死亡教会人一切,如同考试之后公布的结果——虽然恍然大悟,但为时晚矣~! 做爱做的事,交配交的人。
页:
[1]