
范围 − 2 63 ∼ 2 63 − 1 -2^{63}sim2^{63}-1 −263∼263−1 里的所有整数, 8 8 8 个字节,用于储存很大的整数,比如世界总人口数。
1.1.2 int范围 − 2 31 ∼ 2 31 − 1 -2^{31}sim2^{31}-1 −231∼231−1 里的所有整数, 4 4 4 个字节,用于储存较大的整数,比如一个城市的人口数。
1.1.3 smallint范围 − 2 15 ∼ 2 15 − 1 -2^{15}sim2^{15}-1 −215∼215−1 里的所有整数, 2 2 2 个字节,用于存储一般大小的整数,比如一个学校的学生数。
1.1.4 tinyint范围 0 ∼ 255 0sim255 0∼255 里的所有整数, 1 1 1 个字节,用于存储较小的整数,比如一个班级的学生数。
1.1.5 decimal[(p[,s])]和numeric[(p[,s])]固定精度和小数位数的数值数据类型。使用最大精度时,有效值从 − 1 0 38 + 1 ∼ 1 0 38 − 1 -10^{38}+1sim10^{38}-1 −1038+1∼1038−1,在 T r a n s a c t − S Q L Transact-SQL Transact−SQL 中,两者的功能是等效的,没有任何区别。
p ∈ [ 1 , 38 ] pin[1,38] p∈[1,38] 指定了要存储的十进制数字的总数上限,即精度,包括小数点左边和右边的位数,默认为 18 18 18。
s ∈ [ 0 , p ] sin[0,p] s∈[0,p] 指定了小数点右侧存储的十进制数字位数,即小数位数,仅在指定精度后才可以指定小数的位数,默认为 0 0 0,
字节数 = ⌊ p 9 ⌋ × 4 + 1 displaystyle=lfloorfrac p9rfloortimes4+1 =⌊9p⌋×4+1 ,常用于存储金额、财务相关的数据。
1.1.6 bit可以取 0 、 1 、 N U L L 0、1、NULL 0、1、NULL, 1 1 1 个字节,常用于表示 TRUE 和 FALSE。
1.1.7 money和smallmoneymoney 范围 − 922 , 337 , 203 , 685 , 477.5808 ∼ 922 , 337 , 203 , 685 , 477.5807 -922,337,203,685,477.5808sim922,337,203,685,477.5807 −922,337,203,685,477.5808∼922,337,203,685,477.5807, 8 8 8 个字节,精度为所表示货币单位的万分之一,常用于表示货币金额。
smallmoney 范围 − 214 , 748.3648 ∼ 214 , 748.3647 -214,748.3648sim214,748.3647 −214,748.3648∼214,748.3647, 4 4 4 个字节,精度为所表示货币单位的万分之一,常用于表示货币金额。
用半角句号分隔局部货币单位和总体货币单位,且常在前面加一个货币符号,例如,$$2.15$ 表示 2 2 2 美元 15 15 15 美分。
1.2 近似数字 1.2.1 real范围 − 3.40 E + 38 ∼ − 1.18 E − 38 、 0 、 1.18 E − 38 ∼ 3.40 E + 38 -3.40E + 38sim-1.18E - 38、0、1.18E - 38sim3.40E + 38 −3.40E+38∼−1.18E−38、0、1.18E−38∼3.40E+38, 4 4 4 个字节,精度为 7 7 7 位数,同义词为 float(24) 常用于存储浮点数,比如各类材料学实验的数据。
1.2.2 float[(n)]n ∈ [ 1 , 53 ] nin[1,53] n∈[1,53] 为用于存储数值的位数,因此可以确定精度和存储大小,默认为 53 53 53。
范围 − 1.79 E + 308 ∼ − 2.23 E − 308 、 0 、 2.23 E − 308 ∼ 1.79 E + 308 -1.79E + 308sim-2.23E - 308、0、2.23E - 308sim1.79E + 308 −1.79E+308∼−2.23E−308、0、2.23E−308∼1.79E+308,如果 n ∈ [ 1 , 24 ] nin[1,24] n∈[1,24] 则用 4 4 4 个字节,精度为 7 7 7 位数;否则用 8 8 8 个字节,精度为 15 15 15 位数。常用于存储高精度浮点数,比如天体之间的距离。
1.3 日期与时间 1.3.1 date范围 0001 − 01 − 01 ∼ 9999 − 12 − 31 0001-01-01sim9999-12-31 0001−01−01∼9999−12−31 间的任意日期值,数据格式: Y Y Y Y − M M − D D YYYY-MM-DD YYYY−MM−DD, 3 3 3 个字节。
Y Y Y Y ∈ [ 0001 , 9999 ] YYYYin[0001,9999] YYYY∈[0001,9999] 表示年份的四位数字。
M M ∈ [ 01 , 12 ] MMin[01,12] MM∈[01,12] 表示月份的两位数字。
D D ∈ [ 01 , 31 ] DDin[01,31] DD∈[01,31] 表示日期的两位数字(最高值取决于月份),字面意思,常用于表示一个日期。
1.3.2 time取值范围 00 : 00 : 00.0000000 ∼ 23 : 59 : 59.9999999 00:00:00.0000000sim23:59:59.9999999 00:00:00.0000000∼23:59:59.9999999,数据格式为 h h : m m : s s [ . n n n n n n n ] hh:mm:ss[.nnnnnnn] hh:mm:ss[.nnnnnnn], 5 5 5 个字节。
h h ∈ [ 0 , 23 ] hhin[0,23] hh∈[0,23] 表示小时的两位数字。
m m ∈ [ 0 , 59 ] mmin[0,59] mm∈[0,59] 表示分钟的两位数字。
s s ∈ [ 0 , 59 ] ssin[0,59] ss∈[0,59] 表示秒的两位数字。
n ∗ n^* n∗ 是 0 ∼ 7 0sim7 0∼7 位数字,表示秒的小数部分。
精度取决于 n ∗ n^* n∗,time(0) 的精度为 8 8 8 位数,其他 time(n) 的精度为 9 + n 9+n 9+n 位数。常用于表示一个时间。
1.3.3 datetime范围 1753 − 01 − 01 00 : 00 : 00 1753-01-01 00:00:00 1753−01−01 00:00:00 到 9999 − 12 − 31 23 : 59 : 59 9999-12-31 23:59:59 9999−12−31 23:59:59,默认值为 1900 − 01 − 01 00 : 00 : 00 1900-01-01 00:00:00 1900−01−01 00:00:00,占用 8 8 8 个字节,常用于存储时间和日期数据。
1.3.4 smalldatetime范围 1900 − 01 − 01 00 : 00 : 00 1900-01-01 00:00:00 1900−01−01 00:00:00 到 2079 − 06 − 06 23 : 59 : 59 2079-06-06 23:59:59 2079−06−06 23:59:59,默认值为 1900 − 01 − 01 00 : 00 : 00 1900-01-01 00:00:00 1900−01−01 00:00:00,占用 4 4 4 个字节,常用于存储时间和日期数据。
1.3.5 datetime2范围 0001 − 01 − 01 00 : 00 : 00 0001-01-01 00:00:00 0001−01−01 00:00:00 到 9999 − 12 − 31 23 : 59 : 59 9999-12-31 23:59:59 9999−12−31 23:59:59,默认值为 1900 − 01 − 01 00 : 00 : 00 1900-01-01 00:00:00 1900−01−01 00:00:00,占用 8 8 8 个字节,常用于存储时间和日期数据。
1.3.6 datetimeoffset用于定义一个采用 24 24 24 小时制与日期相结合并可识别时区的时间,默认格式为 Y Y Y Y − M M − D D h h : m m : s s [ . n n n n n n n ] [ { + ∣ − } h h : m m ] YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+mid-}hh:mm] YYYY−MM−DD hh:mm:ss[.nnnnnnn] [{+∣−}hh:mm],占用 10 10 10 个字节。
1.4 字符串 1.4.1 char[(n)]n ∈ [ 1 , 8000 ] nin[1,8000] n∈[1,8000] 为字符串大小,默认为 1 1 1,每个 char 占用一个字节的存储空间,常用于存储字符串。
1.4.2 varchar[(n|max)]n ∈ [ 1 , 8000 ] nin[1,8000] n∈[1,8000] 为字符串大小,可根据实际存储的字符数改变存储空间, m a x max max 表示最大存储大小,上限是 2 31 − 1 2^{31}-1 231−1 个字节,占用输入数据的实际长度 + 2 +2 +2 个字节,常用于存储字符串。
1.4.3 text服务器代码页中长度可变的非 U n i c o d e Unicode Unicode 数据,最大长度为 2 31 − 1 2^{31}-1 231−1 个字符,一个字符占用一个字节,常用于存储文本数据。
1.5 Unicode 字符串 1.5.1 nchar[(n)]n ∈ [ 1 , 4000 ] nin[1,4000] n∈[1,4000] 个字符的固定长度 U n i c o d e Unicode Unicode 字符数据,默认为 1 1 1,一个字符占两个字节,可包括全世界的文字,常用于存储各类汉字。
1.5.2 nvarchar[(n|max)]n ∈ [ 1 , 4000 ] nin[1,4000] n∈[1,4000] 为存储 U n i c o d e Unicode Unicode 字符数据的最大长度,默认为 1 1 1,可根据实际存储的字符数改变存储空间, m a x max max 表示最大存储大小是 2 31 − 1 2^{31}-1 231−1 个字节,存储大小是输入数据的实际长度的两倍加 2 2 2 个字节,常用于存储很长的一篇中文文章。
1.5.3 ntext与 text 差不多,不过长度可变,最大长度为 2 30 − 1 2^{30}-1 230−1 个字符,一个字符占用两个字节,常用于存储文本数据。
1.6 二进制字符串 1.6.1 binary[(n)]n ∈ [ 1 , 8000 ] nin[1,8000] n∈[1,8000] 为二进制数据的固定长度,占用 n n n 个字节,常用于存储二进制数据。
1.6.2 varbinary[(n)]n ∈ [ 1 , 8000 ] nin[1,8000] n∈[1,8000] 为可变长度二进制数据的长度, m a x max max 指示最大存储大小是 2 31 − 1 2^{31}-1 231−1 个字节,占用输入数据的实际长度 + 2 +2 +2 个字节,常用于存储二进制数据。
1.6.3 image范围 0 ∼ 2 31 − 1 0sim2^{31}-1 0∼231−1 个字节,长度可变的二进制数据,常用于存储照片、图片。
2 Oracle 2.1 字符类型 2.1.1 varchar2一个字符一个字节,最多 4000 4000 4000 个字节,常用于储存可变长度字符串。
2.1.2 nvarchar2一个字符一个字节,最多 2000 2000 2000 个字节,用于存储 U n i c o d e Unicode Unicode 字符集的可变长度字符串。
2.1.3 char一个字符一个字节,最多 2000 2000 2000 个字节,用于存储定长字符型数据。
2.1.4 nchar一个字符一个字节,最多 1000 1000 1000 个字节,用于存储 U n i c o d e Unicode Unicode 字符集的定长字符型数据。
2.1.5 long一个字符一个字节,最多 2 G B 2GB 2GB,用来存储很长很长的字符串。
2.2 数字类型 2.2.1 number(p,s)p p p 是精度,最大为 38 38 38, s s s 是保留小数位数,占用的字节数 = ⌊ p 2 ⌋ + 1 + [ n u m < 0 ] displaystyle=lfloorfrac{p}{2}rfloor+1+[num<0] =⌊2p⌋+1+[num<0] ,可以用来存储定长的整数和小数。
2.2.2 float[(n)]是 number 的一个子集, n n n 是精度,最大为 38 38 38,占用的字节数 = ⌊ p 2 ⌋ + 1 + [ n u m < 0 ] displaystyle=lfloorfrac{p}{2}rfloor+1+[num<0] =⌊2p⌋+1+[num<0],可以用来存储整数和小数。
2.3 日期类型 2.3.1 date精确到秒, 7 7 7 个字节,常用于储存日期和时间。
2.3.2 timestamp精确到小数秒, 7 7 7 或 12 12 12 个字节,常用于储存日期和时间。
2.4 其他数据类型 2.4.1 blob最多存放 4 G B 4GB 4GB 二进制数,常用储存二进制数据。
2.4.2 clob一个字符一个字节,最多存放 4 G B 4GB 4GB,常用于储存字符串数据。
2.4.3 bfile占用的空间大小和操作系统有关,常用来把非结构化的二进制数据存储在数据库以外的操作系统文件中。
3 My SQL 3.1 数值类型 3.1.1 tinyint1 1 1 个字节,常用于表示很小的整数值。
3.1.2 smallint2 2 2 个字节,常用于表示较小的整数值。
3.1.3 mediumint3 3 3 个字节,常用于表示一般大小的整数值。
3.1.4 int4 4 4 个字节,常用于表示较大的整数值。
3.1.5 bigint8 8 8 个字节,常用于表示很大的整数值。
3.1.6 float4 4 4 个字节,精度 24 24 24 位,常用于表示单精度浮点数。
3.1.7 double8 8 8 个字节,精度 53 53 53 位,常用于表示双精度浮点数。
3.1.8 decimal(m,d)max ( m , d ) + 2 max(m,d)+2 max(m,d)+2 个字节,精度依赖于 m m m 和 d d d 的之,常用于表示小数值。
3.2 日期类型 3.2.1 date3 3 3 个字节,常用于表示日期。
3.2.2 time3 3 3 个字节,常用于表示时间。
3.2.3 year1 1 1 个字节,常用于表示年份。
3.2.4 datetime8 8 8 个字节,常用于表示日期和时间值的混合。
3.2.5 timestamp4 4 4 个字节,常用于表示时间戳。
3.3 字符串类型 3.3.1 char0 ∼ 255 0sim255 0∼255 个字节,常用于表示定长字符串。
3.3.2 varchar0 ∼ 65535 0sim65535 0∼65535 个字节,常用于表示变长字符串。
3.3.3 tinyblob0 ∼ 255 0sim255 0∼255 个字节,常用于表示不超过 255 255 255 个字符的二进制字符串。
3.3.4 tinytext0 ∼ 255 0sim255 0∼255 个字节,常用于表示短文本数据。
3.3.5 blob0 ∼ 65535 0sim65535 0∼65535 个字节,常用于表示不超过 65535 65535 65535 个字符的二进制字符串。
3.3.6 text0 ∼ 65535 0sim65535 0∼65535 个字节,常用于表示长文本数据。
3.3.7 mediumblob0 ∼ 16777215 0sim16777215 0∼16777215 个字节,常用于表示不超过 16777215 16777215 16777215 个字符的二进制字符串。
3.3.8 mediumtext0 ∼ 16777215 0sim16777215 0∼16777215 个字节,常用于表示中等长度文本数据。
3.3.9 longblob0 ∼ 4294967295 0sim4294967295 0∼4294967295 个字节,常用于表示不超过 4294967295 4294967295 4294967295 个字符的二进制字符串。
3.3.10 longtext0 ∼ 4294967295 0sim4294967295 0∼4294967295 个字节,常用于表示极大文本数据。