1. 知識結構
MySQL└── SQL(結構化查詢語言)├── DDL(數據定義語言) → 定義結構│ ├── 表操作(創建/修改/刪除表)│ └── 數據類型(列字段類型定義)├── DML(數據操作語言) → 增刪改數據├── DQL(數據查詢語言) → 查詢數據└── DCL(數據控制語言) → 權限、事務控制
2. DDL 表操作
操作 | 語法 | 示例 |
---|
創建表 | CREATE TABLE 表名 (列名 數據類型 約束, ...) | CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50)); |
如果不存在再創建 | CREATE TABLE IF NOT EXISTS 表名 (...) | CREATE TABLE IF NOT EXISTS users (...); |
查看表結構 | DESC 表名; 或 SHOW COLUMNS FROM 表名; | DESC users; |
修改表名 | RENAME TABLE 舊名 TO 新名; | RENAME TABLE users TO members; |
添加列 | ALTER TABLE 表名 ADD 列名 數據類型 約束; | ALTER TABLE users ADD email VARCHAR(100); |
修改列數據類型 | ALTER TABLE 表名 MODIFY 列名 新數據類型; | ALTER TABLE users MODIFY name VARCHAR(100); |
重命名列 | ALTER TABLE 表名 CHANGE 舊列名 新列名 數據類型; | ALTER TABLE users CHANGE name username VARCHAR(50); |
刪除列 | ALTER TABLE 表名 DROP 列名; | ALTER TABLE users DROP email; |
刪除表 | DROP TABLE 表名; | DROP TABLE users; |
如果存在再刪除 | DROP TABLE IF EXISTS 表名; | DROP TABLE IF EXISTS users; |
清空表數據 | TRUNCATE TABLE 表名; | TRUNCATE TABLE users; |
3. MySQL 常用數據類型
3.1 數值類型
類型 | 大小 | 有符號范圍 (SIGNED) | 無符號范圍 (UNSIGNED) | 用途 |
---|
TINYINT | 1字節 | -128 ~ 127 | 0 ~ 255 | 狀態、布爾值(0/1) |
SMALLINT | 2字節 | -32768 ~ 32767 | 0 ~ 65535 | 小范圍整數 |
MEDIUMINT | 3字節 | -8388608 ~ 8388607 | 0 ~ 16777215 | 中等范圍整數 |
INT / INTEGER | 4字節 | -21億 ~ 21億 | 0 ~ 42億 | 常用整型 |
BIGINT | 8字節 | ±9.22e18 | 0 ~ 1.84e19 | 超大整數 |
DECIMAL(M,D) | 按精度 | 精確小數 | 精確小數 | 金額計算 |
FLOAT | 4字節 | 非精確小數 | 非精確小數 | 科學計算 |
DOUBLE | 8字節 | 非精確小數 | 非精確小數 | 高精度浮點 |
3.2 字符串類型
類型 | 最大長度 | 用途 |
---|
CHAR(M) | 固定長度,0~255 | 性別、狀態碼 |
VARCHAR(M) | 可變長度,0~65535(取決于行大小) | 姓名、標題 |
TEXT | 65535字符 | 文章內容 |
TINYTEXT | 255字符 | 短文本 |
MEDIUMTEXT | 16777215字符 | 中長文本 |
LONGTEXT | 4GB | 大段文本 |
BLOB 系列 | 同 TEXT,但存二進制 | 圖片、文件 |
3.3 日期與時間類型
類型 | 格式 | 范圍 | 用途 |
---|
DATE | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 | 出生日期、節日 |
TIME | HH:MM:SS | -838:59:59 ~ 838:59:59 | 事件時間 |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 ~ 9999-12-31 | 日志時間 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1970-01-01 ~ 2038-01-19 | 自動更新當前時間 |
YEAR | YYYY | 1901 ~ 2155 | 年份 |
4. 注意事項
表名、列名建議全小寫,關鍵字大寫,提高可讀性:
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL
);
CHAR
固定長度,不足補空格;VARCHAR
可變長度,更節省空間。
金額一定用 DECIMAL
而不是 FLOAT
/DOUBLE
,避免精度丟失。
TIMESTAMP
會受時區影響,DATETIME
不受時區影響。
大型文本字段(TEXT/BLOB)會單獨存儲,不適合頻繁搜索。