Câu lệnh ALTER TABLE trong MySQL
Trần Thị Vân
- 1161
- 16/08/2025
Chức năng của Câu lệnh ALTER TABLE trong MySQL
Câu lệnh ALTER TABLE trong MySQL dùng để thêm cột, xóa cột, đổi tên cột, đổi kiểu dữ liệu cột trong bảng, ngoài ra còn đổi được tên bảng.
Các loại Câu lệnh ALTER TABLE trong MySQL
ALTER TABLE thêm cột trong MySQL
ALTER TABLE tb_nhanvien ADD COLUMN chucvu VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL;
// Thêm cột chức vụ có kiểu dữ liệu varchar giới hạn 255 ký tự, xét chữ utf-8, cho phép NULL.
<?php
$dbhost = 'localhost';
$dbuser = 'webmoi_userdata'; // Tên username
$dbpass = 'xgZwEfQWE'; // Mật khẩu
// Kết nối đến tên username
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Không kết nối được: ' . mysql_error());
}
// Chọn tên database
mysql_select_db('webmoi_tendata');
// Xét kiểu tiếng việt
mysql_query('SET NAMES "utf8"');
// ALTER TABLE thêm cột
echo "<b>ALTER TABLE thêm cột</b><br>";
$sql ="ALTER TABLE tb_nhanvien ADD COLUMN chucvu VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL";// Thêm cột chức vụ có kiểu dữ liệu varchar giới hạn 255 ký tự, xét chữ utf-8, cho phép NULL.
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể thêm cột trên table tb_nhanvien: ' . mysql_error());
}else{
echo "Thêm cột chucvu trên tb_nhanvien thành công!";
}
echo "<br>";
$sql ="ALTER TABLE tb_nhanvien ADD COLUMN ngaytao int(11) DEFAULT 0"; // Thêm cột ngaytao kiểu int, giới hạn 11 ký tự, mặc định là 0
$ketquahai = mysql_query($sql,$conn);
if(!$ketquahai){
die('Không thể thêm cột trên table tb_nhanvien: ' . mysql_error());
}else{
echo "Thêm cột ngaytao trên tb_nhanvien thành công!";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
ALTER TABLE thêm cột
Thêm cột chucvu trên tb_nhanvien thành công!
Thêm cột ngaytao trên tb_nhanvien thành công!
ALTER TABLE đổi tên cột trong MySQL
ALTER TABLE tb_nhanvien CHANGE COLUMN ngaytao ngaysinh int(11) DEFAULT 0;
// Đổi cột ngaytao thành ngaysinh với kiểu int, giới hạn 11 ký tự, mặc định là 0
<?php
$dbhost = 'localhost';
$dbuser = 'webmoi_userdata'; // Tên username
$dbpass = 'xgZwEfQWE'; // Mật khẩu
// Kết nối đến tên username
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Không kết nối được: ' . mysql_error());
}
// Chọn tên database
mysql_select_db('webmoi_tendata');
// Xét kiểu tiếng việt
mysql_query('SET NAMES "utf8"');
// ALTER TABLE đổi tên cột
echo "<b>ALTER TABLE đổi tên cột</b><br>";
$sql ="ALTER TABLE tb_nhanvien CHANGE COLUMN ngaytao ngaysinh int(11) DEFAULT 0"; // Đổi cột ngaytao thành ngaysinh với kiểu int, giới hạn 11 ký tự, mặc định là 0
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể đổi tên cột trên table tb_nhanvien: ' . mysql_error());
}else{
echo "Đổi tên cột ngaytao thành cột ngaysinh trên tb_nhanvien thành công!";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
ALTER TABLE đổi tên cột
Đổi tên cột ngaytao thành cột ngaysinh trên tb_nhanvien thành công!
ALTER TABLE đổi kiểu dữ liệu của cột trong MySQL
ALTER TABLE tb_nhanvien MODIFY COLUMN chucvu VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL;
// Chỉnh cột chức vụ có kiểu dữ liệu varchar giới hạn 200 ký tự, xét chữ utf-8, cho phép NULL
<?php
$dbhost = 'localhost';
$dbuser = 'webmoi_userdata'; // Tên username
$dbpass = 'xgZwEfQWE'; // Mật khẩu
// Kết nối đến tên username
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Không kết nối được: ' . mysql_error());
}
// Chọn tên database
mysql_select_db('webmoi_tendata');
// Xét kiểu tiếng việt
mysql_query('SET NAMES "utf8"');
// ALTER TABLE đổi kiểu dữ liệu của cột
echo "<b>ALTER TABLE đổi kiểu dữ liệu của cột</b><br>";
$sql ="ALTER TABLE tb_nhanvien MODIFY COLUMN chucvu VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL";// Chỉnh cột chức vụ có kiểu dữ liệu varchar giới hạn 200 ký tự, xét chữ utf-8, cho phép NULL.
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể chỉnh kiểu dữ liệu của cột trên table tb_nhanvien: ' . mysql_error());
}else{
echo "Đổi kiểu dữ liệu của cột chucvu trên tb_nhanvien thành công!";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
ALTER TABLE đổi kiểu dữ liệu của cột
Đổi kiểu dữ liệu của cột chucvu trên tb_nhanvien thành công!
ALTER TABLE xóa một cột trong MySQL
ALTER TABLE tb_nhanvien DROP COLUMN ngaysinh;
<?php
$dbhost = 'localhost';
$dbuser = 'webmoi_userdata'; // Tên username
$dbpass = 'xgZwEfQWE'; // Mật khẩu
// Kết nối đến tên username
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Không kết nối được: ' . mysql_error());
}
// Chọn tên database
mysql_select_db('webmoi_tendata');
// Xét kiểu tiếng việt
mysql_query('SET NAMES "utf8"');
// ALTER TABLE xóa một cột
echo "<b>ALTER TABLE xóa một cột</b><br>";
$sql ="ALTER TABLE tb_nhanvien DROP COLUMN ngaysinh";
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể xóa cột trên table tb_nhanvien: ' . mysql_error());
}else{
echo "Xóa cột ngaysinh trên tb_nhanvien thành công!";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
ALTER TABLE xóa một cột
Xóa cột ngaysinh trên tb_nhanvien thành công!
ALTER TABLE đổi tên bảng trong MySQL
ALTER TABLE tb_nhanvien RENAME TO tb_dsnhanvien;
<?php
$dbhost = 'localhost';
$dbuser = 'webmoi_userdata'; // Tên username
$dbpass = 'xgZwEfQWE'; // Mật khẩu
// Kết nối đến tên username
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Không kết nối được: ' . mysql_error());
}
// Chọn tên database
mysql_select_db('webmoi_tendata');
// Xét kiểu tiếng việt
mysql_query('SET NAMES "utf8"');
// ALTER TABLE đổi tên bảng
echo "<b>ALTER TABLE đổi tên bảng</b><br>";
$sql ="ALTER TABLE tb_nhanvien RENAME TO tb_dsnhanvien";
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể đổi tên table tb_nhanvien: ' . mysql_error());
}else{
echo "Đổi tên bảng tb_nhanvien thành tb_dsnhanvien thành công!";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
ALTER TABLE đổi tên bảng
Đổi tên bảng tb_nhanvien thành tb_dsnhanvien thành công!
Những lưu ý khi sử dụng ALTER TABLE trong MySQL
Thay đổi cấu trúc bảng bằng ALTER TABLE cần được thực hiện có kiểm soát, đặc biệt với cơ sở dữ liệu đang chứa dữ liệu quan trọng hoặc phục vụ website đang hoạt động. Kiểm tra trước và sau khi thay đổi giúp hạn chế lỗi dữ liệu, ảnh hưởng đến truy vấn và hoạt động của ứng dụng.
Sao lưu dữ liệu trước khi thay đổi cấu trúc bảng
Trước khi thêm, xóa hoặc thay đổi cột, nên tạo bản sao dữ liệu hoặc sao lưu cơ sở dữ liệu. Đây là bước quan trọng nhất khi thao tác trên bảng đang sử dụng thực tế, bởi một thay đổi sai có thể làm mất dữ liệu hoặc khiến ứng dụng không còn tương thích với cấu trúc mới.
Với những bảng quan trọng, nên kiểm tra khả năng khôi phục bản sao lưu trước khi thực hiện thay đổi. Không nên chỉ dựa vào việc sao lưu đã tồn tại mà chưa xác nhận dữ liệu có thể phục hồi khi cần.
Kiểm tra dữ liệu và ràng buộc trước khi chỉnh sửa
Trước khi thay đổi kiểu dữ liệu, xóa cột hoặc bổ sung ràng buộc, cần kiểm tra dữ liệu hiện có trong bảng. Chẳng hạn, việc chuyển một cột sang kiểu dữ liệu chặt chẽ hơn có thể thất bại nếu dữ liệu hiện tại không đáp ứng điều kiện mới.
Ngoài dữ liệu, cần chú ý đến PRIMARY KEY, FOREIGN KEY, INDEX, UNIQUE và các thành phần khác đang phụ thuộc vào cột được chỉnh sửa. Việc kiểm tra trước giúp tránh tình trạng câu lệnh thực thi không như mong muốn hoặc làm ảnh hưởng đến các truy vấn liên quan.
SHOW CREATE TABLE ten_bang;
DESCRIBE ten_bang;
Hạn chế ảnh hưởng đến bảng khi ALTER TABLE
Với bảng có nhiều dữ liệu, ALTER TABLE có thể tiêu tốn tài nguyên và ảnh hưởng đến tốc độ truy cập trong quá trình thay đổi. Vì vậy, nên thực hiện các thao tác lớn vào thời điểm ít người truy cập hoặc khi hệ thống có phương án kiểm soát tải phù hợp.
Không nên thực hiện liên tiếp nhiều thay đổi lớn trên cùng một bảng nếu chưa đánh giá tác động. Với hệ thống đang vận hành, cần cân nhắc thời gian thực hiện, dung lượng bảng và mức độ phụ thuộc của ứng dụng trước khi thay đổi cấu trúc.
Kiểm tra lại cấu trúc bảng sau khi thay đổi
Sau khi ALTER TABLE hoàn tất, cần kiểm tra lại cấu trúc để chắc chắn thay đổi đã được áp dụng đúng. Không nên chỉ dựa vào việc câu lệnh không báo lỗi, vì ứng dụng còn có thể phụ thuộc vào tên cột, kiểu dữ liệu hoặc chỉ mục vừa thay đổi.
Có thể kiểm tra lại bằng DESCRIBE hoặc SHOW CREATE TABLE, sau đó thử các truy vấn và chức năng liên quan trên website. Nếu vừa đổi tên hoặc thay đổi kiểu dữ liệu của cột, nên kiểm tra cả mã nguồn đang sử dụng cột đó để phát hiện sớm lỗi tương thích.
DESCRIBE ten_bang;
SHOW CREATE TABLE ten_bang;
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Câu lệnh ALTER TABLE trong MySQL.
Tải file database .sql về nếu muốn kiểm tra hoặc thực hành Tải về.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *