天天看点

MYSQL数据类型与存储空间

类型

存储空间(字节)

最小值(有符号)

最小值(无符号)

最大值(有符号)

最大值(无符号)

TINYINT

1

-128

127

255

SMALLINT

2

-32768

32767

65535

MEDIUMINT

3

-8388608

8388607

16777215

INT

4

-2147483648

2147483647

4294967295

BIGINT

8

-2的63次幂

2的63次幂-1

2的64次幂-1

bit类型存储二进制的值,bit(M)可以存储M个二进制的值,M的范围1-64。

可以使用b'value'这种语法存值,value是 0或者1,例如 <code>b'111'</code> and <code>b'10000000' 分别代表7和128。</code>

如果长度不够则左侧以0填充,例如 bit(6),  值为b‘101’,则实际为000101。

SELECT bin(Money_), oct(Money_) FROM db_test;

MYSQL数据类型与存储空间
MYSQL数据类型与存储空间

DATE,DATETIME,TIMESTAMP

date日期类型 ,格式YYYY-MM-DD, 存储范围<code>'1000-01-01'</code> to <code>'9999-12-31'。</code>

datetime时间类型,格式YYYY-MM-DD HH:MM:SS,存储范围  <code>'1000-01-01 00:00:00'</code> to <code>'9999-12-31 23:59:59'。</code>

timestamp时间类型,格式,YYYY-MM-DD HH:MM:SS,存储范围  <code>'1970-01-01 00:00:01'</code> UTC to <code>'2038-01-19 03:14:07'</code> UTC。

timestamp再存取值时,会把时间转换为UTC世界标准时间进行存取,比如mysql服务器是GTM+8的时区,那么存到mysql中会把当前时间减掉8小时,读取的时候在把时间加上8小时,就是你要的值。但是如果你存储和读取时时区不一致,就会导致时间不准确。

TIME

MySQL以'HH:MM:SS'格式(或大小时值的'HHH:MM:SS'格式)检索并显示TIME值。 TIME值的范围可以从'-838:59:59'到'838:59:59'。 小时部分可能非常大,因为TIME类型不仅可以用来表示一天中的时间(必须小于24小时),还可以用于表示两个事件之间的经过时间或时间间隔(可能远大于 24小时,甚至是负面的)。

YEAR

占用一个字节,8位。  范围是<code>1901</code> to <code>2155, 底层存储的是与2155-1901=254,一个字节可以存储,底层存储的是与1901的差值。</code>

MYSQL数据类型与存储空间