select 실행 순서
1. from 테이블명
2. where 조건절
3. group by 칼럼명
4. having 조건절
5. select 칼럼명1, 칼럼명2, ...
6. order by 칼럼명 [asc/desc] > 오름차순 혹은 내림차순
※ 계정 파일은 oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN 폴더안에 있는 scott.sql 파일을 활용함.
예제 table
테이블 column 설명
- empno 사원번호
- ename 사원이름
- job 직책
- mgr 매니저의 사원번호
- hiredate 입사일
- sal 봉급
- comm 성과급
- deptno 부서번호
dept 예제 table
- deptno 부서번호
- dname 부서명
- loc 장소
JOIN
- 하나의 테이블로 원하는 칼럼정보를 참조할수 없는 경우 관련된 테이블을 논리적으로
결합하여 원하는 칼럼 정보를 참조하는 방법을 JOIN 이라고 한다.
[기본형식]
- select 칼럼명1, 칼럼명2... from 테이블명1, 테이블명2... where join 조건 and 다른 조건...
- EMP 테이블의 모든 사원들의 이름, 부서번호, 부서명을 출력해 보세요.
- select ename, emp.deptno, dname from emp, dept where emp.deptno=dept.deptno;
- 급여가 3000 에서 5000 사이의 사원이름과 부서명을 출력해보시오.
- select ename, dname from emp, dept where emp.deptno = dept.deptno and sal between 3000 and 5000;
- 부서명이 'ACCOUNTING' 인 사원의 이름, 입사일, 부서번호, 부서명을 출력해보시오
- select ename, emp.deptno, dname, hiredate from emp, dept where emp.deptno=dept.deptno and dname='ACCOUNTING';
- 부서명이 'ACCOUNTING' 인 사원의 이름, 입사일, 부서번호, 부서명을 출력해보시오.
- select ename, deptno, dname, hiredate from emp inner join dept using(deptno) where dname='ACCOUNTING';
- 커미션이 NULL이 아닌 사원의 이름, 입사일, 부서명을 출력해보시오.
- select ename, hiredate, dname from emp, dept where emp.deptno=dept.deptno and comm is not NULL;
2. SELF 조인
- 참조해야할 칼럼이 자신의 테이블에 있는 경우에 사용하는 JOIN 방법
- 각 사원의 이름과 매니저의 이름을 출력하세요.
- select e1.ename, e2.ename from emp e1, emp e2 where e1.mgr = e2.empno;
3. OUTER JOIN
- 한쪽 테이블에 해당하는 데이터가 존재하는데 다른 테이블에는 데이터가 존재하지 않을때에도
모든 데이터를 추출하도록 하는 JOIN 방법
- 사원번호, 부서번호, 부서명을 출력하세요 (단 사원이 근무하지 않는 부서명도 같이 출력해보시오)
- select dept.deptno, emp.empno, dept.dname from emp, dept where emp.deptno(+)=dept.deptno;
- select d.deptno, e.empno, d.dname from emp e, dept d where e.deptno(+)=d.deptno; → 줄임표현
예제)
- emp 테이블과 dept 테이블을 조인하여 부서번호,부서명,이름,급여 를 출력해 보세요!
- select e.deptno, d.dname, e.ename, e.sal from emp e, dept d where e.deptno = d.deptno;
- 사원의 이름이 'ALLEN' 인 사원의 부서명을 출력해보세요
- select e.ename, d.dname from emp e, dept d where e.deptno = d.deptno and e.ename = 'ALLEN' ;
- 모든 사원의 이름, 부서번호, 부서명, 급여를 출력하세요. 단, emp 테이블에 없는 부서도 출력해보세요
>select e.ename, e.deptno, d.dname, e.sal from emp e, dept d where e.deptno(+) = d.deptno ;
- 다음과 같이 모든 사원의 매니저를 출력해보세요
- select e1.ename || ' 의 매니저는 ' || e2.ename || ' 입니다' from emp e1,emp e2 where e1.mgr = e2.empno ;
- 사원의 이름과 급여, 급여의 등급을 출력해 보세요
- select ename, sal, grade from emp, salgrade where sal between losal and hisal;
- 사원의 이름과, 부서명, 급여의 등급을 출력해 보세요
- select e.ename, d.dname, s.grade from emp e, dept d, salgrade s where e.deptno = d.deptno and e.sal between s.losal and s.hisal;
'Oracle' 카테고리의 다른 글
Oracle sqlplus Constraint(제약조건) (0) | 2023.04.21 |
---|---|
Oracle sqlplus select sub-Query (2) | 2023.04.21 |
Oracle sqlplus select Function(복수행 함수) (0) | 2023.04.20 |
Oracle sqlplus select Function(단일행 함수) (0) | 2023.04.20 |
Oracle sqlplus select (연산자) (0) | 2023.04.19 |