MySQL支持多种数据类型,这些数据类型可以分为三大类:数值、日期和时间以及字符串(字符)类型。这些数据类型可以帮助我们根据需要选择合适的类型来存储数据。选择合适的数据类型对于确保数据的完整性和性能至关重要。
以下是MySQL中的29种主要数据类型:
目录
一、BIGINT
二、BINARY
三、BIT
四、BLOB
五、BOOLEAN
六、CHAR
七、DATE
八、DATETIME
一、BIGINT
BIGINT
是 MySQL 中一种常用的数据类型,它用于存储大整数值。
语法:
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
使用:
- 当存储的信息超过int上限的整数时使用。
- 存储非常大的数字,如金融领域,存储倾向金额和统计总数量等信息。
- 注:需要注意其“存储范围”和“显示宽度”。
示例:
CREATE TABLE test(file_name VARCHAR(255) NOT NULL,size BIGINT UNSIGNED NOT NULL,amount BIGINT NOT NULL,PRIMARY KEY (file_name)
);INSERT INTO test (file_name, size) VALUES('file1.txt', 102401238401, 99990000000),('file2.txt', 3847283123, 99990005555),('file3.txt', 98213233844, 99990006666);
二、BINARY
BINARY
是 MySQL 中一种常用的数据类型,它用于存储二进制数据。
语法:
BINARY(M)
使用:
- 存储二进制数据。如加密密钥、图像、视频文件和音频文件等。
- 注:需要注意其存储的字节数和二进制数据的来源。
示例:
CREATE TABLE users (user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,username VARCHAR(255) NOT NULL,password BINARY(64) NOT NULL,image BINARY(1024) NOT NULL,PRIMARY KEY (user_id)
);INSERT INTO users (username, password, image) VALUES('zhangsan', UNHEX(SHA2('abcdefg', 256)), LOAD_FILE('/home/test/image1.jpg')),('lisi', UNHEX(SHA2('secret', 256)), LOAD_FILE('/home/test/image2.jpg'));
三、BIT
BIT
是 MySQL 中一种常用的数据类型,它用于存储位数据。
语法:
BIT(M)
使用:
- 存储布尔值、标志位 和 位掩码等。如表示用户状态、表示删除状态等。
- 注:需要注意其存储的位数和位数据的含义。
示例:
CREATE TABLE users (user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,username VARCHAR(255) NOT NULL,status BIT(1) NOT NULL,PRIMARY KEY (user_id)
);INSERT INTO users (username, status) VALUES('zhangsan', b'1'),('lisi', b'0');
四、BLOB
BLOB
是 MySQL 中用于存储大量二进制数据的数据类型。它可以存储最大值为 65,535 字节的数据,也可以存储超过 4GB 的数据。
语法:
column_name BLOB(size)
使用:
- 存储任何(大量)二进制数据,如图像、音频、视频、文档等。它们通常是较大的文件,因此需要特殊的数据类型来存储它们。
- 注:硬盘存储空间和文件大小上限。
示例:
CREATE TABLE user (id INT PRIMARY KEY,avatar BLOB
);
INSERT INTO user (id, avatar) VALUES
(1, 0xA***********************************************);可以通过HEX()函数将二进制数转换为二六进制字符串进行存储。
五、BOOLEAN
MySQL BOOLEAN
数据类型用于存储布尔值,即 TRUE
或 FALSE
。在 MySQL 中,BOOLEAN
实际上是 TINYINT(1)
的别名。
语法:
column_name BOOLEAN
使用:
- 存储逻辑值,例如是否被删除、是否完成等。
- 注:需要注意 MySQL 将
TRUE
转换为 1,将FALSE
转换为 0。
示例:
CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),is_employed BOOLEAN
);
INSERT INTO employees VALUES
(1, 'zhangsan', TRUE),
(2, 'lisi', FALSE);
六、CHAR
CHAR
是 MySQL 中的一种数据类型,用于存储定长的字符串数据。
语法:
CHAR(M)
使用:
- 存储长度固定的字符串,例如邮政编码、电话号码等。
- 注:查询速度快,但可能会浪费存储空间。
- 与
VARCHAR
数据类型相比,CHAR
存储的是定长字符串,因此在查询时速度更快。但是,如果存储的字符串长度不够时,会自动在字符串后面补空格,因此会浪费一定的存储空间。
- 与
示例:
CREATE TABLE employee (id INT PRIMARY KEY,name CHAR(20),phone CHAR(11)
);INSERT INTO employee (id, name, phone)
VALUES (1, 'zhangsan', '1995252****'),(1, 'lisi', '1995252****);
七、DATE
在 MySQL 中, DATE
是一种日期数据类型,用于存储年、月、日值。它的值范围从 ‘1000-01-01’ 到 ‘9999-12-31’。使用 DATE
数据类型可以轻松地进行日期计算和格式化。
语法:
DATE
使用:
- 用于存储日期值,比如出生日期、交易日期等。
示例:
CREATE TABLE user(id INT PRIMARY KEY,name VARCHAR(50),birthdate DATE
);INSERT INTO user(id, name, birthdate)
VALUES(1, 'zhangsan', '1900-12-10'),(2, 'lisi', '2012-12-10');
八、DATETIME
MySQL 中的 DATETIME
数据类型是一种日期和时间格式,它可以存储从 1000-01-01 00:00:00 到 9999-12-31 23:59:59 之间的日期和时间。它的存储大小是 8 个字节。
语法:
DATETIME[(<fsp>)]
使用:
- 存储具有日期和时间信息的数据。它可以用于存储时间戳、事件时间等信息。
示例:
CREATE TABLE user(id INT PRIMARY KEY AUTO_INCREMENT,name INT,create_time DATETIME
);INSERT INTO orders (name, create_time )
VALUES ('zhangsan', '2022-01-01 10:30:00');
不卷了,待20231211 更新