java나유 2022. 10. 12. 12:09

9)Natural Join

 

  • 조인하고자 하는 컬럼의 이름이 동일한 경우 조인 조건을 생략하고 조인을 할 수 있는 경우
  • 조인에 사용한 컬럼은 한 번만 조회

 

10)OUTER JOIN

  • 한쪽에만 존재하는 데이터도 JOIN에 참여
  • MySQL에는 LEFT OUTER JOIN과 RIGHT OUTER JOIN을 지원 FULL OUTER JOIN은 지원하는 않는데 이는 SET연산으로 해결
select 
*
from
emp left outer join dept 
on
emp.DEPTNO =dept.DEPTNO ;

=>emp테이블의 모든 데이터는 join에 참여하고 dept테이블의 데이터는 일치하지 않는 것만 참여

select 
*
from
emp
right outer join dept 
on
emp.DEPTNO =dept.DEPTNO ;

=>DEPT테이블에만 존재했던 DEPINO가 40인 데이터도 조인에 참여하는 대신 EMP테이블의 모든 컬럼 값은 NULL이됨

11)SET OPERATOR

  • 테이블 구조가 완전히 일치할 떄만 사용 할 수 있는 연산 구조가 일치한다는 의미는 컬럼 개수와 자료형 및 순서가 일치해야 함 컬럼의 이름이나 의미는 아무런 상관X
  • UNION, UNION ALL, INTERSECT, EXCEPT
  • UNION:합집합, 중복된 데이터는 1번만 출력
  • UNION ALL:합칩합, 중복된 데이터도 전부 출력
  • INTERSECT 교집합
  • EXCEPT 차집합

-union과 union all의 차이 

 

=>intersect:maria db에서는 가능한데 MySQL에서는 Join으로 해결

 

차집합:maria db에서는 except사용, oracle에서는 minus

select
distinct deptno
from
dept
where 
deptno not in(select distinct deptno from emp);
728x90