数据类型是数据库的一个重要组成部分,在MySQL数据库中可将数据类型分为三大类:Text类型(文本类型)、Number类型(数字类型)、Date类型(日期类型)。
一、Text类型
Text类型为本文类型,也就是我们在编程中常说的字符串,同时由于可以进行序列化、反序列化等等的操作,我们甚至于可以直接将文件转换后存入数据库(但通常我们不会这样做)。
1. CHAR
- 最大长度:255
- 内容限制:字母、数字及特殊字母,正确设置编码后可以存入中文等字符
- 特点:长度固定,占用空间较大,效率稍高
2. VARCHAR
- 最大长度:255
- 内容限制:字母、数字及特殊字母,正确设置编码后可以存入中文等字符
- 特点:长度可变,需要同时记录数据本身和占用的空间大小,可适度节省磁盘空间,效率稍低
3. TINYTEXT
- 最大长度:255
- 内容限制:字母、数字及特殊字母,正确设置编码后可以存入中文等字符
- 特点:存储方式上有所不同,不会和行数据存在一起
4. TEXT
- 最大长度:65,535
- 内容限制:字母、数字及特殊字母,正确设置编码后可以存入中文等字符
- 其他相似类型
- MEDIUMTEXT:最大长度为16,777,215
- LONGTEXT:最大长度为4,294,967,295
5. BLOB
- 最多存放:65,535字节
- 内容限制:Binary Large OBjects(二进制长对象)
- 其他相似类型
- MEDIUMBLOB:最多存放16,777,215字节
- LONGBLOB:最多存放4,294,967,295字节
6. ENUM
- 最大个数:65,535
- 内容限制:字符串类型,存储的数据只能是在ENUM中已罗列出的值,或为NULL
7. SET
- 最大个数:64
- 内容限制:字符串类型,存储的数据只能是在SET中已罗列出的值
- 特点:可以存储进多个SET中已声明的元素,但是不会重复存入相同的元素
二、Number类型
Number类型为数字类型,主要用于存储整数和小数,长度部分代表数据的最大位数,而不是最大值。
1. TINYINT
- 数据范围
- 常规:-128 ~ 127
- 无符号:0 ~ 255
- 内容限制:整数
2. INT
- 数据范围
- 常规:-2,147,483,648 ~ 2,147,483,647
- 无符号:0 ~ 4,294,967,295
- 内容限制:整数
- 相似类型
- SMALLINT:-32768 ~ 32767 (常规),0 ~ 65535(无符号)
- MEDIUMINT:-8,388,608 ~ 8,388,607(常规),0 ~ 16,777,215(无符号)
3. BIGINT
- 数据范围
- 常规:-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
- 无符号:0 ~ 18,446,744,073,709,551,615
- 内容限制:整数
4. FLOAT
- 最大长度:4字节
- 最长位数:255位(含小数)
- 最大精度:7位
- 内容限制:小数或整数
5. DOUBLE
- 最大长度:8字节
- 最长位数:255位(含小数)
- 最大精度:15位
- 内容限制:小数或整数
6. DECIMAL
- 存储空间:根据指定位数而定
- 最长位数:65位(含小数)
- 最大精度:30位
- 内容限制:小数或整数
三、Date类型
Date类型为日期类型,用于记录时间格式的数据。通常会以日期格式的字符串、时间戳或部分日期信息的形式来进行记录。
1. DATE
- 显示格式:YYYY-MM-DD
- 起止范围:‘1000-01-01’ 到 ‘9999-12-31’
2. DATETIME
- 显示格式:YYYY-MM-DD hh:mm:ss
- 起止范围:‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’
3. TIMESTAMP
- 显示格式:时间戳(长整形)
- 起止范围:‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC
4. TIME
- 显示格式:hh:mm:ss 或 hhh:mm:ss
- 起止范围:’-838:59:59’ 到 ‘838:59:59’
5. YEAR
- 显示格式:YYYY
- 起止范围:1901 到 2155,或0000
- 备注:一般使用0,00,0000代表2000年,在严格模式下,0000是一个非法的值