1. DML_중급
- UPDATE JOIN 문 : 다른 테이블 내용 참고하고 싶을 때 사용함. 복잡한 업무 처리에 유용함.
지금하는 SQL문은 표에다 표를 끼워넣는 것 같다. 업데이트가 그거지 뭐.
3. DELETE 문
컴퓨터는 좋겠다. DELETE하면 모든 기억을 다 지워버릴 수 있다. COMMIT 하기 전에는 ROLLBACK이 가능하다.
4.UPSERT 문
1) INSERT를 시도할 때 조건(상황)에 따라 UPDATE를 할 수 있는 구문.
2) 테이블에 특정 행을 입력할 때 이미 존재하는 행이라면
컬럼들을 UPDATE하고, 존재하지 않는 행이라면 새로 INSERT하는 기능.
3) 문법
INSERT INTO TABLE_NAME(COLUMN1) VALUES(VALUE1)
ON CONFLICT TARGET ACTION; -- 충돌시 다른 액션
- ON CONFLICT ~ DO NOTHING
- 에러는 발생하지 않으면서 아무것도 하지 않은 것
- ON CONFLICT ~ DO UPDATE SET
5. GROUP BY 문
-- GROUP BY
/*
* CUSTOMER_ID 컬럼의 값 기준으로 GROUP BY 함
* 해당 컬럼값 기준으로 중복이 제거된 행이 출력됨
*/
select A.CUSTOMER_ID
from payment A
group by A.customer_id
order by A.customer_id
;
-- customer_id 컬럼별 amount의 합계가 큰순서로 10건을 출력해주세요.
select A.customer_id
,sum(A.amount) as AMOUNT_SUM
from PAYMENT A
group by A.customer_id
order by AMOUNT_SUM desc
limit 10
;
-- FIRST_NAME 및 LAST_NAME도 같이 출력해주세요.
select A.customer_id
,B.first_name
,B.last_name
,SUM(A.amount) as AMOUNT_SUM
from CUSTOMER B, PAYMENT A
where A.customer_id = B.customer_id
group by A.CUSTOMER_ID, B.first_name , B.last_name
order by AMOUNT_SUM desc
limit 10
;
-- customer_id가 first_name 및 last_name을 결정지을 수 있음
-- MAX() 사용가능함.
select A.customer_id
,MAX(B.first_name) as first_name -- 집계함수로 구하기
,MAX(B.last_name) as first_name
,SUM(A.amount) as AMOUNT_SUM
from CUSTOMER B, PAYMENT A
where A.customer_id = B.customer_id
group by A.CUSTOMER_ID, B.first_name , B.last_name
order by AMOUNT_SUM desc
limit 10
;
6. chatGPT 완전히 믿지마라.
https://www.w3schools.com/sql/sql_groupby.asp
chatGPT를 맹신하면 안 된다. 위 사이트에서 source를 찾아보자.
7. having 절
8. INTERCET