drop table cascade,说明在drop table时,restict和cascade的区别
drop table cascade,说明在drop table时,restict和cascade的区别详细介绍
本文目录一览: 说明在drop table时,restict和cascade的区别
在用DROP TABLE 语句删除表时:
RESTRICT:有限制条件,欲删除的基本表不能被其他的表所约束引用(如CHECK,FOREIGN KEY等约束条件),不能有视图、触发器、存储过程和函数等。如果有则该表不能被删除。
CASCADE:没有限制条件,在删除基本表的同时,相关的依赖对象(如视图)都将被删除。
在drop table时,restrict和cascade的区别?
restrict: 确保只有不存在相关视图和 完整性约束的表才能删除
cascade: 任何相关视图和完整性约束一并被删除
对于一个带分区的表,DROP TABLE会永久性地取消表定义,取消各分区,并取消储存在这些分区中的所有数据。DROP TABLE还会取消与被取消的表有关联的分区定义(.par)文件。
对与不存在的表,使用IF EXISTS用于防止错误发生。当使用IF EXISTS时,对于每个不存在的表,会生成一个NOTE。
RESTRICT和CASCADE可以使分区更容易。目前,RESTRICT和CASCADE不起作用。
说明在drop table 时,resirict 和cascade 的区别
在用DROP TABLE 语句删除表时:
RESTRICT:有限制条件,欲删除的基本表不能被其他的表所约束引用(如CHECK,FOREIGN KEY等约束条件),不能有视图、触发器、存储过程和函数等。如果有则该表不能被删除。
CASCADE:没有限制条件,在删除基本表的同时,相关的依赖对象(如视图)都将被删除。
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
DROP TABLE用于取消一个或多个表。您必须有每个表的DROP权限。所有的表数据和表定义会被取消,所以使用本语句要小心!
注意,对于一个带分区的表,DROP TABLE会永久性地取消表定义,取消各分区,并取消储存在这些分区中的所有数据。DROP TABLE还会取消与被取消的表有关联的分区定义(.par)文件。
对与不存在的表,使用IF EXISTS用于防止错误发生。当使用IF EXISTS时,对于每个不存在的表,会生成一个NOTE。
RESTRICT和CASCADE可以使分区更容易。目前,RESTRICT和CASCADE不起作用。
drop table student cascade 报错 ,这是为什么
cascade关键字是用来drop user,及其相关的数据的。drop table不用它
举几个用法的例子
drop table student; ==> 删除表student
drop user student cascade; ==> 删除用户student及其关联数据
drop tablespace student including contents and datafiles;==>删除表空间student及其关联的数据和数据文件
明白了么?
删除表的语法:
drop table 表名
就这么多。
drop table student cascade constraints ;
oracle中删除一个表的语句是什么
drop table tablename
删除表的话要看有没有外键约束什么的,如果有的话先要删除子表才能删除父表。
1.首先你有drop的权限
2.drop table 用户.表明 ; 举例 :drop table scott.tableA;
3.如2楼所说,看是否有外键约束,否则你是删不掉的
首先要有删除该表的权限,然后楼上的正解!
drop table 表名
如果怕有约束可用
drop table 表名 cascade
drop table 'tablename'
oracle中删除一个表的语句如下:首先你有drop的权限。
drop table 用户表明 ;
举例 :drop table scott.tableA。
如2楼所说,看是否有外键约束,否则你是删不掉的。
Oracle性能优化:droptable与dbcache
们都知道drop table truncate table时都会先做一次checkpoint 将被删除对象的脏块写入磁盘
客户有一套系统 Oracle 需要做数据迁移 由于种种原因 采用的是逻辑迁移的方式 由于库比较大 超过了 T 而停机时间又有限 因此在正式迁移之前需要做大量的测试 测试的目的 一方面是看迁移流程上是否存在问题 另一方面是看迁移的时候 哪个地方会存在性能瓶颈 并进行优化 同时估算实施迁移时间
第一次测试后 需要把测试产生的大量用户及其对象全部删除 删除用的是drop user username cascade 不幸的是这种方式删除得相当地慢 一个 多个表的用户 删除了 个半小时才删除了 多个表 为什么这么慢?有没有办法提高速度?
drop table既然要做checkpoint 那么在db cache非常大的情况下 这需要消耗的时间是比较长的 如果能够减少这个时间无疑将大幅提高速度 首先尝试做一次checkpoint 将buffer cache全部刷新出去
view plaincopy to clipboardprint?
alter system checkpoint;
alter session set events immediate trace name flush_cache level ;
alter system checkpoint;
alter session set events immediate trace name flush_cache level ;
发现没什么效果
由于db_cache_size有 GB左右 db_keep_cache_size有 G左右 重新设置参数 将db_keep_cache_size设为 将db_cache_size设为 M 重启一下数据库 重新执行删除用户的操作 操作很快完成
lishixinzhi/Article/program/Oracle/201311/17079
oracle中如何删除所有表
ORACLE删除当前用户下所有的表的方法
1、如果有删除用户的权限,则可以:
drop user user_name cascade;
加了cascade就可以把用户连带的数据全部删掉。
删除后再创建该用户。
--创建管理员用户
create user 用户名 identified by 密码 default tablespace space_data(表空间名称) temporary tablespace space_temp(临时表空间名称);
--授权
grant connect,dba to 用户名;
--修改限额
ALTER USER "用户名" QUOTA UNLIMITED ON SPACE_DATA(表空间名称);
--查看所有用户对象
select uo.object_name,uo.object_type from user_objects uo where uo.object_type<>'LOB' order by uo.object_type desc
2、如果没有删除用户的权限,则可以执行:
select 'drop table '||table_name||';'
from cat
where table_type='TABLE'
将会输出一批删除表的sql语句,这些SQL语句执行一下就可以了。(需要有drop table的权限)
先说不用sql,下载一个工具,toad 8或9都行,就是蛤蟆头的那个工具,可以用它来访问oracle,找到用户,在找到表删除就行了。
再说用sql的,先登录的kss用户下,
sql>select * from tab; --找到用户下的所有表
sql>drop table ***; --用drop 命令一个个删除即可。
要用dmp导入,一定要删干净,否则导入时会报错
要保持原表空间不变,只要用原用户imp即可,当然导出文件也要是原表空间的。
删除scott下表:
scott@ORCL>select 'drop table '||table_name||' cascade'||';' from user_tables;
'DROPTABLE'||TABLE_NAME||'CASCADE'||';'
--------------------------------------------------
drop table DEPT cascade;
drop table T cascade;
drop table PLSQL_PROFILER_RUNS cascade;
drop table PLSQL_PROFILER_UNITS cascade;
drop table PLSQL_PROFILER_DATA cascade;
drop table DISK_CONN cascade;
drop table EMP cascade;
drop table TEST1 cascade;
drop table SYS_TEMP_FBT cascade;
drop table TEST cascade;
已选择10行。
剩下的就是复制粘帖语句了,但是如果有参照完整性的表可以特殊处理。
你可以select 'drop table '||table_name||' purge;' from user_tables;
执行出结果,然后复制结构,批量的执行就可以了。
如果是你imp导入的话,现存的表结构如果一样的话,可以用ignore参数的,指定忽略已经存在的对象。
我用的是PL/SQL,不知道你们用啥,告诉你们哈,注意听了:左边,选中My objects,找到Tables,看到N张表,鼠标单击第一个,按住shift,到最后一个,右击drop即可!
1、如果想要删除相应的表格,那么首先要知道表格位于那个数据库,这样才可以进行删除。
2、然后需要打开数据库,你会看到数据库内有很多表格。
3、往下拉,我们自己新建的表格一般都是位于最末端,找到表格右击。
4、右击选择“表”你会看到侧边栏会弹出“删除”点击他。
5、这时会提示你是否删除表格,如果想要彻底删除表格,那么必须要将约束条件和清除√这样才会删除的更彻底。
cascade constraints 是什么意思?
使用cascade constraint在删除列的同时删除约束。例如主键约束等等。
利用Drop table cascade constraints可以以删除关联table t的constraint来达成你drop table t的目的,原来属于t1的foreign key constraint已经跟随着被删除掉了,但是,储存在table t1的资料可不会被删除,也就是说Drop table cascade constraints 是不影响到存储于objec里的row data。
对基本表S,执行操作DROP TABLE S RESTRICT的作用是
DROP TABLE — 从数据库中删除一个表
SQL92 为 DROP TABLE 声明了一些附加的功能:
RESTRICT
确保只有不存在相关视图或完整性约束的表才可以被删除.
CASCADE
任何引用的视图或完整性约束都将被删除
在 oracle中怎么删除有主外键关系的表
先删子表后删父表,如果两张表相互有主外键约束,drop table tablename cascade constraints即可
alter table 表名 drop constraint 外键名
drop table 表名
先取消子表主键试试
先删除子表再删除主表.
如果是单方向的外键关联的时候:先删子表,然后删父表就可实现了。命令为:drop table tablename;
如果两张表相互有主外键约束命令为”drop table tablename cascade constraints“。只删除其中的一个即可完成两张表的同时删除。