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

จะแสดงให้เห็นว่าการแจงนับ MySQL แต่ละรายการมีค่าดัชนีได้อย่างไร


ที่จริงแล้ว องค์ประกอบที่ระบุไว้ในข้อกำหนดคอลัมน์ ENUM ถูกกำหนดหมายเลขดัชนีซึ่งขึ้นต้นด้วย 1 ในที่นี้ คำว่า "ดัชนี" หมายถึงตำแหน่งภายในรายการค่าการแจงนับ และไม่เกี่ยวข้องกับดัชนีตาราง ด้วยความช่วยเหลือของตัวอย่างต่อไปนี้ เราสามารถแสดงให้เห็นว่าการแจงนับ MySQL แต่ละรายการมีค่าดัชนี -

โดยการใส่เลขดัชนีแทนค่าการแจงนับ

เราสามารถแทรกค่าในคอลัมน์ ENUM โดยใช้หมายเลขดัชนีแทนการเขียนค่า ตัวอย่างเช่น ในตารางด้านล่าง เรามีค่า ENUM สองค่า "ผ่าน" และ "ล้มเหลว" เนื่องจาก 'ผ่าน' ถูกเขียนขึ้นก่อนในรายการการแจงนับจึงได้หมายเลขดัชนี '1' และมันจะเป็น '2 สำหรับ 'ล้มเหลว' ตอนนี้ เราสามารถแทรกค่าโดยการใส่ตัวเลขดัชนีดังนี้ −

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)

ในแบบสอบถามข้างต้น เราได้ใช้ดัชนีหมายเลข 1 และ 2 สำหรับค่าการแจงนับผ่านและล้มเหลวตามลำดับ

โดยการใส่สตริงว่างแทนค่าการแจงนับ

ค่าดัชนีของสตริงว่างคือ 0 ก่อนที่จะแทรกสตริงว่าง โหมด SQL ต้องไม่เป็น TRADITIONAL, STRICT_TRANS_TABLES หรือ STRICT_ALL_TABLES ด้วยความช่วยเหลือของตัวอย่างต่อไปนี้ เราสามารถเข้าใจมันได้ -

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)

แบบสอบถามด้านบนจะแทรกสตริงว่างที่ตำแหน่งของค่าการแจงนับ MySQL แทรกสตริงว่างโดยมีคำเตือนดังต่อไปนี้

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

เมื่อเราตรวจสอบตาราง เราจะเห็นสตริงว่างในฟิลด์ 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.

โดยการใส่ค่า NULL แทนค่าการแจงนับ

เราสามารถแทรกค่า NULL ในตำแหน่งของการแจงนับได้ เนื่องจากเราไม่ได้ระบุ NOT NULL ด้วยคอลัมน์ ENUM ค่าดัชนีของ NULL คือ NULL ตัวอย่างเช่น ด้วยความช่วยเหลือของแบบสอบถามต่อไปนี้ เราแทรก NULL ในคอลัมน์การแจงนับของตาราง 'ผลลัพธ์' และสามารถตรวจสอบค่าดัชนีได้

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)

แบบสอบถามด้านบนแทรกค่า NULL ที่ตำแหน่งของค่าการแจงนับ ซึ่งสามารถตรวจสอบได้ด้วยแบบสอบถามช่วยเหลือด้านล่าง -

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

ด้วยความช่วยเหลือของแบบสอบถามถัดไป เราสามารถสังเกตได้ว่าค่าดัชนีของ NULL เป็น NULL

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