250929_SQL 데이터 연결하기

2025. 9. 29. 17:32TIL

1. Subquery

Subquery는 여러 번의 연산을 수행해야 할 때, 조건문에 연산 결과를 사용해야 할 때, 조건에 query 결과를 사용하고 싶을 때 사용할 수 있다.

subquery문의 기본 구조는 다음과 같다.

SELECT column1, special_column
FROM
(
SELECT column1, column2 as special_column
FROM table1 #Subquery문 작성
) Subquery #Alias 지정

이때 Subquery문에서 select하지 않는 column은 본 query에서도 불러올 수 없으니 유의한다.

 

2. JOIN

JOIN은 두 table을 하나의 table처럼 연결하고 싶을 때 사용할 수 있는 명령어이다.

두 테이블 간에 연결할 수 있는 공통된 column들이 존재할 때 join을 이용해 연결할 수 있다.

JOIN은 그냥 써도 되지만, 대표적으로 LEFT JOIN과 INNER JOIN 2가지가 있는데,

LEFT JOIN은 공통 column을 기준으로 하나의 테이블에 값이 없더라도 모두 조회하는 것을 의미한다.

반대로 INNER JOIN은 공통 column을 기준으로 두 테이블 모두에 있는 값만 조회한다.

id name food
1 John Bread
2 Lee Hotdog
3 James Chicken

 

id tel address
1 010-1234-1234 Seoul
2 010-5678-5678 Incheon
3    

위와 같은 두 개의 table이 있을 때, id라는 column을 기준으로 join을 할 수 있다. 두 table을 LEFT JOIN한 결과와 INNER JOIN한 결과를 비교해보면,

LEFT JOIN 시,

id name food tel address
1 John Bread 010-1234-1234 Seoul
2 Lee Hotdog 010-5678-5678 Incheon
3 James Chicken [NULL] [NULL]

INNER JOIN 시,

id name food tel address
1 John Bread 010-1234-1234 Seoul
2 Lee Hotdog 010-5678-5678 Incheon

 

이런 차이가 발생한다. LEFT JOIN은 값이 없는 column이 있어도 NULL로 표현하면서 모두 결합하는 반면, INNER JOIN은 값이 없는 경우 아예 그 row를 결합하지 않는다.

JOIN의 기본 구조는 다음과 같다.

#LEFT JOIN
SELECT column1
FROM table1 a LEFT JOIN table2 b ON a.공통컬럼명=b.공통컬럼명

#INNER JOIN
SELECT column1
FROM table1 a INNER JOIN table2 b ON a.공통컬럼명=b.공통컬럼명

만약 3개 이상의 column을 JOIN해야 하는 경우 다음과 같이 쓸 수 있다.

SELECT column1
FROM table1 a 
JOIN table2 b ON a.공통컬럼명=b.공통컬럼명
JOIN table3 c ON a.공통컬럼명=c.공통컬럼명

(아직 제대로 배우지 않아서 정확히는 모르겠다.)

JOIN을 해준 이후는 JOIN 시 사용한 alias를 이용해 column을 호출한다.

SELECT 
a.column1,
b.column2
FROM table1 a INNER JOIN table2 b ON a.공통컬럼명=b.공통컬럼명

'TIL' 카테고리의 다른 글

251001_Python Quest 해결하기  (0) 2025.10.01
250930_SQL_실무에 적용할 수 있는 SQL 기술  (0) 2025.09.30
250926_SQL 데이터 가공하기  (0) 2025.09.26
250925_Python 알아보기  (0) 2025.09.25
250924_SQL 데이터 계산하기  (0) 2025.09.24