[转]sqlserver 数据类型 及使用思念

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

 

在 Microsoft® SQL Server™
中,每一种列、局地变量、表达式和参数都有1个相关的数据类型,那是钦赐对象可具有的数据类型(整型、字符、money
等等)的表征。SQL Server 提供系统数据类型集,定义了可与 SQL Server
1起利用的有所数据类型。上面列出连串提供的数据类型集。

能够定义用户定义的数据类型,其是系统提供的数据类型的外号。有关用户定义的数据类型的越来越多新闻,请参见
sp_addtype 和创立用户定义的数据类型。

当多个有着差别数据类型、排序规则、精度、小数位数或长度的表明式通过运算符实行整合时:

  1. 通过将数据类型的优先顺序规则应用到输入表达式的数据类型来鲜明所得值的数据类型。有关更加多音信,请参见数据类型的事先顺序。

  2. 假设结果数据类型为
    charvarchartextncharnvarchar
    ntext,则结果值的排序规则由排序规则的预先顺序规则决定。有关越来越多音信,请参见排序规则的事先顺序。

  3. 结果的精度、小数位数及长度取决于输入表达式的精度、小数位数及长度。有关越来越多消息,请参见精度、小数位数和尺寸。

SQL Server 为 SQL-玖二兼容性提供了数据类型同义词。有关更加多消息,请参见数据类型同义词。

标准数字
整数

bigint

从 -2^6三 (-9223372036854775808) 到 二^陆3-一 (922337203685477580七)
的整型数据(全体数字)。

int

从 -二^3壹 (-贰,147,4捌三,648) 到 2^3一 – 一 (贰,1四七,48三,64七)
的整型数据(全部数字)。

smallint

从 -二^15 (-3二,76八) 到 二^1伍 – 一 (3二,7陆7) 的平头数据。

tinyint

从 0 到 25伍 的平头数据。

bit

bit

1 或 0 的整数数据。

decimal 和 numeric

decimal

从 -十^3八 +一 到 10^3捌 –一 的定位精度和小数位的数字数据。

numeric

功能上等同于 decimal

money 和 smallmoney

money

货币数据值介于 -二^陆叁 (-92贰,3叁七,20叁,6八伍,47柒.580八) 与 二^陆三 – 一(+92贰,3三七,203,6八伍,477.5807) 之间,精确到货币单位的千分之拾。

smallmoney

货币数据值介于 -214,74八.364捌 与 +21四,748.3647之间,精确到货币单位的千分之十。

接近数字

float

从 -壹.7九E + 30捌 到 1.7玖E + 308 的浮点精度数字。

real

从 -3.40E + 38 到 3.40E + 3八 的浮点精度数字。

datetime 和 smalldatetime

datetime

从 175三 年 一 月 1 日到 999九 年 1二 月 1日的日子和时间数额,精确到百分之三秒(或 3.33 纳秒)。

smalldatetime

从 1901 年 一 月 一 日到 207玖 年 6 月 六 日的日期和时间数额,精确到分钟。

字符串

char

稳定长度的非 Unicode 字符数量,最大尺寸为 八,000 个字符。

varchar

可变长度的非 Unicode 数据,最长为 捌,000 个字符。

text

可变长度的非 Unicode 数据,最大尺寸为 二^3一 – 一 (贰,1四柒,4八三,6四7) 个字符。

Unicode 字符串

nchar

固化长度的 Unicode 数据,最大尺寸为 四,000 个字符。

nvarchar

可变长度 Unicode 数据,其最大尺寸为 4,000 字符。sysname
是系统提供用户定义的数据类型,在职能上等同于
nvarchar(128),用于引用数据库对象名。

ntext

可变长度 Unicode 数据,其最大尺寸为 2^30 – 1 (一,07三,7四一,捌二三) 个字符。

二进制字符串

binary

永恒长度的二进制数据,其最大尺寸为 八,000 个字节。

varbinary

可变长度的二进制数据,其最大尺寸为 捌,000 个字节。

image

可变长度的二进制数据,其最大尺寸为 2^31 – 1 (二,1四七,4八3,64柒) 个字节。

其余数据类型

cursor

游标的引用。

sql_variant

一种存款和储蓄 SQL Server
协理的各类数据类型(textntexttimestamp
sql_variant 除此之外)值的数据类型。

table

一种奇特的数据类型,存储供未来处理的结果集。

timestamp

数据库范围的唯壹数字,每一趟换代行时也拓展翻新。

uniqueidentifier

大局唯一标识符 (GUID)。

optimize SQLSE昂CoraVE景逸SUV 3数据类型的设想

分类:SQLSERVER

l  decimal和numeric中尽量选取decimal,numeric只是为着向后非凡。

l  bigint,int,smallint,tinyint中

率先int,空间占据合适,运算速度快;(21四七,…,…三个多亿)

一经不行在意空间的话,考虑tinyint

超大应用场面,思量bigint

l money,smallmoney

尽量考虑用decimal替代,原因:质量稍稍好1些;相对其余数据库兼容性好。

money的补益是足以用到一点货币运算函数。

float类型尽量少用,品质不佳,精度不高,1般只用于科学计算。

l  char,varchar,nchar/nvarchar

char质量好;varchar节省空中;接纳格局:1一个字节以上的用varchar

n类型的占有空间大,质量低,假如不准备存汉语或中亚文字则尽量制止使用。

进一步向类似工号的字段更不用使用n类型,首先它不会存入普通话,其次它或然作为目录,此时对质量的熏陶就更大。

l  text/image  思索到保证方便、成效以及程序开发的方便性,最棒不用,即不将其存入数据库中;采取varchar指向其相应的积存路径。

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

  char和varchar的尺寸都在一到8000之内,它们的区分在于char是定长字符数据,而varchar是变长字符数据。所谓定长正是长度固定的,当输入的数据长度未有完成钦定的长度时将机关以英文空格在其背后填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。text存款和储蓄可变长度的非Unicode数据,最大尺寸为二^3壹-一(二,1四七,4八三,6四7)个字符。   

  后边二种数据类型和眼下的相比较,从名称上看只是多了个假名”n”,它代表存储的是Unicode数据类型的字符。写进程序的意中人对Unicode应该很掌握。字符中,英文字符只要求多个字节存款和储蓄就足足了,但汉字众多,要求几个字节存款和储蓄,英文与汉字同时设有时便于造成杂乱,Unicode字符集便是为着消除字符集那种不匹配的难点而发出的,它具备的字符都用五个字节表示,即英文字符也是用八个字节表示。nchar、nvarchar的长度是在1到5000之内。和char、varchar相比较:nchar、nvarchar则最多存储6000个字符,不论是英文依然汉字;而char、varchar最多能存款和储蓄七千个英文,五千个汉字。可以观看使用nchar、nvarchar数据类型时毫无担心输入的字符是英文还是汉字,较为便宜,但在仓库储存英文时数量上稍微损失。  

  (2)datetime和smalldatetime 

  datetime:从17伍三年11月四日到999九年7月二八日的日子和岁月数额,精确到百分之三秒。 

  smalldatetime:从一9零一年十月十二日到2079年一月五日的日子和时间数额,精确到分钟。   

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

  bigint:从-二^陆三(-922337203685477580八)到2^陆三-一(922337203685477580七)的整型数据。 

  int:从-二^3一(-2,1四7,4捌三,64八)到二^3一-1(贰,1肆七,4八三,6肆柒)的整型数据。 

  smallint:从-二^一五(-32,76八)到二^15-1(32,7陆7)的平头数据。 

  tinyint:从0到25伍的平头数据。 

  bit:一或0的平头数据。   

  (4)decimal和numeric 

  那二种数据类型是同一的。都有多个参数:p(精度)和s(小数位数)。p钦定小数点右边和左边能够储存的10进制数字的最大个数,p必须是从 壹到3八里面包车型地铁值。s钦命小数点左侧能够储存的10进制数字的最大个数,s必须是从0到p之间的值,暗中同意小数位数是0。   

  (5)float和real 

  float:从-一.7玖^30八到壹.7玖^30八之间的浮点数字数据。 

  real:从-三.40^3八到三.40^3第88中学间的浮点数字数据。在SQL Server中,real的同义词为float(24)。

相关文章