sql >> Database teknologi >  >> RDS >> Oracle

Sådan falder du bordet i oracle

  • Den SLIPTABEL oracle kommando bruges til at fjerne en tabel fra databasen.
  • Den slettede tabel og dens data forbliver ikke længere tilgængelige for valg. Hvis du sletter en tabel, slettes indekset og udløsere, der er knyttet til det.
  • Oracle Views, synonymer slettes ikke, men de bliver ugyldige
  • Den tabte tabel kan gendannes ved hjælp af FLASHBACK-værktøjet, hvis det er tilgængeligt i papirkurven. Denne funktionalitet er tilgængelig fra 10g og opefter
  • Kun skaberen af tabellen kan droppe tabellen, eller   brugeren med slip ethvert bordprivilegium kan droppe tabellen

Syntaksen for Drop table oracle

DROP TABLE [TABLE NAME] [PURGE]

Nedenstående erklæring vil tabe bordet og lægge det i papirkurven.

DROP TABLE TEST;

Nedenstående erklæring kan bruges til at gendanne den fra papirkurven

FLASHBACK TABLE TEST TO BEFORE DROP;

Nedenstående erklæring vil tabe bordet og skylle det ud af papirkurven også.

DROP TABLE TEST PURGE;

drop-tabel kaskadebegrænsninger

Vi er nødt til at specificere CASCADE CONSTRAINTS for at slette alle referenceintegritetsbegrænsninger, der refererer til primære og unikke nøgler i den tabte tabel. Hvis du udelader denne klausul, og der findes sådanne referenceintegritetsbegrænsninger, returnerer databasen en fejl og taber ikke tabellen.

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.

Sådan slipper du flere tabeller i Oracle

Der kan være et krav om at droppe flere tabeller i et enkelt trin

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

Sådan slipper du alle tabellerne i skemaet

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

@drop_table_schema.sql

Slip tabel, hvis den findes i Oracle

Vi ønsker nogle gange at tjekke tabellens eksistens for at undgå at smide fejl i koden. I MySQL, sql server, har vi exists-klausul, mens vi bruger drop-sætning, men der er ingen sådan klausul i Oracle.

Vi kan bruge PLSQL anonym blok til at opnå det samme

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;

Håber du kan lide indholdet på drop table-erklæringen i Oracle. Giv mig venligst feedback

Anbefalet læsning

Oracle-dokumentation
Ofte stillede spørgsmål om SQL

Relaterede artikler

Sådan opdateres tabel i Oracle:En opdateringssætning i Oracle bruges til at ændre de eksisterende rækker i Oracle-tabellen. Opdateringen kan udføres på flere måder
Sådan afkortes TABLE i Oracle:Truncate TABLE i Oracle er hurtigere end at slette fra tabellen i Oracle. Det er en DDL-sætning, og den udløser ikke ved slette-triggere
hvordan man sletter en række i Oracle:Slet fra tabellen i Oracle bruges til at slette rækkerne. DELETE  rækker kan udføres ved hjælp af EXISTS/NOT EXISTS-sætning, tabel baseret på en underforespørgsel, kaskade
Alter Table i Oracle
INSERT-sætning i Oracle
opret tabelsyntaks i Oracle
Primærnøgle i Oracle


  1. Introduktion til SQL Joins

  2. Postgresql :Forbindelse nægtet. Kontroller, at værtsnavnet og porten er korrekte, og at postmasteren accepterer TCP/IP-forbindelser

  3. De brugte SELECT-sætninger har et andet antal kolonner (REDUX!!)

  4. Hvordan kan jeg eksportere indholdet af en oracle-tabel til en fil?