在 Oracle 数据库中,DML(Data Manipulation Language)语句用于处理(即插入、更新、删除)数据,而事务控制则用于确保数据的一致性和完整性。下面是一些基本的 DML 语句和事务控制的例子。
DML 语句
-
INSERT:用于向表中插入新记录。
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
-
UPDATE:用于修改表中的现有记录。
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
-
DELETE:用于从表中删除记录。
DELETE FROM table_name WHERE condition;
事务控制
事务是一系列作为单个逻辑工作单元执行的 SQL 语句。这些语句要么全部提交(即永久保存到数据库中),要么全部回滚(即撤销所有更改)。
-
COMMIT:提交事务,即永久保存更改。
COMMIT;
-
ROLLBACK:撤销事务中的所有更改,即将数据库回滚到事务开始之前的状态。
ROLLBACK;
-
SAVEPOINT:在事务中设置一个保存点,以便稍后回滚到该点而不是事务的开始点。
SAVEPOINT savepoint_name;
-
ROLLBACK TO SAVEPOINT:回滚到指定的保存点,而不是事务的开始点。
ROLLBACK TO SAVEPOINT savepoint_name;
-
RELEASE SAVEPOINT:释放指定的保存点。释放后的保存点将不再存在,不能用于回滚。
RELEASE SAVEPOINT savepoint_name;
示例
假设我们有一个名为 employees
的表,并且我们想要执行以下操作:
-
插入一条新记录。
-
更新该记录。
-
提交更改。
-
意识到我们犯了一个错误,所以回滚到事务开始之前的状态。
-- 开始新的事务(隐式地,因为大多数数据库管理系统在每条 SQL 语句之后不会自动提交) -- 插入新记录 INSERT INTO employees (id, name, salary) VALUES (1, 'Alice', 5000); -- 更新记录(但假设我们在此处犯了一个错误) UPDATE employees SET salary = 6000 WHERE id = 1; -- 错误:我们本不应该更改薪水 -- 意识到错误,决定回滚更改 ROLLBACK; -- 现在,employees 表中的记录将保持原样,因为我们回滚了事务
注意:在某些数据库管理系统(包括 Oracle)中,每条 SQL 语句默认都是自动提交的,但在其他系统中,您可能需要显式地使用 BEGIN
语句来开始一个新的事务。在 Oracle 中,您可以使用 SET TRANSACTION
或在 PL/SQL 块中开始事务。