转: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,速度快一些

posted @ 2010-03-06 10:29  Sissynong  阅读(679)  评论(2编辑  收藏  举报