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)个字节。
标签:00,01,59,字节,数据类型,存储,范围 From: https://www.cnblogs.com/LloydTony/p/17637161.html