首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 資料類型深度解析:TEXT、DATE、SET、ENUM 與通配符實戰

     編輯:MySQL 資料庫相關知識

TEXT vs VARCHAR vs BLOB

關鍵差異:VARCHAR 可建完整索引,TEXT/BLOB 只能建前綴索引;VARCHAR 存在行內(< 768 bytes),TEXT/BLOB 多存在溢出頁。

DATE / DATETIME / TIMESTAMP

類型最大長度儲存開銷適用場景
TINYTEXT255 B1+L極短文本
TEXT64 KB2+L一般文本
MEDIUMTEXT16 MB3+L長文本
LONGTEXT4 GB4+L超大文本
VARCHAR(N)65,535 B1-2+L變長、可索引全長
BLOB 系列同 TEXT同 TEXT二進位資料
-- 計算年齡
SELECT TIMESTAMPDIFF(YEAR, birth, CURDATE()) AS age FROM users;

-- 時區轉換
SELECT CONVERT_TZ('2024-01-01 12:00:00', '+00:00', '+08:00');

SET vs ENUM

類型範圍儲存時區感知自動更新
DATE1000-01-01 ~ 9999-12-313 bytes否否
DATETIME1000 ~ 99998 bytes (5.6+ 5+bytes)否否
TIMESTAMP1970 ~ 20384 bytes是可設 DEFAULT/ON UPDATE
-- SET 範例
CREATE TABLE tags (id INT, tag_set SET('php','mysql','linux','nginx'));
INSERT INTO tags VALUES (1, 'php,mysql');
SELECT * FROM tags WHERE FIND_IN_SET('php', tag_set);

SQL 通配符完整對照

特性ENUMSET
值來源預定義列表單選預定義列表多選
最大成員65,53564
儲存1-2 bytes1-8 bytes
索引支援支援
查詢= 'val'FIND_IN_SET('val', col)

注意:% 在 LIKE 中匹配任意字串,在 SELECT * 中代表所有欄位,語境完全不同。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
符號用途配合關鍵字範例
%匹配任意長度字串(含空)LIKEWHERE name LIKE '張%'
_匹配單一字元LIKEWHERE code LIKE 'A__'
*選取所有欄位SELECTSELECT * FROM t
%JOIN 時匹配所有行JOIN ... ON罕用,易混淆