这里写目录标题
- 数值类型
- 整数类型
- 浮点数类型
- 定点数类型
- 日期和时间类型
- 字符串类型
- 定长字符串
- 变长字符串
- 文本类型
- 二进制类型
- 枚举和集合类型
- 选择标准
- 示例
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (`user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',`user_name` varchar(30) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户账号',`password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '密码',`sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)',`email` varchar(50) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户邮箱',`phonenumber` varchar(11) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '手机号码',`del_flag` char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',`create_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=105 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户信息表';
MySQL 支持多种数据类型,用于存储不同类型的值。根据数据的性质,数据类型可以分为数值类型、日期和时间类型、字符串类型等。以下是MySQL中常用的数据类型:
数值类型
数值类型用于存储整数、浮点数和定点数。
整数类型
- TINYINT:一个非常小的整数,存储范围为 -128 到 127(有符号)或 0 到 255(无符号)。
- SMALLINT:一个小整数,存储范围为 -32,768 到 32,767(有符号)或 0 到 65,535(无符号)。
- MEDIUMINT:一个中等大小的整数,存储范围为 -8,388,608 到 8,388,607(有符号)或 0 到 16,777,215(无符号)。
- INT(或 INTEGER):一个标准的整数,存储范围为 -2,147,483,648 到 2,147,483,647(有符号)或 0 到 4,294,967,295(无符号)。
- BIGINT:一个大的整数,存储范围为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(有符号)或 0 到 18,446,744,073,709,551,615(无符号)。
浮点数类型
- FLOAT:单精度浮点数。
- DOUBLE(或 REAL):双精度浮点数。
定点数类型
- DECIMAL(或 NUMERIC):用于存储精确的小数值。适用于财务计算。
日期和时间类型
日期和时间类型用于存储日期和时间值。
- DATE:日期值,格式为 ‘YYYY-MM-DD’。
- TIME:时间值,格式为 ‘HH:MM:SS’。
- DATETIME:日期和时间值,格式为 ‘YYYY-MM-DD HH:MM:SS’。
- TIMESTAMP:时间戳,记录从 ‘1970-01-01 00:00:01’ 到 ‘2038-01-19 03:14:07’ 之间的时间。
- YEAR:年份值,格式为 ‘YYYY’。
字符串类型
字符串类型用于存储字符数据。
定长字符串
- CHAR(M):固定长度的字符串,最大长度为 255 个字符。
变长字符串
- VARCHAR(M):可变长度的字符串,最大长度为 65,535 个字符。
文本类型
- TINYTEXT:非常小的文本,最大长度为 255 个字符。
- TEXT:小文本,最大长度为 65,535 个字符。
- MEDIUMTEXT:中等大小的文本,最大长度为 16,777,215 个字符。
- LONGTEXT:大的文本,最大长度为 4,294,967,295 个字符。
二进制类型
- BINARY(M):定长的二进制数据。
- VARBINARY(M):可变长度的二进制数据。
- TINYBLOB:非常小的二进制数据。
- BLOB:小的二进制数据。
- MEDIUMBLOB:中等大小的二进制数据。
- LONGBLOB:大的二进制数据。
枚举和集合类型
- ENUM:枚举类型,存储一个枚举值。
- SET:集合类型,存储一个或多个集合成员。
选择标准
在MySQL中,选择适当的数据类型和长度是非常重要的,因为它直接影响到数据的存储效率、查询性能以及应用程序的正确性。以下是一些选择标准和常见数据类型的长度限制:
-
数据范围: 根据数据的范围选择合适的数据类型。例如,如果数据是年龄,那么可以选择
TINYINT
,因为年龄通常不会超过127(对于有符号的TINYINT)。 -
精度: 如果需要**存储小数点后的数字,应选择
DECIMAL
**或FLOAT
/DOUBLE
,并指定所需的精度和小数位数。 -
字符集: 如果你的数据包含特殊字符或非英文字符,确保选择支持这些字符的数据类型,如
VARCHAR
或TEXT
。 -
空间需求: 考虑数据的实际大小和预期的增长。例如,如果一个字段可能存储大量的文本,那么使用
TEXT
或MEDIUMTEXT
可能更合适。 -
索引: 某些数据类型不支持索引,因此需要考虑是否需要对这些字段进行搜索或排序。
-
兼容性: 确保所选数据类型与你的应用程序或其他系统兼容。
在选择数据类型时,请根据实际需求和上述准则进行权衡。
示例
CREATE TABLE example (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,birth_date DATE,salary DECIMAL(10, 2),is_active BOOLEAN DEFAULT TRUE
);
通过选择合适的数据类型,可以优化存储和查询性能。了解这些数据类型及其特性,能够更好地设计数据库结构,满足不同应用场景的需求。