다수의 테이블 제어하기

GROUP BY - 데이터 그룹화

같은 값을 가진 데이터를 그룹화하여 출력한다.

-- rental 테이블에서 user_id가 같은 데이터끼리 그룹화해서 개수 세기
SELECT user_id, COUNT(*)
FROM rental
GROUP BY user_id;

HAVING - 그룹에 조건 설정

그룹화한 그룹에 조건을 추가하여 해당 조건에 부합하는 데이터만을 출력한다.

-- rental 테이블에서 user_id로 그룹화한 데이터 중 개수가 1개 초과인 데이터를 검색
SELECT user_id, COUNT(*)
FROM rental
GROUP BY user_id
HAVING COUNT(user_id) > 1;

JOIN - 두 테이블 한 번에 조회

ON은 어떻게 조인할 것인지 조건을 의미. 조건이 없다면 A와 B의 합집합이 출력된다. 즉 중복은 고려되지 않는다.

-- rental 테이블과 user 테이블을 조회
SELECT *
FROM rental
INNER JOIN user

INNER JOIN

A와 B가 겹치는 부분이 있을 때에만 조회가 가능하다. A나 B의 해당 컬럼에 NULL값이 있다면 조회 x

또한 JOIN으로만 사용해도 무방하다. JOIN은 INNER JOIN과 같은 의미다.

-- rental 테이블과 user 테이블 중 id가 같은 것끼리 연결한 테이블을 조회
SELECT *
FROM rental
INNER JOIN user
ON user.id = rental.user_id;

LEFT JOIN

A에는 있지만 B에는 NULL값인 데이터도 조회가 가능하다. A테이블 기준으로 조회된다.