| 類別 | 英文全稱 | 核心命令 | 作用 |
|---|---|---|---|
| DDL | Data Definition Language | CREATE, ALTER, DROP | 定義/修改/刪除數據庫對象結構 |
| DML | Data Manipulation Language | SELECT, INSERT, UPDATE, DELETE | 查詢/插入/更新/刪除數據 |
| TCL | Transaction Control Language | COMMIT, ROLLBACK, SAVEPOINT | 事務提交/回滾/保存點控制 |
| DCL | Data Control Language | GRANT, REVOKE | 權限授予/回收 |
CREATE TABLE person (
id INT PRIMARY KEY,
name VARCHAR(16) NOT NULL,
password INT NOT NULL,
address VARCHAR(20)
);
-- 單列新增
ALTER TABLE person ADD (age INT);
-- 多列新增
ALTER TABLE person ADD (age INT, weight INT);
-- 單列修改
ALTER TABLE person MODIFY (age VARCHAR(6));
-- 多列修改
ALTER TABLE person MODIFY (age VARCHAR(6), weight VARCHAR(6));
DROP TABLE person;
DESCRIBE person; -- 或 DESC person
SELECT * FROM person; -- 全列
SELECT id, name FROM person; -- 指定列
SELECT DISTINCT name FROM person; -- 去重
SELECT * FROM person WHERE id = 1; -- 條件過濾
SELECT * FROM person ORDER BY id; -- 排序(默認 ASC)
SELECT * FROM person WHERE id=1 AND sex='man';
SELECT * FROM person WHERE address='bj' OR sex='woman';
SELECT * FROM person WHERE (address='bj' OR sex='woman') AND age > 20;
完整語法骨架:
SELECT * | { [DISTINCT] col1, col2, ... }
FROM table_name
[WHERE condition]
[ORDER BY col1 [ASC|DESC], col2 ...];
ORDER BY 必須置於所有子句最後;多列排序按聲明順序依次遞歸排序。
-- 全列顯式插入
INSERT INTO person (id, name, sex, address) VALUES (1, 'toxm', 'man', 'bj');
-- 全列隱式插入(按建表順序)
INSERT INTO person VALUES (1, 'toxm', 'man', 'bj');
-- 部分列插入
INSERT INTO person (id, name) VALUES (1, 'toxm');
-- 從其他表複製全量
INSERT INTO person SELECT * FROM user_table;
-- 從其他表複製指定列
INSERT INTO person SELECT id, name FROM user_table;
-- 條件複製
INSERT INTO person SELECT * FROM user_table WHERE sex='man';
UPDATE person SET name='toxm' WHERE id=1;
UPDATE person SET name='toxm', address='bj' WHERE id=1;
UPDATE person SET name='toxm'; -- 無 WHERE 更新全表(慎用!)
DELETE FROM person; -- 清空表(慎用!)
DELETE FROM person WHERE id=1;
DML 操作(INSERT/UPDATE/DELETE)首先在數據緩沖區生成變更,未提交前:
COMMIT:持久化到數據文件,所有會話可見。ROLLBACK:丟棄緩沖區變更,事務如未發生。SAVEPOINT:設置標記,支持部分回滾至保存點。INSERT INTO person VALUES (1, 'a', 'man', 'bj');
-- 此時另一會話查不到該行
COMMIT; -- 另一會話即可查到
-- 或
ROLLBACK; -- 另一會話永不可見
WHERE 多條件組合(AND/OR/括號優先級)。COMMIT 前驗證、ROLLBACK 回退演練習慣。WHERE 的全表 UPDATE/DELETE。