FE 개발자의 SQL이해하기 <2편>

서동수·2023년 3월 30일
0

FE 개발자의 SQL 이해하기 <1편>에서 하나의 테이블에서 원하는 데이터를 가져오는 방식에 대해 공부했는데요.

이번 2편에서는 여러개의 테이블을 사용하는 방법에 대해 알아보고
FE개발자의 SQL이해하기 편을 마치도록 할게요.

JOIN, ON

-- JOIN: 두개 이상의 테이블을 합치고 싶은 경우 사용해요.
-- ON: 테이블을 합치는 기준이에요.
-- AS: Alias를 지정할 때 사용해요.

SELECT a.*, B.name, B.age -- a 테이블의 모든 컬럼, b 테이블의 name, age 컬럼만 보고 싶다는 의미에요.
FROM <tableA> AS a
JOIN <tableB> AS b -- tableA에 합치려는 테이블을 입력해요. 
ON a.phone_number = b.phone_number -- a, b 테이블의 phone_number 컬럼이 같은 경우 JOIN한다는 의미에요.

MySQL JOIN의 종류
이미지는 해당 링크에서 가져왔습니다.

-- ON과 WHERE의 차이
-- ON: JOIN 전에 실행
-- WHERE: JOIN 이후 실행

UNION ALL / UNION DISTINCT

데이터를 세로로 연결할 때 사용하는 키워드에요.
컬럼 이름은 달라도 되지만 자료의 타입이나 컬럼의 개수는 같아야 해요.

-- UNION ALL: 데이터를 세로로 연결할 때 사용해요. (중복허용)
SELECT
FROM tableA
UNION ALL
SELECT
FROM tableB

-- UNION DISTINCT: 데이터를 세로로 연결할 때 사용해요. (중복제거)
SELECT
FROM tableA
UNION DISTINCT
SELECT
FROM tableB

CASE WHEN

조건을 적용해서 값을 정하고 싶을 때 사용하는 키워드에요.

CASE WHEN 조건a THEN 결과a
	WHEN 조건b THEN 결과b
	WHEN 조건c THEN 결과c ELSE defaultEND -- 만약에 ELSE default값을 생략하면 NULL이에요.

서브쿼리, WITH

쿼리 결과를 이용해 쿼리문을 작성할 때 사용해요.

서브쿼리: 결과가 값 or Column이 1개 인 경우
WITH: 서브쿼리가 복잡하고 반복적으로 쓰이는 경우

-- 서브쿼리를 값으로 사용하는 경우
SELECT ...
FROM ...
WHERE = (쿼리) or WHERE IN (쿼리)

-- 서브쿼리를 테이블로 사용하는 경우
SELECT ...
FROM (쿼리)

-- WITH: 임시로 테이블을 생성한다고 생각하면 이해하기 쉬워요. JS이 변수에 담아 두는 것과 비슷해요.
-- 이렇게 생성해요.
WITH temp_table AS (쿼리)

-- 이렇게 사용해요.
SELECT *
FROM temp_table

이외에도 다양한 함수와 키워드가 있습니다만 자주 사용되는 키워드와 개념에 대해 알아보았습니다.

이번 FE개발자의 SQL이해하기 1, 2편을 보셨다면 개발하다가 쿼리문을 보더라도 도망이 아닌 분석을 시도하길 응원하며 마치도록 하겠습니다.

부족한 설명과 개념이 매우 많은 것은 알고 있지만 다른 강의를 듣거나 공부를 하시는데 도움이 되셨을거라고 생각합니다. 부족한 글 읽어주셔서 감사해요.

profile
devLog

0개의 댓글