Kiểu SET cho phép lưu nhiều giá trị từ danh sách định sẵn trong một cột, kết hợp FIND_IN_SET để truy vấn.
Tạo bảng với cột SET:
mysql> CREATE TABLE DemoTable (
CountryName SET('US','UK','AUS')
); Query OK, 0 rows affected (0.49 sec)
Chèn dữ liệu:
mysql> INSERT INTO DemoTable VALUES('US'); Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES('UK'); Query OK, 1 row affected (0.09 sec)
Hiển thị dữ liệu:
mysql> SELECT * FROM DemoTable;
Kết quả:
+-------------+ | CountryName | +-------------+ | US | | UK | +-------------+ 2 rows in set (0.00 sec)
Tìm hàng chứa 'UK':
mysql> SELECT * FROM DemoTable WHERE FIND_IN_SET('UK', CountryName) > 0;
Kết quả:
+-------------+ | CountryName | +-------------+ | UK | +-------------+ 1 row in set (0.00 sec)
Lưu ý: SET giới hạn tối đa 64 giá trị. Phù hợp cho dữ liệu ít thay đổi, không cần join phức tạp. Cần index? SET không hỗ trợ index trực tiếp.