>  기사  >  데이터 베이스  >  각 MySQL 열거에 인덱스 값이 있음을 표시하는 방법은 무엇입니까?

각 MySQL 열거에 인덱스 값이 있음을 표시하는 방법은 무엇입니까?

王林
王林앞으로
2023-08-28 09:01:02672검색

각 MySQL 열거에 인덱스 값이 있음을 표시하는 방법은 무엇입니까?

실제로 ENUM 열 사양에 나열된 요소에는 1부터 시작하는 인덱스 번호가 할당됩니다. 여기서 "인덱스"라는 용어는 열거 값 목록의 위치를 ​​나타내며 테이블 인덱스와는 아무 관련이 없습니다. 다음 예를 통해 모든 MySQL 열거형에 인덱스 값이 있음을 보여줄 수 있습니다.

열거형 값 대신 인덱스 번호를 삽입하여

값 값을 쓰는 대신 인덱스 번호를 삽입하여 ENUM 열에 삽입할 수 있습니다. 예를 들어 아래 표에는 'pass'와 'fail'이라는 두 개의 ENUM 값이 있습니다. 열거형 리스트에는 'pass'가 가장 먼저 기록되므로 인덱스 번호 '1'을 얻고, 'fail'의 인덱스 번호는 '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을 삽입하여

ENUM 열에 NOT NULL을 지정하지 않기 때문에 열거값 대신 NULL을 삽입할 수 있습니다. NULL의 인덱스 값은 NULL입니다. 예를 들어, 다음 쿼리를 사용하여 테이블 "result"의 enum 열에 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)

위 쿼리는 enum 값 위치에 NULL 값을 삽입하는데, 이는 아래 도움말 쿼리를 사용하여 확인할 수 있습니다.

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

이제 다음 쿼리의 도움으로 NULL의 인덱스 값이 다음과 같은 것을 관찰할 수 있습니다. 없는.

rreee

위 내용은 각 MySQL 열거에 인덱스 값이 있음을 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제