Kiểu SET cho phép lưu nhiều giá trị từ danh sách cho trước. Xem tùy chọn bằng DESC hoặc INFORMATION_SCHEMA.COLUMNS.
Tạo bảng với cột SET
mysql> CREATE TABLE DemoTable(
Color SET('RED','GREEN','BLUE','YELLOW')
);
Query OK, 0 rows affected (0.47 sec)
Cách 1: Xem bằng DESC
mysql> DESC DemoTable;
+-------+------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------------------------+------+-----+---------+-------+
| Color | set('RED','GREEN','BLUE','YELLOW') | YES | | NULL | |
+-------+------------------------------------+------+-----+---------+-------+
Cách 2: Xem qua INFORMATION_SCHEMA
mysql> SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'DemoTable' AND COLUMN_NAME = 'Color';
+------------------------------------+
| COLUMN_TYPE |
+------------------------------------+
| set('RED','GREEN','BLUE','YELLOW') |
+------------------------------------+
Đặc điểm SET:
- Tối đa 64 giá trị trong danh sách
- Lưu trữ dưới dạng bitmap (bitmask) - hiệu quả
- Cho phép kết hợp nhiều giá trị:
'RED,GREEN' - Tự động loại bỏ trùng lặp và sắp xếp theo thứ tự định nghĩa
So sánh ENUM vs SET: ENUM = chọn 1 trong nhiều, SET = chọn 0 đến nhiều trong danh sách.