Câu lệnh DROP TABLE
trong MySQL được sử dụng để xóa hoàn toàn một hoặc nhiều bảng từ cơ sở dữ liệu. Khi bảng bị xóa, tất cả dữ liệu bên trong bảng cũng sẽ bị xóa vĩnh viễn, và không thể khôi phục được trừ khi có sao lưu dữ liệu.
Trong hướng dẫn này, chúng ta sẽ đi qua chi tiết, cụ thể và tỉ mỉ về câu lệnh DROP TABLE
, từ những minh họa cơ bản đến những ví dụ nâng cao.
employees
Sau khi thực hiện câu lệnh trên, bảng employees
cùng với toàn bộ dữ liệu của nó sẽ bị xóa hoàn toàn khỏi cơ sở dữ liệu.
MySQL cho phép bạn xóa nhiều bảng cùng lúc bằng cách liệt kê tên các bảng, cách nhau bằng dấu phẩy.
employees
Tất cả ba bảng trên sẽ bị xóa khỏi cơ sở dữ liệu sau khi câu lệnh này được thực thi.
Trong một số trường hợp, bảng có thể đã bị xóa trước đó, và việc cố gắng xóa lại sẽ gây ra lỗi. Để tránh lỗi này, bạn có thể sử dụng từ khóa IF EXISTS
, giúp chỉ xóa bảng nếu bảng đó tồn tại.
employees
Nếu bảng employees
không tồn tại, MySQL sẽ không báo lỗi mà chỉ đưa ra một cảnh báo.
Khi bạn xóa một bảng có các khóa ngoại (FOREIGN KEY
) hoặc các mối liên hệ với các bảng khác, bạn cần phải chắc chắn rằng các ràng buộc đó đã được xử lý đúng cách. Thông thường, bạn sẽ cần xóa các khóa ngoại trước khi xóa bảng.
Giả sử bảng employees
có một khóa ngoại tham chiếu đến bảng departments
, bạn cần xóa khóa ngoại này trước khi xóa bảng:
employees
TEMPORARY TABLE
TEMPORARY TABLE
là bảng tạm thời, chỉ tồn tại trong suốt thời gian của phiên làm việc MySQL và sẽ tự động bị xóa khi phiên kết thúc. Tuy nhiên, bạn có thể xóa các bảng tạm thời bằng câu lệnh DROP TABLE
.
temp_employees
Nếu bảng này không phải là bảng tạm thời, bạn sẽ gặp lỗi. Vì vậy, hãy đảm bảo bảng cần xóa là bảng tạm thời.
CASCADE
Trong trường hợp bảng bạn muốn xóa có liên kết với các bảng khác thông qua các khóa ngoại, bạn có thể xóa bảng và tất cả các bản ghi liên quan bằng cách sử dụng ON DELETE CASCADE
khi thiết lập khóa ngoại.
Giả sử bạn có bảng employees
với khóa ngoại department_id
tham chiếu đến bảng departments
. Khi xóa một bảng có khóa ngoại mà không dùng CASCADE
, bạn sẽ gặp lỗi nếu các bản ghi liên quan vẫn còn. Để tránh điều này, khi tạo bảng, bạn có thể dùng tùy chọn ON DELETE CASCADE
:
departments
RESTRICT
khi xóa bảng có khóa ngoạiTùy chọn RESTRICT
ngăn cản việc xóa một bảng nếu có bất kỳ bảng nào khác đang tham chiếu đến nó qua khóa ngoại.
Nếu bảng employees
có khóa ngoại department_id
tham chiếu đến bảng departments
, và bạn cố gắng xóa bảng departments
mà không xóa các bản ghi trong employees
trước, tùy chọn RESTRICT
sẽ ngăn cản việc xóa bảng:
departments
Kết quả: lệnh sẽ không được thực thi nếu có các bản ghi trong bảng employees
phụ thuộc vào department_id
trong departments
.
Khi bảng bị xóa, không gian lưu trữ đã được sử dụng bởi bảng đó sẽ được giải phóng. Tuy nhiên, có những lúc bạn muốn kiểm soát việc giải phóng không gian đĩa ngay lập tức sau khi xóa bảng, đặc biệt khi làm việc với hệ thống lưu trữ lớn.
employees
PARTITIONS
)Nếu bạn sử dụng phân vùng để quản lý dữ liệu lớn, bạn có thể xóa một hoặc nhiều phân vùng thay vì xóa toàn bộ bảng.
Giả sử bảng sales
được phân vùng theo năm, và bạn muốn xóa phân vùng dữ liệu của năm 2020:
VIEW
Nếu bạn xóa bảng employees
:
employee_view
Những ví dụ trên cung cấp đầy đủ các trường hợp sử dụng từ cơ bản đến nâng cao của câu lệnh DROP TABLE
trong MySQL. Khi sử dụng câu lệnh này, bạn cần hết sức cẩn thận vì dữ liệu sẽ bị xóa vĩnh viễn và không thể khôi phục được trừ khi bạn có bản sao lưu.