Oracle数据库学习笔记(七)

事务及数据的增删改查

Posted by java阳旭 on May 21, 2020

Oracle数据库学习笔记(七)–事务及数据的增删改查

事务的概念

事务是逻辑上的一组操作,要么都执行,要么都不执行。

事务最经典也经常被拿出来说的例子就是转账了。假如小明要给小红转账 1000 元,这个转账会涉及到两个关键操作就是:将小明的余额减少 1000 元,将小红的余额增加 1000 元。万一在这两个操作之间突然出现错误,比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个操作要么都成功,要么都失败。

事务的四大特性

1、原子性(Atomicity):事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全都完成,要么完全不起作用;

2、一致性(Consistency):执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;

3、隔离性(Isolation):并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;

4、持久性(Durability):一个事务被提交之后,他对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。

Oracle 确保事务完整性的机制是撤销段和重做日志文件的组合:此机制无疑是迄今为止开发的任何数据库中的翘楚,而且完全符合数据处理的国际标准。虽然其他数据库供应商能够通过使用自己的机制遵循相同的标准,但是却改变了效率级别。简而言之,任何关系数据库都必须能够通过 ACID 测试,必须确保原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

在执行增、删、改操作后,必须提交事务(COMMIT)才能让数据真正的保存到数据库中,同样在执行完数据库变更的操作后还可以把事务进行回滚(ROLLBACK),这样就不会保存到数据库。如果事务提交后则不可以再回滚。

查询表中记录

SELECT *
FROM person;

添加一条记录

INSERT INTO person (pid, pname)
VALUES (1, '小明');
COMMIT;

修改一条记录

UPDATE person
SET pname = '小马'
WHERE pid = 1;
COMMIT;

删除

1、删除表中全部记录

DELETE FROM person;

2、删除表结构

DROP TABLE person;

3、先删除表,再次创建表。效果等同于删除表中全部记录。

TRUNCATE TABLE person;

在数据量大的情况下,尤其在表中带有索引的情况下,该操作效率高。索引可以提高查询效率,但是会影响增、删、改的效率。TRUNCATE 在删除记录之前会先把表删掉,而他删除表的设计,是先把索引删掉,然后再去删除记录,就会避开索引对增、删、改的影响。第一种 DELETE 方式会受到索引的影响。