1.背景原因
在進行開發的時候,不經常使用oracle,出現oracle在進行insert的時候不會自己進行執行insert 自動commit問題,通過查找發現根本原因。
Oracle中:
DML語言,比如update,delete,insert等修改表中資料的需要commit;
DDL語言,比如create,drop等改變表結構的,就不需要寫commit(因為内部隐藏了commit);
一、DML
DML(data manipulation language)資料操縱語言:
就是我們最經常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用來對資料庫的資料進行一些操作
二、DDL
DDL(data definition language)資料庫定義語言:
其實就是我們在建立表的時候用到的一些sql,比如說:CREATE、ALTER、DROP等。DDL主要是用在定義或改變表的結構,資料類型,表之間的連結和限制等初始化工作上
三、DCL
DCL(Data Control Language)資料庫控制語言:
是用來設定或更改資料庫使用者或角色權限的語句,包括(grant,deny,revoke等)語句
DDL 資料定義語言:
create table 建立表
alter table 修改表
drop table 删除表
truncate table 删除表中所有行
create index 建立索引
drop index 删除索引
當執行DDL語句時,在每一條語句前後,oracle都将送出目前的事務。如果使用者使用insert指令将記錄插入到資料庫後,執行了一條DDL語句(如create
table),此時來自insert指令的資料将被送出到資料庫。當DDL語句執行完成時,DDL語句會被自動送出,不能復原。
DML 資料操作語言:
insert 将記錄插入到資料庫
update 修改資料庫的記錄
delete 删除資料庫的記錄
當執行DML指令如果沒有送出,将不會被其他會話看到。除非在DML指令之後執行了DDL指令或DCL指令,或使用者退出會話,或終止執行個體,此時系統會自動發出commit指令,使未送出的DML指令送出。