欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > MySQL 字段类型介绍

MySQL 字段类型介绍

2024/10/28 13:45:24 来源:https://blog.csdn.net/qq_46637011/article/details/143269138  浏览:    关键词:MySQL 字段类型介绍

在 MySQL 中,设计数据库表时,需要根据数据的实际需求选择合适的数据类型,以确保数据存储的准确性和节省存储空间。MySQL 提供了丰富的字段类型,主要分为以下几类:数值类型字符串类型日期时间类型、和JSON类型等。

1. 数值类型

数值类型用于存储整数和小数。可以根据业务需求选择整数型、浮点型或定点型数值类型。

1.1 整数类型

示例

CREATE TABLE example (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,  -- 4字节无符号整数,适合存储大量记录的主键age TINYINT UNSIGNED,                         -- 1字节无符号整数,适合存储年龄score SMALLINT                               -- 2字节有符号整数,适合存储较小的分数
);

1.2 浮点类型

M 表示数字的总位数,D 表示小数位数。

示例

CREATE TABLE products (id INT PRIMARY KEY,price FLOAT(7,2),        -- 7位数,其中2位小数discount DOUBLE(8,3)     -- 8位数,其中3位小数
);

1.3 定点类型

示例

CREATE TABLE transactions (id INT PRIMARY KEY,amount DECIMAL(10,2)     -- 定点数,最多10位,其中2位小数,适合存储金额
);

2. 字符串类型

字符串类型用于存储文本数据,如姓名、地址等。MySQL 提供了不同的字符串类型以满足不同需求。

2.1 固定长度字符串类型

示例

CREATE TABLE employees (id INT PRIMARY KEY,gender CHAR(1),         -- 定长字符,适合存储固定长度字符串code CHAR(5)            -- 定长字符,适合存储5位代码
);

注意事项:

在 MySQL 中,CHAR 类型的存储长度是基于字符的编码方式的,默认编码方式一般为 UTF-8,而 UTF-8 编码下,一个中文汉字会占用 3个字节(例如在 UTF-8 下,一个英文字母或数字为 1 字节,一个中文汉字为 3 字节)。因此,在 CHAR(1)CHAR(5) 的字段定义中:

  1. gender CHAR(1)

    • CHAR(1) 表示该字段的长度为 1 个字符,适合存储单个字母(如 MF 表示性别)。
    • 由于中文字符在 UTF-8 编码下占 3 个字节,因此 gender CHAR(1) 不能存储一个汉字。如果想存储单个汉字,应定义为 CHAR(3) 或以上长度。
  2. code CHAR(5)

    • CHAR(5) 表示该字段的长度为 5 个字符,但在 UTF-8 编码下,最多可以存储 5 个英文字符或数字
    • 对于中文字符,由于每个汉字占 3 个字节,因此 code CHAR(5) 只能存储 1 个汉字
    • 如果希望存储 5 个汉字,CHAR(15) 才是合适的选择,因为 5 个汉字需要 5 * 3 = 15 个字节的空间。

2.2 可变长度字符串类型

示例

CREATE TABLE articles (id INT PRIMARY KEY,title VARCHAR(255),    -- 变长字符串,适合存储标题content TEXT           -- 长文本,适合存储文章内容
);
  • 如果 title 中存储的是英文字符,则最多能存储 255 个字母(255 字节)。
  • 如果 title 中存储的是中文字符,则最多能存储约 85 个汉字(255 字节)。

3. 日期时间类型

日期时间类型用于存储时间、日期信息,如出生日期、注册时间等。

示例

CREATE TABLE events (id INT PRIMARY KEY,event_date DATE,                -- 日期,适合存储事件日期event_time TIME,                -- 时间,适合存储事件的具体时间created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 记录创建时间updated_at DATETIME             -- 记录最后更新的日期和时间
);

4. JSON 类型

MySQL 支持 JSON 类型,可以存储 JSON 格式的数据,适合用于需要动态扩展的数据结构。

示例

CREATE TABLE logs (id INT PRIMARY KEY,details JSON            -- JSON格式,用于存储结构化数据
);

JSON 使用示例

INSERT INTO logs (details) VALUES ('{"action": "login", "success": true}');
SELECT details->"$.action" FROM logs; -- 查询 JSON 中的 "action" 属性

5. 枚举和集合类型

5.1 枚举类型 (ENUM)

ENUM 类型用于定义一组可选值,适合存储状态或分类数据。

CREATE TABLE orders (id INT PRIMARY KEY,status ENUM('pending', 'shipped', 'delivered')  -- 枚举类型,适合存储有限状态
);

5.2 集合类型 (SET)

SET 类型用于定义一组可选值,可以选择多个值的组合,适合用于标签等多选数据。

CREATE TABLE articles (id INT PRIMARY KEY,tags SET('science', 'tech', 'health')  -- 集合类型,适合存储多个标签
);

6. 总结

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com