개발 진행중 RDB를 사용하고있다면 inner join의 사용빈도가 많은데, 오늘은 inner join을 사용하는 방법에 대해서 제가 아는 만큼 간단히 정리해 보고자 한다.
* inner join(내부조인) 이란 ?
- 두 테이블간에 공통된 데이터를 이용해 데이터를 조회해오는 방법이라고 생각하면 될거같은데, 정확하게 표현한것인지는 모르겠다.
다른 글들에서는 교집합을 가져온다고 서술되어 있는데, 제 입장에서는 무슨의미인지 잘 와닿지 않는것 같다..
[A테이블] [B테이블]
id name age id aid job
1 kim 20 1 1 dev
2 woo 24 2 2 std
위와 같은 테이블이 존재할 때 보통 테이블 설계시 데이터 중복을 최소화 하기 위해 위 예시처럼 설계를 하는 것 같다.
여기서 문제는 a테이블의 데이터와 b테이블의 공통된 값을 이용해 두 테이블간의 데이터를 가져오고 싶을 때 인데 이런 경우 inner join을 이용하여 데이터를 조회해 올 수 있다.
쿼리문은 select a.id, a.name, a.age, b.id, b.job
from tableA as a inner join tableB as b on a.id = b.aid;
로 사용할 수 있고, 설명하자면 중요한 부분만 설명하자면
from 절에서 tableA as a inner join tableB as b on a.id = b.aid
여기서 as의 의미는 alias로 테이블명을 이제부터 별칭으로 사용하겠다는 의미가 된다.
다음에 이어지는 inner join이라는 문장을 이용해 a테이블과 조인 될 테이블을 기술해준다, a테이블과 조인될 b테이블을 똑같이 별칭을 b로 정해준 다음, on 문장을 이용해 a의 id와 b의 aid를 이용해 조회해오겠다는 조건을 기술해준다.
쿼리문이 실행되면 결과는 다음과 같이 조회되게 된다.
id name age id job
1 kim 20 1 dev
2 woo 24 2 std
inner join은 서로 연관관계가 있는 테이블간에 주로 사용하는 것 같으며, join중에 제일 사용빈도가 높은 것 같다.
또 추가적으로 sql문법을 검사해주는 사이트를 발견해서 추가해놓는다.
https://www.eversql.com/sql-syntax-check-validator/
SQL Syntax Check Online, SQL Validator, Instant SQL Compiler Online
Online SQL Query Optimization, Easily, Automatically
www.eversql.com
'SQL' 카테고리의 다른 글
컬럼의 값이 null경우 치환 하는방법 (0) | 2020.07.24 |
---|---|
Sql 집계함수(SUM, AVG, MAX, MIN, COUNT) (0) | 2020.04.21 |
sql에서 날짜컬럼을 비교하는 방법? (0) | 2020.03.18 |
SQL에서 null을 조건으로 주는방법? (0) | 2020.02.12 |