- 浏览: 146075 次
- 性别:
- 来自: 青岛
文章分类
- 全部博客 (98)
- css (17)
- Java (7)
- PHP (16)
- javascript (6)
- Ajax (0)
- jQuery (1)
- 网络 (3)
- windows (1)
- 服务器 (2)
- 开发流程 (0)
- SEO (1)
- 网页设计制作 (5)
- 数据库 (7)
- 工具 (6)
- 移动通信 (1)
- 数据库 oracle (5)
- PHP phpcms (2)
- thinksns (1)
- jsp (1)
- dedecms (7)
- EmEditor (1)
- 数据库,mysql (5)
- 数据库,mssql (11)
- svn (1)
- PHP,ecshop (1)
- Ofbiz (0)
- linux (2)
- destoon笔记 (1)
- discuz (1)
最新评论
-
sibyl_pisces:
guangqiang 写道嗯 有点意思 敬同行 你也是在青岛吗 ...
CSS+DIV固定底部的漂浮导航条 -
guangqiang:
嗯 有点意思 敬同行 你也是在青岛吗 ?
CSS+DIV固定底部的漂浮导航条 -
sibyl_pisces:
anqiuejack 写道解决了我的问题,但还是搞不懂对IE固 ...
CSS+DIV固定底部的漂浮导航条 -
anqiuejack:
解决了我的问题,但还是搞不懂对IE固定设定的代码的意思,这是J ...
CSS+DIV固定底部的漂浮导航条 -
yuxiatongzhi:
绑定事件里 return false; 如果设置 ...
ie6 javascript:void(0);
SQL Server 2008数据类型
在创建表时,必须为表中的每列指派一种数据类型。本节将介绍SQL Server中最常用的一些数据类型。即使创建自定义数据类型,它也必须基于一种标准的SQL Server数据类型。例如,可以使用如下语法创建一种自定义数据类型(Address),但要注意,它基于SQL Server标准的varchar数据类型。
- CREATE TYPE Address
- FROM varchar(35) NOT NULL
如果在SQL Server Management Studio的表设计界面中更改一个大型表中某列的数据类型,那么该操作可能需要很长时间。可以通过在Management Studio界面中脚本化这种改变来观察其原因。Management Studio再创建一个临时表,采用像tmpTableName这样的名称,然后将数据复制到该表中。最后,界面删除旧表并用新的数据类型重命名新表。当然,此过程中还涉及其他一些用于处理表中索引和其他任何关系的步骤。
如果有一个包含数百万条记录的大型表,则该过程可能需要花费十分钟,有时可能是数小时。为避免这种情况,可在查询窗口中使用简单的单行T-SQL语句来更改该列的数据类型。例如,要将Employees表中JobTitle列的数据类型改为varchar(70),可以使用如下语法。
- ALTER TABLE HumanResources.Employee ALTER COLUMN JobTitle Varchar(70)
说明:
在转换为与当前数据不兼容的数据类型时,可能丢失重要数据。例如,如果要将包含一些数据(如15.415)的numeric数据类型转换为integer数据类型,那么15.415这个数据将四舍五入为整数。
您可能想对SQL Server表编写一个报表,显示表中每列的数据类型。完成这项任务的方法有很多种,但最常见的一种方法是连接sys.objects表和sys.columns表。在下面的代码中,有两个函数可能不太为您所熟悉。函数TYPE_NAME()将数据类型id转换为适当的名称。要进行反向操作,可使用TYPE_ID()函数。需要注意的另一个函数是SCHEMA_ID(),它用于返回架构的标识值。在需要编写有关SQL Server元数据的报表时,这是特别有用的。
- SELECT o.name AS ObjectName,
- c.name AS ColumnName,
- TYPE_NAME(c.user_type_id) as DataType
- FROM sys.objects o JOIN sys.columns c
- ON o.object_id = c.object_id
- WHERE o.name ='Department'
- and o.Schema_ID = SCHEMA_ID('HumanResources')
该代码返回如下结果(注意,Name是一种用户定义的数据类型)。
- ObjectName ColumnName DataType
- ---------------------------------------------------
- Department DepartmentID smallint
- Department Name
Name - Department GroupName Name
- Department ModifiedDate
datetime
1. 字符数据类型
字符数据类型包括varchar、char、nvarchar、nchar、text以及ntext。这些数据类型用于存储字符数据。varchar和char类型的主要区别是数据填充。如果有一表列名为FirstName且数据类型为varchar(20),同时将值Brian存储到该列中,则物理上只存储5个字节。但如果在数据类型为char(20)的列中存储相同的值,将使用全部20个字节。SQL将插入拖尾空格来填满20个字符。
如果要节省空间,那么为什么还使用char数据类型呢?使用varchar数据类型会稍增加一些系统开销。例如,如果要存储两字母形式的州名缩写,则最好使用char(2)列。尽管有些DBA认为应最大可能地节省空间,但一般来说,好的做法是在组织中找到一个合适的阈值,并指定低于该值的采用char数据类型,反之则采用varchar数据类型。通常的原则是,任何小于或等于5个字节的列应存储为char数据类型,而不是varchar数据类型。如果超过这个长度,使用varchar数据类型的好处将超过其额外开销。
nvarchar数据类型和nchar数据类型的工作方式与对等的varchar数据类型和char数据类型相同,但这两种数据类型可以处理国际性的Unicode字符。它们需要一些额外开销。以Unicode形式存储的数据为一个字符占两个字节。如果要将值Brian存储到nvarchar列,它将使用10个字节;而如果将它存储为nchar(20),则需要使用40字节。由于这些额外开销和增加的空间,应该避免使用Unicode列,除非确实有需要使用它们的业务或语言需求。
接下来要提的数据类型是text和ntext。text数据类型用于在数据页内外存储大型字符数据。应尽可能少地使用这两种数据类型,因为可能影响性能但可在单行的列中存储多达2GB的数据。与text数据类型相比,更好的选择是使用varchar(max)类型,因为将获得更好的性能。另外,text和ntext数据类型在SQL Server的一些未来版本中将不可用,因此现在开始还是最好使用varchar(max)和nvarchar(max)而不是text和ntext数据类型。
表1-1列出了这些类型,对其作了简单描述,并说明了要求的存储空间。
表1-1
数 据 类 型 |
描 述 |
存 储 空 间 |
Char(n) |
N为1~8000字符之间 |
n字节 |
Nchar(n) |
N为1~4000 Unicode字符之间 |
(2n字节)+2字 节额外开销 |
Ntext |
最多为230–1 (1 073 741 823)Unicode字符 |
每字符2字节 |
Nvarchar(max) |
最多为230–1 (1 073 741 823)Unicode字符 |
2×字符数+2字 节额外开销 |
Text |
最多为231–1 (2 147 483 647)字符 |
每字符1字节 |
Varchar(n) |
N为1~8000字符之间 |
每字符1字节+2 字节额外开销 |
Varchar(max) |
最多为231–1(2 147 483 647)字符 |
每字符1字节+2 字节额外开销 |
2. 精确数值数据类型
数值数据类型包括bit、tinyint、smallint、int、bigint、numeric、decimal、money、float以及real。这些数据类型都用于存储不同类型的数字值。第一种数据类型bit只存储0或1,在大多数应用程序中被转换为true或false。bit数据类型非常适合用于开关标记,且它只占据一个字节空间。其他常见的数值数据类型如表1-2所示。
表1-2
数 据 类 型 |
描 述 |
存 储 空 间 |
bit |
0、1或Null |
1字节(8位) |
tinyint |
0~255之间的整数 |
1字节 |
smallint |
–32 768~32 767之间的整数 |
2字节 |
int |
–2 147 483 648~ 2 147 483 647之间的整数 |
4字节 |
bigint |
–9 223 372 036 854 775 808~ 9 223 372 036 854 775 807 之间的整数 |
8字节 |
(续表)
数 据 类 型 |
描 述 |
存 储 空 间 |
numeric(p,s)或 decimal(p,s) |
–1 038+1~1 038–1之间的数值 |
最多17字节 |
money |
–922 337 203 685 477.580 8~ 922 337 203 685 477.580 7 |
8字节 |
smallmoney |
–214 748.3648~2 14 748.3647 |
4字节 |
SQL Server 2008数据类型(2)
如decimal和numeric等数值数据类型可存储小数点右边或左边的变长位数。Scale是小数点右边的位数。精度(Precision)定义了总位数,包括小数点右边的位数。例如,由于14.88531可为numeric(7,5)或decimal(7,5)。如果将14.25插入到numeric(5,1)列中,它将被舍入为14.3。
3. 近似数值数据类型
这个分类中包括数据类型float和real。它们用于表示浮点数据。但是,由于它们是近似的,因此不能精确地表示所有值。
float(n)中的n是用于存储该数尾数(mantissa)的位数。SQL Server对此只使用两个值。如果指定位于1~24之间,SQL就使用24。如果指定25~53之间,SQL就使用53。当指定float()时(括号中为空),默认为53。
表1-3列出了近似数值数据类型,对其进行简单描述,并说明了要求的存储空间。
表1-3
数 据 类 型 |
描 述 |
存 储 空 间 |
float[(n)] |
–1.79E+308~–2.23E– 308,0,2.23E–308~1.79E+308 |
N< =24-4字节 N> 24-8字节 |
real() |
–3.40E+38~–1.18E– 38,0,1.18E–38~3.40E+38 |
4字节 |
注意:
real的同义词为float(24)。
4. 二进制数据类型
如varbinary、binary、varbinary(max)或image等二进制数据类型用于存储二进制数据,如图形文件、Word文档或MP3文件。其值为十六进制的0x0~0xf。image数据类型可在数据页外部存储最多2GB的文件。image数据类型的首选替代数据类型是varbinary(max),可保存最多8KB的二进制数据,其性能通常比image数据类型好。SQL Server 2008的新功能是可以在操作系统文件中通过FileStream存储选项存储varbinary(max)对象。这个选项将数据存储为文件,同时不受varbinary(max)的2GB大小的限制。
表1-4列出了二进制数据类型,对其作了简单描述,并说明了要求的存储空间。
表1-4
数 据 类 型 |
描 述 |
存 储 空 间 |
Binary(n) |
N为1~8000十六进制数字之间 |
n字节 |
Image |
最多为231–1 (2 147 483 647)十六进制数位 |
每字符1字节 |
Varbinary(n) |
N为1~8000十六进制数字之间 |
每字符1字节 +2字节额外开销 |
Varbinary(max) |
最多为231–1 (2 147 483 647)十六进制数字 |
每字符1字节 +2字节额外开销 |
5. 日期和时间数据类型
datetime和smalldatetime数据类型用于存储日期和时间数据。smalldatetime为4字节,存储1900年1月1日~2079年6月6日之间的时间,且只精确到最近的分钟。datetime数据类型为8字节,存储1753年1月1日~9999年12月31日之间的时间,且精确到最近的3.33毫秒。
SQL Server 2008有4种与日期相关的新数据类型:datetime2、dateoffset、date和time。通过SQL Server联机丛书可找到使用这些数据类型的示例。
datetime2数据类型是datetime数据类型的扩展,有着更广的日期范围。时间总是用时、分钟、秒形式来存储。可以定义末尾带有可变参数的datetime2数据类型--如datetime2(3)。这个表达式中的3表示存储时秒的小数精度为3位,或0.999。有效值为0~9之间,默认值为3。
datetimeoffset数据类型和datetime2数据类型一样,带有时区偏移量。该时区偏移量最大为+/-14小时,包含了UTC偏移量,因此可以合理化不同时区捕捉的时间。
date数据类型只存储日期,这是一直需要的一个功能。而time数据类型只存储时间。它也支持time(n)声明,因此可以控制小数秒的粒度。与datetime2和datetimeoffset一样,n可为0~7之间。
表1-5列出了日期/时间数据类型,对其进行简单描述,并说明了要求的存储空间。
表1-5
数 据 类 型 |
描 述 |
存 储 空 间 |
Date |
9999年1月1日~12月31日 |
3字节 |
Datetime |
1753年1月1日~9999年12月31日, 精确到最近的3.33毫秒 |
8字节 |
Datetime2(n) |
9999年1月1日~12月31日 0~7之间的N指定小数秒 |
6~8字节 |
Datetimeoffset(n) |
9999年1月1日~12月31日 0~7之间的N指定小数秒+/–偏移量 |
8~10字节 |
SmalldateTime |
1900年1月1日~2079年 6月6日,精确到1分钟 |
4字节 |
Time(n) |
小时:分钟:秒.9999999 0~7之间的N指定小数秒 |
3~5字节 |
6. 其他系统数据类型
还有一些之前未见过的数据类型。表1-6列出了这些数据类型。
表1-6
数 据 类 型 |
描 述 |
存 储 空 间 |
Cursor |
包含一个对光标的引用和 可以只用作变量或存储过程参数 |
不适用 |
Hierarchyid |
包含一个对层次结构中位置的引用 |
1~892字节+2 字节的额外开销 |
SQL_Variant |
可能包含任何系统数据类 型的值,除了text、ntext、 image、timestamp、xml、 varchar(max)、nvarchar(max)、 varbinary (max)、sql_variant以 及用户定义的数据类型。最大尺 寸为8000字节数据+16字节 (或元数据) |
8016字节 |
Table |
用于存储用于进一步处理的数 据集。定义类似于Create Table。 主要用于返回表值函数的结果集, 它们也可用于存储过程和批处理中 |
取决于表定 义和存储的行数 |
Timestamp or Rowversion |
对于每个表来说是唯一的、自 动存储的值。通常用于版本戳, 该值在插入和每次更新时自动改变 |
8字节 |
Uniqueidentifier |
可以包含全局唯一标识符 (Globally Unique Identifier, GUID)。guid值可以从Newid() 函数获得。这个函数返回的值对 所有计算机来说是唯一的。 尽管存储为16位的二进制值, 但它显示为char(36) |
16字节 |
XML |
可以以Unicode或非Unicode形式存储 |
最多2GB |
注意:
cursor数据类型可能不用于Create Table语句中。
hierarchyid列是SQL Server 2008中新出现的。您可能希望将这种数据类型的列添加到这样的表中--其表行中的数据可用层次结构表示,就像组织层次结构或经理/雇员层次结构一样。存储在该列中的值是行在层次结构中的路径。层次结构中的级别显示为斜杠。斜杠间的值是这个成员在行中的数字级别,如/1/3。可以运用一些与这种数据类型一起使用的特殊函数。
XML数据存储XML文档或片段。根据文档中使用UTF-16或是UTF-8,它在尺寸上像text或ntext一样存储。XML数据类型使用特殊构造体进行搜索和索引。第15章将更详细地介绍这些内容。
7. CLR集成
在SQL Server 2008中,还可使用公共语言运行库(Common Language Runtime,CLR)创建自己的数据类型和存储过程。这让用户可以使用Visual Basic或C#编写更复杂的数据类型,以满足业务需求。这些类型被定义为基本的CLR语言中的类结构。第8章将更详细地介绍其管理部分的内容。
http://www.cnblogs.com/zhangwei595806165/archive/2012/02/23/2364746.html
发表评论
-
解决 SQL Server 耗尽内存的情况
2014-09-20 17:01 853解决 SQL Server 耗尽内存的情况 如果您碰 ... -
恢复SQLSERVER被误删除的数据
2014-08-28 15:15 2http://www.cnblogs.com/lyhabc/ ... -
诊断SQLSERVER问题常用的日志
2014-08-26 15:01 630http://www.cnblogs.com/lyhabc/ ... -
SQLSERVER errorlog讲解
2014-08-26 13:16 1607http://www.cnblogs.com/lyhabc/ ... -
SQLServer 2008数据库查看死锁、堵塞的SQL语句
2013-03-07 16:52 1010下面是监控sql server数 ... -
SQL Server创建和使用临时表(转)
2012-05-04 09:13 768创建临时表 方法一: create ... -
SQL Server 跨库复制表数据的解决办法
2012-04-26 10:09 959跨库复制表数据,有很多种方法,最常见的是写程序来批量导入 ... -
一句sql代码实现 还原数据库 断开当前连接
2012-04-09 13:44 934以前还原数据库一般都是在访问量低的时候直接把服务器数据库 ... -
SQL Server 2008如何正确更改服务器身份验证
2012-03-31 14:31 1438此文章主要向大家讲述的是SQL Server 2008数据库 ... -
SQL Server常用语句(二)
2012-02-04 09:52 1026数据开发-经典 1.按姓氏笔画排序:Select * ... -
SQL Server常用语句(一)
2012-02-04 09:45 1380一、基础 1、说明:创建数据库CREATE DATABA ...
相关推荐
SQL Server 2008 数据类型详解 在 SQL Server 2008 中,数据类型是创建表时最基本的组成部分。每列都需要指定一种数据类型,以便存储相应的数据。在本文中,我们将详细介绍 SQL Server 2008 中最常用的数据类型,并...
### SQL Server 数据类型详解与自定义数据类型创建 在数据库设计与管理中,理解并熟练掌握数据类型至关重要,因为它们直接影响到数据存储的效率、安全性和查询性能。SQL Server 提供了丰富的内置数据类型,同时也...
SQL Server 数据类型是数据库管理系统中用于定义和存储数据的基础组件,它们决定了数据的结构和特性。在SQL Server 2000中,数据类型的选择至关重要,因为它直接影响到数据的存储方式、大小以及处理效率。 首先,让...
### SqlServer数据库的数据类型详解 数据类型在编程与数据库管理中扮演着至关重要的角色,它不仅定义了数据的存储方式,还决定了数据可以执行的操作。SQL Server作为一种广泛使用的数据库管理系统,提供了丰富的...
SQL Server 数据库类型对应 Java 中的数据类型 SQL Server 是一个关系数据库管理系统,Java 是一个广泛使用的编程语言。在 Java 中,对数据库的操作需要通过 JDBC(Java Database Connectivity)来实现,而在 JDBC ...
SQL_Server_数据类型详解 SQL Server 数据类型是指在 SQL Server 中存储数据的格式,它可以分为整数型、浮点型、二进制型等多种类型。了解 SQL Server 的数据类型对于数据库的设计和开发至关重要。 整数型数据类型...
这表明 SQL Server 2008 不仅能够处理大规模数据,还能保证高效稳定的服务。 ##### 可扩展性增强 随着 SQL Server 2008 的发布,其在可扩展性方面有了显著提升。例如,Siemens 和 RedPrairie 等大型 ISV(独立软件...
SQLServer2000数据类型 varchar number
SQL Server 2000 是一个关系型数据库管理系统,它提供了丰富的数据类型来支持各种不同种类的数据存储。数据类型是数据库设计的基础,它定义了数据的结构和含义。本章将详细阐述SQL Server 2000 中的主要数据类型。 ...
3. 改进了对XML数据类型的支持:提供了更高效的数据检索和更新操作。 4. 支持透明数据加密(TDE):数据在存储时自动加密,增强了数据安全性。 5. 支持新的SQL Server 2008特定的Transact-SQL扩展和功能。 SQL ...
10. **高级特性**:SQL Server 2008引入了许多新特性,如列存储索引、数据压缩、Service Broker(服务总线)以及Master Data Services(主数据服务),这些都是提升数据库功能和性能的重要工具。 本书不仅适合...
使用.NET Framework 不仅能扩展 SQL SERVER 的数据类型,还能帮助用户实现某些复杂的功能。ADO.NET 2.0 也提供了许多方便访问 SQL SERVER 2008 的对象,利用这些内容用户可以轻松实现对 SQL SERVER 及其他数据源的...
### SQL Server 2008 空间数据类型概览 #### 知识点一:空间数据类型介绍 在SQL Server 2008中,空间数据类型的引入为数据库领域带来了革命性的变化,尤其在处理地理位置信息时,极大地提高了效率和准确性。空间...
SQL Server 2008 Express 版是 SQL Server 的一个免费版本,它拥有核心的数据库功能,其中包括了 SQL Server 2008 中最新的数据类型,但它是 SQL Server 的一个微型版本。这一版本是为了学习、创建桌面应用和小型...
- 数据库引擎:支持数据类型如 Geography 和 Geometry,增强了空间数据存储和查询能力;FILESTREAM特性允许将BLOB数据存储在文件系统中。 - 先进的安全性:新增透明数据加密(TDE),增强了对数据库文件的保护;...
在SQL Server 2008中,数据类型是数据库设计的核心元素之一,它们决定了存储数据的格式、范围和精度。本文将深入探讨SQL Server 2008中的各种数据类型,帮助你理解如何根据需求选择合适的数据类型。 首先,我们可以...
3. **存储引擎**:解析SQL Server如何存储数据,涉及页结构、索引类型及其维护机制。 4. **查询优化器**:详细介绍SQL Server查询优化器的工作原理,包括成本估算模型、执行计划生成等关键过程。 5. **恢复模型与...
6. **Native Client驱动**:SQL Server Native Client是微软为SQL Server 2008设计的一个综合驱动程序,它集成了ODBC和OLE DB功能,同时还提供了对新特性如XML数据类型、游标改进、联接优化等的支持。 这些驱动程序...
6. **数据类型和函数的扩展**:除了基本的SQL Server数据类型,Native Client还支持一些特定的类型,如DateTime2、Time、DateTimeOffset等,并且提供了新的函数,如DATEADD和DATEDIFF,以增强日期和时间操作的灵活性...