MySQL的数据类型详解
MySQL支持多种数据类型,这些数据类型用于定义表格中的列,以存储不同的数据。以下是一些常用的MySQL数据类型:
- 数值数据类型:
- TINYINT:用于存储非常小的整数(1字节),其取值范围为:-128到127,无符号的范围是0到2551。
- SMALLINT:用于存储小整数(2字节),其取值范围为:-32768到32767,无符号的范围是0到655351。
- MEDIUMINT 中等整数(3字节),取值范围为:-8388608到8388607,无符号的范围是0到16777215。
- INT:用于存储整数(4字节),其取值范围为:-2147483648到2147483647,无符号的范围是0到4294967295。
- BIGINT:用于存储大整数(8字节)。其取值范围为:-9223372036854775808到9223372036854775807,无符号的范围是0到184467440737095516151。
- FLOAT:用于存储单精度浮点数(4字节)。
- DOUBLE:用于存储双精度浮点数(8字节)。
- DECIMAL:用于存储精确的小数。存储空间并不是固定的,由精度值M决定,总共占用的存储空间为M+2个字节。
- 字符串数据类型:
- CHAR:用于存储固定长度的字符串,字段长度范围是0到255。
- VARCHAR:用于存储可变长度的字符串,可以根据存储的实际值来占用空间,创建表的时候指定最大长度,字段长度范围是0到65535。
- TEXT:用于存储较大的文本数据,字段最大长度为65535个字符,并且通常存储在MyISAM和InnoDB存储引擎的单独的扩展文件中。
- BINARY:用于存储二进制字符串,一般存储固定长度的二进制数据,最大长度为255个字节,字段使用二进制字符串存储数据,二进制字符串常用来表示图片、文件等二进制数据。
- VARBINARY:用于存储可以改变长度的二进制字符串,最大长度为 65,535 个字节。
- 日期和时间数据类型:
- DATE:用于存储日期,可以存储从’1000-01-01’到’9999-12-31’的日期值。
- TIME:用于存储时间,可以存储从00:00:00到23:59:59的时间值。
- DATETIME:用于存储日期和时间,DATETIME列通常由年、月、日、小时、分钟和秒组成。通常占用8个字节的存储空间,日期范围是1000——9999年,字段默认值为null。
- TIMESTAMP:用于存储时间戳,常用于表示一个具体的时间戳,存储空间为4字节,时间范围是1970——2038年,字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP)。
- 二进制数据类型:
- BLOB:用于存储二进制数据,其最大长度为 65,535 个字节,BLOB类型没有固定长度,可以根据实际需要存储任意长度的二进制数据,例如图像、音频、视频等文件。需要注意的是,BLOB 类型的数据在存储和传输时可能会占用较大的空间,因此在设计数据库时需要谨慎使用。
- TINYBLOB:用于存储非常小的二进制数据,存储 256 字节以下的数据,需要注意的是,将字符串值插入 TINYBLOB 列需要使用单引号将其括起来,以确保值被正确解释为二进制数据。
- MEDIUMBLOB:用于存储中等大小的二进制数据,允许长度为0~16777215字节。
- LONGBLOB:用于存储大量的二进制数据,允许长度为0~4294967295字节。
- 特殊数据类型:
- ENUM:用于定义有限的可能值列表。
- SET:用于定义多个可能的值,可以存储多于一个值。
- YEAR:用于存储年份,具有特殊的格式。
- 枚举类型(ENUM): ENUM 允许您在预定义的集合中指定一个值,例如性别(男,女)。语法如下: ENUM(‘value1’, ‘value2’, ‘value3’, …) [DEFAULT ‘value’] [CHARACTER SET charset] [COLLATE collation]
- 集合类型(SET): SET 允许您在预定义的集合中指定一个或多个值,例如一周中的某几天(1-7)。语法如下: SET(‘value1’, ‘value2’, ‘value3’, …) [CHARACTER SET charset] [COLLATE collation]
- 年份类型(YEAR): YEAR 有两种格式,分别对应不同的范围和精度。具体如下: YEAR(2):表示年份,范围为 00-99,占用 2 个字节的存储空间。 YEAR(4):表示年份,范围为 1901-2155,占用 4 个字节的存储空间。