一. 整数类型(5种)
1.1 类型介绍
整数类型 字节 有符号数取值范围 无符号数取值范围 tinyint 1 -128 - 127 0 - 255 smallint 2 -32768~327670 - 65535 mediumint 3 -8388608~8388607 0~16777215int ,integer 4 -2147483648~2147483647 0~4294967295bigint 8 -9223372036854775808~9223372036854775807 0~18446744073709551615
1.2 可选属性
- int(5) -- 显示宽度为5
- zerofill -- 用0填充,例如添加123,显示的是00123(当使用zerofill时会自动添加unsigned)
- unsigned
int(M) ,必须和 UNSIGNED ZEROFILL 一起使用才有意义。
1.3 使用场景
二. 浮点类型
2.1 类型介绍
因为浮点数是不准确的,所以我们要避免使用 “=” 来 判断两个数是否相等
三. 定点数类型
3.1 类型介绍
定点数在MySQL内部是以 字符串 的形式进行存储,这就决定了它一定是精准的。
3.2 位类型
CREATE TABLE test_bit1(
f1 BIT,
f2 BIT(5),
f3 BIT(64) );
INSERT INTO test_bit1(f1)
VALUES(1);
#Data too long for column 'f1' at row 1
INSERT INTO test_bit1(f1) VALUES(2);
INSERT INTO test_bit1(f2) VALUES(23);
四 .日期与时间类型
5.1 year类型
1. 占一个字节,最小值1901,最大值2155
了解
5.2 date类型
5.3 time 类型
5.4 datetime 类型
5.5 timestamp 类型
5.5.1 TIMESTAMP和DATETIME的区别
- TIMESTAMP存储空间比较小,表示的日期时间范围也比较小
底层存储方式不同, TIMESTAMP 底层存储的是毫秒值,距离 1970-1-1 0:0:0 0 毫秒的毫秒值。 两个日期比较大小或日期计算时, TIMESTAMP 更方便、更快。4. TIMESTAMP和时区有关。TIMESTAMP会根据用户的时区不同,显示不同的结果。而DATETIME则只能反映出插入时当地的时区,其他时区的人查看数据必然会有误差的。
用得最多的日期时间类型,就是 DATETIME
一般存注册时间、商品发布时间等,不建议使用 DATETIME 存储,而是使用 时间戳 ,因为DATETIME 虽然直观,但不便于计算。
六. 文本字符串类型
6 .1 CHAR与VARCHAR类型
- 检索VARCHAR类型的字段数据时,会保留数据尾部的空格
- CHAR类型的字段会去除尾部的空格
- char如果不指定(M),则表示长度默认是1个字符。
6.2 TEXT类型
七.ENUM类型
八.SET类型
不重复,插入重复的会过滤掉
9. 二进制字符串类型
9.1 BINARY、VARBINARY
一个汉字占三个字节
9.2 BLOB
10. json类型
json分json对象和json数组
11. 空间类型
略
12 总结
整数 -- > int
小数 --> decimal(M,D)
日期与时间 --> datetime
这样做的好处是,首先确保你的系统不会因为数据类型定义出错。不过,凡事都是有两面的,可靠性好,并不意味着高效。比如,TEXT 虽然使用方便,但是效率不如 CHAR(M) 和 VARCHAR(M) 。