Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 테이블에서 UNIQUE 제약 조건을 삭제하는 방법

MySQL 테이블에서 UNIQUE 제약 조건을 삭제하려면 먼저 해당 제약 조건이 생성한 인덱스의 이름을 확인해야 합니다. 이를 위해 SHOW INDEX 문을 사용할 수 있으며, 결과 집합의 'key_name' 항목에 인덱스 이름이 포함되어 있습니다.

인덱스 이름을 확인한 후에는 DROP INDEX 문 또는 ALTER TABLE 문 중 하나를 사용하여 UNIQUE 제약 조건을 삭제할 수 있습니다. 두 문장의 기본 문법은 다음과 같습니다.

문법

DROP INDEX index_name ON table_name;
또는
ALTER TABLE table_name DROP INDEX index_name;

예제

'empl' 테이블의 'empno' 열에 UNIQUE 제약 조건이 설정되어 있다고 가정해 보겠습니다. 인덱스 이름은 다음과 같이 확인할 수 있습니다.

mysql> Show Index from empl\G
*************************** 1. row ***************************
Table: empl
Non_unique: 0
Key_name: empno
Seq_in_index: 1
Column_name: empno
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.02 sec)

결과에서 Key_name이 'empno'인 것을 확인할 수 있습니다. 이제 UNIQUE 제약 조건을 삭제하려면 다음과 같은 쿼리를 실행하면 됩니다.

mysql> ALTER TABLE empl DROP INDEX empno;
Query OK, 0 rows affected (0.26 sec)
Records: 0 Duplicates: 0 Warnings: 0

아래 쿼리의 결과 집합을 보면 'empno' 열에 더 이상 UNIQUE 제약 조건이 없음을 확인할 수 있습니다.

mysql> describe empl;

+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| empno | int(11) | YES | | NULL | |
| F_name | varchar(20) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+

2 rows in set (0.04 sec)

Key 열이 비어 있는 것을 통해 UNIQUE 제약 조건이 제거되었음을 알 수 있습니다. 또한 SHOW INDEX FROM empl 쿼리를 실행하면 MySQL은 다음과 같이 빈 결과 집합을 반환합니다.

mysql> Show index from empl;
Empty set (0.00 sec)

DROP INDEX 문을 사용해서도 'empl' 테이블에서 UNIQUE 제약 조건을 동일하게 삭제할 수 있습니다.

mysql> DROP INDEX empno on empl;
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0