ANSI 5

066 여러 테이블의 데이터를 조인해서 출력하기 9(FULL OUTER JOIN)

예제. 아래의 오라클 조인 문법이 수행되는지 확인하시오. SELECT e.ename, d.loc FROM emp e, dept d WHERE e.deptno(+) = d.deptno(+); ORA-01468: outer-join된 테이블은 1개만 지정할 수 있습니다 01468. 00000 - "a predicate may reference only one outer-joined table" ORACLE로는 불가능 / ANSI 가능 ANSI) SELECT e.ename, d.loc FROM emp e FULL OUTER JOIN dept d ON (e.deptno = d.deptno); 문제 335. 위의 SQL의 실행계획을 확인하시오. EXPLAIN PLAN FOR SELECT e.ename, d.loc..

Oracle DBA/SQL 2023.07.03

065 여러 테이블의 데이터를 조인해서 출력하기 8(LEFT/RIGHT OUTER JOIN)

예제. 이름과 부서위치를 출력하는데 OUTER JOIN을 사용해서 사원테이블에는 없는 부서번호인데, 부서 테이블에는 있는 부서번호에 대한 부서위치를 출력하시오. 방법 1) ORACLE SELECT e.ename, d.loc FROM emp e, dept d WHERE e.deptno(+) = d.deptno; 자료가 없는 쪽에 (+)를 기입해야 출력됨. 방법2) ANSI SELECT e.ename, d.loc FROM emp e RIGHT OUTER JOIN dept d ON (e.deptno = d.deptno); 자료가 있는 쪽을 파악해서 LEFT / RIGHT OUTER JOIN (오른쪽에 outer한 데이터가 있다면, RIGHT OUTER JOIN ) 참고. LEFT OUTER JOIN 케이스 방..

Oracle DBA/SQL 2023.07.03

064 여러 테이블의 데이터를 조인해서 출력하기 7(NATURAL JOIN)

오라클이 알아서 조인 조건을 찾아서 조인 예제. 이름과 부서위치를 출력하는데 natural join으로 수행하시오. SELECT e.ename, d.loc FROM emp e NATURAL JOIN dept d; 문제 330. 부서위치, 부서위치별 토탈월급을 출력하시오. 방법1) EQUI JOIN SELECT d.loc, sum(e.sal) FROM emp e, dept d WHERE d.deptno = e.deptno GROUP BY d.loc; ORACLE 조인 문법 EQUI JOIN이므로 WHERE절에 조인 조건 명시 방법2) ANSI (USING) SELECT d.loc, sum(e.sal) FROM emp e JOIN dept d USING (deptno) GROUP BY d.loc; USING..

Oracle DBA/SQL 2023.07.03

063 여러 테이블의 데이터를 조인해서 출력하기 6(USING절)

구조 SELECT 컬럼명 나열 FROM 테이블1 JOIN 테이블2 USING (컬럼명); 주의 사항 : 1) USING절에는 테이블 별칭을 사용하지 않고, 공통 컬럼명 이름만 기입한다. 2) 공통컬럼명만 기입 가능하므로, EQUI JOIN만 가능하고 NON EQUI JOIN은 불가능하다. 3) USING절 괄호 필수 누락시 출력 메세지 ORA-00906: 누락된 좌괄호 00906. 00000 - "missing left parenthesis" 예제. 이름과 부서위치를 출력하는데 USING절을 사용한 조인으로 수행하시오. SELECT e.ename, d.loc FROM emp e JOIN dept d USING (deptno); -- 공통 컬럼명 테이블 별칭 없이 기입 문제 320. employees 테이..

Oracle DBA/SQL 2023.07.03

062 여러 테이블의 데이터를 조인해서 출력하기 5(ON절)

1999 ANSI 조인 문법 (ON절을 사용한 조인) 미국 국립 표준 협회 다음의 ORACLE 조인 문법을 ANSI 조인해서 동일한 결과를 출력해보시오. ORACLE조인 SELECT e.last_name AS 사원명, m.last_name AS 관리자명 FROM employees e, employees m WHERE e.manager_id = m.employee_id AND e.manager_id = 100; 1999 ANSI 조인 문법 (ON절을 사용한 조인) SELECT e.last_name, m.last_name FROM employees e JOIN employees m -- 조인하는 테이블 사이 'JOIN' 표기 ON (e.manager_id = m.employee_id) -- 조인 조건 WHE..

Oracle DBA/SQL 2023.07.03