跳到主要内容

数据类型介绍

tip

1字节由八个二进制位构成, 1 Bytes = 8 Bit

整数类型

类型大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes-2^8/2 (-128) ~ 2^8/2-1 (127)0 ~ 2^8-1 (255)小整数值
SMALLINT2 Bytes-2^16/2 ~ 2^16/2-1 (32767)0 ~ 2^16-1 (65535)大整数值
MEDIUMINT3 Bytes-2^24/2 ~ 2^24/2-10 ~ 2^24-1大整数值
INT4 Bytes-2^32/2 ~ 2^32/2-10 ~ 2^32-1标准整数值
BIGINT8 Bytes-2^64/2 ~ 2^64/2-10 ~ 2^64-1极大整数值

浮点类型

类型大小范围(有符号)用途
FLOAT4 Bytes0
-3.402823466E+38 ~ -1.175494351E-38
1.175494351E-38 ~ 3.402823466E+38
单精度浮点数值
DOUBLE8 Bytes0
-1.7976931348623157E+308 ~ -2.2250738585072014E-308
2.2250738585072014E-308 ~ 1.7976931348623157E+308
双精度浮点数值
DECIMAL(M,D)M>D,为M+2否则为D+2依赖于M和D的值小数值
1. 如何区分带符号和不带符号,MySQL中在定义列类型的时候,在整数型数据列后加上一个关键字unsigned是禁止负数,取值从0开始
2. 简单解释下占用字节数和取值范围的关系
使用 TINYINT 来简单描述下,因为TINYINT占用1字节,也就是8位
即:
二进制: 0000 0000 ~ 1111 1111
十进制: 0 ~(128+64+32+16+8+4+2+1)= 255, 2^8-1

字符串类型

类型大小用途
CHAR0 ~ 255 Bytes定长字符串
VARCHAR0 ~ 65535 Bytes变长字符串
TINYBLOB0 ~ 255 Bytes不超过 255 个字符的二进制字符串
TINYTEXT0 ~ 255 Bytes短文本字符串
BLOB0 ~ 65535 Bytes二进制形式的长文本数据
TEXT0 ~ 65535 Bytes长文本数据
MEDIUMBLOB0 ~ 16777215 Bytes二进制形式的中等长度文本数据
MEDIUMTEXT0 ~ 16777215 Bytes中等长度文本数据
LONGBLOB0 ~ 4294967295 Bytes二进制形式的极大文本数据
LONGTEXT0 ~ 4294967295 Bytes极大文本数据
1. CHAR(n) 和 VARCHAR(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
2. CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
3. BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
4. BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。
5. 有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

日期和时间类型

类型大小范围格式用途
DATE3 Bytes1000-01-01 ~ 9999-12-31YYYY-MM-DD日期值
TIME3 Bytes-838:59:59 ~ 838:59:59HH:MM:SS时间值或持续时间
YEAR1 Bytes1901 ~ 2155YYYY年份值
DATETIME8 Bytes1000-01-01 00:00:00 ~ 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP4 Bytes1970-01-01 00:00:00 ~ 2038YYYYMMDD HHMMSS混合日期和时间值,时间戳

参考文献