史上最简单MySQL教程详解(基础篇)之数据类型
其他
2018-06-16 05:07:22
阅读次数: 3
数值类
整数型
数据类型 |
说明 |
字节数 |
TINYINT |
-128~127 |
1 |
SMALLINT |
-32768~32767 |
2 |
MEDIUMINT |
-8388608~8388607 |
3 |
INT |
-2147483648~2147483647 |
4 |
BIGINT |
-9223372036854775808~9223372036854775807 |
8 |
小数型
数据类型 |
说明 |
字节数 |
FLOAT |
单精度小数 |
4 |
DOUBLE |
双精度小数 |
8 |
DECIMAL |
精确计算时使用的数据类型 |
根据精度确定 |
注意事项
- 指定精度时,如果插入值的精度高于实际定义的精度,系统会自动进行四舍五入处理,使值的精度达到要求。
- 当不指定精度时,Float、Double默认会保存实际精度,而Decimal默认是整数;
日期类
数据类型 |
说明 |
DATE类型: |
支持的范围为’1000-01-01’到’9999-12-31’ |
TIME类型: |
支持的范围是’-838:59:59’到’838:59:59’ |
DATETIME类型 |
支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’ |
TIMESTAMP类型: |
时间戳,用于INSERT或UPDATE操作时自动获得当前时间 |
YAER类型: |
支持范围是1901~2155 |
注意事项
- 在MySQL中除了timestamp 类型允许有默认值外,其他时间类型都不能有默认值,不然会报错;
- TimeStamp使用Current_TimeStamp()而DateTime使用NOW(来获取当前时间);
- Datetime存储的时间与时区无关,Timestamp存储的时间及显示的时间都依赖于当前时区;
字符串类
数据类型 |
说明 |
char: |
固定长度字符串,需要设定长度值,不足设定值,则右侧自动填满空格;最大255个字符 |
varchar: |
可变长字符串需要设定长度值,最大65532个字节 |
tinytext |
用于存储普通文本,
28
-1字节的可变长度字符串 |
text: |
用于存储普通文本,不受行的最大长度的限制,216-1字节的可变长度字符串 |
mediuntext |
用于存储普通文本,224-1字节的可变长度字符串 |
longtext |
用于存储普通文本,264-1字节的可变长度字符 |
注意事项:
- CHAR 和 VARCHAR 的区别:
1.字符串末尾空格的处理方式不同。
2.CHAR列的长度固定为创建表时声明的长度,所以效率比VARCHAR要高,但会造成一定的空间浪费,VARCHAR 与之相反
二进制类
数据类型 |
说明 |
binary: |
定长二进制字符串,应该设定长度值,按“二进制字节”保存存字符数据,最大255个字节,无编码问题 |
varbinary: |
变长二进制字符串,需要设定长度值,按“二进制字节”存字符数据,最大65532个字节,无编码问题 |
TINYBLOB |
可变长二进制数据,最多255个字节 |
BLOB |
可变长二进制数据,最多216-1个字节 |
MEDIUMBLOB |
可变长二进制数据,最多224-1个字节 |
LONGBLOB |
可变长二进制数据,最多232-1个字节 |
注意事项:
- BINARY、VARBINARY和 BLOB可以理解为是CHAR、VARCHAR和TEXT的二进制版本
- BINARY和VARBINARY:两者唯一的差别在于BINARY当长度不够时会补“\0”。
- BLOB类型是一种特殊的二进制类型。BLOB可以存储数据量很大的二进制数据,如图片,视频等。不同BLOB之间的区别也只是最大长度不同。
枚举类
数据类型 |
说明 |
ENUM(var1,var2,var3,…) |
单选可能的枚举型 |
SET(var1,var2,var3,…) |
多选可能的枚举型 |
数据类型选择的个人建议
- 整型:根据要显示的最大值决定;
- 浮点型:要显示小数。如果要精确到小数点后10位,就选择DOUBLE,而不应该选择FLOAT。同时,浮点数在存储过程中会出现精度丢失的问题。DECIMAL精度较高,浮点数会出现误差,如果精度较高,则应选择定点数DECIMAL;
- 字符串型:定长与变长的区别,CHAR类型占用空间比较大,但是处理速度比VARCHAR快,如果长度变化不大,最好选择CHAR类型。对于长度不确定的,最好选择VARCHAR;
- 时间:根据实际情况决定,如果需要显示的时间与时区对应,就应该选择TIMESTAMP;
- ENUM类型和SET类型:长度不同,ENUM类型最多可以由65535个成员,而SET类型最多只能包含64个成员。且ENUM只能单选,而SET类型可以多选;
- TEXT类型和BLOB类型:TEXT只能存储字符数据,而BLOB可以存储二进制数据。如果是纯文本,适合TEXT,,但是文本数据不是必要情况下,最好选择VarCharl类型。如果是图片,视频等适合存二进制,但通常图片视频等的储存是将文件储存在服务器,而在数据库记录文件地址来实现的;
转载自blog.csdn.net/m0_37888031/article/details/80418156