Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да пусна таблица в oracle

  • ТАБЛИЦА ЗА ИЗПАДАНЕ Командата oracle се използва за премахване на таблица от базата данни.
  • Изпуснатата таблица и нейните данни вече не са достъпни за избор. Изтриването на таблица изпуска индекса и задейства свързаните с нея.
  • Oracle Views, синонимите не се отхвърлят, но стават невалидни
  • Изпуснатата таблица може да бъде възстановена с помощта на помощната програма FLASHBACK, ако е налична в кошчето. Тази функционалност е налична от 10 g нататък
  • Само създателят на  таблицата може да пусне таблицата или   потребителят с привилегия за отхвърляне на всяка таблица  може да пусне таблицата

Синтаксисът на Drop table oracle

DROP TABLE [TABLE NAME] [PURGE]

Изявлението по-долу ще пусне таблицата и ще я постави в кошчето.

DROP TABLE TEST;

Изявлението по-долу може да се използва за възстановяването му от кошчето

FLASHBACK TABLE TEST TO BEFORE DROP;

Изявлението по-долу ще изпусне таблицата и ще я изхвърли от кошчето.

DROP TABLE TEST PURGE;

каскадни ограничения за пускане на таблица

Трябва да зададем КАСКАДНИ ОГРАНИЧЕНИЯ, за да премахнем всички ограничения за референтна цялост, които се отнасят до първични и уникални ключове в изпуснатата таблица. Ако пропуснете тази клауза и съществуват такива ограничения за референтна цялост, тогава базата данни връща грешка и не изпуска таблицата.

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.

Как да премахнете няколко таблици в oracle

Може да има изискване за премахване на няколко таблици в една стъпка

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

Как да премахнете всички таблици в схемата

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

@drop_table_schema.sql

Изхвърлете таблицата, ако съществува в Oracle

Понякога искаме да проверим съществуването на таблицата, за да избегнем хвърлянето на грешки в кода. В MySQL, sql сървър, имаме клауза за съществуване, докато използваме оператор drop, но няма такава клауза в oracle.

Можем да използваме PLSQL анонимен блок, за да постигнем същото

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;

Надяваме се, че ви харесва съдържанието на изявлението за падаща таблица в Oracle. Моля, уведомете ме за обратната връзка

Препоръчително четене

Документация на Oracle
ЧЗВ за SQL

Сродни статии

Как да актуализирате таблицата в oracle:Инструкция за актуализиране в oracle се използва за модифициране на съществуващите редове в таблицата на oracle. Актуализацията може да се изпълни по няколко начина
Как да съкратите TABLE в Oracle:Съкращаването на TABLE в Oracle е по-бързо от изтриването от таблицата в Oracle. Това е DDL оператор и не задейства тригерите при изтриване
как да изтриете ред в oracle:Изтриване от таблицата в oracle се използва за изтриване на редовете. DELETE  редовете могат да се извършват с помощта на клауза EXISTS/NOT EXISTS, таблица, базирана на подзаявка, каскада
Промяна на таблица в Oracle
инструкция INSERT в Oracle
създаване на синтаксис на таблица в oracle
първичен ключ в 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. Правилният начин за предоставяне на достъп на потребителите до допълнителни схеми в Oracle

  2. Рекурсивна подзаявка със сортиране

  3. Управляван ODP.NET драйвер не се показва в диалоговия прозорец за източник на данни

  4. Как да инсталирате SQLcl на Mac

  5. Вземете стойност от FieldA, изпратете към функцията db, върнете стойността към FieldB