转:DML、DDL、DCL、Transaction
原文:http://lan13217.javaeye.com/blog/493591
1. SQL语句分类(五类):
Select 语句
DML:insert \ update \ delete \ merge (Oracle 独有,用于数据库同步)
DDL:create \ drop \ alter \ truncate \ rename \ comment
DCL:grant \ revoke
Transaction :commit \ rollback \ savepoint
2. 数据库事务由以下的部分组成:
• 一个或多个DML 语句
• 一个 DDL 语句
• 一个 DCL 语句
3. 事务的开始与结束:
• 以第一个 DML 语句的执行作为开始
• 以下面的其中之一作为结束:
– COMMIT 或 ROLLBACK 语句
– DDL 或 DCL 语句(自动提交)
– 用户会话正常结束
– 系统异常终止
4.事务进程
• 自动提交在以下情况中执行:
– DDL 语句。
– DCL 语句。
– 不使用 COMMIT 或 ROLLBACK 语句提交或回滚,正常结束会话。
• 会话异常结束或系统异常会导致自动回滚。
举例:
5. insert into emp(empno,ename,sal) values(7788,’KING’,5000);
Insert into emp_bak as (select * from emp);
Update emp set sal = sal +500 where empno = 7788;
Delete [from] emp where empno =7788;
6.create table emp_bak as (select * from emp); (创建表)
Drop table emp_bak; (删除表) (drop 语句不能回滚)
Alter table emp_bak drop column comm.; (修改表结构)
Alter table emp_bak add column comm. number;
Alter table emp_bak set unused column comm.;
Alter table emp_bak drop unused columns;
Truncate table emp;(删除emp 表中的所有数据,并释放表的存储空间。Trancate语句不能回滚)
Rename emp to employee;
Comment on table emp is ‘Employee information’;
7. savepoint A;
Rollback to A; commit;
8. grant connect to scott;
Revoke connect from scott;
9.删除表(drop 语句) 要点:
• 数据库结构都被删除
• 所有正在运行的相关事物被提交
• 所有相关索引被删除
• DROP TABLE 语句不能回滚
10. 清空表:(Truncate 与delete的不同)
• TRUNCATE TABLE 语句:
– 删除表中所有的数据
– 释放表的存储空间
• TRUNCATE语句不能回滚
• 可以使用 DELETE 语句删除数据
• delete产生rollback,如果删除大数据量的表,速度会很慢,同时会占用很多的rollback segments .
• truncate 是DDL操作,不产生rollback,速度快一些