지난 시간 MySQL을 통해 CRUD를 응용하는 법을 설명하였다.
이번에는 MySQL에서 다른 테이블간의 column을 조회할 수 있는 JOIN
쿼리문에 대해 알아
보즈아아아~~
위의 사진은 실제로 JOIN을 할 경우 A 테이블, B 테이블 두 가지로 나눠 접근하는 방식을 종합하였다.
JOIN 문이 너무 많아 보일수도 있지만, 실제로 많이 쓰이는 문법은 INNER JOIN, LEFT JOIN 이 두가지 쿼리문이 가장 많이 응용된다.
RIGHT JOIN의 경우 테이블의 위치만 변경하면 LEFT JOIN이 되기 때문에 더욱 쓸 이유가 없다.
테이블과의 연결을 하기 위해선 아래와 같은 예시 쿼리문이 작성되어 있어야 한다.
A 테이블의 primary key 역할을 수행하는 id
B 테이블의 foreign key 역할을 수행하는 A_id
현재 짜여진 SQL 테이블
user
information
SELECT information.price, information.list, information.quantity, user.name FROM information
INNER JOIN user ON user.id = information.user_id
user.id
와 information.user_id
가 동일한 모든 정보를 조회한다.
정식으로 쿼리문을 작성하면 INNER JOIN 간략화하여 JOIN으로 쓸수도 있다.
만일 카리나
의 값만 조회하고 싶다면 벤다이어그램에서 어떤 경우의 예일까?
해당 경우는 위의 벤다이어그램에서 교집합에 해당된다.
SELECT information.price, information.list, information.quantity, user.name FROM information
INNER JOIN user ON user.id = information.user_id WHERE user.name = '카리나';
SELECT information.price, information.list, information.quantity, user.name FROM information
LEFT JOIN user ON user.id = information.user_id
WHERE price IS NULL
만일 information의 price가 NULL값인 column만 조회하고 싶은 경우 LEFT JOIN
을 활용한다.
결과 user.name
이 일반인
이 NULL값을 소유하고 있는 관계로 해당 column이 조회되었다.
이는 JOIN 벤다이어그램 그래프를 생각하고 접근하면 더 쉽게 이해가 갈수 있다.
JOIN
은 테이블간의 연결 고리와 비슷한 특성을 가지고 있으며, 만일 해당 테이블의 한 유저 정보를 조회하기를 원할 경우 JOIN
쿼리문이 필요로 쓰이게 되는 것이다.