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

MySQL 테이블에서 고유(UNIQUE) 제약 조건을 제거하는 방법

MySQL에서 테이블에 설정된 고유(UNIQUE) 제약 조건은 DROP INDEX 구문을 사용하여 간단하게 제거할 수 있습니다. 이 글에서는 실제 예제를 통해 고유 제약 조건을 확인하고 삭제하는 전체 과정을 단계별로 살펴보겠습니다.

기본 문법

고유 제약 조건을 제거하려면 다음과 같이 ALTER TABLE 문과 함께 DROP INDEX를 사용합니다.

ALTER TABLE 테이블명 DROP INDEX 인덱스명;

여기서 주의할 점은 MySQL에서 고유 제약 조건은 내부적으로 인덱스로 관리되기 때문에, 제거 시 해당 인덱스의 이름을 지정해야 한다는 것입니다.

예제 테이블 생성

먼저 고유 제약 조건이 포함된 테이블을 만들어 보겠습니다. 아래 쿼리는 IdisGreaterThan18 두 컬럼에 복합 고유 제약 조건을 설정한 테이블입니다.

mysql> create table removeUniquenessConstraint
    -> (
    -> Id int,
    -> Name varchar(100),
    -> Age int,
    -> isGreaterThan18 bool,
    -> UNIQUE(Id,isGreaterThan18)
    -> );
Query OK, 0 rows affected (0.69 sec)

테이블 구조 확인

SHOW CREATE TABLE 명령어를 사용하면 현재 테이블의 정의와 함께 설정된 고유 제약 조건을 확인할 수 있습니다.

mysql> show create table removeUniquenessConstraint;

실행 결과는 다음과 같습니다.

+----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table                      | Create Table                                                                                                                                                                                                                                                            |
+----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| removeUniquenessConstraint | CREATE TABLE `removeuniquenessconstraint` (`Id` int(11) DEFAULT NULL,`Name` varchar(100) DEFAULT NULL,`Age` int(11) DEFAULT NULL,`isGreaterThan18` tinyint(1) DEFAULT NULL,UNIQUE KEY `Id` (`Id`,`isGreaterThan18`)) ENGINE =InnoDB DEFAULT CHARSET =utf8               |
+----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

출력 결과에서 UNIQUE KEY `Id` (`Id`,`isGreaterThan18`) 부분을 통해 두 컬럼에 걸린 고유 제약 조건이 'Id'라는 이름의 인덱스로 등록되어 있는 것을 확인할 수 있습니다.

고유 제약 조건 제거하기

이제 위에서 확인한 인덱스 이름을 사용해 고유 제약 조건을 제거합니다.

mysql> alter table removeUniquenessConstraint drop index `Id`;
Query OK, 0 rows affected (0.25 sec)
Records: 0 Duplicates: 0 Warnings: 0

제거 결과 검증

쿼리 실행 후 다시 한번 테이블 정의를 조회하여 제약 조건이 실제로 삭제되었는지 확인합니다.

mysql> show create table removeUniquenessConstraint;

실행 결과는 다음과 같습니다.

+----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table                      | Create Table                                                                                                                                                                                                                |
+----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| removeUniquenessConstraint | CREATE TABLE `removeuniquenessconstraint` (`Id` int(11) DEFAULT NULL,`Name` varchar(100) DEFAULT NULL,`Age` int(11) DEFAULT NULL,`isGreaterThan18` tinyint(1) DEFAULT NULL) ENGINE =InnoDB DEFAULT CHARSET =utf8            |
+----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

위 출력 결과를 보면 이전에 존재하던 UNIQUE KEY 항목이 사라진 것을 알 수 있습니다. 즉, 고유 제약 조건이 성공적으로 제거된 것입니다.

정리

MySQL에서 고유 제약 조건을 제거하는 절차는 다음과 같이 요약할 수 있습니다.

SHOW CREATE TABLE로 제약 조건(인덱스) 이름을 확인한다.
ALTER TABLE ... DROP INDEX ... 구문으로 해당 인덱스를 삭제한다.
③ 다시 테이블 정의를 조회하여 제거 여부를 검증한다.

고유 제약 조건은 데이터 무결성을 보장하는 중요한 기능이므로, 제거하기 전에 해당 컬럼에 중복 데이터가 허용되어도 되는지 반드시 신중하게 검토한 후 진행하는 것이 좋습니다.