Oracle 批量插入,truncate,去掉碎片,事务

--一次性插入多条记录(批量插入)。 不用写values子句,用子查询代替values子句。(子查询的列要和插入的表的列保持对应)

insert into emp10 select * from emp where deptno=10; --批量插入,如果插入海量数据效率低

海量插入数据:

1、数据泵(PLSQL程序)

dbms_datapump(程序包)

2、SQL*Loader

3、外部表

delete和truncate的区别 (Oracle中truncate快,MySql中delete快。原因:Oracle有undo数据(还原数据)的功能)

1、delete逐条删除;truncate先摧毁表 再重建2

2、(*)delete是DML truncate是DDL

(可以回滚) (不可以回滚)

3、delete不会释放空间 truncate会

4、delete会产生碎片 truncate不会

5、delete可以闪回(flashback) truncate不可以 (flashback其实是一种恢复)

alter table 表名 move; --去掉碎片 (数据的导入和导出也可以去掉表中的碎片 exp/imp)

set feedback off; --关闭sql语句执行结果提示信息。

@D:MyData.sql; --执行外部sql脚本

Oracle中的事务

1、起始标志: 事务中的第一条DML语句(insert、delete、update、select)

2、结束标志:显式提交:commit 隐式提交: 正常退出或 DDL 或 DCL (DDL语句不能回滚,因为本身就是提交)

显式回滚:rollback 隐式回滚: 非正常退出 掉电 宕机

set transaction read only; --设置事务隔离级别(read only是Oracle专有的隔离级别(只能进行查询操作))

savepoint a; --事务保存点

rollback to savepoint a; --回滚到事务指定的保存点


下一篇:Oracle 数据库备份与恢复的理论基础