MySQL 테이블에서 UNIQUE 제약 조건을 삭제하려면 먼저 테이블에서 UNIQUE 제약 조건에 의해 생성된 인덱스의 이름을 확인해야 합니다. SHOW INDEX 문이 이 용도로 사용된다는 것을 알고 있습니다. 'key_name ' SHOW INDEX 문의 결과 집합에 인덱스 이름이 포함되어 있습니다. 이제 DROP INDEX의 도움으로 문 또는 ALTER TABLE 문에서 UNIQUE 제약 조건을 삭제할 수 있습니다. 두 문장의 구문은 다음과 같습니다 -
구문
DROP INDEX index_name ON table_name; OR ALTER TABLE table_name DROP INDEX index_name;
예
'empno' 열에 UNIQUE 제약 조건이 있는 'empl' 테이블이 있다고 가정합니다. 인덱스 이름은 다음과 같이 확인할 수 있습니다 -
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)
이제 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)
empl에서 SHOW INDEX를 실행하더라도 쿼리하면 MySQL은 다음과 같이 빈 집합을 생성합니다. -
mysql> Show index from empl; Empty set (0.00 sec)
UNIQUE 제약 조건은 다음과 같이 DROP INDEX 문을 사용하여 'empl' 테이블에서 삭제할 수도 있습니다. -
mysql> DROP INDEX empno on empl; Query OK, 0 rows affected (0.17 sec) Records: 0 Duplicates: 0 Warnings: 0