Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara menjatuhkan tabel di oracle

  • TABEL DROP perintah oracle digunakan untuk menghapus tabel dari database.
  • Tabel yang dijatuhkan dan datanya tetap tidak tersedia lagi untuk dipilih. Menjatuhkan tabel menjatuhkan indeks dan memicu yang terkait dengannya.
  • Oracle Views, sinonim tidak dihapus tetapi menjadi tidak valid
  • Tabel yang dijatuhkan dapat dipulihkan menggunakan utilitas FLASHBACK, jika tersedia di recycle bin. Fungsionalitas ini tersedia mulai dari 10g dan seterusnya
  • Hanya pembuat  tabel yang dapat menjatuhkan tabel atau   pengguna dengan hak istimewa apa pun  yang dapat melepaskan tabel

Sintaks untuk Drop table oracle

DROP TABLE [TABLE NAME] [PURGE]

Pernyataan di bawah ini akan menghapus tabel dan memasukkannya ke dalam recycle bin.

DROP TABLE TEST;

Pernyataan di bawah ini dapat digunakan untuk mengembalikannya dari recycle bin

FLASHBACK TABLE TEST TO BEFORE DROP;

Pernyataan di bawah ini akan menghapus tabel dan mengeluarkannya dari recycle bin juga.

DROP TABLE TEST PURGE;

Bataskan batasan kaskade tabel

Kita harus Menentukan KENDALA CASCADE untuk menghapus semua batasan integritas referensial yang merujuk ke kunci utama dan unik di tabel yang dijatuhkan. Jika Anda menghilangkan klausa ini, dan batasan integritas referensial seperti itu ada, maka database mengembalikan kesalahan dan tidak menjatuhkan tabel.

CREATE TABLE "EMP"
( "EMPNO" NUMBER(6,0),
"ENAME" VARCHAR2(10),
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0),
CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"),
CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
REFERENCES "DEPT" ("DEPTNO") ENABLE
);
CREATE TABLE "DEPT"
( "DEPTNO" NUMBER(2,0),
"DNAME" VARCHAR2(14),
"LOC" VARCHAR2(13),
CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO")
;
SQL> desc emp
Name Null? Type
----------------------------------------- -------- -----------------------
EMPNO NOT NULL NUMBER(6)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)SQL>
SQL> desc dept
Name Null? Type
----------------------------------------- -------- -----------------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
SQL>
insert into DEPT values(10, 'ACCOUNTING', 'NEW YORK');
insert into dept values(20, 'RESEARCH', 'DALLAS');
insert into dept values(30, 'RESEARCH', 'DELHI');
insert into dept values(40, 'RESEARCH', 'MUMBAI');
insert into emp values( 7698, 'BLAKE', 'MANAGER', 7839, to_date('1-5-2007','dd-mm-yyyy'), 2850, null, 10 );
insert into emp values( 7782, 'CLARK', 'MANAGER', 7839, to_date('9-6-2008','dd-mm-yyyy'), 2450, null, 10 );
insert into emp values( 7788, 'SCOTT', 'ANALYST', 7566, to_date('9-6-2012','dd-mm-yyyy'), 3000, null, 20 );
insert into emp values( 7789, 'TPM', 'ANALYST', 7566, to_date('9-6-2017','dd-mm-yyyy'), 3000, null, null );
insert into emp values( 7560, 'T1OM', 'ANALYST', 7567, to_date('9-7-2017','dd-mm-yyyy'), 4000, null, 20 );
insert into emp values( 7790, 'TOM', 'ANALYST', 7567, to_date('9-7-2017','dd-mm-yyyy'), 4000, null, null );
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7698 BLAKE MANAGER 7839 01-MAY-07 2850 10
7782 CLARK MANAGER 7839 09-JUN-08 2450 10
7788 SCOTT ANALYST 7566 09-JUN-12 3000 20
7789 TPM ANALYST 7566 09-JUN-17 3000
7790 TOM ANALYST 7567 09-JUL-17 4000
4534 xyz 1000 20
4576 abc 1000
7560 T1OM ANALYST 7567 09-JUL-17 4000 20
SQL> drop table dept;
drop table dept
*
ERROR at line 1:
ORA-02449: unique/primary keys in table referenced by foreign keys
SQL>
SQL> drop table dept cascade constraints;
Table dropped.

Cara menghapus beberapa tabel di Oracle

Mungkin ada persyaratan untuk menghapus beberapa tabel dalam satu langkah

begin
execute immediate 'drop table t_name_1';
execute immediate 'drop table t_name_2';
end;

Cara menghapus semua tabel dalam skema

spool drop_table_schema.sql
select 'drop table '||table_name||';'  from user_tables
spool off

@drop_table_schema.sql

Lepaskan tabel jika ada di Oracle

Kami terkadang ingin memeriksa keberadaan tabel untuk menghindari kesalahan dalam kode. Di MySQL, sql server, kami memiliki klausa saat menggunakan pernyataan drop tetapi tidak ada klausa seperti itu di oracle.

Kita dapat menggunakan blok anonim PLSQL untuk mencapai hal yang sama

DECLARE
count INT; BEGIN
SELECT Count(*)
INTO count
FROM dba_tables
WHERE owner = '<schema name>'
AND table_name = '<table name>'; IF count = 1 THEN
EXECUTE IMMEDIATE 'drop table test';
END IF;
END;

Semoga Anda menyukai konten pada pernyataan tabel drop di Oracle. Tolong beri tahu saya umpan baliknya

Bacaan yang Disarankan

Dokumentasi Oracle
FAQ SQL

Artikel Terkait

Cara memperbarui tabel di oracle:Pernyataan pembaruan di oracle digunakan untuk memodifikasi baris yang ada di tabel oracle. Pembaruan dapat dilakukan dengan berbagai cara
Cara Memotong TABLE di Oracle:Memotong TABLE di Oracle lebih cepat daripada menghapus dari tabel di Oracle. Ini adalah pernyataan DDL dan tidak mengaktifkan pemicu penghapusan
cara menghapus baris di Oracle:Hapus dari tabel di Oracle digunakan untuk menghapus baris. HAPUS baris dapat dilakukan menggunakan klausa EXISTS/NOT EXISTS, tabel berdasarkan subquery, cascade
Alter Table di Oracle
INSERT statement di Oracle
buat sintaks tabel di Oracle
Primary Key di Oracle


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghapus duplikat dari daftar yang dipisahkan koma dengan regex di Oracle tetapi saya tidak ingin nilai duplikat?

  2. pilih dari satu tabel, masukkan ke tabel lain kueri Oracle sql

  3. persyaratan opatch

  4. Bagaimana saya bisa mencantumkan SEMUA hibah yang diterima pengguna?

  5. ScaleGrid Menambahkan Oracle Cloud untuk Hosting Database Terkelola