Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách thả bảng trong oracle

  • BẢNG DROP Lệnh oracle được sử dụng để xóa một bảng khỏi cơ sở dữ liệu.
  • Bảng đã bị loại bỏ và dữ liệu của nó không còn có sẵn để lựa chọn. Việc bỏ qua một bảng sẽ làm giảm chỉ mục và các kích hoạt liên quan đến bảng đó.
  • Chế độ xem Oracle, từ đồng nghĩa không bị loại bỏ nhưng chúng trở nên không hợp lệ
  • Có thể khôi phục bảng đã xóa bằng tiện ích FLASHBACK, nếu có trong thùng rác. Chức năng này khả dụng từ 10g trở đi
  • Chỉ người tạo bảng mới có thể bỏ bảng hoặc người dùng có bất kỳ đặc quyền nào về bảng mới có thể bỏ bảng

Cú pháp cho Drop table oracle

DROP TABLE [TABLE NAME] [PURGE]

Câu lệnh dưới đây sẽ thả bảng và đặt nó vào thùng rác.

DROP TABLE TEST;

Câu lệnh dưới đây có thể được sử dụng để khôi phục nó từ thùng rác

FLASHBACK TABLE TEST TO BEFORE DROP;

Câu lệnh dưới đây sẽ thả bảng và cũng đẩy nó ra khỏi thùng rác.

DROP TABLE TEST PURGE;

Ràng buộc xếp tầng thả bảng

Chúng tôi phải Chỉ định CỨU NẠN CASCADE để loại bỏ tất cả các ràng buộc toàn vẹn tham chiếu tham chiếu đến khóa chính và khóa duy nhất trong bảng đã loại bỏ. Nếu bạn bỏ qua mệnh đề này và tồn tại các ràng buộc toàn vẹn tham chiếu như vậy, thì cơ sở dữ liệu trả về lỗi và không bỏ bảng.

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.

Cách bỏ nhiều bảng trong oracle

Có thể có một yêu cầu để giảm nhiều bảng trong một bước duy nhất

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

Cách bỏ tất cả các bảng trong lược đồ

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

@drop_table_schema.sql

Bỏ bảng nếu tồn tại trong Oracle

Đôi khi chúng tôi muốn kiểm tra sự tồn tại của bảng để tránh tạo ra lỗi trong mã. Trong MySQL, máy chủ sql, chúng ta có mệnh đề tồn tại khi sử dụng câu lệnh drop nhưng không có mệnh đề này trong oracle.

Chúng ta có thể sử dụng khối ẩn danh PLSQL để đạt được điều tương tự

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;

Hy vọng bạn thích nội dung của câu lệnh drop table trong Oracle. Vui lòng cho tôi biết phản hồi

Đọc được đề xuất

Tài liệu Oracle
Câu hỏi thường gặp về SQL

Các bài viết có liên quan

Cách cập nhật bảng trong oracle:Câu lệnh cập nhật trong oracle được sử dụng để sửa đổi các hàng hiện có trong bảng oracle. Bản cập nhật có thể được thực hiện theo nhiều cách
Cách cắt bớt BẢNG trong Oracle:Cắt ngắn BẢNG trong Oracle nhanh hơn việc xóa khỏi bảng trong oracle. Đây là một câu lệnh DDL và nó không kích hoạt trình kích hoạt xóa
cách xóa một hàng trong oracle:Xóa khỏi bảng trong oracle được sử dụng để xóa các hàng. XÓA các hàng có thể được thực hiện bằng mệnh đề EXISTS / NOT EXISTS, bảng dựa trên truy vấn con, phân tầng
Alter Table trong Oracle
câu lệnh INSERT trong Oracle
tạo cú pháp bảng trong oracle
Primary Key trong 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. Làm cách nào để chuyển đổi câu lệnh nối bên ngoài bên trái kế thừa trong Oracle?

  2. Phương pháp thu thập:Thủ tục DELETE trong Cơ sở dữ liệu Oracle

  3. Oracle ODP.Net With Entity Framework 6 - Không thể tìm thấy nhà cung cấp tương thích với cơ sở dữ liệu khung Entity

  4. JDBC Oracle - Tìm nạp giải thích kế hoạch cho truy vấn

  5. Cách tạo thủ tục lưu trữ PL / SQL mà không cần tham số trong cơ sở dữ liệu Oracle