日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle删除pk+cascade,Oracle删除表

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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語句從數據庫中刪除表。

¥ 我要打賞?? 糾錯/補充 收藏

總結

以上是生活随笔為你收集整理的Oracle删除pk+cascade,Oracle删除表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。