MySQL数据类型详解
发布人:shili8
发布时间:2025-01-16 10:13
阅读次数:0
**MySQL 数据类型详解**
MySQL 是一种流行的关系数据库管理系统,支持多种数据类型以存储不同类型的数据。理解这些数据类型对于设计和优化 MySQL 数据库至关重要。在本文中,我们将详细介绍 MySQL 的各种数据类型。
### 整型整型(Integer)是用于存储整数值的数据类型。MySQL 中有两种整型:TINYINT、SMALLINT、MEDIUMINT 和 BIGINT。
* **TINYINT**:占用1 个字节,范围从 -128 到127。
* **SMALLINT**:占用2 个字节,范围从 -32768 到32767。
* **MEDIUMINT**:占用3 个字节,范围从 -8388608 到8388607。
* **BIGINT**:占用8 个字节,范围从 -9223372036854775808 到9223372036854775807。
sqlCREATE TABLE test ( id TINYINT, age SMALLINT, salary MEDIUMINT, balance BIGINT); INSERT INTO test (id, age, salary, balance) VALUES (1,20,50000,1000000);
### 浮点型浮点型(Floating-point)用于存储小数值。MySQL 中有两种浮点型:FLOAT 和 DOUBLE。
* **FLOAT**:占用4 个字节,精度约为7 位数字。
* **DOUBLE**:占用8 个字节,精度约为15 位数字。
sqlCREATE TABLE test ( price FLOAT, balance DOUBLE); INSERT INTO test (price, balance) VALUES (12.99,1000.00);
### 字符型字符型(Character)用于存储字符串值。MySQL 中有两种字符型:CHAR 和 VARCHAR。
* **CHAR**:固定长度的字符串,占用1 到255 个字节。
* **VARCHAR**:可变长度的字符串,最大长度为65535 个字节。
sqlCREATE TABLE test ( name CHAR(10), description VARCHAR(100) ); INSERT INTO test (name, description) VALUES ('John Doe', 'This is a sample description.');
### 日期型日期型(Date)用于存储日期值。MySQL 中有两种日期型:DATE 和 DATETIME。
* **DATE**:占用3 个字节,格式为 YYYY-MM-DD。
* **DATETIME**:占用8 个字节,格式为 YYYY-MM-DD HH:MM:SS。
sqlCREATE TABLE test ( birthdate DATE, creation_time DATETIME); INSERT INTO test (birthdate, creation_time) VALUES ('1990-01-01', '2022-07-2514:30:00');
### 时间型时间型(Time)用于存储时间值。MySQL 中有两种时间型:TIME 和 TIMESTAMP。
* **TIME**:占用3 个字节,格式为 HH:MM:SS。
* **TIMESTAMP**:占用4 个字节,格式为 YYYY-MM-DD HH:MM:SS。
sqlCREATE TABLE test ( start_time TIME, last_updated TIMESTAMP); INSERT INTO test (start_time, last_updated) VALUES ('14:30:00', '2022-07-2514:30:00');
### 位型位型(Bit)用于存储布尔值或二进制数据。MySQL 中有两种位型:BIT和BOOL。
* **BIT**:占用1 到8 个字节,表示0 到64 个位。
* **BOOL**:占用1 个字节,表示 true 或 false。
sqlCREATE TABLE test ( is_active BIT, is_admin BOOL); INSERT INTO test (is_active, is_admin) VALUES (TRUE, TRUE);
### JSON型JSON型(JSON)用于存储 JSON 数据。MySQL 中有两种 JSON 型:JSON 和 JSONB。
* **JSON**:占用1 到65535 个字节,表示 JSON 对象或数组。
* **JSONB**:占用1 到65535 个字节,表示 JSON 对象或数组,并支持索引和查询。
sqlCREATE TABLE test ( data JSON, metadata JSONB); INSERT INTO test (data, metadata) VALUES ('{"name": "John", "age":30}', '{"id":1, "created_at": "2022-07-25"}');
### 综合示例
sqlCREATE TABLE users ( id INT PRIMARY KEY, name CHAR(10), email VARCHAR(100), birthdate DATE, creation_time DATETIME, start_time TIME, is_active BIT, is_admin BOOL, data JSON, metadata JSONB); INSERT INTO users (id, name, email, birthdate, creation_time, start_time, is_active, is_admin, data, metadata) VALUES ( 1, 'John Doe', 'john@example.com', '1990-01-01', '2022-07-2514:30:00', '14:30:00', TRUE, TRUE, '{"name": "John", "age":30}', '{"id":1, "created_at": "2022-07-25"}' );
本文介绍了 MySQL 中的各种数据类型,包括整型、浮点型、字符型、日期型、时间型、位型和 JSON 型。这些数据类型可以帮助您设计和优化您的 MySQL 数据库。