首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL 四大語言體系詳解:DDL、DML、DCL、TCL 區別與實例

     編輯:MySQL 資料庫相關知識

DDL(Data Definition Language)

定義數據庫結構,隱式提交,不可回滾。

CREATE DATABASE test;
ALTER TABLE test ADD birthday DATE;
DROP DATABASE test;
TRUNCATE TABLE test;  -- 清空表,DDL 性質
COMMENT ON TABLE test IS '備注';

DML(Data Manipulation Language)

操作數據,需顯式 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 ',';

DCL(Data Control Language)

權限與角色控制。

GRANT ALL ON db1.* TO 'hive'@'localhost';
REVOKE SELECT ON db2.invoice FROM 'hive'@'localhost';

TCL(Transaction Control Language)

事務控制。

COMMIT;
SAVEPOINT sp1;
ROLLBACK TO sp1;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

JDBC 事務實戰

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);

總結對比表

類別核心命令事務性典型場景
DDLCREATE/ALTER/DROP/TRUNCATE隱式提交建表、改結構
DMLINSERT/UPDATE/DELETE需 COMMIT增刪改數據
DCLGRANT/REVOKE隱式提交授權/回收權限
TCLCOMMIT/ROLLBACK/SAVEPOINT事務控制事務邊界管理

注意:SELECT 屬於 DQL(Data Query Language),常單獨歸類。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved