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.


1. Xóa một bảng duy nhất

Cú pháp:

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.


2. Xóa nhiều bảng cùng lúc

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.

Cú pháp:

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.


3. Xóa bảng nếu tồn tại

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.

Cú pháp:

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.


4. Xóa bảng cùng với ràng buộc liên quan

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.

Ví dụ:

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

5. Xóa bảng liên kết với 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.

Cú pháp:

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.


6. Xóa bảng liên kết với khóa ngoạ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.

Ví dụ:

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

7. Sử dụng RESTRICT khi xóa bảng có khóa ngoại

Tù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.

Ví dụ:

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.


8. Xóa bảng và giải phóng tài nguyên ngay lập tức

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.

Cú pháp:

employees

9. Xóa bảng với phân vùng dữ liệu (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.

Ví dụ:

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.