Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Thêm cột ENUM mới vào bảng MySQL hiện có?

Sử dụng ALTER TABLE ... ADD COLUMN với kiểu ENUM('value1','value2',...).

Tạo bảng ban đầu

mysql> CREATE TABLE DemoTable (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName VARCHAR(200),
    -> StudentAge INT
    -> );

Kiểm tra cấu trúc

mysql> DESC DemoTable;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| StudentId   | int(11)      | NO   | PRI | NULL    | auto_increment |
| StudentName | varchar(200) | YES  |     | NULL    |                |
| StudentAge  | int(11)      | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

Thêm cột ENUM StudentGender

mysql> ALTER TABLE DemoTable ADD StudentGender ENUM('Male', 'Female') NOT NULL;
Query OK, 0 rows affected (0.40 sec)

Kiểm tra cấu trúc sau thêm

mysql> DESC DemoTable;
+---------------+-----------------------+------+-----+---------+----------------+
| Field         | Type                  | Null | Key | Default | Extra          |
+---------------+-----------------------+------+-----+---------+----------------+
| StudentId     | int(11)               | NO   | PRI | NULL    | auto_increment |
| StudentName   | varchar(200)          | YES  |     | NULL    |                |
| StudentAge    | int(11)               | YES  |     | NULL    |                |
| StudentGender | enum('Male','Female') | NO   |     | NULL    |                |
+---------------+-----------------------+------+-----+---------+----------------+

Đặc điểm ENUM

  • Chỉ chấp nhận các giá trị liệt kê (không phân biệt chữ hoa/thường khi so sánh)
  • Lưu trữ tối ưu: 1 byte (≤255 giá trị) hoặc 2 bytes (≤65535 giá trị)
  • Sắp xếp theo thứ tự định nghĩa: 'Male'=1, 'Female'=2
  • NOT NULL nhưng DEFAULT NULL — INSERT không cung cấp sẽ lỗi (strict mode) hoặc NULL (non-strict)

Thêm DEFAULT cho ENUM

ALTER TABLE DemoTable ADD StudentGender ENUM('Male','Female') NOT NULL DEFAULT 'Male';

Thêm cột ở vị trí cụ thể

-- Đầu bảng
ALTER TABLE DemoTable ADD StudentGender ENUM('Male','Female') FIRST;

-- Sau cột StudentName
ALTER TABLE DemoTable ADD StudentGender ENUM('Male','Female') AFTER StudentName;

Lưu ý

  • Sửa đổi ENUM (thêm/bớt giá trị) cần ALTER TABLE ... MODIFY định nghĩa lại toàn bộ ENUM
  • ENUM không phải chuẩn SQL — cân nhắc bảng lookup (reference table) cho tính linh hoạt