join

Seoung Young Oh·2023년 3월 22일
0

SQL

목록 보기
3/3

Join이란?

테이블간의 관계 성에 따라 복수의 테이블을 결합하여, 하나의 테이블인 것처럼 결과를 출력하는 것

Join의 종류

  • INNER JOIN : 두 테이블 사이에 공통적으로 존재하는 하는 컬럼을 참조하여, 조인하는 두개의 테이블 모두 데이터가 존재하는 행에 대한 결과만 조회한다.
  • OUTTER JOIN : 두 테이블 사이에 공통적으로 존재하는 하는 컬럼을 참조하여, 매칭되는 행이 없어도 결과를 가져오고 매칭되는 행이 없는 경우 NULL로 표시한다. LEFT JOIN과 RIGHT JOIN이 있다.

Data

CREATE TABLE `testdb`.`person` (
  `id` INT NOT NULL,
  `name` VARCHAR(45) NULL,
  `job_id` INT NULL,
  PRIMARY KEY (`id`));

INSERT INTO person values(1,'personA',1);
INSERT INTO person values(2,'personB',2);
INSERT INTO person values(3,'personC',3);
INSERT INTO person values(4,'personD',4);

CREATE TABLE `testdb`.`job` (
  `id` INT NOT NULL,
  `job_name` VARCHAR(45) NULL,
  PRIMARY KEY (`id`));
  
INSERT INTO job values(1,'직장인');
INSERT INTO job values(2,'학생');
INSERT INTO job values(3,'무직'); 
INSERT INTO job values(5, '군인');

INNER JOIN

Query

SELECT P.id, name, J.job_name FROM person P INNER JOIN job J ON P.job_id = J.id; 

  • ON절 이하 person테이블(기준)의 job_id와 job테이블의 id를 매칭 시켜 결과를 조회 한다.
  • person테이블에는 존재하지만 job테이블에는 존재 하지 않아 매칭되지 않는 결과는 조회 하지 않는다.(person테이블의 job_id 4가 존재 하지만, job테이블에 매칭할 id 4는 존재 하지 않음)

OUTTER JOIN

1. LEFT JOIN

Query

SELECT P.id, name, J.job_name FROM person P LEFT JOIN job J ON P.job_id = J.id; 

  • 쿼리문의 왼쪽에 있는 테이블(person)을 조회하고 오른쪽에 있는 테이블(job)을 매칭 시킨다.
  • 값이 없는 경우 null로 표기한다.

2. RIGHT JOIN

Query

SELECT P.id, name, J.job_name FROM person P RIGHT JOIN job J ON P.job_id = J.id; 

  • 쿼리문의 오른쪽에 있는 테이블(job)을 조회하고 오른쪽에 있는 테이블(person)을 매칭 시킨다.
  • 값이 없는 경우 null로 표기한다.

LEFT JOIN과 RIGHT JOIN의 차이

  • LEFT와 RIGHT는 쿼리문에서 기준테이블의 위치

0개의 댓글