[SQL] JOIN의 종류와 조인 예제

Devel/DB_SQL|2020. 7. 22. 15:41
반응형

SQL 조인(JOIN)의 종류는 여러가지가 있다!

다른 개념들보다 특히 SQL JOIN의 개념은 쉽게 헷갈리기 때문에 제대로 이해하는 것이 중요한 것 같다.

MYSQL, ORACLE, SQL Devloper 등등 개념과 적용의 큰틀은 거의 비슷하니 아래 설명을 보고 이해해보자.

SQL JOIN (SQL 조인)

 

#SQL JOIN

table 두개를 합쳐 하나의 새로운 테이블 만든다.

deptno 는 중복.

 

pk; primary key

fk; 외래키 ;forenign key

 

#SQL JOIN의 종류와 예시

*오라클 조인 (Oracle JOIN):

-카테시안 프로덕트(Catasian Product)

-Equi-Join

-Non-Equijoin

-Outer join (아우터조인)

-Self Join (셀프조인)

*Ansi 조인 (ANSI JOIN)

-Cross JOIN (크로스조인)

-Natural JOIN (내츄럴조인)

-Using 이용한 조인

-Outer 조인 (아우터조인)

 

+

#sql error : ORA-00918 : 열의 정의가 애매합니다. column ambiguously definded

deptno의 테이블이 dept, emp에 겹치기 때문에

어느 테이블에서 가져올건지 적어줘야함.

 

#catasian product

조건 없이 무조건 붙여버린다. 

모든 가능한 행들의 join

 

#equi join 조인 ( 단순조인 or 내부(inner)조인)

 

+만약  alias를 적용해서 sql문장을 작성한 경우에는 where절과 select절에는 테이블 명이 아닌 alias를 사용해야 된다.

 

#equi join 조인 방법

 

두개 이상의 테이블을 조인 할 경우, 

 

-두 개 이상의 테이블 조인

 

#non-equi JOIN 조인

중복되는 관련성 있는 테이블은 없고, ..............

 

#outer JOIN조인(*)

조건에 맞지 않는 컬럼들도 보고 싶다. 할때 씀

정상적으로 조인 조건을 만족하지 못하는 행들을 보기 위해서 사용함.

 

-outer JOIN  조인(*)

조건에 맞지 않는 컬럼들도 보고 싶다. 할때 씀

정상적으로 조인 조건을 만족하지 못하는 행들을 보기 위해서 사용함.


+ (+) 기호: 누락된 조건이 있으면, 누락된 조건까지 포함 시켜 달라.

 

#self JOIN 조인

ex. empno, enmae의 smith 의 매니저의 번호는 7902이다. 7902의 이름음 뽑아 오고 싶을때

같은 테이블에서 같은 테이블의 행들과 조인한다.

똑같은 테이블이 2개 있기 때문에 반드시 alias명을 사용해야 함.

 

#ansi JOIN 조인

결과와 사용법은 비슷하지만 문법이 다르다.

from 뒤에 조인시켜준다고 명시함. 테이블 사이에 무슨 조인을 쓸건지 적어준다.

 

#crosss join

=catasian product 와 비슷

 

#natual join

=equl join

자동적으로 공통 컬럼이 있는지 확인해서 연결해줌. 따로 where 조건 안붙여줘도 됨.공통 컬럼이 하나씩 만 있어야 하고, 두개이상 있을 경우 사용하지 못함.

 

#using(컬럼)

명시적, euql join

공통된 컬럼명이 있어야 하고, using절 안에는 alias명은 사용하지 못한다.

 

#join on

non-equi 조인 or 임의의 조건으로 조인 시 사용.

복잡한 조건의 조인 가능하다.

 

+and에도 조건절을 쓸 수도 있어 헷갈릴 수 있기에 검색만 할거면 가급적 where 사용해라.

 

+세개의 테이블 조인

사원의 부서이름, 월급, 등급을 만드시오.

 

+월급이 800인 사원 번호, 이름, 부서이름을 가져오시오.

+사원 이름과 그 사원의 관리자의 이름을 불러오시오.

 

-left outer join

 

+행 삽입할때

 insert into ~ values~ , 문자 , 숫자, 날짜 유의 해서 사용.

 

+sql error :ORA-00001: 무결성 제약 조건 위배

 

why? 두번 같은 내용을 중복으로 입력할때

 

#full outer join

 

 

 

 

 

 

 

 

 

댓글()
loading