관계대수 JOIN

Posted by PeEn
2019. 9. 23. 11:45 Programing/Database

세타 JOIN
= 이외의 연산자 이용

동등 JOIN
SELECT EMPNO, EMPNAME, DNO, DEPTNO, DEPTNAME 
FROM EMPLOYEE, DEPARTMENT
WHERE dno = deptno
(같은 값이 두번 나옴)

자연 JOIN
중복된 필드중 하나만 가져옴
SELECT EMPNO, EMPNAME, DNO, DEPTNAME 
FROM EMPLOYEE, DEPARTMENT
WHERE dno = deptno

JOIN문으로
SELECT EMPNO, EMPNAME, DNO, DEPTNAME 
FROM EMPLOYEE JOIN DEPARTMENT
ON dno = deptno

긴 문장 이름 지정해서 사용하기 AS
SELECT EM.EMPNO, EM.EMPNAME, EM.DNO, DE.DEPTNAME 
FROM EMPLOYEE AS EM JOIN DEPARTMENT AS DE
ON EM.dno = DE.deptno

출력 필드이름 임의로 변경하기 AS
SELECT EMPNO AS NO, EMPNAME, DNO, DEPTNAME 
FROM EMPLOYEE, DEPARTMENT
WHERE dno = deptno

4377 이성래 2 기획
3426 박영권 1 영업
3011 이수민 3 개발
3427 최종철 3 개발
1003 조민희 2 기획
2106 김창섭 2 기획
1365 김상원 1 영업

OUTTER 외부조인
* JOIN을 하면 교집합, 겹치는 값만 나온다.
LEFT OUTTER JOIN 교집합과 왼쪽에 있는 값들 모두 가져오기
*RIGHT OUTTER JOIN은 지원하지 않음

SELECT EM.EMPNO, EM.EMPNAME, EM.DNO, DE.DEPTNAME 
FROM EMPLOYEE AS EM LEFT OUTER JOIN DEPARTMENT AS DE
ON EM.dno = DE.deptno
4377 이성래 2 기획
3426 박영권 1 영업
3011 이수민 3 개발
3427 최종철 3 개발
1003 조민희 2 기획
2106 김창섭 2 기획
1365 김상원 1 영업


SELECT EM.EMPNO, EM.EMPNAME, EM.DNO, DE.DEPTNAME 
FROM DEPARTMENT AS DE LEFT OUTER JOIN EMPLOYEE AS EM 
ON EM.dno = DE.deptno

1365 김상원 1 영업
3426 박영권 1 영업
1003 조민희 2 기획
2106 김창섭 2 기획
4377 이성래 2 기획
3011 이수민 3 개발
3427 최종철 3 개발
                  총무