nainai1 发表于 2013-3-8 08:53:57

微软认证考试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

ycvodzf 发表于 2013-3-14 01:17:01

有竞争才有进步嘛

萨尔法保护 发表于 2013-5-15 23:43:49

我在马路边丢了一分钱

zrong 发表于 2013-5-16 15:18:38

为中华而努力读书!一包中华好多钱啊~~~

191145685 发表于 2013-5-17 06:13:11

写的真的很不错

潇洒紫焰 发表于 2013-5-17 18:54:16

死亡教会人一切,如同考试之后公布的结果——虽然恍然大悟,但为时晚矣~!

santaclaus 发表于 2013-5-18 08:56:22

做爱做的事,交配交的人。
页: [1]
查看完整版本: 微软认证考试70-461 Work with Data 数据处理 --27%比重--(3)