[PostgreSQL] 46~51강까지의 내용 정리

bacccine·2022년 3월 21일
0

PostgreSQL

목록 보기
9/9

DELETE JOIN 문부터 TCL 문법까지

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 시점 이전으로 돌아갈 수 없다

etc.

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

update professor_test1 p1

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

0개의 댓글