MySQL 8.0中主要有三类常用数据类型,分别是数值类型(Numeric Data Types),日期和时间类型(Data and Time Data Types),字符类型(String Data Types)。
数值类型(Numeric Data Types)
整数类型 Integer Types (Exact Value)
Type | Storage | Min Signed | Max Signed | Min Unsigned | Max Unsigned |
---|---|---|---|---|---|
TINYINT | 1 Byte | -128 | 127 | 0 | 255 |
SMALLINT | 2 Bytes | -32768 | 32767 | 0 | 65535 |
MEDIUMINT | 3 Bytes | -8388608 | 8388607 | 0 | 16777215 |
INT | 4 Bytes | -2147483648 | 2147483647 | 0 | 4294967295 |
BIGINT | 8 Bytes | -2^63 | 2^63-1 | 0 | 2^64-1 |
MySQL支持一个扩展,可以在类型的基本关键字后面的括号中选择性地指定整数类型的显示宽度。例如, INT(4)表示显示宽度为四位。当数值小于指定宽度时,将会在左侧填充空格。
指定显示宽度不会限制超出指定宽度的数值的储存和显示。例如, SMALLINT(3)的储存值范围为 -32768到32767,超出指定的三位宽度的数值会正常显示。
固定小数点类型 Fixed-Point Types (Exact Value)
DECIMAL和NUMERIC类型储存准确值。一般用于保存高精度的数据,比如货币。 在Mysql中,DECIMAL是NUMERIC的实现,一般等价使用。
举例:
salary DECIMAL(5,2)
表示5位数字,其中小数有2位,可以存储在salary 列范围从-999.99到 999.99。
浮点类型 Floating-Point Types (Approximate Value)
FLOAT和DOUBLE类型表示近似数值。在MySQL中,FLOAT使用4字节,DOUBLE使用8字节。
位类型 Bit-Value Type
位类型用于储存位值。BIT(M)表示使用M位储存,M取值范围是1到64。
使用b'value'表示二进制数值,比如b'111'和b'10000000'表示7和128。
日期和时间类型 (Date and Time Data Typps)
Type | Format | Supported Range |
---|---|---|
DATE | YYYY-MM-DD | ‘1000-01-01’ to ‘9999-12-31’ |
DATETIME | YYYY-MM-DD hh:mm:ss[.fsp] | ‘1000-01-01 00:00:00.000000’ to ‘9999-12-31 23:59:59.999999’ |
TIMESTAMP | hh:mm:ss[.fsp] | ‘1970-01-01 00:00:01.000000’ UTC to ‘2038-01-19 03:14:07.999999’ UTC |
TIME | hh:mm:ss[.fsp] | ‘-838:59:59.000000’ to ‘838:59:59.000000’ |
YEAR | YYYY | 1901 to 2155 |
fsp表示小数秒精度;即秒的小数部分位数。fsp值必须在0到6的范围内。值0表示没有小数部分。如果省略,则默认精度为 0。
字符类型 (String Data Types)
Type | Range | Usages |
---|---|---|
CHAR | 0-255 characters | 固定长度字符串 |
VARCHAR | 0 to 65,535 characters | 可变长度字符串 |
BINARY | 0-255 bytes | 固定长度二进制字符串 |
VARBINARY | 0 to 65,535 bytes | 可变长度二进制字符串 |
BLOB | 0 to 65,535 bytes | 二进制大对象,可容纳可变数量的数据 |
TEXT | 0 to 65,535 characters | 文本,储存和读取时保留空格空行 |
ENUM | 0 to 65,535 distinct elements | 指定可选的系列值 |
Blog表示二进制大对象,可容纳可变数量的数据。BLOG类型包括TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB等四种,区别在于容纳的最大范围不同。
TEXT表示非二进制字符串。TEXT类型包括TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT,分别和BLOG的四种类型对应,相应的最大长度和存储需求一样对应。
参考文档
https://dev.mysql.com/doc/refman/8.0/en/data-types.html
https://www.runoob.com/mysql/mysql-data-types.html