您的位置:首页 > 运维架构

delete、truncate、drop区别简单介绍

2012-11-22 18:41 134 查看
一、delete、truncate、drop的区别;

delete:

1、可以删除整张表的数据:delete from table_name,也可以添加where子句控制要删除的数据:delete from table_name where . . .,同时可以操作view、synonym

2、属于DML语言,每次删除一行,都在事务日志中为所删除的每行记录一项。产生rollback,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发,

如果删除大数据量的表速度会很慢

3、删除内容不删除表的结构(定义),不释放空间。

truncate:

1、truncate table table_name,只能操作table,在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行,但truncate比delete速度快,

由于默认情况下truncate通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

所以使用的系统和事务日志资源少,可以使用reuse storage; truncate会将高水线复位(回到最开始).

2、 truncate是DDL语言, 操作立即生效,自动提交,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.

3、删除内容、释放空间但不删除表的结构(定义)。

drop:

1、droptable table_name,drop语句将删除表的结构,以及被依赖的约束(constrain),触发器(trigger),索引(index);

依赖于该表的存储过程/函数将保留,但是变为invalid状态.

2、drop也属于DDL语言,立即执行,执行速度最快

3、删除内容和定义,释放空间。

二、一些补充知识

1、什么是DDL?

DDL是Data definition Language 的缩写,意为数据定义语言,是SQL语言的四大功能之一。

用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束。

2、什么是DML?

DML是Data Manipulation Language的缩写,意为数据操纵语言,是SQL语言的四大功能之一。

由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。

DML分成交互型DML和嵌入型DML两类。

依据语言的级别,DML又可分成过程性DML和非过程性DML两种。

3、什么是DCL?

DCL是Data Control Language的缩写,意为数据控制语言,是SQL语言的四大功能之一。

4、SQL的组成分成几部分?

SQL主要分成四部分:

(1)数据定义。(SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。

(2)数据操纵。(SQL DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。

(3)数据控制。包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。

(4)嵌入式SQL的使用规定。涉及到SQL语句嵌入在宿主语言程序中使用的规则。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: