MySQL数据类型

1.整型

1.处理符号问题时,默认是有符号,需要无符号时添加 UNSIGNED

CREATE TABLE `tbl` (`number` INT UNSIGNED);

2.INT(4),INT(11)与INT

INT(w),w表示的不是这个值的位数,仅仅代表显示的宽度,需要配合ZEROFILL使用,如

CREATE TABLE `t3` (`id` INT(3) ZEROFILL);

INSERT INTO T3 VALUES(2);
INSERT INTO T3 VALUES(2456);

查询时,如果实际位数大于宽度,则全部显示,否则补0

 

当使用ZEROFILL时,该属性变为UNSIGNED,如果插入负值,则实际插入了0.

3.其他整型

TINYINT 1字节

SMALLINT 2字节

MEDIAINT 3字节

INT  4字节

BIGINT 8字节

2.浮点型与定点型

1.浮点型有两种:FLOAT [(M,D)], DOUBLE [(M,D)]

M表示总位数,D表示小数点后的位数,当省略时,mysql按实际数值表示

2.定点型DECIMAL

当M,D被省略时,M=10,D=0

2.当插入的值小数点位数不足时补零,多余时舍入(可能是四舍五入)。

3.详细参照

https://www.cnblogs.com/gulibao/p/5416245.html

3.字符型

1.VARCHAR(N)

N的意义

在MySQL5之前,N表示字节数,MySQL5之后表示的是字符数,具体所占的字节数与编码有关。

  对于GBK编码,一个汉字占3个字节,UTF-8编码,占2-3个字节,计算时按3个字节计算。

VARCHAR类型的最大长度

mysql将varchar数据保存在聚簇索引之外,且用1-2两个字节表示实际字符串长度,故其理论最大长度为65535字节,之所以是理论,是因为它还受行长度的限制。

来自行长度的限制

mysql5之后,行长度的最大字节数为65535,由于varchar的起始位和结束位还要占3个字节,故utf8编码的表,其最大字符数为65535/3-1=21844

当不止一个varchar属性时,最大长度又会发生变化。

2.CHAR(N)

N的意义

N依然表示字符数,具体占的字节数看编码,N最大255,当插入字符串长度超过N时,发生截取。

 特点

CHAR类型的数据存储时会自动填充空格,检索时效率较高。

4.时间型

1.长度比较

TIMESTAMP 表示范围从1970年到2038年,占四个字节

DATETIME 占8个字节

DATE,TIME,YEAR均占3个字节。

2.TIMESTAMP的两个属性

如果定义时DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句都有,列值为默认使用当前的时间戳,并且自动更新。
如果不使用DEFAULT和ON UPDATE子句,那么它等同于DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。
如果只有DEFAULT CURRENT_TIMESTAMP子句,而没有ON UPDATE子句,列值默认为当前时间戳但不自动更新。
如果只有ON UPDATE CURRENT_TIMESTAMP子句,列默认为0并自动更新

5.枚举型

ENUM('value1','value2') 按字符串形式表示,内部按整形存储,最多有65535个值

posted @ 2018-10-25 18:55  即便那总是过去  阅读(104)  评论(0编辑  收藏  举报