본문 바로가기
Oracle

Oracle (4) - DB 조인에 관하여

by leehii 2022. 6. 3.

DB 조인


조인 >> 등가조인, 비등가조인, 포괄조인, 자체조인
테이블이 두개이상이면(from에서 두개가 나오든,where절에서 하나가 추가되든) 조인을 써야함
as로 from절을 별칭으로 바꿔주고 select절에도 이를 붙여줘야 함.
 
★★★★★
from 절에 조인하려는 table들을 기술한다. 
where 최소 table의 수 -1,즉 (n-1) 조건의 있어야 하며 이 조건은 pk와 fk를 같게 해줘야함. 
table 별명사용 
★★★★★
   
똑같은 이름을 가진 컬럼을 명시할때는 그 컬럼의 테이블 이름을 입력해줘야함.
select last_name, department_name   
from employees e, departments d
where e.department_id = d.department_id;
   
--등가조인 (일반적으로 많이 씀) (이퀄조인)
같은 데이터가 존재할때 쓰는 조인으로 대부분 pk와 fk를 씀
column1 과 column2
pk와 fk

--3개이상의 테이블을 조인할때
select e.last_name, d.department_name, l.city
from employees e, departments d, locations l
where e.department_id=d.department_id
and d.location_id=l.location_id

a 테이블 이름, b테이블 이름(공통된 데이터가 있는 연결고리), c 테이블 이름을
where절에 넣어주고 alias를 이용하기
  
--포괄조인 (아우터조인)
(+)로 표시하는 조인
일치하는 항목이 없는 결과값

ㄴselect last_name,department_name
  from employees e, departments d 
  where e.department_id = d.department_id(+);
  "사번없는 사원들 추가하기"

ㄴselect last_name,department_name
  from employees e, departments d 
  where e.department_id (+)= d.department_id;
  "사원없는 부서들 추가하기"

--비등가조인
없는 조건을 찾아올때 쓰는 조인
  
--셀프조인 (잘 안씀)
가상테이블을 만들어서 써줘야 함. 
무슨 말이냐?

ㄴ(ex)
  select e.employee_id, e.last_name, e.manager_id, m.last_name
  from employees e, employees m
  where e.manager_id=m.employee_id

이 식을 살펴보면 m.last_namer과 m.employee_id이라는 이상한 항이 있음
    관리자의 이름을 따로 출력하기 위한 last_name 두번 겹치다보니
관리자의 이름을 따로 불러오기 위한 별도의 테이블이 없어
같은 employee를 e와 m으로, 즉 m이라는 가상의 테이블을 만들어준것.



여러개의 테이블에서 데이터를 검색하는 행위
ㄴ조인하면 조인 대상테이블을 하나의 테이블로 조합함. 즉 여러개의 테이블의 행이 하나의 행으로 합쳐짐. 
이때 무결성이 보장되도록 행을 조합해야함
이를 위해 특정조건(조인조건)을 줘서 조건에 맞는 행들만 조합해야함
    ㄴ조인조건이 오류나면(조인조건 생략 혹은 잘못 작성함) 카티션프로덕트 현상이 발생함




 

4. DB 조인
0.00MB