DBMS join.sql 활용

으누·2024년 8월 30일
1
post-thumbnail

join.sql

- 하나 이상의 테이블에서 한번의 질의문으로 원하는 자료를 검색할 때 사용합니다

equi join

- 가장 많이 사용되는 조인 방식으로 조인 대상이 되는 두 테이블에서 공통적으로 존해는 컬럼의 값이 일치되는 행을 연결해서 결과를 진행합니다.


사원 정보 출력시에 각 사원들이 소속된 부서의 상세 정복 확인

SELECT * 

FROM emp, dept

WHERE emp.deptno= dept.deptno;

위 특정 컬럼만 확인

SELECT ename, dname

FROM emp, dept

WHERE emp.deptno=dept.deptno;

이름이 JAMES 인 사람의 부서명 확인 // AND 붙이기

SELECT ename, dname

FROM emp, dept

WHERE emp.deptno=dept.deptno

AND ename = 'JAMES';

두개의 테이블에서 동일하게 존재하는 컬럼을 확인할 때에는, 컬럼명 앞에 테이블 명을 작성합니다. //Ex : emp. deptno

SELECT ename, dname, emp.deptno

FROM emp, dept

WHERE emp.deptno=dept.deptno

AND ename = 'JAMES';

테이블 별칭 지정

FROM 절 뒤에 테이블 이름을 명시하고, 공백을 작성한 다음에 별칭을 지정합니다 // Ex FROM emp E , dept D

SELECT E.ename, D.dname, E.deptno

FROM emp E , dept D

WHERE E.deptno=D.deptno

AND ename = 'JAMES';

Non-Equi join

- 조인 조건에 특정 범위 내에 있는지를 비교연산자를 사용해서 join 합니다

- 조인 조건에 특정 범위 내에 있는지를 비교연산자를 사용해서 join 합니다

'=' 연사자 제외

SALGRADE ( 급여 등급 테이블)

SELECT * FROM salgrade;

각 사원의 급여 등급 확인

SELECT ename, sal, grade

FROM emp, salgrade

WHERE sal BETWEEN losal AND hisal;

사원 이름과 소석 부서 , 급여의 등급확인

SELECT E.ename, D.dname, E.sal, S.grade

FROM emp E, dept D, salgrade S

WHERE E.deptno=D.deptno

AND E.sal BETWEEN losal AND hisal;

self join

- 하나의 테이블에서 조인을 해서 원하는 결과를 얻을 수 있습니다

사원 MANAGER 확인 //EMPlOYEE 예제

SELECT EMPlOYEE.ename || '의 MANAGER 는 ' || MANAGER.ename || '입니다'

FROM emp EMPLOYEE, emp MANAGER

WHERE EMPLOYEE.mgr= MANAGER.empno;

outer join

- 조인 조건에 만족하지 않는 행도 나타내는 조인입니다.

- 조인될 때 어느 한쪽의 테이블에 해당하는 데이터가 있지만,

다른쪽 테이블에는 데이터가 업을 경우 그 데이터가 출력되지 않는 것을 해결할 수 있습니다

- '+' 기호를 조인 조건에서 정보가 부족한 컬럼 이름뒤에 붙입니다

(+) 조인 조건이 붙으면 부족한 컬럼이 나옵니다.

SELECT EMPlOYEE.ename || '의 MANAGER 는 '  || MANAGER.ename || '입니다'

FROM emp EMPLOYEE, emp MANAGER

WHERE EMPLOYEE.mgr= MANAGER.empno(+);

quiz

'NEW YORK' 에서 근무하는 사원의 이름과 급여를 출력하세요

SELECT E.ename, E.sal

FROM emp E, dept D

WHERE E.deptno=D.deptno

AND D.loc LIKE 'NEW YORK';

SMITH 사원과 동일한 근무지에서 근무하는 사원의 이름을 출력하세요

SELECT EA.ename,EB.ename

FROM emp EA, emp EB

WHERE EA.deptno=EB.deptno

AND EA.ename = 'SMITH'

AND EA.ename!=EB.ename; -- 왼쪽과 오른쪽에 같은 이름을 가진 컬럼제거

profile
코딩 일기장

0개의 댓글