Bạn có thể xóa
tất cả các hàng của một bảng hoặc tất cả các hàng trong một nhóm các bảng được
phân cụm (Clustered tables, gọi tắt là bảng cụm) sao cho bảng (hoặc cụm) vẫn
tồn tại, nhưng hoàn toàn trống rỗng. Ví dụ, hãy xem xét một bảng chứa dữ
liệu hàng tháng và vào cuối mỗi tháng, bạn phải làm trống nó (xóa tất cả các
hàng) sau khi lưu trữ dữ liệu của nó.
Để xóa tất cả
các hàng khỏi một bảng, bạn có các tùy chọn sau:
- Sử dụng câu lệnh DELETE
- Sử dụng câu lệnh DROP và CREATE.
- Sử dụng câu lệnh TRUNCATE.
Các tùy chọn này
được thảo luận trong các phần sau
Sử dụng DELETE
Bạn có thể xóa các hàng của bảng
bằng cách sử dụng câu lệnh DELETE. Ví dụ: câu lệnh sau sẽ xóa tất cả các hàng
khỏi emp bảng:
DELETE FROM emp;
Nếu có nhiều hàng có trong một
bảng hoặc cụm khi sử dụng câu lệnh DELETE
, tài nguyên hệ thống quan trọng sẽ bị
tiêu tốn khi các hàng bị xóa. Ví dụ: thời gian CPU, không gian redo space
và không gian undo space từ bảng và mọi
chỉ mục liên quan đều yêu cầu tài nguyên. Ngoài ra, khi mỗi hàng bị xóa,
trigger có thể được kích hoạt. Không gian được phân bổ trước đó cho bảng
hoặc cụm trống kết quả vẫn được liên kết với đối tượng đó. Với DELETE bạn có thể
chọn những hàng cần xóa, trong khi đó TRUNCATEvà DROP ảnh hưởng đến toàn bộ đối tượng.
Sử dụng DROP và
CREATE
Bạn có thể drop một bảng và sau
đó tạo lại bảng. Ví dụ: các câu lệnh sau drop và sau đó tạo lại bảng emp :
DROP TABLE emp;
CREATE TABLE emp ( ... );
Khi drop và tạo lại một bảng hoặc cụm, tất cả
các chỉ mục liên quan, các ràng buộc toàn vẹn và các trigger cũng bị loại bỏ và
tất cả các đối tượng phụ thuộc vào bảng bị drop hoặc bảng cụm bị vô
hiệu. Ngoài ra, tất cả các quyền gán cho bảng bị drop hoặc bảng cụm được
loại bỏ.
Sử dụng TRUNCATE
Bạn có thể xóa tất cả các hàng
của bảng bằng cách sử dụng câu lệnh TRUNCATE. Ví dụ: câu lệnh sau truncate bảng emp :
TRUNCATE TABLE emp;
Sử dụng câu lệnh TRUNCATE cung cấp
một phương thức nhanh, hiệu quả để xóa tất cả các hàng khỏi bảng hoặc
cụm. Một câu lệnh TRUNCATE không tạo ra
bất kỳ thông tin undo và nó commit ngay lập tức. Đó là một câu lệnh DDL và
không thể được khôi phục. Một câu lệnh TRUNCATE không ảnh hưởng đến bất
kỳ cấu trúc nào liên quan đến bảng bị truncate (ràng buộc và kích hoạt) hoặc ủy
quyền. Một câu lệnh TRUNCATE cũng xác định xem không gian hiện được phân bổ cho
bảng có được trả về không gian bảng chứa sau khi cắt hay không.
Bạn có thể TRUNCATE bất kỳ bảng
hoặc cụm trong schema của riêng bạn. Bất kỳ người dùng nào có quyền hệ
thống DROP ANY TABLE
đều có thể TRUNCATE một bảng hoặc cụm
trong bất kỳ schema nào.
Trước khi TRUNCATE một bảng hoặc bảng cụm có
chứa khóa cha, tất cả các khóa ngoại tham chiếu trong các bảng khác nhau phải
được tắt. Một ràng buộc bản thân nó không phải bị vô hiệu hóa.
Khi một câu lệnh TRUNCATE xóa các
hàng khỏi một bảng, các trigger được liên kết với bảng sẽ không được kích
hoạt. Ngoài ra, một câu lệnh TRUNCATE không tạo ra bất kỳ thông tin audit tương ứng với
các câu lệnh DELETE nếu kiểm toán
được kích hoạt. Thay vào đó, một bản ghi audit được tạo ra cho câu
lệnh TRUNCATE được ban hành.
Một cụm băm không thể bị
truncate, cũng không thể cắt các bảng trong một cụm băm hoặc chỉ
mục. Truncate một cụm chỉ mục xóa tất cả các hàng từ tất cả các bảng trong
cụm. Nếu tất cả các hàng phải được xóa khỏi một bảng cụm riêng lẻ, hãy sử
dụng câu lệnh DELETE hoặc DROP và tạo lại bảng.
Câu lệnh TRUNCATE có một
số tùy chọn kiểm soát xem không gian hiện được phân bổ cho một bảng hay cụm
được trả vềtablspace chứa sau khi truncate.
Các tùy chọn này cũng áp dụng cho bất kỳ chỉ
mục liên quan. Khi một bảng hoặc cụm bị cắt ngắn, tất cả các chỉ mục liên
quan cũng bị truncate. Các tham số lưu trữ cho một bảng truncate, cụm hoặc
các chỉ mục liên quan không bị thay đổi do truncate.
Các tùy chọn TRUNCATE là:
* DROP STORAGE, tùy chọn mặc định, giảm số lượng
extent được phân bổ cho bảng kết quả về cài đặt gốc cho MINEXTENTS. Các free
extent sau đó được trả về hệ thống và có thể được sử dụng bởi các đối
tượng khác
TRUNCATE TABLE emp DROP STORAGE;
* DROP ALL STORAGE loại bỏ các segment. Ngoài lệnh TRUNCATE TABLE, DROP ALL STORAGE cũng áp dụng cho
câu lệnh ALTER TABLE TRUNCATE (SUB)PARTITION. Tùy chọn này cũng loại bỏ bất kỳ segment phụ
thuộc nào liên quan đến phân vùng bị truncate.
DROP ALL STORAGE không
được hỗ trợ cho các cụm.
(Chức năng này có sẵn với Cơ sở dữ liệu Oracle 11 g phát hành 2 (11.2.0.2))
(Chức năng này có sẵn với Cơ sở dữ liệu Oracle 11 g phát hành 2 (11.2.0.2))
TRUNCATE TABLE emp DROP ALL STORAGE;
* REUSE STORAGE xác định rằng tất cả không gian hiện được phân bổ cho
bảng hoặc cụm vẫn được phân bổ cho nó. Ví dụ: câu lệnh sau cắt ngắn
cụm emp_dept , để lại tất cả các extent được phân bổ trước đó cho cụm
có sẵn cho các lần thêm mới và xóa tiếp theo:
TRUNCATE CLUSTER
emp_dept REUSE STORAGE;
=====================================================================
* Dữ liệu trong thời đại 4.0 là "TRÁI TIM" của doanh nghiệp. Quản
trị cơ sở dữ liệu (Database Administration - DBA) là
ngành có lương cao nhất trong ngành
IT và đầy tiềm năng trong thời đại 4.0. Oracle là cơ sở dữ liệu hàng đầu trên thế giới và được rất nhiều doanh nghiệp lớn trên thế giới và Việt Nam sử dụng.
* Bạn có
mong muốn từng bước
trở thành chuyên
gia DBA không? Nếu câu trả lời là CÓ thì hãy nhanh chóng đăng
ký sở hữu trọn đời
khóa học online "Quản trị cơ sở dữ
liệu cơ bản" của tôi tại
Unica (bạn có thể xem trên điện thoại, máy tính bảng, PC vào bất kỳ lúc nào chỉ cần có mạng Internet). Hiện tại tôi đang khuyến mại cho 100 bạn đăng ký đầu tiên giảm giá từ 2400K còn 799K, CAM KẾT HOÀN TIỀN 100% nếu học xong không có kết quả:
* Môn 1: Quản trị Oracle 12 cơ bản, giảm giá 70% HÔM NAY cho 100 bạn
đầu tiên từ 2tr4 còn
799K theo link: https://bit.ly/3d2ofqZ (khoá này học ở
Oracle hãng là 1.500$), chuyển khoản còn 699K
* Môn 2: Quản trị Linux trong 21h, cũng giảm giá 70% HÔM NAY cho 100 bạn đầu tiên từ 2tr4 còn
799K theo link: https://bit.ly/3e7gwJw, chuyển
khoản còn 699K
* Combo1: Cho 2 khóa học (Quản trị Oracle 12 cơ bản + Quản trị Linux
trong 21h) giá 1.200K chuyển khoản
--> Thông tin TÀI KHOẢN:
- Trần Văn Bình, STK
1920767736012, Ngân hàng Techcombank, chi nhánh Thăng Long
- Nội dung: Tên + (Môn 1 hoặc Môn
2 hoặc Combo) +
Số tiền, sau đó chụp
màn hình
chuyển khoản
gửi về email tranbinh48ca@gmail.com (ví dụ nội dung: TranVanBinh Combo1 1200K, TranVanBinh
Mon1 799K, TranVanBinh Mon2 799K,
=====================================================================