定義數據庫結構,隱式提交,不可回滾。
CREATE DATABASE test; ALTER TABLE test ADD birthday DATE; DROP DATABASE test; TRUNCATE TABLE test; -- 清空表,DDL 性質 COMMENT ON TABLE test IS '備注';
操作數據,需顯式 COMMIT。
INSERT INTO city VALUES (3, 'china', 1, 'cc'); UPDATE city SET country='TAIWAN' WHERE id=4; DELETE FROM city WHERE id=5; -- 批量導入 LOAD DATA INFILE 'data.csv' INTO TABLE city FIELDS TERMINATED BY ',';
權限與角色控制。
GRANT ALL ON db1.* TO 'hive'@'localhost'; REVOKE SELECT ON db2.invoice FROM 'hive'@'localhost';
事務控制。
COMMIT; SAVEPOINT sp1; ROLLBACK TO sp1; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Connection conn = DriverManager.getConnection(url, user, pwd);
conn.setAutoCommit(false); // 開啟事務
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
Statement stmt = conn.createStatement();
stmt.executeUpdate("INSERT INTO city VALUES (3,'china',1,'cc')");
stmt.executeUpdate("UPDATE city SET country='TAIWAN' WHERE id=4"); // 失敗拋異常
conn.commit(); // 全部成功才提交
// catch 塊中
conn.rollback(); // 失敗回滾
// 或回滾到保存點
conn.rollback(savepoint);
| 類別 | 核心命令 | 事務性 | 典型場景 |
|---|---|---|---|
| DDL | CREATE/ALTER/DROP/TRUNCATE | 隱式提交 | 建表、改結構 |
| DML | INSERT/UPDATE/DELETE | 需 COMMIT | 增刪改數據 |
| DCL | GRANT/REVOKE | 隱式提交 | 授權/回收權限 |
| TCL | COMMIT/ROLLBACK/SAVEPOINT | 事務控制 | 事務邊界管理 |
注意:SELECT 屬於 DQL(Data Query Language),常單獨歸類。