MySQL数据类型

在这里插入图片描述

1.整数类型

整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT

数据类型占用空间存储范围无符号范围
tinyint1字节 − 128 ∼ 127 -128 \thicksim 127 128127 0 ∼ 255 ( 2 8 − 1 ) 0 \thicksim 255 (2^{8}-1) 0255(281)
smallint2字节 − 32768 ∼ 32767 -32768 \thicksim 32767 3276832767 0 ∼ 65535 ( 2 16 − 1 ) 0 \thicksim 65535 (2^{16}-1) 065535(2161)
mediumint3字节 − 8388608 ∼ 8388607 -8388608 \thicksim 8388607 83886088388607 0 ∼ 16777215 ( 2 24 − 1 ) 0 \thicksim 16777215 (2^{24}-1) 016777215(2241)
int4字节 − 2147483648 ( − 2 31 ) ∼ 2147483647 ( 2 31 − 1 ) -2147483648 (-2^{31}) \thicksim 2147483647(2^{31}-1) 2147483648(231)2147483647(2311) 0 ∼ 4294967295 ( 2 32 − 1 ) 0 \thicksim 4294967295( 2^{32}-1) 04294967295(2321)
bigint8字节 − 9223372036854775808 ( − 2 63 ) ∼ 9223372036854775807 ( 2 63 − 1 ) -9223372036854775808 (-2^{63}) \thicksim 9223372036854775807 (2^{63}-1) 9223372036854775808(263)9223372036854775807(2631) 0 ∼ 18446744073709551615 ( 2 64 − 1 ) 0 \thicksim 18446744073709551615 (2^{64}-1) 018446744073709551615(2641)

2.浮点数类型

浮点数类型:FLOAT、DOUBLE

数据类型类型名称占用空间精度范围存储范围无符号范围
float单精度浮点型4字节8位精度 ( − 3.402823466 × 1 0 38 , − 1.175494351 × 1 0 − 38 ) , 0 , ( 1.175494351 × 1 0 − 38 , 3.402823466351 × 1 0 38 ) (-3.402823466 \times 10^{38},-1.175494351 \times 10^{-38}),\\ 0,\\ (1.175494351 \times 10^{-38},3.402823466351 \times 10^{38}) (3.402823466×10381.175494351×1038)0(1.175494351×10383.402823466351×1038) 0 , ( 1.175494351 × 1 0 − 38 , 3.402823466 × 1 0 38 ) 0,\\ (1.175494351 \times 10^{-38},3.402823466 \times 10^{38}) 0(1.175494351×10383.402823466×1038)
double双精度浮点型8字节16位精度 ( − 1.7976931348623157 × 1 0 308 , − 2.2250738585072014 × 1 0 − 308 ) , 0 , ( 2.2250738585072014 × 1 0 − 308 , 1.7976931348623157 × 1 0 308 ) (-1.7976931348623157 \times 10^{308},-2.2250738585072014 \times 10^{-308}),\\ 0,\\ (2.2250738585072014 \times 10^{-308},1.7976931348623157 \times 10^{308}) (1.7976931348623157×103082.2250738585072014×10308)0(2.2250738585072014×103081.7976931348623157×10308) 0 , ( 2.2250738585072014 × 1 0 − 308 , 1.7976931348623157 × 1 0 308 ) 0, \\ (2.2250738585072014 \times 10^{-308},1.7976931348623157 \times 10^{308}) 0(2.2250738585072014×103081.7976931348623157×10308)

FLOAT(M,D)、DOUBLE(M,D),M是小数总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。

例如:设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。整数部分最大是3位,如果插入数12.123456,存储的是12.1234,如果插入12.12,存储的是12.1200.

3.定点数类型

定点数类型:DECIMAL

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

decimal(m,d)
M是小数位数(精度)的总数,D是小数点(标度)后面的位数。小数点和(负数)的‘-’符号不包括在M中。如果D是0,则值没有小数点或分数部分。DECIMAL整数最大位数(M)为65。支持的十进制数的最大位数(D)是30。如果D被省略, 默认是0。如果M被省略, 默认是10。

4.日期和时间类型

日期类型:Date、DateTime、TimeStamp、Time、Year

数据类型占用空间存储范围格式用途
year1字节1901/2155YYYY年份值
date3字节1000-01-01/9999-12-31YYYY-MM-DD日期值
time3字节-838:59:59 / 838:59:59HH:MM:SS时间值或持续时间
datetime8字节1000-01-01 00:00:00 到 9999-12-31 23:59:59YYYY-MM-DD hh:mm:ss混合日期和时间值
timestamp4字节1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC
结束时间是第 2147483647 秒,
北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 03:14:07
YYYY-MM-DD hh:mm:ss混合日期和时间值,时间戳

5.字符串类型

字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB

数据类型占用空间用途
char0 ~ 255 字节定长字符串
varchar0 ~ 65535 字节变长字符串
tinyblob0 ~ 255 字节不超过 255 个字符的二进制字符串
tinytext0 ~ 255 字节短文本字符串
blob0 ~ 65535 字节二进制形式的长文本数据
text0 ~ 65535 字节长文本数据
mediumblob0 ~ 16777215 字节二进制形式的中等长度文本数据
mediumtext0 ~ 16777215 字节中等长度文本数据
longblob0 ~ 4294967295 字节二进制形式的长文本数据
longtext0 ~ 4294967295 字节长文本数据

请注意,实际存储空间可能会根据列的定义和字符集而有所不同。例如,对于VARCHAR类型,如果使用多字节字符集(如utf8mb4),实际存储空间会更大

char和varchar:

  1. char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
  2. char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。
  3. char类型的字符串检索速度要比varchar类型的快。

下面的表显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别:
(表中最后一行的值只适用不使用严格模式时;如果MySQL运行在严格模式,超过列长度不的值不保存,并且会出现错误)

CHAR(4)存储需求VARCHAR(4)存储需求
‘’’    ’4个字节‘’1个字节
‘ab’'ab  ’4个字节'ab ’3个字节
‘abcd’‘abcd’4个字节‘abcd’5个字节
‘abcdefg’‘abcd’4个字节‘abcd’5个字节

varchar和text:

  1. varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。
  2. text类型不能有默认值。
  3. varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

二进制数据(_Blob)

  1. _BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。
  2. _BLOB存储的数据只能整体读出。
  3. _TEXT可以指定字符集,_BLO不用指定字符集。

6.枚举类型

ENUM(‘value1’,‘value2’,…)
枚举类型。只能有一个值的字符串,从值列’value1’,‘value2’,…,NULL中或特殊 ''错误值中选出。ENUM列最多可以有65,535个截然不同的值。ENUM值在内部用整数表示。

例如,定义为ENUM的列(‘one’,‘two’,‘three’)可以有下面所示任何值。还显示了每个值的索引:

  • NULL ,索引:NULL
  • ‘’ ,索引:0
  • ‘one’ ,索引:1
  • ‘two’ ,索引:2
  • ‘three’ ,索引:3

7.集合类型

SET(‘value1’,‘value2’,…)
一个SET。字符串对象可以有零个或多个值,每个值必须来自列值’value1’,‘value2’,…SET列最多可以有64个成员。SET值在内部用整数表示。

例如,指定为SET(‘one’, ‘two’) NOT NULL的列可以有下面的任何值:

  • ‘’
  • ‘one’
  • ‘two’
  • ‘one,two’

数据类型的属性

  • NULL 数据列可包含NULL值
  • NOT NULL 数据列不允许包含NULL值
  • DEFAULT 默认值
  • PRIMARY KEY 主键
  • AUTO_INCREMENT 自动递增,适用于整数类型
  • UNSIGNED 无符号
  • CHARACTER SET name 指定一个字符集
  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值