mysql数据类型

整数型

TINYINT:1 字节,范围为 -128 到 127。
SMALLINT:2 字节,范围为 -32,768 到 32,767。
INT:4 字节,范围为 -2,147,483,648 到 2,147,483,647。
BIGINT:8 字节,很大 2^64

默认情况下都是有符号整数,第一位是符号位。如果想明确使用无符号,可使用unsiged。

如 tinyint unsiged 就是指定无符号tinyint类型。其取值范围0-255。

浮点型

float:单精度4字节

double:双精度8字节

浮点数不精确,在一些聚合函数运算中会丢失精度

定点数

DECIMAL(M,D)

M代表最大位数(精度),取值范围1-65

D代表小数位数,取值范围0-30,并且不能大于M.

D可以不指定,默认是0,如decimal(5)就是表示5位整数,同样M也可以省略,默认是10。

decimal(5,2)取值范围 -999.99 - 999.99

decimal数据大小取决于具体的数值。每9位长度用4个byte来存储,不足9位的按照下面长度来存储

数据位长度 字节数
1-2 1
3-4 2
5-6 3
7-9 4

如 DECIMAL(18,9)整数位和小数位都是9位,则最大共8个字节。

定点数decimal相对于浮点数是精确的,整数位和小数位是分开存储的。

日期型

DATE, TIME, DATETIME, TIMESTAMP, and YEAR

类型 格式 范围 大小(byte)
YEAR YYYY 1901~2155 1
TIME HH:MM:SS -838:59:59~ 838:59:59 3
DATE YYYY-MM-DD 1000-01-01 00:00:00~ 9999-12-31 23:59:59 3
DATETIME YYYY-MM-DD hh:mm:ss 1000-01-01 00:00:00~ 9999-12-31 23:59:59 5+3
TIMESTAMP YYYY-MM-DD hh:mm:ss 1970-01-01 00:00:01~ 2038-01-19 03:14:07 4+3

TIME类型的小时数如此大是因为time类型不仅可以用来表示正常一天日期时间,还可以表示使用的时间或两个时间差,这样小时就超过24小时了。

datetime和timestamp两者都表示时间,两者区别:

1、表示时间范围不同,明显DATETIME可表示时间要大

2、所占空间不同,后面的+3个字节是表示可选的小数部分长度,这里datetime占5个字节是从5.6.4版本开始的,以前的版本占8个字节。timestamp是一个时间戳,从1970年到现在的秒数,一直在增加,为什么到2038年就到期了,因为达到一个4字节整数最大值。

3、时区变化。如果改变当前时区,TIMESTAMP会自动根据时区调整时间显示,datetime不会做任何转变。

字符类型

CHAR(M) 定长

VARCHAR(M) 可变长,最大M

TEXT:不需要定义长度,自动按照实际长度存储。

TEXT有4种类型,区别是最大长度不同。TINYTEXT:255(28),TEXT:65535(216),MEDIUMTEXT,LONGTEXT后面这两个就不用了吧。

和TEXT类似的有一个BLOB 类型,用来存储二进制数据,如文件流。

你可能感兴趣的:(mysql学习记录,mysql,数据库)