Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment supprimer une table dans Oracle

  • Le TABLEAU DROP La commande oracle est utilisée pour supprimer une table de la base de données.
  • La table supprimée et ses données ne peuvent plus être sélectionnées. La suppression d'une table supprime l'index et les déclencheurs qui lui sont associés.
  • Les vues Oracle, les synonymes ne sont pas supprimés mais deviennent invalides
  • Le tableau supprimé peut être récupéré à l'aide de l'utilitaire FLASHBACK, s'il est disponible dans la corbeille. Cette fonctionnalité est disponible à partir de 10g
  • Seul le créateur du tableau peut supprimer le tableau ou  l'utilisateur disposant du privilège de suppression de n'importe quel tableau peut supprimer le tableau

La syntaxe de Drop table oracle

DROP TABLE [TABLE NAME] [PURGE]

La déclaration ci-dessous supprimera le tableau et le placera dans la corbeille.

DROP TABLE TEST;

La déclaration ci-dessous peut être utilisée pour le restaurer à partir de la corbeille

FLASHBACK TABLE TEST TO BEFORE DROP;

La déclaration ci-dessous supprimera le tableau et le videra également de la corbeille.

DROP TABLE TEST PURGE;

supprimer les contraintes de cascade de table

Nous devons spécifier CASCADE CONSTRAINTS pour supprimer toutes les contraintes d'intégrité référentielle qui font référence aux clés primaires et uniques dans la table supprimée. Si vous omettez cette clause et que de telles contraintes d'intégrité référentielle existent, la base de données renvoie une erreur et ne supprime pas la table.

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.

Comment supprimer plusieurs tables dans oracle

Il peut être nécessaire de supprimer plusieurs tables en une seule étape

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

Comment supprimer toutes les tables du schéma

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

@drop_table_schema.sql

Supprimer la table si elle existe dans Oracle

Nous voulons parfois vérifier l'existence de la table pour éviter de lancer des erreurs dans le code. Dans MySQL, serveur sql, nous avons une clause exists lors de l'utilisation de l'instruction drop mais il n'y a pas une telle clause dans oracle.

Nous pouvons utiliser le bloc anonyme PLSQL pour obtenir la même chose

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;

J'espère que vous aimez le contenu de l'instruction drop table dans Oracle. Merci de me faire part de vos commentaires

Lecture recommandée

Documentation Oracle
FAQ SQL

Articles connexes

Comment mettre à jour une table dans Oracle :une instruction de mise à jour dans Oracle est utilisée pour modifier les lignes existantes dans la table Oracle. La mise à jour peut être exécutée de plusieurs manières
Comment tronquer TABLE dans Oracle :Tronquer TABLE dans Oracle est plus rapide que de supprimer de la table dans Oracle. Il s'agit d'une instruction DDL et elle ne déclenche pas les déclencheurs de suppression
comment supprimer une ligne dans oracle :la suppression de la table dans oracle est utilisée pour supprimer les lignes. Les lignes DELETE peuvent être effectuées à l'aide de la clause EXISTS/NOT EXISTS, table basée sur une sous-requête, cascade
Alter Table dans Oracle
Instruction INSERT dans Oracle
créer une syntaxe de table dans oracle
Clé primaire dans Oracle