Khi thiết kế cơ sở dữ liệu, đôi khi bạn không thể đoán trước được tất cả các yêu cầu ngay từ đầu. Một bảng đã tạo ra có thể cần được thay đổi – thêm một cột mới, đổi tên cột, thay đổi kiểu dữ liệu, hoặc xóa bỏ một thành phần nào đó. Đó là lúc chúng ta cần đến câu lệnh ALTER TABLE
.
Hãy tưởng tượng bạn đã xây xong ngôi nhà – nhưng sau đó muốn thêm một căn phòng, đổi màu tường, hoặc gỡ bỏ cửa sổ. Câu lệnh ALTER TABLE
chính là công cụ giúp bạn “cải tạo” bảng dữ liệu tương tự như vậy.
Mục tiêu bài học
- Hiểu cách dùng
ALTER TABLE
để thay đổi cấu trúc bảng - Nắm được các thao tác phổ biến: thêm cột, đổi tên cột, đổi kiểu dữ liệu, xóa cột
- Biết cách áp dụng vào tình huống thực tế
Cú pháp cơ bản của ALTER TABLE
ALTER TABLE ten_bang
THAO_TAC;
Trong đó, THAO_TAC là hành động bạn muốn thực hiện trên bảng.
Thêm cột mới vào bảng
Giả sử bạn có bảng sinh_vien
, và bạn muốn thêm cột email
kiểu VARCHAR(100)
:
ALTER TABLE sinh_vien
ADD email VARCHAR(100);
Bạn có thể thêm nhiều cột cùng lúc:
ALTER TABLE sinh_vien
ADD (
dia_chi VARCHAR(255),
so_dien_thoai VARCHAR(20)
);
Đổi tên cột (MySQL 8+)
Nếu bạn muốn đổi tên cột ten_sv
thành ho_ten
, bạn có thể dùng:
ALTER TABLE sinh_vien
RENAME COLUMN ten_sv TO ho_ten;
Đổi kiểu dữ liệu của cột
Ví dụ: bạn muốn cột so_dien_thoai
từ VARCHAR(20)
sang VARCHAR(15)
:
ALTER TABLE sinh_vien
MODIFY so_dien_thoai VARCHAR(15);
Lưu ý: Một số phiên bản MySQL còn dùng CHANGE
thay cho MODIFY
khi muốn vừa đổi kiểu, vừa đổi tên:
ALTER TABLE sinh_vien
CHANGE so_dien_thoai so_dt VARCHAR(15);
Xóa cột khỏi bảng
Nếu một cột không còn cần thiết nữa:
ALTER TABLE sinh_vien
DROP COLUMN dia_chi;
Hãy cẩn thận với thao tác này, vì dữ liệu trong cột đó sẽ bị mất vĩnh viễn!
Đổi tên bảng
Để đổi tên toàn bộ bảng:
RENAME TABLE sinh_vien TO danh_sach_sv;
Hoặc:
ALTER TABLE sinh_vien
RENAME TO danh_sach_sv;
7. Một vài lưu ý thực tế
- Nên sao lưu dữ liệu trước khi thay đổi cấu trúc bảng, đặc biệt trên hệ thống đang vận hành.
- Tránh sửa đổi bảng khi đang có người dùng truy cập để không gây gián đoạn.
- Với các hệ thống lớn, hãy kiểm tra tương thích giữa các bảng nếu bạn thay đổi tên hoặc loại bỏ cột khóa ngoại.
Ôn lại nhanh
Mục đích | Câu lệnh mẫu |
---|---|
Thêm cột mới | ALTER TABLE ten_bang ADD ten_cot KIEU_DU_LIEU; |
Đổi tên cột | RENAME COLUMN ten_cu TO ten_moi; |
Đổi kiểu dữ liệu | MODIFY ten_cot KIEU_MOI; |
Xóa cột | DROP COLUMN ten_cot; |
Đổi tên bảng | RENAME TO ten_bang_moi; |
Bài tập thực hành
- Tạo bảng
khoa_hoc
với các cộtid
,ten_khoa_hoc
- Thêm cột
mo_ta
kiểuTEXT
- Đổi tên cột
ten_khoa_hoc
thànhtieu_de
- Thay đổi kiểu của
mo_ta
thànhVARCHAR(255)
- Xóa cột
mo_ta
Trong bài tiếp theo, chúng ta sẽ học một công cụ cực kỳ quan trọng giúp tăng tốc độ truy vấn trong cơ sở dữ liệu – Index. Bạn sẽ thấy khi nào nên dùng, và khi nào không nên dùng để tránh làm hệ thống chậm đi.
Thảo luận