Oracle 批量插入,truncate,去掉碎片,事務(wù)
--一次性插入多條記錄(批量插入)。 不用寫values子句,用子查詢代替values子句。(子查詢的列要和插入的表的列保持對應(yīng))
insert into emp10 select * from emp where deptno=10; --批量插入,如果插入海量數(shù)據(jù)效率低
海量插入數(shù)據(jù):
1、數(shù)據(jù)泵(PLSQL程序)
dbms_datapump(程序包)
2、SQL*Loader
3、外部表
delete和truncate的區(qū)別 (Oracle中truncate快,MySql中delete快。原因:Oracle有undo數(shù)據(jù)(還原數(shù)據(jù))的功能)
1、delete逐條刪除;truncate先摧毀表 再重建2
2、(*)delete是DML truncate是DDL
(可以回滾) (不可以回滾)
3、delete不會釋放空間 truncate會
4、delete會產(chǎn)生碎片 truncate不會
5、delete可以閃回(flashback) truncate不可以 (flashback其實是一種恢復(fù))
alter table 表名 move; --去掉碎片 (數(shù)據(jù)的導(dǎo)入和導(dǎo)出也可以去掉表中的碎片 exp/imp)
set feedback off; --關(guān)閉sql語句執(zhí)行結(jié)果提示信息。
@D:MyData.sql; --執(zhí)行外部sql腳本
Oracle中的事務(wù)
1、起始標(biāo)志: 事務(wù)中的第一條DML語句(insert、delete、update、select)
2、結(jié)束標(biāo)志:顯式提交:commit 隱式提交: 正常退出或 DDL 或 DCL (DDL語句不能回滾,因為本身就是提交)
顯式回滾:rollback 隱式回滾: 非正常退出 掉電 宕機(jī)
set transaction read only; --設(shè)置事務(wù)隔離級別(read only是Oracle專有的隔離級別(只能進(jìn)行查詢操作))
savepoint a; --事務(wù)保存點
rollback to savepoint a; --回滾到事務(wù)指定的保存點
下一篇:Oracle 數(shù)據(jù)庫備份與恢復(fù)的理論基礎(chǔ)