일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- SQL쿡북
- 이펙티브자바
- jpa
- 네트워크
- vue.js
- 인덱스
- 이팩티브 자바
- 클린코드
- 알고리즘분석
- 기술면접
- 알고리즘
- react
- DDD
- MariaDB
- 인프런백기선
- 스프링부트와AWS로혼자구현하는웹서비스
- 도메인 주도 개발 시작하기
- java
- 자료구조
- 자바
- 자바예외
- mysql
- AWS
- CleanCode
- 이펙티브 자바
- 혼공SQL
- 자바스터디
- AWS RDS
- aop
- 인프런김영한
- Today
- Total
기록이 힘이다.
[혼공 SQL] 두 테이블을 묶는 조인 본문
조인(join)이란 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말합니다. 두 테이블을 엮어야만 원하는 형태가 나오는 경우도 많습니다.
내부 조인
두 테이블을 연결할 때 가장 많이 사용되는 것이 내부 조인입니다. 그냥 조인이라 부르면 내부 조인을 의미하는 것입니다.
일대다 관계의 이해
두 테이블의 조인을 위해서는 테이블이 일대다(one to many) 관계로 연결되어야 합니다.
일대다 관계란 한쪽 테이블에는 하나의 값만 존재해야 하지만, 연결된 다른 테이블에는 여러 개의 값이 존재할 수 있는 관계를 말합니다.
예를 들어, 회원 테이블에서 블랙핑크의 아이디는 'BLK'로 1명(1,one) 밖에 없습니다. 그래서 회원 테이블의 아이디를 기본 키(primary key, PK)로 지정했습니다. 구매 테이블의 아이디에서는 3개의 BLK를 찾을 수 있습니다. 즉, 회원은 1명이지만 이 회원은 구매를 여러 번 할 수 있는 것입니다. 그래서 구매 테이블의 아이디는 기본 키가 아닌 외래 키(Foreign Key, FK)로 설정했습니다.
내부 조인의 기본
일반적으로 조인이라고 부르는 것은 내부 조인(inner join)을 말하는 것으로, 조인 중에서 가장 많이 사용됩니다. 조인은 3개 이상의 테이블로도 할 수 있지만 대부분은 2개로 조인하므로 2개에 대해서만 언급하겠습니다.
SELECT <열 목록>
FROM < 첫 번째 테이블>
INNER JOIN <두 번째 테이블> --> 그냥 JOIN으로 써도 인식됨.
ON <조인될 조건>
[WHERE 검색 조건]
내부 조인의 활용
양쪽 중에 한곳이라도 내용이 있을 때 조인하려면 외부 조인을 사용해야 합니다. 내부 조인은 두 테이블에 모두 있는 내용만 출력됩니다.
외부 조인
외부 조인의 기본
한쪽에만 데이터가 있어도 결과가 나옵니다.
SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
<LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
ON <조인될 조건>
[WHERE 검색 조건] ;
외부 조인의 활용
기타 조인
상호 조인
한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능.
결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 개
- ON 구문을 사용할 수 없습니다.
-결과의 내용은 의미가 없습니다. 랜덤으로 조인하기 때문입니다.
-상호 조인의 주 용도는 테스트하기 위해 대용량의 데이터를 생성할 때입니다.
자체 조인
자신이 자신과 조인한다는 의미입니다. 그래서 자체 조인은 1개의 테이블을 사용합니다.
SELECT <열 목록>
FROM <테이블> 별칭A
INNER JOIN <테이블> 별칭B
ON <조인될 조건>
[WHERE 검색 조건]
'SQL' 카테고리의 다른 글
[혼공 SQL] 테이블 만들기 (0) | 2022.12.13 |
---|---|
[혼공 SQL] SQL 프로그래밍 (0) | 2022.12.13 |
[혼공 SQL] 데이터 형식 (0) | 2022.12.13 |
[혼공 SQL] 데이터 변경을 위한 SQL문 (0) | 2022.12.12 |
[혼공 SQL] 좀 더 깊게 알아보는 SELECT 문 (0) | 2022.12.12 |