????????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?更新