LloydTony

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

bigint、int、smallint、tinyint

使用整数数据的精确数字数据类型。若要节省数据空间,请使用能够可靠包含所有可能值的最小数据类型。例如,对于一个人的年龄,tinyint就足够了,因为没人活到255岁以上。但对于建筑物的年龄,tinyint就不再适应,因为建筑物的年龄可能超过255年。

数据类型范围存储
bigint -2^63(-9,223,372,036,854,775,808)到2^63-1(9,223,372,036,854,775,807) 8字节
int -2^31(-2,147,483,648)到2^31-1(2,147,483,647) 4字节
smallint -2^15(-32,768)到2^15-1(32,767) 2字节
tinyint 0到255 1字节

 

bit

SQL server数据库引擎优化位列的存储。如果表中的bit列为8列或更少,则这些列作为1个字节存储。如果bit列为9到16列,则这些列作为2个字节存储,以此类推。字符串值TRUE和FALSE可转换为bit值:

TRUE将转换为1,FALSE将转换为0。

性别

bool值

 

numeric和decimal

decimal[(p[ ,s])]和numeric[(p[, s])]

固定精度和小数位数。使用最大精度时,有效值的范围为-10^38+1到10^38-1。decimal的ISO同义词为dec和dec(p,s)。numeric在功能上完全等同于decimal。

金额——精度很高,小数点后面可能有很多位;后面的小数点精度可以达到38位

 

smallmoney和money

小数点存储都为4位,如果出现第5位,根据第5位做四舍五入。

数据类型范围存储
money -922,337,203,685,477.5808到922,337,203,685,477.5807 8字节
smallmoney -214,748.3648到214,748.3647 4字节

 

float和real

这两个类型保存的是一个近似值。保存的数据,可能和真是要保存的数据有细微的偏差。

注意:数据筛选的时候,只适合 > ≥ < ≤ ,不适合

float[(n)]其中n为用于

存储float数值尾数的位数(以科学计数法表示),因此可以确定精度和存储大小。如果指定了n,则它必须介于1和53之间的某个值。n的默认值为53.

n值Precision存储大小
1-24 7位数 4字节
25-53 15位数 8字节

 

date类型 说明

date类型可用于需要一个日期值而不需要时间部分时。

roperties
语法 date
使用情况 DECLARE@MyDate date CREATE TABLE Table1(Column1 date)
默认的字符串文字格式(用于下级客户端) YYYY-MM-DD 有关详细信息,请参阅后面的“下级客户端的向后兼容性”部分。
范围 0001-01-01到9999-12-31(对于informatica,为1582-10-15到9999-12-31) 公元1年1月1日(公历纪元)到公元9999年12月31日(对于informatica,公元1582年10月15日到公元9999年12月31日)
各元素的范围 YYYY是表示年份的四位数字,范围从0001到9999 。对于informatica,YYYY限为1582年到9999年。MM是表示指定年份中的月份的两位数字,范围从01到12 。DD是表示指定月份几号的两位数字,介于01和31之间(具体视月份而定)。
字符长度 10位
精度、小数位数 10,0
存储大小 固定3字节
存储结构 1、3字节整数存储日期
精确度 一天
默认值 1900-01-01 此值用于从time隐士转换到datetime2或datetimeoffset时追加的日期部分。
日历 公历
用户定义的秒的小数部分精确度
时区偏移量感知和保留
夏时制感知

 

datetime 说明

可用于需要同时包含日期和时间信息的值。

properties
语法 datetime
使用情况 DECLARE@MyDatetime datetime CREATE TABLE Table1(Column1 datetime)
默认的字符串文字格式(用于下级客户端) 不适用
日期范围 1753年1月1日到9999年12月31日
时间范围 00:00:00到23:59:59.997
时区偏移量范围
各元素的范围 YYYY是表示年份的四位数字,范围从1753到9999 。MM是表示指定年份中的月份的两位数字,范围从01到12 。DD是表示指定月份中的某一天的两位数字,介于01和31之间(最高值取决于相应的月份)。hh是表示小时的两位数字,范围为00到23 。mm是表示分钟的两位数字,范围为00到59 。ss是表示秒钟的两位数字,范围为00到59 。n*为一个0到3位的数字,范围为0到999,表示秒的小数部分 。
字符长度 最低19位到最高23位
存储大小 8字节
精确度 舍入到.000、 .003或 .007秒三个增量
默认值 1900-01-01 00:00:00
日历 公历(包括完整的年份范围)
用户定义的秒的小数部分精度
时区偏移量感知和保留
夏时制感知

 

time 说明

属性
语法 time[(fractional second scale)]
使用情况 DECLARE @MyTime time(7) CREATE TABLE Table(Column1 time(7))
fractional seconds scale 为秒的小数部分指定数字的位数 。这可以是从0到7的整数 。对于informatica,这可以是从0到3的整数。默认小数位数为7(100ns)。
默认的字符串文字格式(用于下级客户端) 对于Informatica,为hh:mm:ss[.nnnnnnn] 有关详细信息,请参阅下级客户端的向后兼容性部分
范围 00:00:00.0000000到23:59:59.9999999(对于Informatica,为00:00:00.000到23:59:59.999)
各元素的范围 hh是表示小时的两位数字,范围为0到23 。mm是表示分钟的两位数字,范围为0到59 。ss是表示秒的两位数字,范围为0到59 。n是0到7位数字,范围为0到9999999,它表示秒的小数部分 。对于Informatica,n是零到三位数字,范围为0到999 。
字符长度 最小8位(hh:mm:ss),最大16位(hh:mm:ss.nnnnnnn) 。对于Informatica,最大值位12位(hh:mm:ss.nnn) 。
精度、小数位数(用户只能指定小数位数) 请参阅下表。
存储大小 固定5字节,是使用默认的100ns秒的小数部分精度时的默认存储大小 。在Informatica中,默认为4个字节,固定不变,同时秒的小数部分精度默认为1毫秒。
精确度 100纳秒(Informatica中为1毫秒)
默认值 00:00:00 此值用作从date隐式转换到datetime2或datetimeoffset时追加的时间部分 。
用户定义的秒的小数部分精度
时区偏移量感知和保留
夏时制感知

 

datetime2 说明

属性
语法 datetime2[(fracional seconds precision)]
使用情况 DECLARE @MyDatetime2 datetime2(7) CREATE TABLE Table(Column1 datetime2(7))
默认的字符串文字格式(用于下级客户端) YYYY-MM-DD hh:mm:ss[.fractional seconds] 有关详细信息,请参阅后面的下级客户端的向后兼容性部分
日期范围 0001-01-01到31.12.99 公元1年1月1日到公元9999年12月31日
时间范围 00:00:00到23:59:59.9999999
时区偏移量范围
各元素的范围 YYYY是表示年份的四位数字,范围从0001到9999,表示年份 。MM是一个两位数,范围从01到12,它表示指定年份中的月份。DD是表示指定月份中的某一天的两位数字,介于01和31之间(具体取决于月份)。hh是表示小时的两位数字,范围为00到23 ,它表示小时。mm是表示分钟的两位数字,范围为00到59 ,它表示分钟。ss是表示秒钟的两位数字,范围为00到59 ,它表示秒钟 。n*为一个0到7位的数字,范围为0到9999999,表示秒的小数部分 。在Informatica中,当n>3时,秒的小数部分会被截断。
字符长度 最低19位(YYYY-MM-DD hh:mm:ss),最高27位(YYYY-MM-DD hh:mm:ss.0000000)
精度、小数位数 -0到7位,准确度为100ns 。默认精度为7位数。
存储大小 精度小于3的6个字节 。精度为3和4的6个字节 。所有其他精度需要8个字节 。
精确度 100纳秒
默认值 1900-01-01 00:00:00
日历 公历
用户定义的秒的小数部分精度
时区偏移量感知和保留
夏时制感知

 

smalldatetime 说明

属性
语法 smalldatetime
使用情况 DECLARE @MySmalldatetime smalldatetime CREATE TABLE Table(Column1 smalldatetime)
默认的字符串文字格式(用于下级客户端) 不适用
日期范围 1900-01-01 到 2079-06-06 1900年1月1日到2079年6月6日
时间范围 00:00:00到23:59:59 2007-05-09 23:59:59 将舍入为 2007-05-10 00:00:00
各元素的范围 YYYY是表示年份的四位数字,范围从1900到2079,表示年份 。MM是一个两位数,范围从01到12,它表示指定年份中的月份。DD是表示指定月份中的某一天的两位数字,介于01和31之间(具体取决于月份)。hh是表示小时的两位数字,范围为00到23 ,它表示小时。mm是表示分钟的两位数字,范围为00到59 ,它表示分钟。ss是表示秒钟的两位数字,范围为00到59 ,它表示秒钟 。值为29.998秒或更小值时会向下舍入到最接近的分钟数 。值为29.999秒或更大值会向上舍入到最接近的分钟数 。
字符长度 最高19位
存储大小 固定4个字节
精确度 一分钟
默认值 1900-01-01 00:00:00
日历 公历(不包括完整的年份范围)
用户定义的秒的小数部分精度
时区偏移量感知和保留
夏时制感知

 

datetimeoffset 说明

属性
语法 datetimeoffset[(fractional seconds precision)]
使用情况 DECLARE @MyDatetimeoffset datetimeoffset(7) CREATE TABLE Table1(Column1 datetimeoffset(7))
默认字符串文字格式(用于下级客户端) YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{ + | - }hh:mm]
日期范围 0001-01-01到31.12.99 公元 1年1月1日到公元9999年12月31日
时间范围 00:00:00 到 23:59:59.9999999
时区偏移量范围 -14:00 到 +14:00
各元素的范围 YYYY是表示年份的四位数字,范围从0001到9999,表示年份 。MM是一个两位数,范围从01到12,它表示指定年份中的月份。DD是表示指定月份中的某一天的两位数字,介于01和31之间(具体取决于月份)。hh是表示小时的两位数字,范围为00到23 ,它表示小时。mm是表示分钟的两位数字,范围为00到59 ,它表示分钟。ss是表示秒钟的两位数字,范围为00到59 ,它表示秒钟 。n*为一个0到7位的数字,范围为0到9999999,表示秒的小数部分 。hh是两位数,范围位-14到+14 。mm是两位数,范围位00到59 。
字符长度 最低26位(YYYY-MM-DD hh:mm:ss {+|-} hh:mm) 到最高34位(YYYY-DD-MM hh:mm:ss.nnnnnnn {+|-} hh:mm)
精度、小数位数 请参阅下表
存储大小 默认值位10个字节的固定大小,默认的秒的小数部分精度位100ns
默认值 1900-01-01 00:00:00 00:00
日历 公历
用户定义的秒的小数部分精度
时区偏移量感知和保留
夏时制感知

 

char和varchar

char[(n)]固定大小字符串数据 。n用于定义字符串大小(以字节为单位),并且它必须为1到8,000之间的值 。对于单字节编码字符集(如拉丁文),存储大小为n个字节,并且可存储的字符数也为n 。对于多字节编码字符集,存储大小仍为n个字节,但可存储的字符数可能小于n 。char的ISO同义词是character 。有关字符集的详细信息,请参阅单字节和多字节字符集

varchar[( n | max )]可变大小字符串数据 。使用n定义字符串大小(以字节为单位),可以是介于1和8,000之间的值;或使用max指明列约束大小上限为最大存储2^31-1个字节(2GB) 。对于单字节编码字符集(如拉丁文),存储大小为n+2个字节,并且可存储的字符数也为n 。对于多字节编码字符集,存储大小仍为n+2个字节,但可存储的字符数可能小于n 。varchar的ISO同义词是charvarying或charactervarying

 

nchar和nvarchar

nchar[(n)]

无论存储中文还是英文、数字等,每个字符都是占用两个字节 。

固定大小字符串数据 。n用于定义字符串大小(以双字节为单位),并且它必须为1到4,000之间的值 。存储大小为n字节的两倍 。对于UCS-2编码,存储大小为n个字节的两倍,并且可存储的字符数也为n 。对于UTF-16编码,存储大小仍为n个字节的两倍,但可存储的字符数可能小于n,因为补充字符使用两个双字节(也称为代理顶对) 。nchar的ISO同义词是national char和national character 。

nvarchar[(n | max)]

可变大小字符串数据 。n用于定义字符串大小(以双字节为单位),并且它可能为1到4,000之间的值 。max指示最大存储大小是2^30-1个字符(2GB)。存储大小为n字节的两倍+2个字节 。对于UCS-2编码,存储大小为n个字节的两倍+2个字节,并且可存储的字符数也为n 。对于UTF-16编码,存储大小仍为n个字节的两倍+2个字节,但可存储的字符数可能小于n,因为补充字符使用两个双字节(也称为代理顶对)。nvarhcar的ISO同义词是national char varying和national character varying 。

 

ntext、text和images

ntext

长度可变的Unicode数据,字符串最大长度为2^30-1(1,073,741,823)个字节 。存储大小是所输入字符串长度的两倍(以字节为单位)。

text

服务器代码页中长度可变的非Unicode数据,字符串最大长度为2^31-1(2,147,483,647)个字节。当服务器代码页使用双字节字符时,存储仍是2,147,483,647字节。根据字符串,存储大小可能小于2,147,483,647字节。

images

长度可变的二进制数据,从0到2^31-1(2,147,483,647)个字节。

 
posted on 2023-08-17 11:25  LloydTony  阅读(3)  评论(0编辑  收藏  举报