SQL Server[转]sqlserver 数据类型 及使用考虑

本文转自:http://www.cnblogs.com/auiso/archive/2006/09/02/492796.html

 

每当 Microsoft® SQL Server™
中,每个列、局部变量、表达式和参数还有一个连锁的数据类型,这是点名对象只是享有的数据类型(整型、字符、money
等等)的风味。SQL Server 提供系统数据类型集,定义了可及 SQL Server
一起用的兼具数据类型。下面列有系统提供的数据类型集。

得定义用户定义之数据类型,其是系提供的数据类型的别名。有关用户定义之数据类型的还多信息,请参见
sp_addtype 和创建用户定义的数据类型。

当半个颇具不同数据类型、排序规则、精度、小数位数或长的表达式通过运算符进行整合时:

  1. 透过以数据类型的预顺序规则下至输入表达式的数据类型来规定所得值的数据类型。有关重新多信息,请参见数据类型的先行顺序。

  2. 苟结果数据类型为
    charvarchartextncharnvarchar
    ntext,则结果值的排序规则由排序规则的预顺序规则决定。有关重新多信息,请参见排序规则的先行顺序。

  3. 结果的精度、小数位数和长度在输入表达式的精度、小数位数和长。有关还多信息,请参见精度、小数位数和长。

SQL Server 为 SQL-92
兼容性提供了数据类型同义词。有关还多信息,请参见数据类型同义词。

标准数字
整数

bigint

于 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807)
的整型数据(所有数字)。

int

从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647)
的整型数据(所有数字)。

smallint

于 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整数数据。

tinyint

自打 0 到 255 的平头数据。

bit

bit

1 或 0 的平头数据。

decimal 和 numeric

decimal

由 -10^38 +1 到 10^38 –1 的稳精度和小数各类的数字数据。

numeric

意义上同被 decimal

money 和 smallmoney

money

钱数据值介于 -2^63 (-922,337,203,685,477.5808) 与 2^63 – 1
(+922,337,203,685,477.5807) 之间,精确到钱单位的千分之十。

smallmoney

货币数据值介于 -214,748.3648 与 +214,748.3647
之间,精确到钱单位之千分之十。

类数字

float

从今 -1.79E + 308 到 1.79E + 308 的浮点精度数字。

real

自 -3.40E + 38 到 3.40E + 38 的浮点精度数字。

datetime 和 smalldatetime

datetime

打 1753 年 1 月 1 日至 9999 年 12 月 31
日之日子以及日数额,精确到百分之三秒(或 3.33 毫秒)。

smalldatetime

从今 1900 年 1 月 1 日到 2079 年 6 月 6 日的日子以及日数额,精确到分钟。

字符串

char

稳长度的非 Unicode 字符数量,最老尺寸也 8,000 个字符。

varchar

然而换长的非 Unicode 数据,最丰富为 8,000 独字符。

text

但更换长的非 Unicode 数据,最可怜尺寸也 2^31 – 1 (2,147,483,647) 个字符。

Unicode 字符串

nchar

稳定长度的 Unicode 数据,最特别尺寸也 4,000 只字符。

nvarchar

不过变换长 Unicode 数据,其极可怜长为 4,000 字符。sysname
是系提供用户定义的数据类型,在效益上同深受
nvarchar(128),用于引用数据库对象名。

ntext

但是转换长 Unicode 数据,其极其可怜尺寸也 2^30 – 1 (1,073,741,823) 个字符。

老二前行制字符串

binary

一贯长度的二进制数据,其尽充分长为 8,000 只字节。

varbinary

但易长的二进制数据,其最为老尺寸也 8,000 单字节。

image

但是转换长的二进制数据,其极其充分尺寸也 2^31 – 1 (2,147,483,647) 个字节。

其余数据类型

cursor

游标的援。

sql_variant

相同种存储 SQL Server
支持的各种数码类(textntexttimestamp
sql_variant 除外)值的数据类型。

table

同一种特有之SQL Server数据类型,存储供下处理的结果集。

timestamp

数据库范围之绝无仅有数字,每次换代行时也展开更新。

uniqueidentifier

大局唯一标识符 (GUID)。

optimize SQLSERVER 3数据类型的考虑

分类:SQLSERVER

l  decimal和numeric中尽量选用decimal,numeric只是为着为后相当。

l  bigint,int,smallint,tinyint中

率先int,空间占据合适,运算速度快;(2147,…,…2独多亿)

设若生在了空间吧,考虑tinyint

超大应用场合,考虑bigint

l money,smallmoney

尽量考虑就此decimal替代,原因:性能稍粗好有;相对其他数据库兼容性好。

money的好处是可以就此到某些货币运算函数。

float类型尽量少用,性能不好,精度不高,一般只有用于科学计算。

l  char,varchar,nchar/nvarchar

char性能好;varchar节省空间;选择方式:10独字节以上的用varchar

n类型的占用空间非常,性能低,如果非备存中文或中亚文字虽尽量避免使用。

更加为类似工号的字段更不用采用n类型,首先它不见面存入中文,其次它恐怕当目录,此时针对性能的影响就又甚。

l  text/image  考虑到维护方便、效率和程序支付之方便性,最好不用,即无以其存入数据库被;采用varchar指向该对应的囤积路径。

1)char、varchar、text和nchar、nvarchar、ntext 

  char和varchar的长都当1顶8000内,它们的分在char是定长字符数据,而varchar是变长字符数据。所谓定长就是长固定的,当输入的多寡长度没有达成指定的长短时以机关为英文空格在那背后填充,使长度上相应的尺寸;而更换长字符数据则不见面因为空格填充。text存储可变换长的非Unicode数据,最要命长为2^31-1(2,147,483,647)个字符。   

  后面三种植多少列及前面的对立统一,从名称及看就是大半矣只字母”n”,它表示存储的是Unicode数据类型的字符。写过程序的朋友对Unicode应该好了解。字符中,英文字符只需要一个字节存储就够了,但汉字众多,需要少独字节存储,英文及汉字同时设有时时容易导致杂乱,Unicode字符集就是以化解字符集这种无匹配的问题要有的,它装有的字符都因此单薄单字节表示,即英文字符也是故简单只字节表示。nchar、nvarchar的尺寸是当1暨4000次。和char、varchar比较:nchar、nvarchar则最多存储4000只字符,不论是英文还是汉字;而char、varchar最多克积存8000单英文,4000单汉字。可以观看使用nchar、nvarchar数据类型时毫不操心输入的字符是英文还是汉字,较为有利,但在储存英文时数达到略损失。  

  (2)datetime和smalldatetime 

  datetime:从1753年1月1日届9999年12月31日之日子以及时空数额,精确到百分之三秒。 

  smalldatetime:从1900年1月1日及2079年6月6日之日子以及时数额,精确到分钟。   

  (3)bitint、int、smallint、tinyint和bit 

  bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。 

  int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据。 

  smallint:从-2^15(-32,768)到2^15-1(32,767)的平头数据。 

  tinyint:从0到255底平头数据。 

  bit:1或0的整数数据。   

  (4)decimal和numeric 

  这半种多少类是平的。都发半点独参数:p(精度)和s(小数位数)。p指定小数接触左边和右可以储存的十进制数字之顶酷个数,p必须是从 1到38次的值。s指定小数点右侧可以储存的十进制数字的太可怜个数,s必须是从0到p之间的值,默认小数位数是0。   

  (5)float和real 

  float:从-1.79^308交1.79^308以内的浮点数字数据。 

  real:从-3.40^38及3.40^38间的浮点数字数据。在SQL Server中,real的同义词为float(24)。

相关文章