[sql] INSERT 문을 사용하여 레코드 삽입 시 중복 값 검사 방법

데이터베이스 테이블에 레코드를 삽입할 때, 중복된 값이 있는지 미리 확인하고 싶을 때가 있습니다. INSERT 문을 사용하여 레코드를 삽입하고 동시에 중복 값을 검사하는 방법에 대해 알아보겠습니다.

1. UNIQUE 제약 조건 활용

가장 흔한 방법은 데이터베이스 테이블의 필드에 UNIQUE 제약 조건을 추가하는 것입니다. 이렇게 하면 해당 필드에 중복 값을 가질 수 없게 됩니다. 그러나 이미 테이블이 존재하는 경우에는 변경이 필요할 수 있습니다.

먼저, CREATE TABLE 문을 사용하여 테이블을 만들거나 ALTER TABLE 문을 사용하여 필드에 UNIQUE 제약 조건을 추가합니다.

CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    email VARCHAR(100) UNIQUE
);

2. INSERT IGNORE 문 활용

만약 이미 테이블이 존재하고 있어 UNIQUE 제약 조건을 변경할 수 없는 경우, INSERT IGNORE 문을 사용하여 중복된 값을 무시하고 삽입할 수 있습니다.

INSERT IGNORE INTO users (id, username, email)
VALUES (1, 'johndoe', 'johndoe@email.com');

위의 예시에서, INSERT IGNORE 문은 중복된 username 또는 email 값을 무시하고, 중복되지 않는 값을 가진 레코드를 삽입합니다.

3. ON DUPLICATE KEY UPDATE 문 활용

또 다른 방법은 ON DUPLICATE KEY UPDATE 문을 활용하는 것입니다. 이 문은 중복된 키가 발견될 경우 해당 레코드를 업데이트할 수 있습니다.

INSERT INTO users (id, username, email) 
VALUES (1, 'johndoe', 'johndoe@email.com')
ON DUPLICATE KEY UPDATE email = 'newemail@email.com';

위의 예시에서, ON DUPLICATE KEY UPDATE 문은 email 필드를 새로운 값으로 업데이트합니다.

마무리

중복 값을 가진 레코드를 삽입하기 전에, 데이터베이스 테이블에 UNIQUE 제약 조건을 추가하거나 INSERT IGNORE 또는 ON DUPLICATE KEY UPDATE 문을 활용하여 중복 값을 검사하고 처리할 수 있습니다. 이를 통해 데이터의 일관성을 유지하고 중복 데이터의 삽입을 방지할 수 있습니다.

참고문헌