
- MySQL 基礎
- MySQL - 首頁
- MySQL - 簡介
- MySQL - 特性
- MySQL - 版本
- MySQL - 變數
- MySQL - 安裝
- MySQL - 管理
- MySQL - PHP 語法
- MySQL - Node.js 語法
- MySQL - Java 語法
- MySQL - Python 語法
- MySQL - 連線
- MySQL - Workbench
- MySQL 資料庫
- MySQL - 建立資料庫
- MySQL - 刪除資料庫
- MySQL - 選擇資料庫
- MySQL - 顯示資料庫
- MySQL - 複製資料庫
- MySQL - 資料庫匯出
- MySQL - 資料庫匯入
- MySQL - 資料庫資訊
- MySQL 使用者
- MySQL - 建立使用者
- MySQL - 刪除使用者
- MySQL - 顯示使用者
- MySQL - 修改密碼
- MySQL - 授權
- MySQL - 顯示許可權
- MySQL - 收回許可權
- MySQL - 鎖定使用者賬戶
- MySQL - 解鎖使用者賬戶
- MySQL 表
- MySQL - 建立表
- MySQL - 顯示錶
- MySQL - 修改表
- MySQL - 重命名錶
- MySQL - 克隆表
- MySQL - 清空表
- MySQL - 臨時表
- MySQL - 修復表
- MySQL - 描述表
- MySQL - 新增/刪除列
- MySQL - 顯示列
- MySQL - 重新命名列
- MySQL - 表鎖
- MySQL - 刪除表
- MySQL - 派生表
- MySQL 查詢
- MySQL - 查詢
- MySQL - 約束
- MySQL - INSERT 查詢
- MySQL - SELECT 查詢
- MySQL - UPDATE 查詢
- MySQL - DELETE 查詢
- MySQL - REPLACE 查詢
- MySQL - INSERT IGNORE
- MySQL - ON DUPLICATE KEY UPDATE
- MySQL - INSERT INTO SELECT
- MySQL 運算子和子句
- MySQL - WHERE 子句
- MySQL - LIMIT 子句
- MySQL - DISTINCT 子句
- MySQL - ORDER BY 子句
- MySQL - GROUP BY 子句
- MySQL - HAVING 子句
- MySQL - AND 運算子
- MySQL - OR 運算子
- MySQL - LIKE 運算子
- MySQL - IN 運算子
- MySQL - ANY 運算子
- MySQL - EXISTS 運算子
- MySQL - NOT 運算子
- MySQL - NOT EQUAL 運算子
- MySQL - IS NULL 運算子
- MySQL - IS NOT NULL 運算子
- MySQL - BETWEEN 運算子
- MySQL - UNION 運算子
- MySQL - UNION vs UNION ALL
- MySQL - MINUS 運算子
- MySQL - INTERSECT 運算子
- MySQL - INTERVAL 運算子
- MySQL 連線
- MySQL - 使用連線
- MySQL - INNER JOIN
- MySQL - LEFT JOIN
- MySQL - RIGHT JOIN
- MySQL - CROSS JOIN
- MySQL - FULL JOIN
- MySQL - 自連線
- MySQL - DELETE JOIN
- MySQL - UPDATE JOIN
- MySQL - UNION vs JOIN
- MySQL 觸發器
- MySQL - 觸發器
- MySQL - 建立觸發器
- MySQL - 顯示觸發器
- MySQL - 刪除觸發器
- MySQL - BEFORE INSERT 觸發器
- MySQL - AFTER INSERT 觸發器
- MySQL - BEFORE UPDATE 觸發器
- MySQL - AFTER UPDATE 觸發器
- MySQL - BEFORE DELETE 觸發器
- MySQL - AFTER DELETE 觸發器
- MySQL 資料型別
- MySQL - 資料型別
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正則表示式
- MySQL - 正則表示式
- MySQL - RLIKE 運算子
- MySQL - NOT LIKE 運算子
- MySQL - NOT REGEXP 運算子
- MySQL - regexp_instr() 函式
- MySQL - regexp_like() 函式
- MySQL - regexp_replace() 函式
- MySQL - regexp_substr() 函式
- MySQL 函式 & 運算子
- MySQL - 日期和時間函式
- MySQL - 算術運算子
- MySQL - 數值函式
- MySQL - 字串函式
- MySQL - 聚合函式
- MySQL 其他概念
- MySQL - NULL 值
- MySQL - 事務
- MySQL - 使用序列
- MySQL - 處理重複資料
- MySQL - SQL 注入
- MySQL - 子查詢
- MySQL - 註釋
- MySQL - CHECK 約束
- MySQL - 儲存引擎
- MySQL - 將表匯出到 CSV 檔案
- MySQL - 將 CSV 檔案匯入資料庫
- MySQL - UUID
- MySQL - 公共表表達式
- MySQL - ON DELETE CASCADE
- MySQL - Upsert
- MySQL - 水平分割槽
- MySQL - 垂直分割槽
- MySQL - 遊標
- MySQL - 儲存函式
- MySQL - SIGNAL
- MySQL - RESIGNAL
- MySQL - 字元集
- MySQL - 校對規則
- MySQL - 萬用字元
- MySQL - 別名
- MySQL - ROLLUP
- MySQL - 當天日期
- MySQL - 字面量
- MySQL - 儲存過程
- MySQL - EXPLAIN
- MySQL - JSON
- MySQL - 標準差
- MySQL - 查詢重複記錄
- MySQL - 刪除重複記錄
- MySQL - 選擇隨機記錄
- MySQL - SHOW PROCESSLIST
- MySQL - 修改列型別
- MySQL - 重置自動遞增
- MySQL - COALESCE() 函式
- MySQL 有用資源
- MySQL - 有用函式
- MySQL - 語句參考
- MySQL - 快速指南
- MySQL - 有用資源
- MySQL - 討論
MySQL - 資料型別
資料型別指的是可以儲存在表列(欄位)中的資料型別,例如字串、整數、日期時間等。正確定義表中的欄位對於資料庫的整體最佳化非常重要。您應該只使用真正需要的欄位型別和大小。
在定義資料庫列時,請選擇與您希望儲存的實際資料大小和型別匹配的資料型別,而不是不必要地分配比需要更多空間。
MySQL 資料型別
在 MySQL 中,資料型別分為三大類:
- 數值型
- 日期和時間
- 字串型別。
現在讓我們詳細討論它們。
數值資料型別
數值資料型別用於儲存數值,包括整數和小數。MySQL 使用所有標準 ANSI SQL 數值資料型別。
下表列出了常見的 MySQL 數值資料型別及其描述:
INT - 一種普通大小的整數,可以是有符號的或無符號的。如果是帶符號的,允許的範圍是從 -2147483648 到 2147483647。如果是無符號的,允許的範圍是從 0 到 4294967295。您可以指定最多 11 位的寬度。
TINYINT - 一種非常小的整數,可以是有符號的或無符號的。如果是帶符號的,允許的範圍是從 -128 到 127。如果是無符號的,允許的範圍是從 0 到 255。您可以指定最多 4 位的寬度。
SMALLINT - 一種小整數,可以是有符號的或無符號的。如果是帶符號的,允許的範圍是從 -32768 到 32767。如果是無符號的,允許的範圍是從 0 到 65535。您可以指定最多 5 位的寬度。
MEDIUMINT - 一種中等大小的整數,可以是有符號的或無符號的。如果是帶符號的,允許的範圍是從 -8388608 到 8388607。如果是無符號的,允許的範圍是從 0 到 16777215。您可以指定最多 9 位的寬度。
BIGINT - 一種大整數,可以是有符號的或無符號的。如果是帶符號的,允許的範圍是從 -9223372036854775808 到 9223372036854775807。如果是無符號的,允許的範圍是從 0 到 18446744073709551615。您可以指定最多 20 位的寬度。
FLOAT(M,D) - 一種浮點數,不能是無符號的。您可以定義顯示長度 (M) 和小數位數 (D)。這不是必需的,預設為 10,2,其中 2 是小數位數,10 是總位數(包括小數位數)。FLOAT 的小數精度可以達到 24 位。
DOUBLE(M,D) - 一種雙精度浮點數,不能是無符號的。您可以定義顯示長度 (M) 和小數位數 (D)。這不是必需的,預設為 16,4,其中 4 是小數位數。DOUBLE 的小數精度可以達到 53 位。REAL 是 DOUBLE 的同義詞。
DECIMAL(M,D) - 一種未打包的浮點數,不能是無符號的。在未打包的小數中,每個小數對應一個位元組。需要定義顯示長度 (M) 和小數位數 (D)。NUMERIC 是 DECIMAL 的同義詞。
日期和時間資料型別
MySQL 中的日期和時間資料型別用於儲存時間資料,包括日期、時間和兩者的組合。這些資料型別對於準確處理與日期和時間相關的資訊至關重要。
MySQL 的日期和時間資料型別如下:
DATE - YYYY-MM-DD 格式的日期,介於 1000-01-01 和 9999-12-31 之間。例如,1973 年 12 月 30 日將儲存為 1973-12-30。
DATETIME - YYYY-MM-DD HH:MM:SS 格式的日期和時間組合,介於 1000-01-01 00:00:00 和 9999-12-31 23:59:59 之間。例如,1973 年 12 月 30 日下午 3:30 將儲存為 1973-12-30 15:30:00。
TIMESTAMP - 介於 1970 年 1 月 1 日午夜和 2037 年某個時間之間的 timestamp。這看起來像之前的 DATETIME 格式,只是數字之間沒有連字元;1973 年 12 月 30 日下午 3:30 將儲存為 19731230153000(YYYYMMDDHHMMSS)。
TIME - 以 HH:MM:SS 格式儲存時間。
YEAR(M) - 以 2 位或 4 位格式儲存年份。如果長度指定為 2(例如 YEAR(2)),則 YEAR 可以介於 1970 年到 2069 年(70 到 69)之間。如果長度指定為 4,則 YEAR 可以是 1901 年到 2155 年。預設長度為 4。
字串資料型別
MySQL 中的字串資料型別用於儲存文字和基於字元的資訊。這些資料型別儲存各種長度和格式的文字資料。
下表描述了 MySQL 中常見的字串資料型別:
CHAR(M) - 長度在 1 到 255 個字元之間的定長字串(例如 CHAR(5)),儲存時用空格填充到指定的長度。定義長度不是必需的,但預設為 1。
VARCHAR(M) - 長度在 1 到 255 個字元之間的變長字串。例如,VARCHAR(25)。建立 VARCHAR 欄位時必須定義長度。
BLOB 或 TEXT - 最大長度為 65535 個字元的欄位。BLOB 是“二進位制大物件”,用於儲存大量二進位制資料,例如影像或其他型別的檔案。定義為 TEXT 的欄位也儲存大量資料。兩者之間的區別在於,儲存資料的排序和比較在 BLOB 中是區分大小寫的,而在 TEXT 欄位中是不區分大小寫的。您不必為 BLOB 或 TEXT 指定長度。
TINYBLOB 或 TINYTEXT − 一種 BLOB 或 TEXT 列,最大長度為 255 個字元。TINYBLOB 或 TINYTEXT 不需要指定長度。
MEDIUMBLOB 或 MEDIUMTEXT − 一種 BLOB 或 TEXT 列,最大長度為 16777215 個字元。MEDIUMBLOB 或 MEDIUMTEXT 不需要指定長度。
LONGBLOB 或 LONGTEXT − 一種 BLOB 或 TEXT 列,最大長度為 4294967295 個字元。LONGBLOB 或 LONGTEXT 不需要指定長度。
ENUM − 列舉型別,簡單來說就是一個列表。定義 ENUM 時,你實際上是在建立一個專案列表,其值必須從該列表中選擇(也可以為 NULL)。例如,如果希望欄位包含“A”、“B”或“C”,則將 ENUM 定義為 ENUM ('A', 'B', 'C'),只有這些值(或 NULL)才能填充該欄位。