반응형
핵심 정리
SQL은 테이블에서 원하는 컬럼을 고르고, 조건으로 행을 걸러내며, 여러 테이블을 연결하고, 그룹별 집계를 계산하는 질의 언어입니다. 기본 흐름은 SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY의 역할을 나누어 보는 것입니다.
- SELECT는 결과로 보고 싶은 컬럼이나 계산식을 정합니다.
- FROM은 데이터를 가져올 테이블을 지정합니다.
- WHERE는 행 단위 조건을 걸어 필요한 데이터만 남깁니다.
- JOIN은 키를 기준으로 여러 테이블의 행을 연결합니다.
- GROUP BY는 같은 기준의 행을 묶고 COUNT, SUM, AVG 같은 집계 함수와 함께 씁니다.
SQL을 처음 볼 때는 문법 순서보다 각 절이 데이터를 어떻게 바꾸는지 생각하면 좋습니다. 행을 고르고, 테이블을 연결하고, 그룹으로 묶고, 정렬해서 최종 결과를 만든다는 흐름을 잡으면 쿼리 읽기가 쉬워집니다.
INNER JOIN
기존의 where절을 사용하여 두 테이블을 결합하는 방식과 동일
SELECT *
FROM table1, table2
WHERE table1.id = table2.id;
예를 들어 과거방식으로 위처럼 하는것도 inner join이며 아래처럼 명시적으로 INNER JOIN키워드를 사용할수도 있다.
SELECT *
FROM table1
INNER JOIN table2 ON table1.id = table2.id;
내가 볼때는 가독성 측면에서 오히려 퇴화한것 같기는 하지만 아래 소개할 다른 조인과의 통일성 측면에서 이해하면 좋을듯 하다.
LEFT JOIN
그냥 INNER JOIN과 다르게 null허용 조인으로 이해하면 편하다.
예를들어 다음과 같은 쿼리를 생각해보자.
SELECT a.name, b.department
FROM employee_table a
LEFT JOIN department_table b
ON a.department_id = b.department_id;
그럴경우 다음처럼 특정인물이 아직 부서배치 받기 전이더라도 NULL일지언정 조회가 된다(inner조인이었으면 조회에 포함이 안됐을것)
| name | department |
| john | marketing |
| smith | null |
| jake | IT |
반응형
