当前位置:首页 » 编程语言 » sql中drop操作回收站
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql中drop操作回收站

发布时间: 2022-04-15 14:11:49

sql中 drop操作是否可以回滚truncate能否释放表空间

drop
无法回滚
truncate
截断表,删除表中所有数据,不写入回滚日志,所以无法rollback

⑵ sql中 drop操作是否可以回滚truncate能否释放表空间

drop 无法回滚
truncate 截断表,删除表中所有数据,不写入回滚日志,所以无法rollback

⑶ 在plsql里用drop删除表为什么回收站没有

确认回收站有没有打开
SQL> show parameter recycle;

为on,就是打开的,反之就没有打开。

第二个就是确认下当前用户的默认表空间,如果为system表空间的话,drop table也是不会进入回收站的

⑷ DROP TABLE在删除表时释放表空间吗

一、drop表

执行drop table xx 语句

drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉。这样,回收站里的表信息就可以被恢复,或彻底清除。

通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句

flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop [rename to <new_table_name>];

将回收站里的表恢复为原名称或指定新名称,表中数据不会丢失。

若要彻底删除表,则使用语句:drop table <table_name> purge;

清除回收站里的信息

清除指定表:purge table <table_name>;

清除当前用户的回收站:purge recyclebin;

清除所有用户的回收站:purge dba_recyclebin;

不放入回收站,直接删除则是:drop table xx purge;

举例如下:

===============================================================================

SQL> select * from test1;

A B C

-- -- ----------

11 5

11 10

2 rows selected

SQL> create table test2 as select * from test1;

Table created

SQL> select * from test2;

A B C

-- -- ----------

11 5

11 10

2 rows selected

SQL> drop table test2;

Table dropped

SQL> select object_name, original_name, operation, type from user_recyclebin;

OBJECT_NAME ORIGINAL_NAME OPERATION TYPE

------------------------------ -------------------------------- --------- -------------------------

BIN$vQwemDg4R9mK9fYJNdYzvg==$0 TEST2 DROP TABLE

SQL> flashback table test2 to before drop rename to test3;--【to test3】将表重命名

Done

SQL> select * from test3;

A B C

-- -- ----------

11 5

11 10

2 rows selected

SQL> select * from test2

ORA-00942: 表或视图不存在

--彻底删除表

SQL> drop table test3 purge;

Table dropped

二、清除表中的数据

truncate操作 同没有where条件的delete操作十分相似,只是把表里的信息全部删除,但是表依然存在。

例如:truncate table XX

Truncate不支持回滚,并且不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。

truncate table 后,有可能表空间仍没有释放,可以使用如下语句:

alter table 表名称 deallocate UNUSED KEEP 0;

注意如果不加KEEP 0的话,表空间是不会释放的。

例如:

alter table F_MINUTE_TD_NET_FHO_B7 deallocate UNUSED KEEP 0;

或者:

TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE才能释放表空间。

例如: truncate table test1 DROP STORAGE;

三、查询分区表存在哪些分区:

查询分区表的情况,可以在USER_TAB_PARTITIONS中查询。例如:

select 'alter table '||t.table_name ||' truncate partition ' || t.partition_name from USER_TAB_PARTITIONS t where t.table_name like 'F_%'

清除指定某个分区表的分区数据:

alter table 表名称 truncate partition 分区名称;

四、清除分区表占用的空间:

alter table 表名称 DROP partition 分区名称;

例如:

alter table F_HOUR_TD_NET_MPVOICE DROP partition P_09121913 ;

五、查询表空间信息

可以利用如下语句查询各表在存储空间的使用分情况:

SELECT TABLESPACE_NAME,TO_CHAR(SUM(BYTES)/(1024*1024),'999G999D999') CNT_MB FROM DBA_EXTENTS WHERE OWNER='&OWNER' AND SEGMENT_NAME='&TABLE_NAME' AND SEGMENT_TYPE LIKE 'TABLE%' GROUP BY TABLESPACE_NAME;

可以使用如下语句,查询存储空间情况:

Select Tablespace_Name, Sum(bytes)/1024/1024 From Dba_Segments group By Tablespace_Name

六、查询用户下的表

如果你的用户权限不是DBA:

那你用

select * from user_tables;

可以查询到当前用户所拥有的表。

如果是DBA用户:

select * from dba_tables;

⑸ sql server 2008 r2有回收站吗drop 掉的表在不在回收站里

数据库没有像操作系统一样的回收站机制。
如果备份模式为完整的话,可以尝试从日志中还原。不过,这不仅仅是将删除的表恢复了。

⑹ sql server中drop怎么用

有时候我们会需要从数据库中清除一个表。SQL 有提供一个 DROP TABLE 的语法来让我们清除表。 DROP TABLE 的语法是:
DROP TABLE "表名";

如果要清除在SQL CREATE 中建立的顾客表(Customer),我们就输入:
DROP TABLE Customer;

⑺ sql语句中删除表数据drop、truncate和delete的用法

虽然绿色资源网小编不建议大家去用命令删除数据库表中的东西,但是这些删除命令总有用的着的地方。
说到删除表数据的关键字,大家记得最多的可能就是delete了
然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了
现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的
老大------drop
出没场合:drop
table
tb
--tb表示数据表的名字,下同
绝招:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表,
例如:一个班就是一个表,学生就是表中的数据,学生的职务就是定义
drop
table
class,就是把整个班移除.学生和职务都消失
比如下面TestSchool数据库中有两张表[Classes]表和[Teacher]表
当执行下面代码之后
Classes表就被清楚,一干二净!
删除得非常暴力,作为老大实至名归
老二-----truncate
出没场合:truncate
table
tb
绝招:删除内容、释放空间但不删除定义。与drop不同的是,他只是清空表数据而已,他比较温柔.
同样也是一个班,他只去除所有的学生.班还在,职务还在,如果有新增的学生可以进去,也可以分配上职务
删除内容很容易理解,不删除定义也很容易理解,就是保留表的数据结构
上图就表现了:删除内容
执行语句之后,发现数据表的结构还在,也就是不删除定义
至于释放空间,看下下面两幅图.你们就会明白的
右图:Id列标识列,因之前delete过行数据,所以会出现标识列不连续(体现了delete删除是不释放空间的)
经过truncate
table
Teacher
之后
再新增三条数据
右图:同样Id是标识列,发现插入数据的时候,标识列连续了(体现了truncate删除是释放空间)
注意:truncate
不能删除行数据,要删就要把表清空
老三-----delete
出没场合:delete
table
tb
--虽然也是删除整个表的数据,但是过程是痛苦的(系统一行一行地删,效率较truncate低)

delete
table
tb
where
条件
绝招:删除内容不删除定义,不释放空间。三兄弟之中最容易欺负的一个
然后关于delete的就不详细说明了,大家都懂的
关于truncate的小小总结:
truncate
table
在功能上与不带
WHERE
子句的
delete语句相同:二者均删除表中的全部行。

truncate

delete速度快,且使用的系统和事务日志资源少。
delete
语句每次删除一行,并在事务日志中为所删除的每行记录一项。所以可以对delete操作进行roll
back
1、truncate
在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令Delete将被撤销,而
truncate
则不会被撤销。
2、truncate
是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对
truncate
使用ROLLBACK命令。
3、truncate
将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过
truncate
操作后的表比Delete操作后的表要快得多。
4、truncate
不能触发任何Delete触发器。
5、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
6、不能清空父表

⑻ 我把数据库直接删除到回收站了,但是mysql显示数据库还有之前的数据库,怎么删除

你是手动删除的数据库文件吧?这样肯定不行呀,在my sql的系统库里还有这个数据库的信息,要删除数据库,你要使用drop命令,或者使用mysqladmin来执行删除操作。

⑼ 详解SQL中drop,delete和truncate的异同

第一:相同点:
truncate和不带where子句的delete,以及drop
都会删除表内的数据
第二:不同点:
1.
truncate和delete只删除数据不删除表的结构(定义)
drop
语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为
invalid
状态。
2.
delete
语句是数据库操作语言(dml),这个操作会放到
rollback
segement
中,事务提交之后才生效;如果有相应的trigger执行的时候将被触发。
truncate、drop
是数据库定义语言(ddl),操作立即生效,原数据不放到rollback
segment中,不能回滚,操作不触发
trigger。
3.delete
语句不影响表所占用的extent,高水线(high
watermark)保持原位置不动;
显然drop
语句将表所占用的空间全部释放;
truncate
语句缺省情况下见空间释放到
minextents个
extent,除非使用reuse
storage;truncate
会将高水线复位(回到最开始)。
4.速度:一般来说:
drop>
truncate
>
delete
5.安全性:小心使用
drop

truncate,尤其没有备份的时候.,否则哭都来不及。
6.使用上:想删除部分数据行用delete,注意带上where子句.
回滚段要足够大。
想删除表,当然用drop。
想保留表而将所有数据删除,如果和事务无关,用truncate即可;如果和事务有关,或者想触发trigger,还是用delete。
如果是整理表内部的碎片,可以用truncate跟上reuse
stroage,再重新导入/插入数据。