数值类型
- 整数类型
- TINYINT:通常用于存储小范围的整数,范围是-128到127或0到255(无符号)。例如,存储年龄可以使用
TINYINT
类型。示例:CREATE TABLE users (age TINYINT);
- SMALLINT:范围比
TINYINT
大,有符号的范围是-32768到32767,无符号是0到65535。可用于存储一些较小范围但又比TINYINT
稍大的数据,如员工编号。示例:CREATE TABLE employees (emp_id SMALLINT);
- INT:最常用的整数类型,有符号范围是-2147483648到2147483647,无符号是0到4294967295。可用于存储一般的整数数据,如订单编号。示例:
CREATE TABLE orders (order_id INT);
- BIGINT:用于存储大整数,有符号范围是-9223372036854775808到9223372036854775807,无符号是0到18446744073709551615。适用于存储非常大的数字,如大型网站的用户ID等。示例:
CREATE TABLE users (user_id BIGINT);
- TINYINT:通常用于存储小范围的整数,范围是-128到127或0到255(无符号)。例如,存储年龄可以使用
- 浮点数类型
- FLOAT:单精度浮点数,用于存储小数,精度有限。例如,存储商品价格,允许一定的精度误差。示例:
CREATE TABLE products (price FLOAT);
- DOUBLE:双精度浮点数,精度比
FLOAT
更高。用于需要更高精度的小数存储,如科学计算中的数据。示例:CREATE TABLE scientific_data (value DOUBLE);
- FLOAT:单精度浮点数,用于存储小数,精度有限。例如,存储商品价格,允许一定的精度误差。示例:
- 定点数类型:DECIMAL,用于存储精确的小数,常用于财务数据等对精度要求高的场景。例如,存储金额。示例:
CREATE TABLE accounts (balance DECIMAL(10,2));
表示总长度为10位,小数部分占2位。
日期时间类型
- DATE:用于存储日期,格式为
YYYY-MM-DD
。例如,存储用户的出生日期。示例:CREATE TABLE users (birth_date DATE);
插入数据:INSERT INTO users (birth_date) VALUES ('1990-01-01');
- TIME:用于存储时间,格式为
HH:MM:SS
。可用于存储活动的开始时间等。示例:CREATE TABLE events (start_time TIME);
插入数据:INSERT INTO events (start_time) VALUES ('10:30:00');
- DATETIME:存储日期和时间,格式为
YYYY-MM-DD HH:MM:SS
。适用于需要同时记录日期和时间的场景,如订单创建时间。示例:CREATE TABLE orders (create_time DATETIME);
插入数据:INSERT INTO orders (create_time) VALUES ('2023-01-01 12:00:00');
- TIMESTAMP:也用于存储日期和时间,它的取值范围比
DATETIME
小,但会自动更新为当前时间。常用来记录数据的最后更新时间等。示例:CREATE TABLE logs (update_time TIMESTAMP);
字符串类型
- CHAR:固定长度字符串,最大长度为255个字符。适用于存储长度固定的数据,如身份证号码、邮政编码等。示例:
CREATE TABLE addresses (postcode CHAR(6));
- VARCHAR:可变长度字符串,最大长度一般为65535个字符(受限于数据库表的最大行大小)。用于存储长度不固定的字符串,如姓名、地址等。示例:
CREATE TABLE users (name VARCHAR(50));
- BINARY:固定长度二进制字符串,用于存储二进制数据,如加密后的密码、图片的二进制数据等。示例:
CREATE TABLE encrypted_data (password BINARY(64));
- VARBINARY:可变长度二进制字符串,可存储可变长度的二进制数据。示例:
CREATE TABLE images (image_data VARBINARY(MAX));
枚举类型(ENUM)
用于存储有限个特定值中的一个,如性别字段,只能是男或女。示例:CREATE TABLE users (gender ENUM('男','女'));
插入数据:INSERT INTO users (gender) VALUES ('男');
集合类型(SET)
可以存储一个或多个指定值的集合。例如,存储用户的兴趣爱好,用户可以有多个爱好。示例:CREATE TABLE users (hobbies SET('阅读','运动','音乐','绘画'));
插入数据:INSERT INTO users (hobbies) VALUES ('阅读,运动');
以下是 MySQL 中各种数据类型的代码示例:
-- 创建一个名为 data_types 的数据库
CREATE DATABASE data_types;-- 使用 data_types 数据库
USE data_types;-- 创建一个包含各种数据类型的表
CREATE TABLE sample_table (-- 整数类型示例tinyint_column TINYINT,smallint_column SMALLINT,int_column INT,bigint_column BIGINT,-- 浮点数类型示例float_column FLOAT,double_column DOUBLE,decimal_column DECIMAL(10, 2),-- 日期时间类型示例date_column DATE,time_column TIME,datetime_column DATETIME,timestamp_column TIMESTAMP,-- 字符串类型示例char_column CHAR(20),varchar_column VARCHAR(50),binary_column BINARY(10),varbinary_column VARBINARY(50),-- 枚举类型示例enum_column ENUM('male', 'female', 'other'),-- 集合类型示例set_column SET('reading', 'sports', 'music', 'painting')
);-- 插入数据到 sample_table
INSERT INTO sample_table (tinyint_column,smallint_column,int_column,bigint_column,float_column,double_column,decimal_column,date_column,time_column,datetime_column,timestamp_column,char_column,varchar_column,binary_column,varbinary_column,enum_column,set_column
) VALUES (127, -- TINYINT 的最大值(有符号)32767, -- SMALLINT 的最大值(有符号)2147483647, -- INT 的最大值(有符号)9223372036854775807, -- BIGINT 的最大值(有符号)123.45, -- FLOAT 示例1234.5678, -- DOUBLE 示例1234.56, -- DECIMAL 示例'2025-01-01', -- DATE 示例'12:34:56', -- TIME 示例'2025-01-01 12:34:56', -- DATETIME 示例CURRENT_TIMESTAMP, -- TIMESTAMP 示例,会自动插入当前时间'fixed string', -- CHAR 示例'variable string', -- VARCHAR 示例0x1234567890, -- BINARY 示例,十六进制表示0x1234567890, -- VARBINARY 示例,十六进制表示'male', -- ENUM 示例'reading,sports' -- SET 示例,存储多个集合元素
);-- 查询 sample_table 中的数据
SELECT * FROM sample_table;-- 更新数据示例
UPDATE sample_table
SET float_column = 98.76,enum_column = 'female'
WHERE int_column = 2147483647;-- 删除数据示例
DELETE FROM sample_table WHERE bigint_column = 9223372036854775807;-- 修改表结构示例,添加新的字段
ALTER TABLE sample_table
ADD new_column INT;-- 删除表结构示例,删除新添加的字段
ALTER TABLE sample_table
DROP COLUMN new_column;-- 删除表
DROP TABLE sample_table;-- 删除数据库
DROP DATABASE data_types;
代码解释:
- 创建数据库和表:
CREATE DATABASE data_types;
:创建一个名为data_types
的数据库。USE data_types;
:指定后续操作使用data_types
数据库。CREATE TABLE sample_table (...)
:创建一个名为sample_table
的表,其中包含了各种数据类型的字段。
- 插入数据:
INSERT INTO sample_table (...) VALUES (...)
:向sample_table
插入一条记录,为每个字段提供相应的数据。
- 查询数据:
SELECT * FROM sample_table;
:查询sample_table
中的所有数据。
- 更新数据:
UPDATE sample_table SET... WHERE...
:更新sample_table
中满足条件的数据。
- 删除数据:
DELETE FROM sample_table WHERE...
:删除sample_table
中满足条件的数据。
- 修改表结构:
ALTER TABLE sample_table ADD new_column INT;
:为sample_table
表添加一个名为new_column
的新字段。ALTER TABLE sample_table DROP COLUMN new_column;
:删除sample_table
表中的new_column
字段。
- 删除表和数据库:
DROP TABLE sample_table;
:删除sample_table
表。DROP DATABASE data_types;
:删除data_types
数据库。
这个示例展示了 MySQL 中各种数据类型的使用,包括如何创建表、插入数据、更新数据、删除数据、修改表结构和删除表和数据库。你可以根据自己的需求修改和扩展这个示例。
请注意,以上代码基于 MySQL 8.0 运行,不同的 MySQL 版本在某些语法和数据类型的使用上可能会略有不同。在实际使用中 使用的 MySQL 版本进行相应的调整。 同时,在使用
INSERT
语句插入二进制数据时,使用了十六进制表示,根据实际情况使用相应的二进制数据。在使用ENUM
和SET
类型时,插入的值必须是定义的枚举或集合元素之一,否则会报错。 另外,TIMESTAMP
会自动更新为当前时间,在不同的情况下可能会根据
MySQL 的配置有所不同。