Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แอตทริบิวต์ต่างๆ ของชนิดข้อมูล ENUM ใน MySQL มีอะไรบ้าง

ชนิดข้อมูล ENUM ใน MySQL สามารถกำหนดแอตทริบิวต์ต่อไปนี้ได้ ซึ่งส่งผลต่อค่าที่อนุญาต:

  • NOT NULL - โดยค่าเริ่มต้น ENUM อนุญาตค่า NULL หากต้องการห้ามให้เป็น NULL ให้ใช้แอตทริบิวต์ NOT NULL
  • NULL - ไม่ระบุค่าเริ่มต้น ค่าดัชนีของ NULL คือ NULL
  • DEFAULT - กำหนดค่าเริ่มต้นเมื่อไม่ระบุค่าในคำสั่ง INSERT ค่า DEFAULT ที่อนุญาตสำหรับ ENUM คือ NULL และสตริงว่าง ('')

ตัวอย่าง

mysql> SET SESSION sql_mode = '';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE enumtesting(e_value ENUM('a','1') NOT NULL DEFAULT '1', id TINYINT NOT NULL);
Query OK, 0 rows affected (0.23 sec)
mysql> INSERT INTO enumtesting(e_value, id) VALUES ('1', '1'), ('', 2), (NULL, 3), ('abc', 4);
Query OK, 4 rows affected, 3 warnings (0.09 sec)
Records: 4  Duplicates: 0  Warnings: 3
mysql> SHOW WARNINGS;
+---------+------+----------------------------------------------------+
| Level   | Code | Message                                            |
+---------+------+----------------------------------------------------+
| Warning | 1265 | Data truncated for column 'e_value' at row 2       |
| Warning | 1048 | Column 'e_value' cannot be null                    |
| Warning | 1265 | Data truncated for column 'e_value' at row 4       |
+---------+------+----------------------------------------------------+
3 rows in set (0.00 sec)
mysql> SELECT * FROM enumtesting;
+---------+----+
| e_value | id |
+---------+----+
| 1       | 1  |
|         | 2  |
|         | 3  |
|         | 4  |
+---------+----+
4 rows in set (0.00 sec)
mysql> INSERT INTO enumtesting(id) VALUES (5);
Query OK, 1 row affected (0.11 sec)
mysql> SELECT * FROM enumtesting;
+---------+----+
| e_value | id |
+---------+----+
| 1       | 1  |
|         | 2  |
|         | 3  |
|         | 4  |
| 1       | 5  |
+---------+----+
5 rows in set (0.00 sec)
mysql> SELECT e_value, e_value+0 AS enum_index, id FROM enumtesting;
+---------+------------+----+
| e_value | enum_index | id |
+---------+------------+----+
| 1       | 2          | 1  |
|         | 0          | 2  |
|         | 0          | 3  |
|         | 0          | 4  |
| 1       | 2          | 5  |
+---------+------------+----+
5 rows in set (0.00 sec)