반응형
중복 키 관리
조건부 데이터 입력
만약 100개의 데이터를 입력하고자 할 때,
첫 번째 데이터는 기본키 중복 데이터이고 이후의 99개의 데이터는 새로운 데이터가 입력된다고 할 때,
SQL 시스템 상에서는 첫 번째 데이터 중복으로 전체 데이터가 입력되지 않는 현상이 발생함
따라서 이 중복되는 1개의 데이터를 무시하고 이후 99개의 데이터를 중단 없이 정상적으로 입력하는 방법에 대해 알아보기
먼저 테이블을 생성
CREATE TABLE memberTbl(
useId char(3) PRIMARY KEY,
name char(3) NOT NULL,
addr char(2) NOT NULL
);
테이블에 데이터 삽입
INSERT INTO memberTbl VALUES ('JBJ', '장범준', '서울'),
('IU', '아이유', '서울'),
('CM', '창모', '경기'),
('HS', '화사', '전남'),
('KP', '김필', '제주'),
('PK', '폴킴', '경북');
데이터를 추가로 삽입하고자 할때, 첫 라인에 중복된 데이터(PRIMARY KEY)가 있으면 에러가 발생하고 데이터 추가가 되지 않음
: 첫 라인의 데이터를 에러로 인식하면 다음 라인을 실행하지 않음
INSERT INTO memberTbl VALUES ('JBJ', '장범준', '서울'),
('ZC', '지코', '경기')
('BYR', '백예린', '서울');
ERROR 1062 (23000): Duplicate entry 'JBJ' for key 'membertbl.PRIMARY'
이를 해결하기 위해 INSERT 와 INTO 사이에 IGNORE을 작성하여 데이터가 중복되면 무시하도록 함
INSERT IGNORE INTO memberTbl VALUES ('JBJ', '장범준', '서울'),
('ZC', '지코', '경기')
('BYR', '백예린', '서울');
데이터 갱신
새로운 데이터 추가
INSERT INTO memberTbl VALUES ('LHL', '이효리', '제주');
데이터를 갱신하려고 하지만 기본키 중복으로 에러 발생(addr = '제주' → addr = '서울')
INSERT INTO memberTbl VALUES ('LHL', '이효리', '서울');
ERROR 1062 (23000): Duplicate entry 'LHL' for key 'membertbl.PRIMARY'
ON DUPLICATE KEY UPDATE를 이용해 데이터 갱신
: PRIMARY KEY가 중복된다면, INSERT INTO 대신 ON DUPLICATE KEY UPDATE 뒤의 내용을 적용
INSERT INTO memberTbl VALUES ('LHL', '이효리', '서울')
ON DUPLICATE KEY UPDATE name = '이효리', addr = '서울';
ON DUPLICATE KEY UPDATE를 이용해 기존에 존재하지 않던 데이터를 입력해도 데이터 추가 가능
: 중복되는 PRIMARY KEY가 없기 때문에, INSERT INTO 구문이 적용됨
INSERT INTO memberTbl VALUES ('B', '비', '서울')
ON DUPLICATE KEY UPDATE name = '씨', addr = '경기';
'SQL > MySQL' 카테고리의 다른 글
[MySQL] 기초 문법 (0) | 2021.07.18 |
---|---|
[MySQL] JOIN 구문 (0) | 2021.07.17 |
[MySQL] 사용자 관리하기 (0) | 2021.07.17 |
[MySQL] sql 데이터 import( sql 파일 실행) (0) | 2021.07.15 |
[MySQL] Mac 환경 변수 설정 (0) | 2021.07.15 |