第一节:mysql 数据类型
MySQL 数据库管理系统中,可以通过存储引擎来决定表的类型。同时,MySQL 数据库管理系统也提供了数据类型决定表存储数据的类型。MySQL 数据库管理系统提供的数据类型:
1.1 数值类型
整数类型(TINYINT SMALLINT MEDIUMINT INT BIGINT);浮点数类型(FLOAT DOUBLE);定点数类型(DEC);位类型BIT【(m)】
整数类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
TINYINT【(m)】 | 1字节 | (-128,127) | (0,255) | 很小的整数值 |
SMALLINT | 2字节 | (-32768,32767) | (0,65535) | 小的整数值 |
MEDIUMINT | 3字节 | (-8388608,8388607) | (0,16777215) | 中等大小的整数值 |
INT【(M)】或INTEGER | 4字节 | (-2147483648,2147483647) | (0,4294967295) | 大的整数值 |
BIGINT【(M)】 | 8字节 | (-9233372036854775808,9233372036854775807) | (0,18446744073709551615) | 极大整数值 |
注:M表示最大显示宽度,最大有效显示宽度是255
浮点类型 | 存储字节 | 描述 | 范围 |
FLOAT(M,D) | 4 | 单精度 | -3.402823466E+38,-1.175494351E-38 |
DOUBLE(M,D) | 8 | 双精度 | -1.7976931348623157E+308,2.2250738585072014E-308 |
DECIMAL【(M,[D])】 | 变长 | “严格”的定点数 | 整数最大位数为65,小数最大位数(D)为30 |
注:M表示最大显示宽度;D表示小数点后面的位数。定点数DECIMAL在内部以字符串形式存放,适合表示货币等精度高的数据,一定要指定M和D。
1.2 字符串类型
类型 | 存储字节 | 大小 | 用途 |
CHAR(M) | M个 | 0-255字节 | 定长字符串 |
CHAR | CHAR(1) | ||
VARCHAR(M) | L+1个 | 0-65535字节 | 变长字符串 |
BINARY(M) | M个 | 类型类似于CHAR类型,但保存二进制字节字符串而不是非二进制字符串 | |
VARBINARY(M) | L+1 | 类型类似于CHAR类型,但保存二进制字节字符串而不是非二进制字符串 | |
TINYBLOB | L+1 | 0-255字节 | 不超过255个字符的二进制字符串 |
TINYTEXT | L+1 | 0-255字节 | 短文本字符串 |
BLOB | L+2 | 0-65535字节 | 二进制形式的长文本数据 |
TEXT | L+2 | 0-65535字节 | 长文本数据 |
MEDIUMBLOB | L+3 | 0-16777215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | L+3 | 0-16777215字节 | 中等长度文本数据 |
LONGBLOB | L+3 | 0-4294967295字节 | 二进制形式的极大文本数据 |
LONGTEXT | L+3 | 0-4294967295字节 | 极大文本数据 |
ENUM('v1','v2') | 1或2个 | 枚举类型:只能有一个值的字符串 | |
SET('v1',v2''...) | 1-8个 | 集合类型:可以有0或多个值 |
1.3 时间和日期类型
类型 | 大小 | 范围 | 格式 | 用途 |
DATE | 3字节 | 1000-01-01/999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3字节 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间 |
YEAR | 1字节 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8字节 | 1000-01-01 00:00:00/9999-12-31 23:59:59 |
YYYY-MM-DD HH:MM:SS |
混合日期和时间值 |
TIMESTAMP | 8字节 | 1970-01-01 00:00:00/2037年某时 |
YYYYMMDD HHMMSS |
混合日期和时间值,时间戳 |