Thời gian đọc: 3 phút
Trong MySQL, enum (viết tắt của “enumeration”) là một kiểu dữ liệu đặc biệt cho phép lưu trữ một trong số các giá trị đã được định nghĩa trước đó. Kiểu dữ liệu này được sử dụng khi bạn muốn hạn chế giá trị của một cột chỉ có thể thuộc một tập hợp cụ thể.
CREATE TABLE your_table_name (
your_column_name ENUM('value1', 'value2', 'value3', ...)
);
enum
chỉ có thể chứa một trong những giá trị đã định nghĩa. Ví dụ, nếu cột đó là ENUM('A', 'B', 'C')
, bạn chỉ có thể nhập giá trị là 'A'
, 'B'
, hoặc 'C'
vào cột này.enum
thực chất được lưu trữ dưới dạng số nguyên (bắt đầu từ 1). Ví dụ, với ENUM('A', 'B', 'C')
, 'A'
sẽ được lưu là 1, 'B'
là 2, và 'C'
là 3. Nếu giá trị lưu trữ không khớp, MySQL có thể lưu giá trị trống tương ứng với 0.Giả sử bạn có một bảng quản lý thông tin nhân viên, trong đó trạng thái của nhân viên chỉ có thể là “active”, “inactive”, hoặc “pending”. Bạn có thể sử dụng ENUM để giới hạn các giá trị nhập vào cho cột status
:
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
status ENUM('active', 'inactive', 'pending') NOT NULL DEFAULT 'pending'
);
status
chỉ có thể nhận ba giá trị 'active'
, 'inactive'
, hoặc 'pending'
.status
là 'pending'
.enum
được lưu trữ dưới dạng số, chúng có thể tiết kiệm không gian hơn so với việc lưu trữ dưới dạng chuỗi ký tự.enum
yêu cầu phải thay đổi cấu trúc bảng, điều này có thể gây ra các vấn đề hiệu năng khi dữ liệu lớn.Kiểu dữ liệu enum
trong MySQL phù hợp để sử dụng khi bạn muốn giới hạn các giá trị có thể chấp nhận trong một cột cụ thể, đồng thời dễ dàng lưu trữ và tiết kiệm không gian. Tuy nhiên, cần cân nhắc kỹ khi sử dụng vì việc thay đổi hoặc mở rộng các giá trị enum
có thể phức tạp.