Describeemployee;+------------+---------------+------+-- -- -+---------+-------+|필드 |유형  "/> Describeemployee;+------------+---------------+------+-- -- -+---------+-------+|필드 |유형  ">

 >  기사  >  데이터 베이스  >  동일한 열에 UNIQUE 제약 조건을 여러 번 추가하면 어떻게 되나요?

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

WBOY
WBOY앞으로
2023-09-01 12:33:03926검색

如果我多次在同一列上添加 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으로 문의하시기 바랍니다. 삭제