心安

Mysql入门系列(一) -- 数据类型

字数统计: 798阅读时长: 3 min
2019/01/04 Share

数据类型

整形

数据类型 存储范围 字节
TINYINT 有符号值:-128 ~ 127(-2^7 ~ 2^7 - 1)
无符号值:0 ~ 255(0 ~ 2^8 - 1)
1
SMALLINT 有符号值:-32768 ~ 32767(-2^15 ~ 2^15 - 1)
无符号值:0 ~ 65535(0 ~ 2^16 - 1)
2
MEDIUMINT 有符号值:-8388608 ~ 8388607(-2^23 ~ 2^23 - 1)
无符号值:0 ~ 16777215(0 ~ 2^24 - 1)
3
INT 有符号值:-2147483648 ~ 2147483647(-2^31 ~ 2^31 - 1)
无符号值:0 ~ 2^32 - 1
4
BIGINT 有符号值:-2^63 ~ 2^63 - 1
无符号值:0 ~ 2^64 - 1
8

选择合适的数据类型,在数据量非常庞大的时候是很有必要的。比如说记录用户的年龄,人的年龄以上五种数据类型都可以存储,但是选择TINYINT只占用1个字节,而BIGINT占用8个字节。
如果用户量过百万甚至千万甚至更多的时候,TINYINT所节省的空间就只有BIGINT的八分之一。

浮点型

数据类型 存储范围
FLOAT([M,D]) M是数字的总位数,D是小数点后的位数,如果M和D被省略,根据硬件允许的限制来保存值。
单精度浮点数精确到大约7位小数位。
DOUBLE([M,D]) DOUBLE类型的保存值的范围大约是FLOAT的10倍。

时间日期类型

数据类型 描述
DATE 存储数据格式为:YYYY-MM-DD,它支持的范围为’1000-01-01’到’9999-12-31’,并且允许使用字符串或数字为此列复制。
DATETIME 存储格式为:YYYY-MM-DD HH:MM:SS,它支持的范围为’1000-01-01 00:00:00’到’9999-12-31 23:59:59’,并且允许使用字符串或数字进行分配值。
TIMESTAMP 时间戳,从1970-01-01 00:00:00到当前的时间差值。
TIME MySQL以’HH:MM:SS’格式检索和显示TIME值,TIME值的范围可以从’-838:59:59’到’838:59:59’。
YEAR MySQL以YYYY格式检索和显示YEAR值。范围是1901到2155。

字符串类型

数据类型 存储需求
CHAR(M) 0 ~ 255个字节
VARCHAR(M) L + 1个字节,其中L <= M 且 0 <= M <= 65535
TINYTEXT L + 1个字节,其中L < 2^8
TEXT L + 2个字节,其中L < 2^16
MEDIUMTEXT L + 3个字节,其中L < 2^24
LONGTEXT L + 4个字节,其中L < 2^32
ENUM(‘value1’,’value2’,…) 1或2个字节,取决于枚举值的个数,最多65535个值
SET(‘value1’,’value2’,…) 1、2、3、4或者8个字节,取决于set成员的数目

char表示定长,比如char(5),如果存入的数据是“abc”,那么会自动补充2个空格,存储的结果是“abc ”。
而varchar表示变长的字符串,存的是什么就是什么。
在取出的时候,默认情况下,char类型数据后面的空格会被去掉。也就是说上面的“abc ”取出之后变成了“abc”。
而varchar取出的时候则不会这样。
char类型占用的字节数是固定的。而varchar取决于你存储的数据的字节数。
这是char和varchar主要的区别。
注意:char与varchar后面接的数据大小为存储的字符数,而不是字节数

以上就是Mysql数据库最常用的数据类型。

原文作者:XinAnzzZ

原文链接:https://www.yuhangma.com/2019/mysql/2019-01-04-mysql-basic01/

发表日期:January 4th 2019, 12:00:00 am

更新日期:September 26th 2019, 10:46:42 am

版权声明:(转载本站文章请注明作者和出处 心 安 – XinAnzzZ ,请勿用于任何商业用途)

CATALOG
  1. 1. 数据类型
    1. 1.1. 整形
    2. 1.2. 浮点型
    3. 1.3. 时间日期类型
    4. 1.4. 字符串类型