1. 数值类型
1.1 整型
- TINYINT: 占用1个字节,范围从-128到127,或者0到255(无符号)。
- SMALLINT: 占用2个字节,范围从-32,768到32,767,或者0到65,535(无符号)。
- MEDIUMINT: 占用3个字节,范围从-8,388,608到8,388,607,或者0到16,777,215(无符号)。
- INT/INTEGER: 占用4个字节,范围从-2,147,483,648到2,147,483,647,或者0到4,294,967,295(无符号)。
- BIGINT: 占用8个字节,范围从-9,223,372,036,854,775,808到9,223,372,036,854,775,807,或者0到18,446,744,073,709,551,615(无符号)。
1.2 浮点数和定点数
- FLOAT: 单精度浮点数,占用4个字节。
- DOUBLE: 双精度浮点数,占用8个字节。
- DECIMAL: 定点数,用于存储精确的小数,特别适合存储财务数据。
2. 日期和时间类型
- DATE: 仅包含日期,格式为YYYY-MM-DD。
- TIME: 仅包含时间,格式为HH:MM:SS。
- DATETIME: 包含日期和时间,范围从1000-01-01 00:00:00到9999-12-31 23:59:59。
- TIMESTAMP: 时间戳,范围从1970-01-01 00:00:01 UTC到2038年的某个时间。
- YEAR: 存储年份,范围从1901到2155。
3. 字符串类型
- CHAR: 定长字符串,最多可以存储255个字符。
- VARCHAR: 变长字符串,最多可以存储65,535个字符,实际限制取决于最大行大小和字符集。
- TEXT: 存储大量文本数据,包括TINYTEXT, TEXT, MEDIUMTEXT, 和LONGTEXT。
- BLOB: 用于存储二进制数据,包括TINYBLOB, BLOB, MEDIUMBLOB, 和LONGBLOB。
4.枚举类型和集合类型
- ENUM: 允许从预定义值列表中选择一个值。
- SET: 允许从预定义值列表中选择多个值。
5.JSON类型
- JSON: 专门用于存储JSON(JavaScript Object Notation)数据格式的类型。
选择表示符(identifier)
1.整数类型通常是标识列的最佳选择,因为它们很快并且可以使用AUTO_INCREMENT。
2.避免使用字符串类型作为标识列,它们很耗空间,并且比数字类型比较慢。