본문 바로가기
개발기록/Oracle & SQLD

SQL 조인, INNER JOIN, NATURAL JOIN, USING, ON, CROSS JOIN, OUTER JOIN

by 쎄정 2022. 5. 24.
728x90
반응형

SQL JOIN 이미지화여 이해하기 좋은 사이트입니다.

 

 

SQL Join - 생활코딩

수업소개 관계형 데이터베이스에서 테이블과 테이블의 관계를 이용해서 새로운 테이블을 만들어내는 태크닉인 join을 알려드리는 수업입니다.  이 수업은 아래와 같은 내용을 다루고 있습니다.

opentutorials.org

 

SQL Joins Visualizer

Please select how do you want to do SQL JOIN between two table Copy SQL

sql-joins.leopard.in.ua

 

테이블당 최소 조인 조건의 수는 테이블 수 - 1 이다.

만약 테이블이 3개이면, 최소 조인조건을 2개 걸어야 한다.

 

INNER JOIN

양쪽 모두에만 존재하는 동일한 값의 행만으로 데이터를 추출힌다..

결과에 NULL 행이 존재하지 않는다.

SELECT *
FROM TB_A INNER JOIN TB_B ON TB_A.NO = TB_B.NO;

 

NATURAL JOIN

두 테이블 간에 동일한 이름을 갖는 모든 컬럼에 대해 EQUL 조인을 수행한다.

두테이블에 공통으로 있는 칼럼을 찾아 자동으로 조인한다.

SELECT 절에 동일 칼럼에 ALIAS가 붙으면 조인되지 않는다.

ON절은 사용하지 않는다.

SELECT NO ,NAME, PHONE
-- A.NO라고 붙으면 JOIN되지 않는다.
FROM TB_A NATURAL JOIN TB_B;

 

USING 조건절

같은 이름을 가진 컬럼 중에서 원하는 컬럼만 선택적으로 EQUL 조인을 수행한다.

조인조건에 ALIAS가 붙으면 조인되지 않는다.

SELECT NO ,NAME, PHONE
FROM TB_A JOIN TB_B USING(NO); --A.NO를 사용하면 JOIN 되지 않는다.

 

ON 조건절

컬럼명이 다르더라도 JOIN 조건을 사용할 수 있다.

조인조건에 ALIAS를 반드시 사용해야한다.

SELECT NO ,NAME, PHONE
FROM TB_A JOIN TB_B ON(TB_A.NO = TB_B.NO);
--FROM TB_A JOIN TB_B ON(TB_A.NO >= TB_B.NO);
--FROM TB_A JOIN TB_B ON(TB_A.NO <> TB_B.NO);
--FROM TB_A JOIN TB_B ON(TB_A.NO <= TB_B.NO);

 

CROSS JOIN

JOIN 조건이 없는 경우 발생할 수 있는 모든 데이터의 집합이다.

 

LEFT OUTER JOIN

왼쪽 테이블 기준으로 조회한다.

오른쪽 테이블에 없는 값도 같이 추출한다.

SELECT *
FROM TB_A LEFT OUTER JOIN TB_B
WHERE TB_A.NO = TB_B.NO

SELECT *
FROM TB_A, TB_B
WHERE TB_A.NO = TB_B.NO(+)

 

RIGHT OUTER JOIN

SELECT *
FROM TB_A RIGHT OUTER JOIN TB_B
WHERE TB_A.NO = TB_B.NO;

SELECT *
FROM TB_A, TB_B
WHERE TB_A.NO(+) = TB_B.NO;
728x90
반응형

댓글