Maison >base de données >tutoriel mysql >Comment montrer que chaque énumération MySQL a une valeur d'index ?

Comment montrer que chaque énumération MySQL a une valeur d'index ?

王林
王林avant
2023-08-28 09:01:02728parcourir

Comment montrer que chaque énumération MySQL a une valeur dindex ?

En fait, les éléments répertoriés dans la spécification de la colonne ENUM se voient attribuer un numéro d'index commençant à 1. Le terme « index » fait ici référence à la position dans la liste des valeurs d’énumération, elles n’ont rien à voir avec l’index de la table. Avec l'exemple suivant, nous pouvons montrer que chaque énumération MySQL a une valeur d'index -

En insérant le numéro d'index au lieu de la valeur de l'énumération

Nous pouvons insérer dans la colonne ENUM en insérant leur numéro d'index au lieu d'écrire la valeur. Par exemple, dans le tableau ci-dessous, nous avons deux valeurs ENUM « réussite » et « échec ». Puisque « réussite » est écrit en premier dans la liste d'énumération, il obtient le numéro d'index « 1 » et le numéro d'index de « échec » est « 2 ». Maintenant, nous pouvons également insérer la valeur en insérant le numéro d'index comme indiqué ci-dessous -

mysql> Insert into marks(id,name,result)values(103,'Daksh','1');
Query OK, 1 row affected (0.06 sec)

mysql> Insert into marks(id,name,result)values(104,'Shayra','2');
Query OK, 1 row affected (0.07 sec)

mysql> Select * from marks;
+-----+---------+--------+
| id  | Name    | Result |
+-----+---------+--------+
| 101 | Aarav   | Pass   |
| 102 | Yashraj | Fail   |
| 103 | Daksh   | Pass   |
| 104 | Shayra  | Fail   |
+-----+---------+--------+
4 rows in set (0.00 sec)

Dans la requête ci-dessus, nous avons utilisé les numéros d'index 1 et 2 pour représenter respectivement les valeurs d'énumération réussies et échouées.

En insérant une chaîne vide au lieu d'une valeur d'énumération

La valeur d'index d'une chaîne vide est 0. Le mode SQL ne peut pas être TRADITIONAL, STRICT_TRANS_TABLES ou STRICT_ALL_TABLES avant d'insérer la chaîne vide. Nous pouvons le comprendre avec l'exemple suivant −

mysql> SET SESSION sql_mode = '';
Query OK, 0 rows affected (0.00 sec)

mysql> Insert into marks(id, name, result) values(105,'Yashraj','');
Query OK, 1 row affected, 1 warning (0.06 sec)

La requête ci-dessus insérera une chaîne vide à la position de la valeur enum. MySQL insère une chaîne vide avec l'avertissement suivant.

mysql> Show warnings;
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1265 | Data truncated for column 'Result' at row 1 |
+---------+------+---------------------------------------------+
1 row in set (0.00 sec)

Maintenant, lorsque nous inspectons la table, nous pouvons voir qu'il y a une chaîne vide dans le champ ENUM.

mysql> Select * from marks;
+-----+---------+--------+
| id  | Name    | Result |
+-----+---------+--------+
| 101 | Aarav   | Pass   |
| 102 | Yashraj | Fail   |
| 103 | Daksh   | Pass   |
| 104 | Shayra  | Fail   |
| 105 | Yash    |        |
+-----+---------+--------+
5 rows in set (0.00 sec)

mysql> Select result+0 As result_index from marks;
+--------------+
| result_index |
+--------------+
| 1            |
| 2            |
| 1            |
| 2            |
| 0            |
+--------------+
5 rows in set (0.01 sec)
From the output of above query, it is clear that the index value of the empty string is 0.

En insérant NULL au lieu de la valeur d'énumération

Nous pouvons insérer NULL à la place de la valeur d'énumération car nous ne spécifions pas NOT NULL pour la colonne ENUM. La valeur d'index de NULL est NULL. Par exemple, à l'aide de la requête suivante, nous insérons NULL dans la colonne enum de la table "result" et pouvons vérifier sa valeur d'index.

mysql> Create table result(Id INT PRIMARY KEY NOT NULL, Name Varchar(10), GradeENUM('POOR','GOOD'));
Query OK, 0 rows affected (0.25 sec)

mysql> Insert into result(id, name, grade) values(100, 'Rahul', NULL);
Query OK, 1 row affected (0.06 sec)

La requête ci-dessus insère une valeur NULL à la position de la valeur enum, qui peut être vérifiée à l'aide de la requête d'aide ci-dessous -

mysql> Select * from result;
+-----+-------+-------+
| Id  | Name  | Grade |
+-----+-------+-------+
| 100 | Rahul | NULL  |
+-----+-------+-------+
1 row in set (0.00 sec)

Maintenant, avec l'aide de la requête suivante, nous pouvons observer que la valeur d'index de NULL est NUL.

mysql> Select Grade+0 As Grade_index from result;
+-------------+
| Grade_index |
+-------------+
| NULL        |
+-------------+
1 row in set (0.00 sec)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Invites du client MySQLArticle suivant:Invites du client MySQL