1. 数据类型
整数类型
- TINYINT:非常小的整数,通常占用 1 个字节。在 MySQL 中,有符号的范围是 -128 到 127,无符号的范围是 0 到 255。常用于存储状态码等数据量较小的整数。
|
|
- SMALLINT:小整数,一般占用 2 个字节。有符号范围是 -32768 到 32767,无符号范围是 0 到 65535。
- INT(INTEGER):常用的整数类型,占用 4 个字节。有符号范围是 -2147483648 到 2147483647,无符号范围是 0 到 4294967295。适用于存储用户 ID、数量等。
- BIGINT:大整数,占用 8 个字节,可存储非常大的整数。
浮点类型
- FLOAT:单精度浮点数,占用 4 个字节,可提供大约 7 位的小数精度。
|
|
- DOUBLE:双精度浮点数,占用 8 个字节,提供大约 15 位的小数精度。精度比 FLOAT 更高。
日期和时间类型
- DATE:用于存储日期,格式通常为
YYYY-MM-DD
。
|
|
- TIME:用于存储时间,格式为 HH:MM:SS。
- DATETIME:用于存储日期和时间,格式为
YYYY-MM-DD HH:MM:SS
,范围从 1000 - 01 - 01 00:00:00 到 9999 - 12 - 31 23:59:59。 - TIMESTAMP:也用于存储日期和时间,但范围比 DATETIME 小,从 1970 - 01 - 01 00:00:01 UTC 到 2038 - 01 - 19 03:14:07 UTC。它会根据时区进行调整,并且在更新记录时可以自动更新时间戳。
字符串类型
- CHAR:固定长度的字符串,最多可以存储 255 个字符。如果存储的字符串长度小于指定的长度,会用空格填充。
|
|
- VARCHAR:可变长度的字符串,最多可以存储 65535 个字符(具体取决于字符集和数据库配置)。只占用实际存储字符串所需的空间。
- TEXT:用于存储大量的文本数据,如文章内容等。在 MySQL 中,有不同的 TEXT 类型,如 TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT,存储容量依次增大。
二进制类型
- BINARY:固定长度的二进制字符串,与 CHAR 类似,只是存储的是二进制数据。
- VARBINARY:可变长度的二进制字符串,与 VARCHAR 类似。
- BLOB:用于存储大量的二进制数据,如图像、音频、视频等。同样在 MySQL 中有 TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB 等不同类型。
其他类型
- DECIMAL:用于存储精确的十进制数,通常用于存储货币或其他需要精确计算的数值。第一个参数表示总位数,第二个参数表示小数位数。
|
|
- BIT:用于存储位字段,通常用于存储布尔值或标志位。
|
|
- BOOLEAN(BOOL):用于存储布尔值,通常只有两个可能的值:TRUE 或 FALSE。在 MySQL 中,实际上是用 TINYINT (1) 来实现的,0 表示 FALSE,1 表示 TRUE。
|
|
- ENUM:枚举类型,用于存储一组预定义的值。
|
|
- SET:集合类型,用于存储一组预定义的值。
|
|
- JSON:用于存储 JSON 格式的数据。
|
|
GEOMETRY:用于存储地理空间数据,如点、线、多边形等。 注意事项
选择合适的数据类型:根据实际需求选择合适的数据类型,以节省存储空间和提高性能。
避免使用 NULL 值:如果某个列可以为空,应该使用 NULL 值来表示。
考虑数据的一致性:在使用日期和时间类型时,确保数据的一致性,避免存储不一致的日期和时间。
2. 索引
索引是一种数据结构,用于加速数据库查询操作。它可以提高查询性能,特别是在大型数据库中。索引可以在表的一列或多列上创建,用于加速对这些列的查询。
索引的类型包括:
- 主键索引(Primary Key Index):在表的主键列上创建的索引,用于唯一标识表中的每一行。
- 唯一索引(Unique Index):在表的一列或多列上创建的索引,用于确保这些列的值是唯一的。
- 普通索引(Normal Index):在表的一列或多列上创建的索引,用于加速查询操作。
- 全文索引(Full-Text Index):用于在文本字段上进行全文搜索的索引。