Oracle删除pk+cascade,Oracle删除表

在本教程中,将学习如何使用Oracle DROP TABLE语句删除现有的表。

Oracle DROP TABLE语句简介

要将表移动到回收站或将其从数据库中完全删除,请使用DROP TABLE语句:

DROP TABLE schema_name.table_name [CASCADE CONSTRAINTS | PURGE];

在这个语句中:

首先,指出要在DROP TABLE子句之后删除的表及其模式。如果不明确指定模式名称,则该语句假定将从模式中删除该表。

其次,指定CASCADE CONSTRAINTS子句删除引用表中主键和唯一键的所有参照完整性约束。 如果存在这种引用完整性约束,并且不使用此子句,Oracle将返回错误并停止删除表。

第三,如果想删除表格并且一次释放与之关联的空间,指定PURGE子句。 通过使用PURGE子句,Oracle不会将表及其依赖对象放入回收站。

请注意,PURGE子句不允许您回滚或恢复删除的表。 因此,如果不希望敏感数据出现在回收站中,这很有用。

Oracle DROP TABLE示例

我们来看看使用DROP TABLE语句的一些例子。

1. 基本的Oracle DROP TABLE示例

以下语句为演示创建persons表:

CREATE TABLE persons ( person_id NUMBER, first_name VARCHAR2(50) NOT NULL, last_name VARCHAR2(50) NOT NULL, PRIMARY KEY(person_id) );

以下示例从数据库中删除person表:

DROP TABLE persons;

2. Oracle DROP TABLE CASCADE CONSTRAINTS示例

以下语句创建两个名为brands和cars的新表:

CREATE TABLE brands( brand_id NUMBER PRIMARY KEY, brand_name varchar2(50) ); CREATE TABLE cars( car_id NUMBER PRIMARY KEY, make VARCHAR(50) NOT NULL, model VARCHAR(50) NOT NULL, year NUMBER NOT NULL, plate_number VARCHAR(25), brand_id NUMBER NOT NULL, CONSTRAINT fk_brand FOREIGN KEY (brand_id) REFERENCES brands(brand_id) ON DELETE CASCADE );

在这些表中,每个品牌有一个或更多的汽车,而每辆汽车只有一个品牌。

以下语句尝试删除brands表:

DROP TABLE brands;

Oracle发出以下错误:

ORA-02449: unique/primary keys in table referenced by foreign keys

这是因为brands表的主键当前由cars表中的brand_id列引用。

以下语句返回cars表的所有外键约束:

SELECT a.table_name, a.column_name, a.constraint_name, c.owner, c.r_owner, c_pk.table_name r_table_name, c_pk.constraint_name r_pk FROM all_cons_columns a JOIN all_constraints c ON a.owner = c.owner AND a.constraint_name = c.constraint_name JOIN all_constraints c_pk ON c.r_owner = c_pk.owner AND c.r_constraint_name = c_pk.constraint_name WHERE c.constraint_type = 'R' AND a.table_name = 'CARS';

要删除brands表,必须使用CASCADE CONSTRAINTS子句,如下所示:

DROP TABLE brands CASCADE CONSTRAINTS;

这个语句不仅删除了brands表,而且还删除了cars表中的外键约束fk_brand。

如果再次执行语句以获取cars表中的外键约束,则不会看到任何返回的行。

Oracle DROP TABLE PURGE示例

以下语句使用PURGE子句来删除cars表:

DROP TABLE cars purge;

一次删除多个表

Oracle不提供直接删除多个表的方法。 但是,可以使用以下PL/SQL块来执行此操作:

BEGIN FOR rec IN ( SELECT table_name FROM all_tables WHERE table_name LIKE 'TEST_%' ) LOOP EXECUTE immediate 'DROP TABLE '||rec.table_name || ' CASCADE CONSTRAINTS' END LOOP; END; /

该PL/SQL块将删除名称以TEST_开头的所有表。

要测试此代码,可以先创建三个表:test_1,test_2和test_3,如下所示:

CREATE TABLE test_1(c1 VARCHAR2(50)); CREATE TABLE test_2(c1 VARCHAR2(50)); CREATE TABLE test_3(c1 VARCHAR2(50));

然后,执行上面的PL/SQL块。应该看可以看到,上面创建的三个表均被删除了。

在本教程中,您已学习如何使用Oracle DROP TABLE语句从数据库中删除表。

¥ 我要打赏   纠错/补充 收藏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

L2-005 集合相似度 (25 分)

L2-005 集合相似度 (25 分) 给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ 100%。其中N ​c ​​ 是两个集合都有的不相等整数的个数,N ​t ​​ 是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似…

oracle有sysdata,Oracle基础

1、默认事例:用户名:scott密码:tiger 主机字符串:本机可以为空2、启动方法:运行:sqlplusscott/tigerlhd3、SQLPLUS基本命令:Desc:显示表、视图结构 desc 表名,视图List&…

selenium+java初级学习笔记之单个元素定位

元素定位可以大概分为八重一般情况下常用的就是by.id、by.name、by.classname,如果需要定位的元素中没有这几个可以选择其他方式的定位:By.id(id) //(有时元素中id是会变化的,可以刷新页面,如果发现每次的id都不一样则…

L2-004 这是二叉搜索树吗? (25 分)

L2-004 这是二叉搜索树吗? (25 分) 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值; 其右子树中所有结点的键值大于等于该结点的键值; 其左右子树都是…

Linux高频命令汇总,Linux高频命令

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?findfind path [options] params作用:在指定目录下查找文件1234find / -name "target.java" #在根目录下查找target.java文件find -name &qu…

深入理解javascript函数参数

arguments javascript对参数要求很随意,她才不管你传进来的参数是什么数据类型,甚至可以不传参数。实际上,javascript函数调用甚至不检查传入形参的个数。 1 function add(x){ 2 return x 1; 3 } 4 console.log(add(1))…

linux系统时间函数,Linux时间时区详解与常用时间函数

时间与时区整个地球分为二十四时区,每个时区都有自己的本地时间。UTC时间 与 GMT时间我们可以认为格林威治时间就是时间协调时间(GMT UTC),格林威治时间和UTC时间都用秒数来计算的。UTC时间与本地时间UTC 时区差 本地时间时区差东为正,西为…

7-5 汉诺塔的非递归实现 (25 分)

7-5 汉诺塔的非递归实现 (25 分) 借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱&…

js 异步问题

如果发现前端的异步请求,network有发送成功而且有返回值,但是没有进前端的callback成功回掉函数内,这时候就需要检查是不是配置文件做了语法限制,只能返回某些数据格式,不能返回某些数据格式。 一般限制最多的就是后端…

海康、大华IPC的rtsp格式

海康:  rtsp://[username]:[password][ip]:[port]/[codec]/[channel]/[subtype]/av_stream说明:username: 用户名。例如admin。password: 密码。例如12345。ip: 为设备IP。例如 192.0.0.64。port: 端口号默认为554,若为默认可不填写。codec…

linux awr 日志,Linux平台生成awr报告

1.使用Oracle用户登录应用服务器所使用的数据库所在的服务器# su –oracle2.输入env命令,查询出ORACLE_HOME 目录3.然后进入$ORACLE_HOME/rdbms/admin目录,查询awr语句(此步骤可以忽略)此处可以直接省略2,3…

利用一维数组输出杨辉三角

直接上代码&#xff1a; package hello;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int n in.nextInt();int table [] new int [n1];table[0] 1;for (int i1;i<n;i) {for (int j0;j<…

缓存(Cache)管理 ---- 系列文章

利用Cache防止同一帐号重复登录.net中Cache管理操作系统缓存全解析 (下)系统缓存全解析 (中)系统缓存全解析 (上)出处&#xff1a;http://www.cnblogs.com/luckdv/tag/%E7%BC%93%E5%AD%98/转载于:https://www.cnblogs.com/mq0036/p/7291955.html

找到一个二位数组的鞍点

上代码&#xff1a; package hello;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int mat[][] new int[3][3];for (int i0;i<3;i) {for (int j0;j<3;j) {mat[i][j] in.nextInt();}}bool…

linux 文件按时间 函数,[Linux文件属性]使用utime函数操作文件的时间参数

//这是一个使用utime函数对文件的时间参数进行修改的实例//文件首先使用stat函数获得文件当前的时间参数&#xff0c;然后使用//Open函数对文件进行修改&#xff0c;再用utime函数对文件的时间信息//进行修改.文件名由argv参数给出#include #include #include int main(int arg…

HDU 1159 Common Subsequence 动态规划

2017-08-06 15:41:04 writer&#xff1a;pprp 刚开始学dp&#xff0c;集训的讲的很难&#xff0c;但是还是得自己看&#xff0c;从简单到难&#xff0c;慢慢来&#xff08;如果哪里有错误欢迎各位大佬指正&#xff09; 题意如下&#xff1a; 给两个字符串&#xff0c;找到其中大…

用类,求三个数的最大数

上代码&#xff1a; package hello;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int a,b,c;a in.nextInt();b in.nextInt();c in.nextInt();int num max(a,b,c);System.out.println("…

【Xmail】使用Xmail搭建局域网邮件服务器

下载地址&#xff1a; http://www.xmailserver.org/xmail-1.27.win32bin.zip&#xff0c;当前最新版本 1.27。 解压文件&#xff1a;xmail-1.27.win32bin.zip 1、把其中的 MailRoot 目录拷贝到 C:\&#xff1b; 2、把 C:\xmail-1.27.win32bin\xmail-1.27 目录下的所有文件&am…

linux ntfs硬盘自动挂,linux下查看所有硬盘分区+挂接NTFS磁盘/硬盘+自动挂接硬盘方法...

基本上所有Linux 发行版在启动系统时都是根据/etc/fstab文件的配置来挂载分区的。在/etc/fstab中&#xff0c;根据不同格式的分区&#xff0c;其挂载参数也不同&#xff0c;参数不同其结果不同&#xff0c;包括用户的读写权限&#xff0c;下面一一说来。1、对于fat32格式分区&a…

uploadify 配置后,页面显示无效果

uploadify使用的是Flash版本 谷歌浏览器&#xff1a;默认没有开启Flash&#xff0c;进行如下图设置即可 转载于:https://www.cnblogs.com/daryl/p/7299471.html