SQL 資料型別 (Data Types)
在建立資料表時,每個欄位都需要指定資料型別。選擇正確的資料型別不僅能確保資料的正確性,也能提升資料庫的效能。
數值型別 (Numeric Types)
用來儲存數字,包括整數和小數:
| 型別 | 說明 | 範例 |
|---|---|---|
| INT / INTEGER | 整數 | 1, -100, 9999 |
| SMALLINT | 小整數 | -32768 ~ 32767 |
| BIGINT | 大整數 | 大範圍整數 |
| DECIMAL(p, s) | 精確小數,p 是總位數,s 是小數位數 | DECIMAL(10,2) 可存 12345678.99 |
| FLOAT | 浮點數 | 3.14159 |
| DOUBLE | 雙精度浮點數 | 更大範圍的浮點數 |
數值型別可以搭配聚合函數使用,例如 SUM()、AVG() 等。
字串型別 (String Types)
用來儲存文字:
| 型別 | 說明 | 範例 |
|---|---|---|
| CHAR(n) | 固定長度字串,長度為 n | CHAR(10) 固定佔 10 字元 |
| VARCHAR(n) | 可變長度字串,最大長度為 n | VARCHAR(255) |
| TEXT | 長文字 | 文章內容、備註 |
CHAR 會以空白填滿到指定長度,VARCHAR 則只佔用實際使用的長度。一般建議使用 VARCHAR。
日期時間型別 (Date/Time Types)
用來儲存日期和時間:
| 型別 | 格式 | 範例 |
|---|---|---|
| DATE | YYYY-MM-DD | 2024-12-25 |
| TIME | HH:MM:SS | 14:30:00 |
| DATETIME | YYYY-MM-DD HH:MM:SS | 2024-12-25 14:30:00 |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS | 自動記錄時間戳記 |
更多日期函數請參考 SQL Date。
布林型別 (Boolean)
儲存真/假值:
- TRUE / FALSE
- 1 / 0
NULL 值
NULL 代表「沒有值」或「未知」,和空字串 '' 或數字 0 不同。
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL, -- 不允許 NULL
phone VARCHAR(20) NULL -- 允許 NULL
);
-- 這兩者意義不同
INSERT INTO customers (phone) VALUES (NULL); -- 不知道電話
INSERT INTO customers (phone) VALUES (''); -- 知道沒有電話
判斷 NULL 值要使用 IS NULL 而非 =。