[SQL] JOIN의 종류와 조인 예제
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
'Devel > DB_SQL' 카테고리의 다른 글
SQL FOREIGN KEY,제약조건에 대해 (0) | 2020.08.06 |
---|---|
SQL DML(INSERT,DELETE,MERGE,UPDATE,NULL)개념과 적용예제 (0) | 2020.07.22 |
SQL CASE, 그룹함수, GROUPBY, HAVING 개념정리와 적용예제 (0) | 2020.07.22 |
SQL 함수 총 정리와 적용예제 (0) | 2020.07.22 |
SQL함수 총 정리와 적용예제 (0) | 2020.07.22 |