数据中删除语句 Drop、Delete、Truncate的相同点和不同点

数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较(举例说明)

数据库删除语句的分别介绍:

Delete:用于删除表中的行(注:可以删除某一行;也可以在不删除表的情况下(即意味着表的结构、属性、索引完整)删除所有行)

语法:删除某一行:Delete From 表名称  Where 列名称=值

删除所有行: Delete From 表名称       或     Delete *  From  表名称

Drop:用于删除表(注:将表的结构、属性、索引也会被删除。)

语法:Drop  Table 表名称

Truncate:用于删除表内的数据(注:仅删除表内的数据,不删除表本身,相当于Delete语句不写Where子句一样)

语法:Truncate Table  表名称

数据库中删除语句的相同点和不同点的比较:

相同点:

1.truncate和不带where子句的delete,以及drop都能删除表内的数据

2.truncate和delete只删除表数据保留表结构

不同点:  www.2cto.com

1. truncate table tablename

删除表内容释放表空间保留表结构(即:只删除表内的数据,不删除表本身。相当于Delete语句不写where子句一样),不使用事务处理即和事务无关

truncate 语句缺省情况下将空间释放到 minextents个 extent,

除非使用reuse storage;truncate 会将高水线复位(回到最开始)。

2. delete table tablename [where子句]

delete属于数据操作语言(DML),不能自动提交事务,需commit提交

这个操作会放到 rollback segement 中,事务提交之后才生效;

如果有相应的 trigger,执行的时候将被触发。

delete 语句不影响表所占用的 extent,高水线(high watermark)保持原位置不动

3. drop table tablename

drop属于数据定义语言(DDL)可以自动提交事务;

drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index)【删除表数据同时删除表结构】;

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

drop 语句将表所占用的空间全部释放。

删除数据的速度,一般来说: drop> truncate > delete

使用场合:

当你不再需要该表时, 用 drop;

当你仍要保留该表,但要删除所有记录时, 用 truncate;

当你要删除部分记录时(always with a where clause), 用 delete.

注意:

对于有主外键关系的表,不能使用truncate而应该使用不带where子句的delete语句,由于truncate不记录在日志中,不能够激活触发器

时间: 2024-10-10 05:10:29

数据中删除语句 Drop、Delete、Truncate的相同点和不同点的相关文章

oracle 中删除表 drop delete truncate

oracle 中删除表 drop delete truncate 相同点,使用drop delete truncate 都会删除表中的内容 drop table 表名 delete from 表名(后面不跟where语句,则也删除表中所有的数据) truncate table 表名 区别 首先delete 属于DML,当不commit时时不生效的 而truncate 和 drop 则是直接生效的,不能回滚. truncate 和 delete 不删除表的结构,只是针对表中的内容删除 drop语句

数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较

数据库中删除语句Drop.Delete.Truncate的相同点和不同点的比较(举例说明) 数据库删除语句的分别介绍:Delete:用于删除表中的行(注:可以删除某一行:也可以在不删除表的情况下(即意味着表的结构.属性.索引完整)删除所有行)                语法:删除某一行:Delete From 表名称  Where 列名称=值              删除所有行: Delete From 表名称       或     Delete *  From  表名称   Drop:

drop,delete,truncate区别

drop,delete,truncate区别 drop-->删除少量信息   eg:drop table 表名: delete-->删除某些数据   eg:delete from 表名: truncate-->删除整个表的数据/大量数据  eg:truncate table 表名:

如何区别数据库删除语句drop与delete与truncate?

1.delete:删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行) 删除某一行:delete from 数据表名称 where 列名称=值: 删除所有行:delete*from 数据表名称 2.drop:删除数据表或数据库或数据表字段 删除数据库:drop database 数据库名称 删除数据表(表的结构.属性.索引也会被删除):use 数据库名称 drop table 数据表1名称,数据表2名称 删除数据表字段(列):use 数据库名称 alter table 数据

有关 drop delete truncate 问题

drop 可以删除数据库 数据表 数据表中字段 delete 删除数据表中的行 而不删除数据表 可以删除一行: Delete from 表 where 列名称=值 或是多行: Delete from 表 truncate 删除数据表中数据 而不删除数据表: truncate table 表 三者的删除速度 drop>truncate>delete delete 与 truncate 比 后者 具有优势 所用事务日志空间少. Delete 语句删除一次 就在事务日志中为删除的每行记录一项, tr

drop,delete,truncate 的区别

(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的.并且在删除的过程中不会激活与表有关的删除触发器.执行速度快. (2)表和索引所占空间. 当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小, DELETE操作不会减少表或索引所占用的空间. drop语句将表所占用的空间全释放掉. (3

删除大表的数据:普通删除语句和游标处理的比较

一.前言 WHERE条件用不到索引的情况下如何删除大表记录?文章中只是列举出其中一种方式而已,但仍然存在很多不严谨的地方.只是 轻描淡写随着数据表越来越大,历史数据的处理将越来越困难.且过滤字段没有索引(如时间)字段,而创建索引是需要临时表空间排序的.有越来越大,创建的维护工作也随之越来越难. 除了本文介绍的方法以外,还可以通过以下几种方法来维护历史数据: 1. 创建历史表,将历史数据定期移至历史表,让源表保持"瘦小身材"(源表会有碎片,需要定期对表和索引进行重建) 2. ORACLE

mysql数据中sql语句基础大全

在学习第一门数据库语言的时候,相比而言要比编程语言的逻辑性要差一点,更多的则是在背会记住的基础上熟练运用.首先来介绍mysql语言中需要背记的增删改查这些语句. /*---------------------------新增-------------------------*/ 查看现在有哪些数据库 show databases: 新建一个名为db_20的数据库: create database db_20; 使用这个数据库 use db_20; 查看数据库中的表  show tables; 新

drop,delete,truncate

drop,truncate是ddl,数据库定义语言,不执行事务 delete是dml,数据库操作语言,有事务 drop:删除内容和定义,释放空间 delete:删除内容,不删除定义,不释放空间 truncate:删除内容释放空间,但不删除定义 执行速度:drop>truncate>delete?