首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 基礎數據類型完整指南與示例

     編輯:MySQL 綜合教學

MySQL 基礎數據類型完整指南與示例

選擇合適的數據類型是資料庫設計的基石,直接影響存儲效率、查詢性能與數據完整性。本文系統整理 MySQL 常用數據類型的特點、適用場景與實戰示例。

一、 數值類型

類型大小範圍(有符號)適用場景
TINYINT1 字節-128 ~ 127布爾標誌、極小整數
SMALLINT2 字節-32,768 ~ 32,767較小範圍整數
MEDIUMINT3 字節-8,388,608 ~ 8,388,607中等範圍整數
INT / INTEGER4 字節-2,147,483,648 ~ 2,147,483,647通用整數、主鍵 ID
BIGINT8 字節-9.22e18 ~ 9.22e18極大整數、分佈式 ID

示例:創建整數類型測試表

CREATE TABLE data_int (
    fti TINYINT,
    fsi SMALLINT,
    fmi MEDIUMINT,
    fi INT,
    fbi BIGINT
);

INT(M) 中的 M 誤區

INT(7) 中的 7 僅影響顯示寬度(配合 ZEROFILL 時零填充),不限制存儲範圍。存儲範圍始終由類型本身決定。

二、 浮點與定點類型

類型大小精度適用場景
FLOAT(M,D)4 字節單精度(約 7 位有效數字)科學計算、近似值
DOUBLE(M,D)8 字節雙精度(約 15 位有效數字)高精度近似值
DECIMAL(M,D)M+2 字節精確定點數財務金額、精確計算

示例:價格欄位使用 FLOAT(5,2)

CREATE TABLE data_price (price FLOAT(5,2));
INSERT INTO data_price VALUES (13.1), (14.567);
SELECT * FROM data_price;
-- 結果:13.10, 14.57(四捨五入保留兩位小數)

注意:財務系統務必使用 DECIMAL 避免浮點誤差。

三、 字符串類型

類型最大長度存儲特點適用場景
CHAR(M)255 字符固定長度,不足右補空格定長代碼、MD5、UUID
VARCHAR(M)65,535 字節變長,實際長度+1/2 字節通用變長字符串
TEXT64 KB大文本,存儲在表外文章內容、描述
LONGTEXT4 GB超大文本完整文檔、日誌

CHAR 與 VARCHAR 實戰差異

CREATE TABLE data_char (sname CHAR(10));
INSERT INTO data_char VALUES ('wers'), ('ertdsasdfggh');
SELECT *, LENGTH(sname) FROM data_char;
-- 'wers' 存儲為 'wers      '(長度 10)
-- 'ertdsasdfggh' 截斷為 'ertdsasdfg'(長度 10)

四、 日期時間類型

類型大小範圍特點
DATE3 字節1000-01-01 ~ 9999-12-31僅日期
TIME3 字節-838:59:59 ~ 838:59:59僅時間
DATETIME8 字節1000-01-01 00:00:00 ~ 9999-12-31 23:59:59日期時間,無時區
TIMESTAMP4 字節1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC自帶時區轉換,受 2038 年問題限制
YEAR1 字節1901 ~ 2155僅年份

示例:DATE 類型的多種輸入格式

CREATE TABLE data_date (birthday DATE);
INSERT INTO data_date VALUES ('2015-03-05'), (20150506);
SELECT * FROM data_date;
-- 均正確存儲為 2015-03-05 和 2015-05-06

五、 枚舉與集合類型

ENUM(單選)

CREATE TABLE data_enum (gender ENUM('M','F'));
INSERT INTO data_enum VALUES ('M'), ('m'), ('f'), ('yy'), (NULL);
SELECT * FROM data_enum;
-- 結果:'M', 'M', 'F', ''(空字符串), NULL
-- 注意:不區分大小寫,非法值存為空字符串(非 NULL)

統計查詢:SELECT COUNT(*) FROM data_enum WHERE gender = 'M';

SET(多選)

CREATE TABLE data_set (hobbies SET('read','music','sport'));
INSERT INTO data_set VALUES ('read,music'), ('sport');
-- 可存儲多個枚舉值的組合

六、 選型建議速查表

  1. 整數:優先用 INT 或 BIGINT 作主鍵;狀態標誌用 TINYINT。
  2. 金額:強制 DECIMAL(10,2) 或 DECIMAL(19,4)。
  3. 字符串:定長用 CHAR,變長用 VARCHAR,大文本用 TEXT 族。
  4. 時間:需時區感知用 TIMESTAMP,歷史/未來日期用 DATETIME。
  5. 枚舉:固定少量選項用 ENUM,需組合用 SET。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved