SQL数据类型汇总
在 SQL 中,每个字段、变量和表达式都有特定的数据类型,您可以在创建表时指明字段的类型,也可以根据需要随时修改字段的类型。
大部分数据库都支持以下 4 种类别的基本数据类型:
字符串类型
数值类型(整数+小数)
日期时间类型
二进制类型
本教程以 MySQL 8.0 为例讲解 SQL 数据类型,其它数据库支持的数据类型与 MySQL 大体类似,但是细节(例如数据类型的名称、数据类型的大小等)有所差别。
MySQL 数据类型
类型 | 说明 |
|---|---|
CHAR(size) | 用于表示固定长度的字符串,该字符串可以包含数字、字母和特殊字符。size 的大小可以是从 0 到 255 个字符,默认值为 1。 |
VARCHAR(size) | 用于表示可变长度的字符串,该字符串可以包含数字、字母和特殊字符。size 的大小可以是从 0 到 65535 个字符。 |
TINYTEXT | 表示一个长度为 255(28-1)的字符串文本。 |
TEXT(size) | 表示一个长度为 65,535(216-1)的字符串文本,也即 64KB。 |
MEDIUMTEXT | 表示一个长度为 16,777,215(224-1)的字符串文本,也即 16MB。 |
LONGTEXT | 表示一个长度为 4,294,967,295(232-1)的字符串文本,也即 4GB。 |
ENUM(val1, val2, val3,...) | 字符串枚举类型,最多可以包含 65,535 个枚举值。插入的数据必须位于列表中,并且只能中其中一个值;如果不在,将插入一个空值。 |
SET( val1,val2,val3,....) | 字符串类型,最多可以列出 64 个值。插入的数据可以中其中的一个或者多个值,如果没有中,将插入一个空值。 |
说明:ENUM 类型相当于单选题,SET 类型相当于多选题。
类型 | 大小(字节) | 有符号数取值范围 | 无符号数取值范围 | 说明 |
|---|---|---|---|---|
TINYINT | 1 | (-128, 127) | (0, 255) | 超小整数 |
ALLINT | 2 | (-32 768, 32 767) | (0, 65 535) | 小整数 |
MEDIUMINT | 3 | (-8 388 608, 8 388 607) | (0, 16 777 215) | 中等整数 |
INT 或 INTEGER | 4 | (-2 147 483 648, 2 147 483 647) | (0, 4 294 967 295) | 整数 |
BIGINT | 8 | (-263, 263-1) | (0, 264-1) | 大整数 |
类型 | 说明 | |||
BOOL | 布尔类型,只有 true 和 false 两个有效值;零值被认为是 false,非零值被认为是 true。 注意,MySQL 并不真正支持 BOOL 类型,BOOL 是 TINYINT(1) 的别名。 | |||
类型 | 分类 | 说明 |
|---|---|---|
FLOAT(size, d) | 浮点数(近似值) | 单精度浮点数类型,4 个字节大小。size 参数用来指定数字的总个数,d 参数用来指定小数部分(小数点后边)的数字个数。 |
FLOAT(p) | 单精度浮点数类型,参数 p 用来决定使用 FLOAT 类型还是 DOUBLE 类型:
| |
DOUBLE(size, d) | 双精度浮点数类型,size 参数用来指定数字的总个数,d 参数用来指定小数部分(小数点后边)的数字个数。 | |
DECIMAL(size, d) | 定点数(精确值) | 定点数类型,size 参数用来指定数字的总个数,d 参数用来指定小数部分(小数点后边)的数字个数。size 的值是 65,默认值是 10;d 的取值是 30,默认值是 0。 |
DEC(size, d) | 等价于 DECIMAL(size, d)。 |
类型 | 说明 |
|---|---|
DATE | 日期类型,格式为 YYYY-MM-DD,取值范围从 '1000-01-01' 到 '9999-12-31'。 |
DATETIME(fsp) | 日期和时间类型,格式为 YYYY-MM-DD hh:mm:ss,取值范围从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'。 |
TIMESTAMP(fsp) | 时间戳类型,它存储的值为从 Unix 纪元('1970-01-01 00:00:00' UTC)到现在的秒数。TIMESTAMP 的格式为 YYYY-MM-DD hh:mm:ss,取值范围从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC。 |
TIME(fsp) | 时间类型,格式为 hh:mm:ss,取值范围从 '-838:59:59' 到 '838:59:59'。 |
YEAR | 四位数字的年份格式,允许使用从 1901 到 2155 之间的四位数字的年份。此外,还有一个特殊的取值,就是 0000。 |
类型 | 说明 |
|---|---|
BIT(size) | 二进制位(Bit)类型,位数由 size 参数指定;size 的大小从 1 到 64,默认值为 1。 |
BINARY(Size) | 等价于 CHAR() 类型,但是存储的是二进制形式的字节串。size 参数以字节(Byte)为单位指定列的长度,默认值为1。 |
VARBINARY(Size) | 等价于 VARCHAR() 类型,但是存储的是二进制形式的字节串。size 参数以字节(Byte)为单位指定列的长度。 |
TINYBLOB | 存储较小的二进制数据,最多可容纳 255 (28-1)个字节。 |
BLOB(size) | 用来储存二进制数据,最多可以容纳 65,535(216-1)个字节,也即 64KB。 |
MEDIUMBLOB | 存储中等大小的二进制数据,最多可以容纳 16,777,215(224-1)字节,也即 16MB。 |
LONGBLOB | 存储较大的二进制数据,最多可容纳 42,94,967,295(232-1)字节,也即 4GB。 |
说明:BLOB 是 Binary Large Objects 的缩写,译为“大型二进制对象”,也即二进制数据块。
- 随机文章
- 信阳马尔代夫老板(信阳企业家投资建设马尔代夫主题公园)
- 国奥输给马尔代夫(国奥惨败马尔代夫,世预赛惨遭滑铁卢)
- 国旗马尔代夫圆形(马尔代夫国旗:圆形的设计意义和象征)
- 国安马尔代夫进展(国安马尔代夫取得进展,稳固海上安全)
- 张翰 马尔代夫(张翰马尔代夫游玩被曝光)
- 唐嫣 马尔代夫(唐嫣海边退役,马尔代夫浪漫逐梦)
- 来到东方马尔代夫(东方马尔代夫:远离尘世喧嚣的珍珠岛)
- 军舰 马尔代夫(马尔代夫海军将添一艘战舰)
- 宁波马尔代夫之称(宁波的马尔代夫:浙江最美海岛风景线)
- 沙屋木屋马尔代夫(马尔代夫度假村:豪华沙屋与木屋体验)
- 海边北方马尔代夫(北马尔代夫:远离人流的海边度假胜地)
- 药品 马尔代夫(马尔代夫药品:治疗疾病的好帮手)
- 希腊马尔代夫时差(希腊与马尔代夫时差有多少小时差异?)
- 徒步到达马尔代夫(徒步探索马尔代夫:步行穿越美丽海岛)
- 浪漫马尔代夫婚礼(浪漫登记马尔代夫,人生一场爱情盛宴)
- 女生回应马尔代夫(女孩对在马尔代夫遇害的事件做出回应)
- 汇丰马尔代夫分行(汇丰银行在马尔代夫启动数化支付服务)
- 皖南马尔代夫风景(走进中国马尔代夫,探索皖南美丽风景)
- 星云 马尔代夫(马尔代夫笼罩在神秘的星云下)
- 即墨 马尔代夫(即墨将与马尔代夫建立友好关系)
- 福绵马尔代夫美食(尝遍福绵马尔代夫美食,畅享异国美味)
- 美国马尔代夫位置(美国在印度洋的马尔代夫建立新领事馆)
- 西安马尔代夫儿童(西安儿童度假村打造类似马尔代夫体验)
- 盐城马尔代夫垂钓(盐城海上钓王:挑战马尔代夫垂钓之旅)
- 澳门马尔代夫图片(澳门和马尔代夫旅游胜地美景尽收眼底)
- 香港留学马尔代夫(香港学生赴马尔代夫留学需注意什么?)
- 莱芜版的马尔代夫(重返天堂!莱芜推出马尔代夫度假套餐)
- 阳江马尔代夫住宿(阳江民宿打造仿佛马尔代夫的度假体验)
- 江西 马尔代夫(江西推出马尔代夫主题公园,海岛风情再现)
- 海上旅游马尔代夫(探索马尔代夫海上奇观:畅游旅游胜地)
