동일한 열에 UNIQUE 제약 조건을 여러 번 추가하면 어떻게 되나요?

WBOY
풀어 주다: 2023-09-01 12:33:03
앞으로
986명이 탐색했습니다.

如果我多次在同一列上添加 UNIQUE 约束,会发生什么情况?

동일한 열에 UNIQUE 제약 조건을 여러 번 추가하면 MySQL은 UNIQUE 제약 조건을 추가한 횟수만큼 해당 열에 인덱스를 생성합니다.

Example

"empid" 열에 UNIQUE 제약 조건이 있는 "employee" 테이블이 있다고 가정합니다. 이는 다음 쿼리로 확인할 수 있습니다. -

mysql> Describe employee;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| empid      | int(11)     | YES  | UNI | NULL    |       |
| first_name | varchar(20) | YES  |     | NULL    |       |
| last_name  | varchar(20) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.12 sec)
로그인 후 복사

이제 SHOW INDEX 쿼리를 실행하면 인덱스 이름이 제공되고 "empid" 열에 생성된 인덱스는 하나만 있습니다.

mysql> Show index from employee\G;
*************************** 1. row ***************************
        Table: employee
   Non_unique: 0
     Key_name: empid
 Seq_in_index: 1
  Column_name: empid
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
1 row in set (0.00 sec)
로그인 후 복사

다음 쿼리의 도움으로 동일한 열 "empid"에 또 다른 UNIQUE 제약 조건을 추가했습니다. -

mysql> Alter table employee ADD UNIQUE(empid);
Query OK, 0 rows affected (0.21 sec)
Records: 0 Duplicates: 0 Warnings: 0
로그인 후 복사
로그인 후 복사

이제 SHOW INDEX 쿼리를 실행하면 인덱스 이름, 즉 "empid"가 제공됩니다. 해당 열에 두 개의 인덱스 "empid" 및 "empid_2"가 생성됩니다.

mysql> Show index from employee12\G;
*************************** 1. row ***************************
        Table: employee
   Non_unique: 0
     Key_name: empid
 Seq_in_index: 1
  Column_name: empid
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
*************************** 2. row ***************************
        Table: employee
   Non_unique: 0
     Key_name: empid_2
 Seq_in_index: 1
  Column_name: empid
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
2 rows in set (0.00 sec)
로그인 후 복사

다음 쿼리의 도움으로 동일한 "empid" 열에 또 다른 UNIQUE 제약 조건을 추가했습니다. -

mysql> Alter table employee ADD UNIQUE(empid);
Query OK, 0 rows affected (0.21 sec)
Records: 0 Duplicates: 0 Warnings: 0
로그인 후 복사
로그인 후 복사

이제 SHOW INDEX 쿼리를 실행하면 "열에 인덱스 이름이 제공됩니다. empid" 세 개의 인덱스 "empid", "empid_2" 및 "empid_3"이 "에 생성되었습니다.

mysql> Alter table employee ADD UNIQUE(empid);
Query OK, 0 rows affected (0.30 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> Show index from employee\G;
*************************** 1. row ***************************
        Table: employee
   Non_unique: 0
     Key_name: empid
 Seq_in_index: 1
  Column_name: empid
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
*************************** 2. row ***************************
        Table: employee
   Non_unique: 0
     Key_name: empid_2
 Seq_in_index: 1
  Column_name: empid
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
*************************** 3. row ***************************
        Table: employee
   Non_unique: 0
     Key_name: empid_3
 Seq_in_index: 1
  Column_name: empid
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
3 rows in set (0.00 sec)
로그인 후 복사

이런 의미에서 MySQL은 해당 열에 UNIQUE 제약 조건을 추가하는 횟수만큼 해당 열에 고유 인덱스를 생성한다고 말할 수 있습니다.

위 내용은 동일한 열에 UNIQUE 제약 조건을 여러 번 추가하면 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿