Heim >Datenbank >MySQL-Tutorial >Wie kann gezeigt werden, dass jede MySQL-Aufzählung einen Indexwert hat?

Wie kann gezeigt werden, dass jede MySQL-Aufzählung einen Indexwert hat?

王林
王林nach vorne
2023-08-28 09:01:02744Durchsuche

Wie kann gezeigt werden, dass jede MySQL-Aufzählung einen Indexwert hat?

Tatsächlich wird den in der ENUM-Spaltenspezifikation aufgeführten Elementen eine Indexnummer beginnend mit 1 zugewiesen. Der Begriff „Index“ bezieht sich hier auf die Position in der Liste der Aufzählungswerte, sie haben nichts mit dem Tabellenindex zu tun. Mit dem folgenden Beispiel können wir zeigen, dass jede MySQL-Aufzählung einen Indexwert hat –

Durch Einfügen der Indexnummer anstelle des Aufzählungswerts

Wir können in die ENUM-Spalte einfügen, indem wir ihre Indexnummer einfügen, anstatt den Wert zu schreiben. In der folgenden Tabelle haben wir beispielsweise zwei ENUM-Werte „bestanden“ und „nicht bestanden“. Da „pass“ an erster Stelle in der Aufzählungsliste steht, erhält es die Indexnummer „1“, und die Indexnummer von „fail“ ist „2“. Jetzt können wir den Wert auch einfügen, indem wir die Indexnummer wie unten gezeigt einfügen –

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)

In der obigen Abfrage haben wir die Indexnummern 1 und 2 verwendet, um die Aufzählungswerte „bestanden“ bzw. „fehlgeschlagen“ darzustellen.

Durch Einfügen einer leeren Zeichenfolge anstelle eines Aufzählungswerts

Der Indexwert einer leeren Zeichenfolge ist 0. Der SQL-Modus darf vor dem Einfügen der leeren Zeichenfolge nicht TRADITIONAL, STRICT_TRANS_TABLES oder STRICT_ALL_TABLES sein. Wir können es anhand des folgenden Beispiels verstehen:

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)

Die obige Abfrage fügt an der Position des Aufzählungswerts eine leere Zeichenfolge ein. MySQL fügt eine leere Zeichenfolge mit der folgenden Warnung ein.

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

Wenn wir nun die Tabelle untersuchen, können wir sehen, dass im ENUM-Feld eine leere Zeichenfolge vorhanden ist.

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.

Durch Einfügen von NULL anstelle des Aufzählungswerts

Wir können NULL anstelle des Aufzählungswerts einfügen, da wir NOT NULL für die ENUM-Spalte nicht angeben. Der Indexwert von NULL ist NULL. Mit Hilfe der folgenden Abfrage fügen wir beispielsweise NULL in die Enum-Spalte der Tabelle „result“ ein und können deren Indexwert überprüfen.

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)

Die obige Abfrage fügt einen NULL-Wert an der Position des Aufzählungswerts ein, was mit der folgenden Hilfsabfrage überprüft werden kann:

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

Mit Hilfe der nächsten Abfrage können wir nun beobachten, dass der Indexwert NULL ist NULL.

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

Das obige ist der detaillierte Inhalt vonWie kann gezeigt werden, dass jede MySQL-Aufzählung einen Indexwert hat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen