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

MySQL 資料類型完整指南:數值、字串、日期時間與欄位屬性詳解

     編輯:MySQL 綜合教學

掌握 MySQL 資料類型是資料庫設計、效能優化與避免資料截斷的基石。本文系統整理四大類資料類型、欄位定義語法、屬性修飾符與實戰選型建議。

四大核心資料類型分類

1. 數值類型

支援科學記號(如 1.24E+12,指數前須有正負號)、負號、整數與浮點數。

類型儲存空間範圍 (有號/無號)適用場景
TINYINT1 Byte-128~127 / 0~255布林旗標、極小範圍計數
SMALLINT2 Bytes-32,768~32,767 / 0~65,535小範圍整數
MEDIUMINT3 Bytes-8.3M~8.3M / 0~16.7M中等整數,節省空間
INT4 Bytes-21億~21億 / 0~42億通用整數主鍵
BIGINT8 Bytes極大範圍極大數值、雪花算法 ID
FLOAT4 Bytes單精度浮點數科學計算、近似值
DOUBLE8 Bytes雙精度浮點數高精度科學計算
DECIMAL(M,D)M+2 Bytes精確定點數金額、價格、精確計算必用
BIT~M/8 Bytes位元值位元遮罩、旗標組合
關鍵區別: DECIMAL 為精確定點數,FLOAT/DOUBLE 為近似浮點數。金融、金額計算嚴禁使用浮點數。

2. 字串類型

單雙引號皆可包裹。關鍵區別:數值型參與計算,字串型不參與計算(如電話號碼、門牌號)。

類型最大長度儲存特性適用場景
CHAR(N)255 字符定長,右側填充空格固定長度:MD5、UUID、國籍代碼
VARCHAR(N)65,535 字符變長,需 1-2 字節記錄長度通用變長字串:姓名、標題、描述
TINYTEXT255 字符不支援 DEFAULT短文本
TEXT65,535 字符離頁儲存文章內容、長文本
MEDIUMTEXT16,777,215離頁儲存大型文本
LONGTEXT4,294,967,295離頁儲存超大文本
BLOB 系列對應 TEXT 等級二進制資料圖片、檔案、序列化物件
ENUM65,535 成員內部整數儲存,極高效固定集合:性別、狀態、類別
SET64 成員位元組合儲存多選標籤、權限位元組

3. 日期時間類型

類型儲存空間範圍格式特性
DATE3 Bytes1000-01-01 ~ 9999-12-31YYYY-MM-DD純日期
TIME3 Bytes-838:59:59 ~ 838:59:59HH:MM:SS時間/持續時間
DATETIME8 Bytes (5.6.4+)1000-01-01 00:00:00 ~ 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS日期時間,無時區
TIMESTAMP4 Bytes1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTCYYYY-MM-DD HH:MM:SS自動時區轉換,受 2038 年限制
YEAR1 Byte1901 ~ 2155YYYY僅年份,8.0 棄用 YEAR(2)

4. NULL 值

表示「未知」或「不存在」,非空字串、非零。NULL != ''、NULL != 0、NULL = NULL 為 UNKNOWN。
設計建議: 能用 NOT NULL 就不用 NULL;必要時用預設值替代。

欄位定義完整語法

col_name col_type [col_attributes] [GENERAL_ATTRIBUTES]

欄名規則

  • 最長 64 字符,可含字母、數字、底線、美元符號
  • 可數字開頭,但不可純數字(避免與數值常數混淆)
  • 不可使用保留字(SELECT、DELETE 等),函數名(MIN、MAX)可用

類型專用屬性

  • UNSIGNED:整數/浮點數無號,範圍翻倍
  • ZEROFILL:左側補零(隱含 UNSIGNED)
  • BINARY:CHAR/VARCHAR 二進制比較,區分大小寫
  • CHARACTER SET charset、COLLATE collation:指定字符集與排序規則

通用屬性

  • NULL / NOT NULL:是否允許空值
  • DEFAULT value:預設值(常數,不可為函數或引用其他欄位)
  • AUTO_INCREMENT:整數自增(通常用於主鍵)
  • UNIQUE [KEY]、PRIMARY KEY:約束
  • COMMENT 'string':欄位註釋

實戰選型決策樹

  1. 是否為數值計算? → 是 → 整數用最小足夠的 INT 系,金額用 DECIMAL(10,2),科學計算用 DOUBLE
  2. 固定長度代碼? → CHAR(N) 或 BINARY(N)
  3. 變長文字、可搜尋? → VARCHAR(N)(N 為業務最大長度)
  4. 大文本、不常搜尋? → TEXT 系
  5. 二進制檔案? → BLOB 系(建議存檔案路徑而非內容)
  6. 固定少量枚舉值? → ENUM
  7. 多選組合? → SET 或關聯表
  8. 日期時間? → 一般業務用 DATETIME,需時區轉換用 TIMESTAMP,長期專案避開 2038 問題

常見誤區提醒

  • VARCHAR(255) 濫用:實際只需 20 字符卻設 255,浪費索引空間、緩存、排序記憶體
  • TEXT 用於短字串:無法建立完整索引、無法使用 DEFAULT、離頁儲存增加 I/O
  • FLOAT 存金額:精度誤差導致對帳失衡
  • INT(11) 誤以為限制長度:括號內數字僅為顯示寬度,不影響儲存範圍
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved