20220216_SQL 기초 6 (PRIMARY KEY를 가진 테이블 수정하기)

2022. 2. 17.공부/SQL, R

728x90

어떤 파일을 폴더에 넣을 때 폴더가 그 파일을 이미 가지고 있는 경우, 컴퓨터는 이를 인지하여 사용자에게 창을 하나 띄워준다. SQL에서도 같다. INSERT 시에 중복되는 데이터를 입력하려고 하면 시스템에서 이를 인지하여 ERROR 메세지가 뜨게 된다. (단, PRIMARY KEY가 걸려있는 컬럼일 경우!)

 

허수가 아닌 허순을 등록하고 싶었지만 이미 테이블이 HS를 PRIMARY KEY로 가지고 있는 값이기 때문에 INSERT가 불가

 

INSERT IGNORE INTO memberTbl VALUES('HS', '허순', '부산');

 

이 때 INSERT와 INTO 사이에 IGNORE를 넣어주어 테이블이 가진 PRIMARY KEY가 겹치면  건너뛰도록 설정해줄 수 있다. IGNORE 사용시 아래와 같이 쿼리가 먹긴 하는데.. 해당 쿼리문은 HS라는 PRIMARY KEY를 이미 가지고 있기 때문에 이 쿼리문은 warning으로 인지하면서 테이블에 들어가진 않는다.

 

IGNORE을 사용하여 PRIMARY KEY가 겹치면 건너뛰도록 설정하였지만..
INSERT IGNORE INTO~ 구문으로 자료 여러개 추가하니 PRIMARY KEY가 중복되는 자료는 건너뛰고, 중복되지 않는 자료는 확인해서 테이블로 넣어주는 모습을 볼 수 있다.

 

테이블 만들 때 컬럼에 PRIMARY KEY를 걸었을 경우 해당 컬럼에 중복되는 값은 넣을 수 없다.. 하지만, PRIMARY KEY는 그대로 두고 ON DUPLICATE로 해당 row에 다른 인자를 덮어씌울 수는 있다! 

 

INSERT INTO memberTbl VALUES('HS','허수','울산') ON DUPLICATE KEY UPDATE user_name='허순', addr='부산';