Oracle資料庫中刪除兩表中相同資料

2021-06-05 22:31:23 字數 1197 閱讀 8001

--問題提出:

--1、在做資料轉儲業務的時候,如果發生操作錯誤,有可能出現主表和副表中都有同一種資料,

--這樣結算的結果就有可能發生錯誤。

--實現方法:

--建表a

create table a (  bm char(4), mc varchar2(20));

--插入a表資料

insert into a values('1111', '1111');

insert into a values('1112', '1111');

insert into a values('1113', '1111');

insert into a values('1114', '1111');

insert into a values('1115','1111');

--建表b(where 1=2只要表結構,不要資料)

create table b

as select * from a where 1=2;

--插入與a表相同的資料

insert into b values('1111','1111');

insert into b values('1112','1111');

insert into b values('1113','1111');

insert into b values('1114','1111');

select *from a

select* from b

delete from a

delete from b

drop table a

drop table b

--方法一

--exists子句:

delete from a where exists (select 1 from b where a.bm=b.bm and a.mc=b.mc);

--刪除4個記錄。

--where條件:如果兩個表中都擁有相同欄位的主鍵(primary key),則只需比較兩個主鍵就可以了。

--方法二

--in子句:

delete from a where (bm,mc) in (select bm,mc from b);

--實際測試結論

--在表不是很大時,用in子句速度還可以忍受,而如果記錄量很多時(十萬條以上),in子句速度很慢。

oracle刪除資料庫中的所有表

連線 1 先禁用資料庫中所有的約束 select alter table table name disable constraint constraint name from user constraints where constraint type r 執行所有約束禁用命令。2 清空所有表中的資...

oracle刪除資料庫中的所有表

連線 1 先禁用資料庫中所有的約束 select alter table table name disable constraint constraint name from user constraints where constraint type r 執行所有約束禁用命令。2 清空所有表中的資...

Oracle 資料庫中的表

oracle 資料庫中的表 使用者定義的表 使用者自己建立並維護的一組表 包含了使用者所需的資訊 資料字典 由oracle server自動建立的一組表 包含資料庫資訊 select table name from user tables select distinct object type fr...