oracle删除表的方式

当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍。

一、delete语句

(1)有条件删除

   语法格式:delete [from]  table_name  [where condition];

如:删除users表中的userid为‘001’的数据:delete from users where userid=‘001‘;

(2)无条件删除整个表数据

语法格式:delete  table_name;

如:删除user表中的所有数据:delete users ;

二、Truncate语句

使用Truncate语句是删除表中的所有记录。

语法格式: Truncate [table]  table_name;

(1)删除所有记录不保留记录占用空间

Truncate [table]  table_name  [drop storage];

如:删除users表中的所有数据并不保存占用空间: Truncate table users drop storage; 由于默认使用drop storage关键字,所以可以省略 drop storage;

(2)删除所有记录保留记录占用空间

Truncate [table]  table_name  [reuse storage];

如:删除users表中的所有数据并保存占用空间: Truncate table users reuse storage;

三、两种删除语句的对比

由于delete语句删除记录时候,记录是逐条删除的,而Truncate 语句删除数据时不产生回退信息;所以如果需要删除大量数据的时候使用delete则占用较多的系统资源,而如果使用Truncate 则会快的多。

下面通过实例说明一下:

1、首先建立user表:

create table users
(
userid   varchar2(20) ,
username varchar2(30),
userpass varchar2(30)
 );

复制代码

2、接着插入一条数据

 insert into users values(‘001‘,‘GavinDream‘,‘123456‘);

3、使用复制插入方法插入几万条数据

 insert into users(userid,username,userpass) select * from users;

我插入了 4194304条数据,使用delete删除花费时间为:90.964 seconds,然后又插入了二倍的数据,但使用truncate花费时间仅仅为2.215 seconds

时间: 2024-08-28 21:28:18

oracle删除表的方式的相关文章

Oracle删除表、字段之前判断表、字段是否存在

这篇文章主要介绍了Oracle删除表.字段之前判断表.字段是否存在的相关资料,需要的朋友可以参考下 在Oracle中若删除一个不存在的表,如 “DROP TABLE tableName”,则会提示: ORA-00942:表或视图不存在 若在程序中执行该语句则会报异常,这就需要我们在删除表前先判断该表是否存在,若存在则删除. ? 1 2 3 4 5 6 7 8 9 10 11 DECLARE num NUMBER; BEGIN SELECT COUNT(1) INTO num FROM USER_

oracle删除表数据的两种的方式

转自:https://blog.csdn.net/qq_37840993/article/details/82490787 平时写sql中我们都会用到删除语句,而平时删除表数据的时候我们经常会用到两种方式: 在oracle中,truncate.delete都可以删除表数据,具体的区别以及sql语法如下: truncate table [表名]; delete from [表名]; delete与truncate的区别:delete:会产生rollback,如果删除大数据量的表速度会很慢,而且同时

Oracle删除表的几种方法

drop table books;的指令会将表放到回收站里, 用   flashback table "BIN$1Oiy3qm/QJubov1BwBUOgw==$0" to before drop;  就能恢复. 删除表:   drop table books purge;是绕过回收站,彻底删除    建议你先   purge recyclebin; 清除当前用户的回收站,不会影响其他用户的回收站  或者   purge table 表名: 清除回收站内指定的表 正文:  删除表(记录

oracle删除表字段和oracle表增加字段

这篇文章主要介绍了oracle表增加字段.删除表字段修改表字段的使用方法,大家参考使用吧 添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….); 删除字段的语法:alter table tablenam

oracle 删除表空间及数据文件方法

drop tablespace tablespace_name;--删除非空表空间,但是不包含物理文件drop tablespace tablespace_name including contents;--删除空表空间,包含物理文件drop tablespace tablespace_name including datafiles;--删除非空表空间,包含物理文件drop tablespace tablespace_name including contents and datafiles;

oracle删除表

转https://blog.csdn.net/qq_40087415/article/details/78812019 删除表(记录和结构)的语名:delete —— truncate —— drop      delete (删除数据表里记录的语句) delete from 表名 where 条件;     注意:删除记录并不能释放Oracle里被占用的数据块表空间.它只把那些被删除的数据块标成unused  如果确实要删除一个大表里的全部记录, 可以用 truncate 命令, 它可以释放占

Oracle 删除表分区

删除表分区(drop partition)    删除表分区包含两种操作,分别是:   Ø 删除分区:alter table [tbname] drop partition [ptname]; Ø 删除子分区:alter table [tbname] drop subpartition [ptname];   除hash分区和hash子分区外,其它的分区格式都可以支持这项操作.   例如,删除分区: JSSWEB> select table_name,partition_name   2  fr

oracle 删除表、数据

truncate ddl语句,删除表中数据,速度要比delete快:且所有自增字段重新开始计数:删除数据保留表结构:删除的数据不进入rollback segment,无法恢复.例: truncate table emp_tmp; drop    ddl语句,删除和该表相关的所有信息,包括表结构.数据. delete    dml语句,删除表中数据,但是并不删除表结构.

oracle 删除表找回

表版本和闪回功能 用户可能会经常多次创建和删除同一个表,如: CREATE TABLE TEST (COL1 NUMBER); INSERT INTO TEST VALUES (1); commit; DROP TABLE TEST; CREATE TABLE TEST (COL1 NUMBER); INSERT INTO TEST VALUES (2); commit; DROP TABLE TEST; CREATE TABLE TEST (COL1 NUMBER); INSERT INTO