系統梳理 MySQL 服務管理、庫表操作、DDL/DML/DQL 核心語法、連接查詢、子查詢、合並查詢、內置函數(數學/字符串/日期/條件/系統/加密),適合零基礎快速建立知識體系。
# Windows CMD
net start mysql # 啟動
net stop mysql # 停止
mysql -h localhost -u root -p # 連接
CREATE DATABASE db_bookstore;
USE db_bookstore;
DROP DATABASE db_bookstore;
-- 創建
CREATE TABLE IF NOT EXISTS tb_name (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name CHAR(50)
);
-- 查看結構
SHOW COLUMNS FROM tb_name;
DESC tb_name;
-- 刪除
DROP TABLE IF EXISTS tb_name;
-- 修改表結構
ALTER TABLE tb_name
ALTER COLUMN col SET DEFAULT val; -- 設置/刪除默認值(極快,僅元數據)
ALTER TABLE tb_name
CHANGE COLUMN old_name new_name TYPE; -- 重命名、改類型、移動位置
ALTER TABLE tb_name
MODIFY COLUMN col TYPE; -- 不改名時用 MODIFY
-- 重命名表
ALTER TABLE tb_name RENAME TO new_name;
RENAME TABLE tb_name TO new_name;
INSERT INTO tb_name (f1, f2) VALUES (v1, v2);
UPDATE tb_name SET f1=v1, f2=v2 WHERE cond;
DELETE FROM tb_name WHERE cond;
SELECT [DISTINCT] col_list
FROM tb_list
[WHERE primary_cond]
[GROUP BY cols [HAVING sec_cond]]
[ORDER BY col [ASC|DESC]]
[LIMIT [offset,] row_count];
SELECT * FROM tb WHERE id < 5WHERE id IN (1,2,3)、WHERE id BETWEEN 1 AND 5% 任意多字符,_ 單字符 → WHERE name LIKE 'm%r_'IS NULL / IS NOT NULLAND / ORSELECT DISTINCT *ORDER BY id DESCSELECT dept, COUNT(*) FROM emp GROUP BY dept HAVING COUNT(*) > 5GROUP BY dept, job(笛卡爾積分組)LIMIT 3(前 3 行)、LIMIT 5,10(第 6-15 行)-- 內連接(等值最常用)
SELECT * FROM a INNER JOIN b ON a.id = b.id;
-- 左外連接(保留左表所有)
SELECT * FROM a LEFT JOIN b ON a.id = b.id;
-- 右外連接
SELECT * FROM a RIGHT JOIN b ON a.id = b.id;
-- 全外連接(MySQL 不支持,用 UNION 模擬)
SELECT * FROM a LEFT JOIN b ON a.id = b.id
UNION
SELECT * FROM a RIGHT JOIN b ON a.id = b.id;
-- IN
SELECT * FROM tb WHERE id IN (SELECT id FROM tb2);
-- ANY
SELECT * FROM tb WHERE id < ANY (SELECT id FROM tb2);
-- ALL
SELECT * FROM tb WHERE id < ALL (SELECT id FROM tb2);
-- EXISTS(返回布爾,常關聯外部表)
SELECT * FROM tb1 WHERE score >= 90
AND EXISTS (SELECT * FROM tb2 WHERE grade = '優秀');
-- 關系運算(子查詢必須返回單值)
SELECT * FROM tb WHERE id > (SELECT id FROM tb2 WHERE id=1);
SELECT id, name FROM a UNION SELECT id, author FROM b; -- 去重
SELECT id, name FROM a UNION ALL SELECT id, author FROM b; -- 保留所有
-- 前提:左右列數、類型、順序一致
| 分類 | 函數 | 說明/示例 |
|---|---|---|
| 數學 | ABS(x) | 絕對值 |
| CEIL / FLOOR | 向上/向下取整 | |
| RAND() / RAND(seed) | 0-1 隨機數,種子固定則序列固定 | |
| SIGN(x) | 符號 -1/0/1 | |
| PI() | 圓周率 | |
| TRUNCATE(x, d) | 截斷小數位(不四捨五入) | |
| ROUND(x, d) | 四捨五入 | |
| POWER(x,y) / SQRT(x) / MOD(x,y) | 冪/開方/取模 | |
| 字符串 | CHAR_LENGTH(str) | 字符長度 |
| UPPER/UCASE / LOWER/LCASE | 大小寫轉換 | |
| LTRIM / RTRIM / TRIM | 去除首/尾/首尾空格 | |
| REPLACE(s, s1, s2) | 替換 | |
| SUBSTRING(s, n, len) / LEFT / RIGHT | 子串/左/右 | |
| REVERSE(s) | 反轉 | |
| 日期時間 | CURRENT_DATE / CURRENT_TIME | 當前日期/時間 |
| NOW / CURRENT_TIMESTAMP / LOCALTIME / SYSDATE | 當前日期時間(同義) | |
| UNIX_TIMESTAMP / FROM_UNIXTIME | 時間戳雙向轉換 | |
| YEAR/MONTH/DAY / HOUR/MINUTE/SECOND | 提取分量 | |
| DATEDIFF(d1,d2) | 天數差 | |
| ADDDATE / SUBDATE | 日期加減 | |
| DATE_FORMAT(date, fmt) | 格式化,如 '%Y-%m-%d %H:%i' | |
| 條件判斷 | IF(cond, true_val, false_val) | 三元運算 |
| CASE WHEN ... THEN ... ELSE ... END | 多條件分支 | |
| IFNULL(expr1, expr2) | expr1 為 NULL 返回 expr2 | |
| 系統信息 | VERSION() / CONNECTION_ID() | 版本/連接數 |
| DATABASE() / SCHEMA() | 當前庫 | |
| USER() / CURRENT_USER() | 當前用戶 | |
| LAST_INSERT_ID() | 上次自增 ID | |
| 加密 | MD5(str) | 不可逆摘要 |
| PASSWORD(str) | 用戶密碼加密(舊版) | |
| ENCODE/DECODE | 可逆加密(需 BLOB 存儲) |