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

MySQL 入門筆記 Day 6:核心數據類型全解析與選型原則

     編輯:MySQL 綜合教學

MySQL 入門筆記 Day 6:核心數據類型全解析與選型原則

一、數值類型

1. 整數類型(5 種)

類型存儲有符號範圍無符號範圍
TINYINT1 字節-128~1270~255
SMALLINT2 字節-32768~327670~65535
MEDIUMINT3 字節-8388608~83886070~16777215
INT4 字節-2147483648~21474836470~4294967295
BIGINT8 字節-2^63~2^63-10~2^64-1

整數類型表

顯示寬度 INT(6) 僅影響查詢結果填充,**不限制存儲範圍**。超範圍值會被截斷,非法值自動轉 0。
實例:年齡用 TINYINT UNSIGNED。

2. 浮點與定點類型

類型精度存儲範圍
FLOAT單精度4 字節±1.17E-38 ~ ±3.40E+38
DOUBLE雙精度8 字節±2.22E-308 ~ ±1.79E+308
DECIMAL(M,D)精確定點M+2 字節取決於 M,D

浮點類型表

FLOAT(7,3) 顯示 7 位含 3 位小數,超範圍截斷,超精度四捨五入。
實測陷阱:FLOAT(5,3) 插入 123.45678 → 實存 99.999(溢出截斷)。
金額類**必須用 DECIMAL**,如薪資 FLOAT(8,2) UNSIGNED 或 DECIMAL(10,2)。

二、日期時間類型(5 種)

類型存儲範圍格式
DATE3 字節1000-01-01 ~ 9999-12-31YYYY-MM-DD
TIME3 字節-838:59:59 ~ 838:59:59HH:MM:SS
YEAR1 字節1901 ~ 2155YYYY
DATETIME8 字節1000-01-01 00:00:00 ~ 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS
TIMESTAMP4 字節1970-01-01 00:00:01 ~ 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS

日期時間類型表

TIMESTAMP 未賦值或賦 NULL 自動填充當前時間,**注意 2038 年上限**。生日用 DATE。

三、字符串類型(6 種)

類型最大長度特點
CHAR(n)255 字符定長,不足右補空格,存儲時尾部空格被截斷
VARCHAR(n)65535 字符變長,實際長度+1~2 字節,不截斷尾部空格
TINYTEXT255 字符不指定長度
TEXT65535 字符通用長文本
MEDIUMTEXT16777215 字符中等長文本
LONGTEXT4294967295 字符超長文本

字符串類型表

關鍵差異:CHAR 固定空間適合定長高頻讀寫(如 MD5、UUID);VARCHAR 節省空間適合變長;超長度自動截斷;utf8 下 1 中文字符 = 3 字節。

四、複合類型

  • ENUM('v1','v2',...):單選,最多 65535 個元素,內部用 1~2 字節整數存儲
  • SET('v1','v2',...):多選,最多 64 元素,內部用位圖存儲

性別用 ENUM('M','F'),標籤用 SET。

五、實戰建表驗證

CREATE TABLE tb1 (
  username VARCHAR(20),
  age TINYINT UNSIGNED,
  salary FLOAT(8,2) UNSIGNED,
  birthday DATE
);
INSERT INTO tb1 VALUES('Tom', 22, 5555.55, '1994-10-01');

表結構 插入結果

六、高性能選型三步法

  1. 確定大類:數字/字符/時間
  2. 選最小滿足業務的具體類型(更小通常更快)
  3. 必要時設默認值

原則:更小通常更好、定長用 CHAR、變長用 VARCHAR、金額用 DECIMAL、時間按範圍選 DATE/TIMESTAMP/DATETIME。

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