
데이터 누락 확인, 선택적인 관련 데이터 검색, 존재하지 않는 값에 대한 기본값처리, 다양한 조인 유형 적용등의 이유로 사용
LEFT
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON d.department_id = e.department_id;
RIGHT
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON d.department_id = e.department_id;
FULL
CROSS JOIN
SELECT e.last_name, d.department_name
FROM employees e
CROSS JOIN departments d;
SELECT COUNT(*)
FROM ( SELECT last_name, department_name
FROM employees
CROSS JOIN departments);
SELF JOIN + || 용한 문자열형태 출력
SELECT e1.last_name, e1.manager_id, e2.employee_id, e2.last_name
FROM employees e1, employees e2
WHERE e1.manager_id = e2.employee_id;
SELECT e1.last_name || ' works for ' || e2.last_name as "사원명 works for 매니저명"
FROM employees e1, employees e2
WHERE e1.manager_id = e2.employee_id;
UNION, UNION ALL, INTERSECT, EXCEPT(MINUS)
UNION
UNION ALL
INTERSECT
EXCEPT (MINUS)
UNION과 JOIN 비교

공통점
차이점
UNION
UNION ALL
SELECT employee_id, job_id
FROM employees
UNION ALL
SELECT employee_id, job_id
FROM job_history;
INTERSECT
SELECT employee_id, job_id
FROM employees e
INTERSECT
SELECT employee_id, job_id
FROM job_history j;
MINUS
SELECT employee_id, job_id
FROM employees e
MINUS
SELECT employee_id, job_id
FROM job_history j;
Step1. SQL 분석
Step2. SQL 실행
Step3. SQL 실행 (SELECT인 경우)
VM 환경에 파일 보내기
scp 파일 user명@localhost(IP): /경로
cmd
scp scott.sql oracle@192.168.56.114:/oracle
파일 내용 변경

권한주기
관련 파일 위치에서 SQL로 접속해서 부여해야 된다.
<VM환경>
SQL> Show User
SQL> USER is "SYS"
grant plustrace to scott;
grant dba to scott;
테이블 생성
권한이 부여가 된 USER로 로그인
SQL> CREATE TABLE EMP0 AS SELECT * FROM EMP;
SQL> CREATE TABLE EMP1 AS SELECT * FROM EMP;
SQL> INSERT INTO EMP1 SELECT * FROM EMP1;
SQL> UPDATE EMP1 SET EMPNO = ROWNUM; (중복 제거)
SQL> COMMIT; (DB에 올리기)
SQL> SELECT * FROM EMP1; ( 확인 )
SOFT PARSING 확인
SQL> execute dbms_stats.gather_schema_stats('scott');
SQL> set autotrace on explain (자동으로 기록을 남기는 explain를 킨다)
SQL> SELECT sql_text FROM v$sql
WHERE sql_text='SELECT * FROM emp0';
SQL> SELECT * FROM emp0
SQL> ALTER SYSTEM FLUSH SHARED_POOL; (기록 제거)
SQL> set autotrace off ( 기록 남기는 시스템 종료 )

- 아무것도 없을때
- 데이터가 남았을때