Câu lệnh ALTER TABLE trong MySQL được sử dụng để thay đổi cấu trúc của một bảng hiện có mà không cần xóa và tạo lại bảng. Các thay đổi có thể bao gồm thêm cột mới, thay đổi kiểu dữ liệu, thêm hoặc xóa các ràng buộc, và nhiều hơn nữa. Hướng dẫn này sẽ bao gồm từ cơ bản đến nâng cao với các minh họa chi tiết về câu lệnh ALTER TABLE.


1. Thêm cột mới vào bảng

Cú pháp cơ bản:

employees

Bây giờ bạn muốn thêm cột email vào bảng employees:

address

3. Xóa cột khỏi bảng

Cú pháp:

address

4. Đổi tên cột

Cú pháp:

phone_number

5. Thay đổi kiểu dữ liệu của cột

Cú pháp:

contact_number

6. Đổi tên bảng

Cú pháp:

employees

7. Thêm ràng buộc FOREIGN KEY

Cú pháp:

departments

Thêm khóa ngoại department_id vào bảng employees, tham chiếu đến bảng departments:

FOREIGN KEY

Ví dụ:

Xóa ràng buộc khóa ngoại fk_department khỏi bảng employees:

INDEX

Ví dụ:

Thêm chỉ mục (INDEX) cho cột email để cải thiện tốc độ truy vấn:

INDEX

Ví dụ:

Xóa chỉ mục idx_email khỏi bảng employees:

UNIQUE INDEX

Ví dụ:

Đảm bảo rằng giá trị của cột email là duy nhất:

PRIMARY KEY
  • Xóa PRIMARY KEY:
PRIMARY KEY
  • Xóa khóa chính PRIMARY KEY:
DEFAULT

Ví dụ:

Thêm cột status với giá trị mặc định là 'active':

status

15. Xóa giá trị mặc định của cột

Cú pháp:

status

16. Tạo và xóa cột ảo (VIRTUAL)

Cột ảo trong MySQL là cột mà giá trị của nó được tính toán từ các cột khác trong bảng.

Cú pháp tạo cột ảo:

full_name

Cú pháp xóa cột ảo:

JSON

Ví dụ:

Thêm cột extra_data kiểu dữ liệu JSON để lưu trữ các thông tin bổ sung:

ENGINE

Ví dụ:

Thay đổi loại ENGINE của bảng từ InnoDB sang MyISAM:

PARTITIONING

Xóa phân vùng:

ALTER TABLE

Ví dụ:

Giả sử cột id trong bảng employees hiện không phải là AUTO_INCREMENT. Bây giờ, bạn muốn thay đổi nó thành tự động tăng:

CHECK

Ví dụ:

Thêm một ràng buộc CHECK để đảm bảo rằng tuổi của nhân viên phải lớn hơn 18:

CHECK

Ví dụ:

FOREIGN KEY

24. Thay đổi vị trí cột trong bảng

MySQL cho phép bạn thay đổi vị trí của các cột trong bảng, điều này có thể hữu ích trong việc sắp xếp lại cấu trúc bảng cho dễ đọc hơn.

Cú pháp:

email

Nếu bạn muốn di chuyển cột email lên đầu bảng, bạn có thể sử dụng từ khóa FIRST:

HASH

Ví dụ:

Phân vùng bảng employees theo id thành 4 phân vùng:

LIST

Ví dụ:

Phân vùng bảng employees dựa trên giá trị của cột country:

ROW_FORMAT

Ví dụ:

Chuyển bảng employees sang sử dụng định dạng lưu trữ COMPRESSED để tiết kiệm dung lượng:

UNIQUE

Ví dụ:

Thêm ràng buộc UNIQUE cho cột emaildepartment_id trong bảng employees:

ON DELETE CASCADE

Ví dụ:

Thêm khóa ngoại department_id vào bảng employees, với hành vi ON DELETE CASCADE:

TABLESPACE

Ví dụ:

Chuyển bảng employees sang sử dụng TABLESPACE khác:

ALTER TABLE employees
TABLESPACE my_tablespace STORAGE DISK;

Những ví dụ nâng cao này giúp bạn nắm vững các tính năng mạnh mẽ của câu lệnh ALTER TABLE trong MySQL. Khi quản lý các bảng lớn và phức tạp, bạn có thể tận dụng các tính năng này để tối ưu hóa hiệu suất và quản lý dữ liệu một cách hiệu quả hơn.