MySQL数据库
Completion requirements
MySQL 数据类型详解
1. 字符类型
VARCHAR
- 定义:
VARCHAR
是CHARACTER VARYING
的缩写,用于存储可变长度的字符串。 - 特点:
VARCHAR
表示最多可以存储n
个字符,n
的最大值为 65,535(受行大小限制)。- 实际存储所需的空间为字符串长度(L)加上 1 或 2 个字节(记录字符串长度)。如果
L < 255
,占用 1 个字节;否则占用 2 个字节。 - 例如,字符串
'abcd'
的长度为 4,占用 5 个字节。
CHAR
- 定义:
CHAR
与VARCHAR
类似,但它的存储长度是固定的。 - 特点:
- 无论实际存储的字符串有多长,
CHAR
都会占用固定的空间。 - 虽然占用空间较多,但在索引搜索时比
VARCHAR
快约 20%。
- 无论实际存储的字符串有多长,
2. 文本和二进制大对象
TEXT 和 BLOB
- 定义:用于存储较大的文本或二进制数据,最大长度为 65,535 个字符。
- 特点:
- 实际存储空间为数据长度加上 2 个字节(若长度 < 255,则为 1 个字节)。
- 数据存储在表的数据文件之外,这使得涉及
TEXT
或BLOB
数据的操作(如INSERT
、UPDATE
、DELETE
、SELECT
)速度较慢,但其他操作速度更快。
3. 数值类型
整数类型(INT)
- 特点:
INT
的最大无符号值为 4,294,967,295。- 默认是
SIGNED
(有符号),若需要存储负数,需显式声明SIGNED
。 - 如需存储更大的数值(如
1234567890123456789
),应使用BIGINT
。 - 布尔值通常用
TINYINT(1)
表示。
- 括号中的数字:括号内的数字(如
INT(11)
)仅影响显示宽度,与存储大小无关。
DECIMAL
- 定义:
DECIMAL(n, m)
用于存储精确的小数。n
是总位数,m
是小数位数。- 例如,
DECIMAL(4, 2)
表示最多存储 4 位,其中 2 位为小数部分,可存储范围为 -99.99 至 99.99。
4. 日期和时间类型
日期和时间类型
- DATE:仅存储日期,格式为
'YYYY-MM-DD'
。 - DATETIME:存储日期和时间,格式为
'YYYY-MM-DD HH:MM:SS'
。 - TIMESTAMP:与
DATETIME
类似,但范围仅限于 1970-01-01 至 2037-12-31。 - TIME:仅存储时间,格式为
'HH:MM:SS'
,支持时间间隔(如-02:00:00
表示过去两个小时)。 - YEAR:仅存储年份。
注意事项
- 操作日期时,必须指定完整的日期值,而不能仅指定时间。
FROM_UNIXTIME()
用于将 Unix 时间戳转换为日期时间格式。SELECT FROM_UNIXTIME(0); -- 输出 '1970-01-01 00:00:00' SELECT FROM_UNIXTIME(2145916799); -- 输出 '2037-12-31 23:59:59' SELECT FROM_UNIXTIME(2145916800); -- 输出 NULL(超出范围)
5. 集合类型
SET
- 定义:
SET
数据类型允许从预定义字符串列表中存储任意组合。 - 特点:
- 可以存储多个值,从 0 到所有值。
- 例如:
可以存储:SET("madam", "mister")
- 空值
"madam"
"mister"
"madam, mister"
ENUM
- 定义:
ENUM
数据类型用于从预定义字符串列表中选择一个值。 - 特点:
- 只能存储单个值。
- 例如:
只能存储:ENUM("madam", "mister")
- 空值
"madam"
"mister"
6. 参考资料
Last modified: Friday, 17 January 2025, 7:24 PM