Chúng ta thường cần bỏ cột trong bảng. Có hai cách để thả cột trong Oracle
(a) thay đổi cột thả bảng trong oracle
(b) thay đổi bảng đặt cột không sử dụng trong oracle
DROP COLUMN bằng DROP COLUMN
Ở đây, chúng tôi thả cột khỏi bảng bằng lệnh dưới đây .
ALTER TABLE table_name DROP COLUMN col_name;
Câu lệnh này có khóa riêng trên bảng và nếu bảng lớn, sẽ mất thời gian để thực hiện truy vấn
Ví dụ
SQL> CREATE TABLE Books_master ( Book_Id NUMBER(6,0), Title VARCHAR2(50), Author VARCHAR2(50), ISBN VARCHAR2(25), BCost NUMBER(6,0), Publish_Year NUMBER(4,0), CONSTRAINT Books_master_PK PRIMARY KEY (Book_Id), CONSTRAINT Books_master_UK1 UNIQUE (Title, Author), CONSTRAINT Books_master_UK2 UNIQUE (ISBN) ) ; Table created. SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (10, 'Complete/Convenient', 'Ketan Bhagat', 'ISBN 978-93-80349-92-3', 195, 2013); SQL>INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (20, 'Deception Point', 'Dan Brown', 'ISBN 0-671-02738-7', 563,2001); SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (30, 'Angels-Demons', 'Dan Brown', 'ISBN 0-671-02736-0',563, 2000); SQL>INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (40, 'Harry Potter', 'J.K. Rowling', 'ISBN 0-7475-5100-6', 102,2003); SQL> commit; Commit complete. SQL> column TITLE format a10 SQL> column AUTHOR format a10 SQL> column ISBN format a15
SQL > Desc BOOKS_MASTER
Cho phép thả một cột khỏi bảng này
SQL> alter table books_master drop column PUBLISH_YEAR; Table altered. SQL > Desc BOOKS_MASTER
SQL> Select * from Books_master;
DROP COLUMN bằng SET UNUSED
- nếu bạn lo lắng về tài nguyên bị tiêu tốn khi giảm cột, bạn có thể sử dụng câu lệnh ALTER TABLE… SET UNUSED.
- Câu lệnh này đánh dấu một hoặc nhiều cột là không được sử dụng nhưng không thực sự xóa dữ liệu cột đích hoặc khôi phục dung lượng đĩa bị chiếm bởi các cột này.
- Một cột được đánh dấu là không sử dụng sẽ không được hiển thị trong truy vấn hoặc chế độ xem từ điển dữ liệu và tên của nó bị xóa để một cột mới có thể sử dụng lại tên đó. Tất cả các ràng buộc, chỉ mục và thống kê được xác định trên cột cũng bị xóa.
Cú pháp
ALTER TABLE
SET UNUSED COLUMN
Chúng ta có thể loại bỏ cột không sử dụng sau này khi tài nguyên thấp hơn bằng cách sử dụng lệnh
ALTER TABLE
Thả các CỘT CHƯA CÓ;
Nếu bạn có các bảng lớn, bạn có thể giảm số lượng nhật ký hoàn tác được tích lũy bằng cách sử dụng tùy chọn CHECKPOINT, buộc một điểm kiểm tra sau khi số hàng được chỉ định đã được xử lý. Kiểm tra cắt giảm lượng nhật ký hoàn tác được tích lũy trong hoạt động cột thả để tránh tình trạng cạn kiệt dung lượng hoàn tác có thể xảy ra.
ALTER TABLE table_name DROP UNUSED COLUMNS CHECKPOINT 500;
- Nếu bạn đã sử dụng cú pháp điểm kiểm tra với lệnh thả thì bạn có thể kết thúc phiên (hoặc tắt cơ sở dữ liệu) khi đang thả.
- Bảng sẽ không có sẵn cho DML hoặc truy vấn
- bạn có thể kết thúc lệnh "thả cột" bằng tùy chọn "tiếp tục" (với một điểm kiểm tra tùy chọn).
alter table drop columns continue checkpoint; alter table drop columns continue checkpoint 5000;
Ví dụ
hãy tiếp tục với bảng đã tạo trước đó
SQL> alter table books_master set unused column ISBN; Table altered. SQL> desc books_master
SQL> Select * from Books_master;
Chúng tôi có thể kiểm tra số lượng cột không sử dụng bằng cách truy vấn chế độ xem bên dưới USER_UNUSED_COL_TABS, ALL_UNUSED_COL_TABS hoặc DBA_UNUSED_COL_TABS
SQL> select * from DBA_UNUSED_COL_TABS where TABLE_NAME='BOOKS_MASTER';
Bây giờ bạn có thể giảm cột trong khoảng thời gian hoạt động thấp
SQL> alter table Books_master drop unused columns; Table altered. SQL> select * from DBA_UNUSED_COL_TABS where TABLE_NAME='BOOKS_MASTER'; no rows selected
Cách thả nhiều cột
Chúng tôi có thể chỉ định nhiều cột trong khi thả lệnh
SQL> alter table books_master drop (AUTHOR,TITLE); Table altered.
Hy vọng bạn thích bài đăng trên cột thả bảng thay đổi trong oracle. Vui lòng cung cấp phản hồi
Cũng đã đọc
Khóa chính Oracle
thay đổi bảng di chuyển
thay đổi cột đổi tên bảng trong oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006. htm