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

MySQL 數據類型選型指南:字符串、整數、小數精度避坑

     編輯:MySQL 綜合教學

MySQL 數據類型選型指南:字符串、整數、小數精度避坑

一、字符串類型

1. CHAR vs VARCHAR

特性CHAR(M)VARCHAR(M)
最大長度255 字符65,535 字符(受行大小 65,535 字節限制)
存儲方式固定長度,不足補空格變長,額外 1-2 字節記錄長度
實際佔用恆為 M 字節實際字符數 + 1/2 字節
索引/排序效率高(定長)略低

選型建議:長度固定(如 MD5、手機號、身份證)用 CHAR;長度變動大用 VARCHAR。UTF8 下 VARCHAR(65535) 會報錯,最大約 21,845 字符(65535/3)。

2. ENUM 枚舉

CREATE TABLE country (place ENUM('Japan','China','Russia','Brazil','America'));
INSERT INTO country VALUES ('China');  -- 實際存儲索引 2(1 字節)
  • 極省空間,適合狀態碼、分類等固定集合;
  • 嚴格模式下非法值報錯,非嚴格模式存空串;
  • 避免用 '1','2','3' 等數值字符串作枚舉值,易引發隱式轉換 Bug。

二、整數類型

類型字節有符號範圍無符號範圍
TINYINT1-128 ~ 1270 ~ 255
SMALLINT2-32,768 ~ 32,7670 ~ 65,535
MEDIUMINT3-8,388,608 ~ 8,388,6070 ~ 16,777,215
INT4-2,147,483,648 ~ 2,147,483,6470 ~ 4,294,967,295
BIGINT8-9.22e18 ~ 9.22e180 ~ 1.84e19

語法:INT [UNSIGNED] [ZEROFILL]。UNSIGNED 將正數範圍擴大一倍;ZEROFILL 自動補 0。

三、小數類型

  • FLOAT(M,D):4 字節,單精度,約 7 位有效數字;
  • DOUBLE(M,D):8 字節,雙精度,約 15 位有效數字;
  • DECIMAL(M,D):定點數,精確存儲,金額、價格、庫存必選。

M = 總位數,D = 小數位。超出 D 四捨五入,整數位超出 M-D 報錯。嚴禁用 ==/!= 直接比較浮點數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved