DAY8 테이블합치기

Mark·2022년 5월 19일
0
post-thumbnail

👩🏻‍💻 패스트캠퍼스 국비지원과정 'SQL로 시작하는
데이터 분석 첫걸음' 강의 내용 정리를 목적으로 개인 공부차 작성한 글입니다.
✏️ 수강 중인 교육과정 : https://fastcampus.co.kr/b2g_kdc_sql
 

1. 테이블 합치기

JOIN

  • 같은 의미를 가지는 컬럼의 값을 기준으로 테이블을 합칠 때 사용하는 키워드
     

2. JOIN 종류

1) INNER JOIN

  • 두 테이블 모두에 있는 값만 합치기 = 교집합
SELECT [컬럼 이름]
FROM [테이블 A 이름]
INNER JOIN [테이블 B 이름]
ON [테이블 A 이름].[컬럼 A 이름]=[테이블 B 이름].[컬럼 B 이름]
WHERE 조건식;

2) LEFT JOIN

  • 왼쪽 테이블에 있는 값만 합치기
SELECT [컬럼 이름]
FROM [테이블 A 이름]
LEFT JOIN [테이블 B 이름]
ON [테이블 A 이름].[컬럼 A 이름]=[테이블 B 이름].[컬럼 B 이름]
WHERE 조건식;

3) RIGHT JOIN

  • 오른쪽 테이블에 있는 값만 합치기
SELECT [컬럼 이름]
FROM [테이블 A 이름]
RIGHT JOIN [테이블 B 이름]
ON [테이블 A 이름].[컬럼 A 이름]=[테이블 B 이름].[컬럼 B 이름]
WHERE 조건식;

4) OUTER JOIN

  • 두 테이블에 있는 모든 값 합치기
  • MySQL 키워드에는 없음
  • MySQL에서 사용하려면, LEFT JOIN UNION RIGHT JOIN을 해야함
    • UNION : 두 쿼리의 종복 값을 제외하고 합쳐서 보여주는 집합 연산자
SELECT [컬럼 이름]
FROM [테이블 A 이름]
LEFT JOIN [테이블 B 이름]
ON [테이블 A 이름].[컬럼 A 이름]=[테이블 B 이름].[컬럼 B 이름]
UNION
****SELECT [컬럼 이름]
FROM [테이블 A 이름]
RIGHT JOIN [테이블 B 이름]
ON [테이블 A 이름].[컬럼 A 이름]=[테이블 B 이름].[컬럼 B 이름];

5) CROSS JOIN

  • 두 테이블에 있는 모든 값 각각 합치기
  • ON 키워드가 필요 없음
    • 두 테이블의 모든 값을 각각 합치기 때문에 ON 키워드 필요 없음
    • 기준이 없이 모든 값이 합쳐짐
SELECT [컬럼 이름]
FROM [테이블 A 이름]
CROSS JOIN [테이블 B 이름]
WHERE 조건식;

6) SELF JOIN

  • 같은 테이블에 있는 값 합치기
  • 테이블 별명을 꼭 가져야 함 (테이블이 같기 때문에)
SELECT [컬럼 이름]
FROM [테이블 A 이름] AS a1
INNER JOIN [테이블 A 이름] AS a2
ON a1.[컬럼 A 이름]=a2.[컬럼 B 이름] 
WHERE 조건식;

*같은 이름을 가진 컬럼이 있을 경우, SELECT 할 때 어떤 테이블에서 합쳐진 컬럼을 가져오는지 명시해야 함

SELECT age(x)

SELECT table1.age(o)

profile
개인 공부 정리

0개의 댓글