You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
조인
Inner조인
Outer조인
Self조인
Full outer조인
Cross조인
Natural조인
서브 쿼리
JOIN
두 테이블을 붙여서 정보를 추출하는 방법
one to many 관계로 연결되어야 함.
연결되는 구조: 기본키 pk (Primary Key)- 외래키 FK(Foreign Key)
INNER JOIN
JOIN중 가장 많이 사용한다. JOIN 의 default 값이 INNER JOIN
두 테이블에 모두 정보값이 있을경우 결합하는 방식 (공통분모)
만약 한쪽 테이블에 내용이 없는경우 조인하지 않고 결과가 보여지지 않음.
OUTER JOIN
필요한 내용이 한쪽에만 있어도 사용 가능
Atable <LEFT | RIGHT | FULL> OUTER JOIN Btable 으로 사용된다. (LEFT OUTER JOIN = LEFT JOIN)
- LEFT OUTER JOIN: 왼쪽 테이블의 내용은 모두 출력되어야 한다.
- RIGHT OUTER JOIN: 오른쪽 테이블의 내용은 모두 출력되어야 한다.
- 왼쪽 오른쪾의 기준은 보이는 그대로의 테이블
- FULL OUTER JOIN : 양쪽중 어느 한쪽이라도 들어있는 내용이면 출력
select*FROM Atable a
INNER JOIN Atable b
ONa.column1=b.column2WHEREa.column2='조건';
서브 쿼리
SELECT 안에 또다른 SELECT가 들어가는것 (쿼리 안에 쿼리가 있는 상태)
2개의 sql문을 하나로 중첩쿼리는 괄호로 표기
FROM, JOIN 에 서브쿼리를 사용하는 경우 마지막 alias를 정해주어서 테이블 명칭을 쿼리 내에서 사용할 수 있게 해야 한다.
SELECT CASE WHEN rental_amount >=150 THEN 'A'
WHEN rental_amount <=50 THEN 'D' END customer_classes, count(*) class_count
FROM (
SELECTr.customer_id , round(sum(p.amount) ,0) rental_amount FROM rental r
JOIN payment p ONr.rental_id=p.rental_idgroup byr.customer_id
) r
group by case when rental_amount <=50 then 'D'
when when rental_amount >=151 then 'A' end
ORDER by customer_classes ASC;