phpMyAdmin 是最普及的 MySQL Web 管理介面。本文以建立新聞系統資料庫為例,詳細講解建庫、建表、欄位類型選擇、主鍵/自增/索引配置、關聯設計,並附帶欄位類型速查表與避坑指南。
webjxcom進入 webjxcom → 「建立資料表」:名稱 Article,欄位數 7 → 執行
| # | 欄位名 | 類型 | 長度/值 | 屬性/索引 | 說明 |
|---|---|---|---|---|---|
| 1 | id | TINYINT / INT | - | PRIMARY KEY + AUTO_INCREMENT + UNSIGNED | 唯一識別符,自動遞增,無符號擴大範圍 |
| 2 | author | VARCHAR | 50 | - | 作者名,預留英文長度 |
| 3 | title | VARCHAR | 200 | INDEX (普通索引) | 標題,高頻搜尋加索引 |
| 4 | content | TEXT | - | - | 正文,大文本,無需指定長度 |
| 5 | source | VARCHAR | 100 | - | 來源網站/媒體 |
| 6 | addtime | DATETIME | - | DEFAULT CURRENT_TIMESTAMP | 發布時間,自動填入當前時間 |
| 7 | hits | INT | - | DEFAULT 0 + UNSIGNED | 點擊數,非負整數 |
| 欄位 | 類型 | 長度 | 屬性 | 說明 |
|---|---|---|---|---|
id | INT | - | PK + AI + UNSIGNED | 會員 ID |
username | VARCHAR | 50 | UNIQUE INDEX | 用戶名唯一,登入查詢走索引 |
password | CHAR | 64 | - | 存儲 SHA256/BCrypt 雜湊值,固定長度用 CHAR |
email | VARCHAR | 100 | UNIQUE INDEX | 郵箱唯一,找回密碼用 |
reg_time | DATETIME | - | DEFAULT CURRENT_TIMESTAMP | 註冊時間 |
status | TINYINT | - | DEFAULT 1 | 1=正常 0=禁用 |
| 分類 | 類型 | 儲存範圍/特點 | 典型用途 |
|---|---|---|---|
| 數值 | TINYINT | -128~127 / 0~255 (UNSIGNED) | 狀態碼、布爾、極小整數 |
| SMALLINT | -32768~32767 | 小範圍計數 | |
| INT / INTEGER | -21億~21億 | 標準 ID、計數器 | |
| BIGINT | -9e18~9e18 | 海量 ID、時間戳毫秒 | |
| DECIMAL(p,s) | 精確定點數 | 金額、價格、比率 (必用!) | |
| 字符 | CHAR(n) | 固定長度,右補空格 | MD5/SHA雜湊、ISO代碼、固定代碼 |
| VARCHAR(n) | 變長,1-2字節長度前綴 | 通用字符串、標題、名稱 | |
| TEXT | 65,535 字節 | 文章內容、描述、日誌 | |
| 日期時間 | DATE | YYYY-MM-DD | 生日、截止日期 |
| TIME | HH:MM:SS | 上班時間、時長 | |
| DATETIME | YYYY-MM-DD HH:MM:SS (1000-9999) | 業務時間、創建/更新時間 | |
| TIMESTAMP | 1970-2038, 4字節, 時區感知 | 自動更新時間戳、版本控制 | |
| YEAR | 1901-2155 | 年份 |
utf8mb4id INT AUTO_INCREMENT PRIMARY KEYdeleted_at DATETIME NULL DEFAULT NULL + INDEX (deleted_at)version INT DEFAULT 0 實現樂觀鎖phpMyAdmin 讓資料庫設計可視化、低門檻,但**理解欄位類型語義、索引機制、字符集原理**才是設計高效能、可維護 Schema 的核心能力。