[MySQL] 복수 테이블 다루기

김재현·2022년 10월 13일
0

sql

목록 보기
10/12
post-thumbnail
post-custom-banner

깃허브 : TIL 저장소

MySQL 공부 내용을 깃허브 TIL 저장소에 정리를 해두었습니다. 이를 수행하고자 하는 작업을 기준으로 문법들을 다시 정리를 해보고자합니다. 이번 게시글에서는 복수 테이블을 다룰 때 사용할 수 있는 문법을 정리해보았습니다.


1. JOIN

1.1 INNER / LEFT / RIGHT / FULL OUTER

  • INNER JOIN : 교집합
  • LEFT JOIN : 왼쪽 데이터 기준으로 JOIN
  • RIGHT JOIN : 오른쪽 데이터 기준으로 JOIN
SELECT tableA.column1, tableA.column2, ...,  tableB.column1, tableB.column2 ...
FROM tableA
INNER JOIN | LEFT JOIN | RIGHT JOIN | FULL OUTER JOIN tableB  # FULL OUTER JOIN 제외
ON tableA.column = tableB.column
WHERE condition;

복수의 테이블을 연결할 경우에는 JOIN을 사용합니다. 일반적으로는, ON에 연결할 컬럼을 등호(=)를 사용해 지정해줍니다. BETWEEN을 사용해 특정한 범위일 때 연결을 하도록 지정해주는 방법도 가능합니다.

MySQL의 경우 합집합에 해당하는 FULL OUTER JOIN을 지원하지 않습니다. 그래서 하기의 방식으로 합집합을 진행합니다.

SELECT tableA.column1, tableA.column2, ...,  tableB.column1, tableB.column2 ...
FROM tableA
LEFT JOIN tableB  
ON tableA.column = tableB.column
UNION
SELECT tableA.column1, tableA.column2, ...,  tableB.column1, tableB.column2 ...
FROM tableA
RIGHT JOIN tableB  
ON tableA.column = tableB.column;

1.2 SELF JOIN

  • SELF JOIN : 한 테이블을 자기 자신에 같다 붙이는 방법
SELECT columnname
FROM tablename
     INNER JOIN tablename AS new_tablename ON tablename.columnA = newtablename.columnB
WHERE condition;

같은 테이블을 가져와서 연결시키는 SELF JOIN의 방법도 있습니다.


2. UNION / UNION ALL

  • UNION : 중복된 값을 제거하고 알려준다
  • UNION ALL : 중복된 값도 모두 보여준다
SELECT column1, column2, ... FROM tableA
UNION | UNION ALL
SELECT column1, column2, ... FROM tableB
ORDER BY columname;

JOIN은 복수의 테이블을 특정 기준으로 연결시키는 것이라면, UNION은 두 테이블을 합치는 방법입니다. 말 그대로 합치는 것이기 때문에 테이블에 컬럼의 갯수가 같아야 합니다.

post-custom-banner

0개의 댓글