Computer >> Máy Tính >  >> Lập trình >> MySQL

các thuộc tính khác nhau của kiểu dữ liệu MySQL ENUM là gì?


Các loại MySQL ENUM có thể được xác định bằng các thuộc tính sau ảnh hưởng đến các giá trị được phép -

  • KHÔNG ĐẦY ĐỦ - Trong kiểu ENUM, mặc định cho phép các giá trị NULL. Để không cho phép các giá trị NULL, chúng ta cần sử dụng thuộc tính NOT NULL khi mô tả cột ENUM.
  • KHÔNG ĐỦ - Thuộc tính NULL là từ đồng nghĩa với DEFAULT NULL. Giá trị chỉ mục cho NULL là NULL.
  • DEFAULT - Thuộc tính DEFAULT khiến kiểu dữ liệu ENUM có giá trị mặc định khi giá trị không được chỉ định. Nói cách khác, chúng ta có thể nói rằng câu lệnh INSERT không nhất thiết phải bao gồm một giá trị cho trường này bởi vì nếu nó không bao gồm thì giá trị theo sau DEFAULT sẽ được chèn vào. Các hàm không được phép trong biểu thức DEFAULT. Đối với kiểu dữ liệu ENUM, các giá trị DEFAULT bao gồm NULL và chuỗi rỗng (‘’).

Ví dụ

Ví dụ sau sẽ cho thấy việc sử dụng các thuộc tính này với kiểu dữ liệu ENUM.

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 enumtetsing;
+---------+------------+----+
| e_value | enum_index | id |
+---------+------------+----+
| 1       |          2 |   1|
|         |          0 |   2|
|         |          0 |   3|
|         |          0 |   4|
| 1       |          2 |   5|
+---------+------------+----+
5 rows in set (0.00 sec)