PostgreSQL - DELETE JOIN 문부터 TCL 문법까지

강신찬·2023년 5월 10일
0

DELETE JOIN 문

  • DELETE 사용 시 다른 테이블을 참조하여 삭제 처리
  • DELETE 문에 USING 절 사용(참조 테이블)
  • 두 테이블의 연결 조건(조인 조건) 필요
  • DELETE JOIN 문은 서브 쿼리로 대체 가능

UPSERT 문

  • UPDATE와 INSERT를 동시에 고려
  • 기존 데이터에 값이 있으면 UPDATE를, 없으면 INSERT를 수행
  • 다른 DBMS에서는 MERGE 문으로 사용
INSERT INTO 테이블명(컬럼명...)
VALUES (값 ...)
ON CONFLICT 타겟 ACTION;

/*
여기서 타겟은
(컬럼명)
ON CONSTRAINT 제약조건명
WHERE 절

ACTION은 삽입할 데이터가 이미 있으면 어떻게 할 지를 지정
DO NOTHING //아무 것도 하지 않음
DO UPDATE SET 컬럼 = 값... WHERE 조건 // 삽입하고자 하는 값으로 수정
*/
  • 사용예시
INSERT INTO menu1
SELECT * FROM menu2
ON conflict (id)
do update set price = EXCLUDED.price;

BEGIN, COMMIT, ROLLBACK, SAVEPOINT

  • savepoint는 지정한 중간 단계로 복구하는 TCL 문법
  • select는 단순 조회기 때문에 데이터의 변경을 저장할 필요가 없다, 따라서 commit은 select와 무관
  • savepoint를 통한 rollback 지점 지정 가능
  • 어떤 rollback도 commit 시점 이전으로 돌아갈 수 없다

Q. professor_test1 테이블에서 각 직급별로 최대 PAY 값을 구한 뒤 해당 값으로 모두 수정하기

update professor_test1 p1
set pay = (select max(pay) from professor_test1 p2 where p1.position = p2.position);

출처 : https://velog.io/@bacccine/PostgreSQL-4651%EA%B0%95%EA%B9%8C%EC%A7%80%EC%9D%98-%EB%82%B4%EC%9A%A9-%EC%A0%95%EB%A6%AC

profile
꾸준히 공부하는 백엔드 개발자

0개의 댓글

관련 채용 정보