반응형
MySQL에서 REPLACE INTO는
INSERT 와 UPDATE 용도로 사용할 수 있는데
INSERT 용도로 사용 시에는
REPLACE INTO 테이블명(컬럼명) VALUES(값);
이렇게 사용해주면 되는데
위 스크린샷과 같이 아무 값도 없을 경우에는
쿼리 수행 시 INSERT가 되지만
KEY는 동일하게 유지한 채 타 컬럼값만 바꿔주고
쿼리 수행 후 SELECT를 해 보니
이전 KEY가 들어있던 ROW가 삭제된 후
내가 REPLACE 부분에 작성한 ROW가 신규로 들어가게 된다
다음으로 UPDATE 용도로 사용할 시에는
REPLACE INTO 테이블명 SET 컬럼명 = 값;
이렇게 사용하는데 여기서 중요한 점은
WHERE을 사용할 수 없다!!
REPLACE INTO를 UPDATE 용도로 사용 시
SET 부분에 해당 테이블의 KEY에 해당하는 값이 없다면
SET에 입력한 내용을 기준으로 INSERT가 되며
넣지 않은 값은 DEFAULT와 NULL로 들어가게 된다
다음으로
SET 부분에 테이블의 KEY에 해당하는 값이 들어있다면
SET에 입력한 내용을 기준으로 해당 KEY가 UPDATE 된다
마지막으로 예제에 사용한 쿼리는 아래와 같다
SELECT * FROM TB1 -- 확인용
-- REPLACE를 INSERT 처럼 사용
-- 삽입하려는 내용 중 기존 Key가 없으면 INSERT와 동일
-- 삽입하려는 내용 중 기존 Key가 있으면 해당 ROW 삭제 후 삽입
-- 작성하지 않은 컬럼값은 DEFAULT(기본값)과 NULL로 들어감
REPLACE INTO TB1(NAME) VALUES('고고');
-- REPLACE를 UPDATE 처럼 사용
-- SET 부분에 기존 테이블의 Key가 없으면 SET 내용으로 INSERT
-- SET 부분에 기존 테이블의 Key가 있으면 SET 내용으로 UPDATE
-- SET 부분에 작성하지 않은 값은 DEFAULT(기본값)과 NULL로 들어감
REPLACE INTO TB1 SET NAME = '고고2', AGE = '99';
반응형
'SQL > MySQL' 카테고리의 다른 글
MySQL 현재 실행중인 쿼리 확인 및 강제 중단방법 (0) | 2021.03.11 |
---|---|
MySQL 프로시저 함수 디버깅 하는 방법 (0) | 2021.03.10 |
MySQL GROUP BY HAVING 사용방법 (0) | 2021.02.08 |
MySQL 인덱스 조회 생성 수정 삭제 및 타는지 확인방법 (0) | 2021.02.03 |
MySQL 프로시저(Procedure) 만들기부터 실행 확인까지 (1) | 2021.02.02 |
댓글