본문 바로가기

Oracle

Oracle sqlplus select (연산자)

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 부서번호

 

 

 

1. 산술 연산자 ( +, -, *, / )

- 부서번호가 10번인 사원들의 급여를 출력하되 10% 인상된 금액으로 출력 해 보세요.

- select sal, sal*1.1 from emp where deptno=10;

 

2. 비교 연산자 ( =, !=, > , < , >=, <= )

- 급여가 3000 이상인 사원들의 모든 정보를 출력하세요.

- select * from emp where sal>=3000; 

 

- 부서번호가 30번이 아닌 사람들의 이름과 부서번호를 출력해보세요.

- select ename, deptno from emp where deptno != 30;

 

3. 논리 연산자 ( AND, OR, NOT )

- 부서번호가 10번이고 급여가 3000 이상인 사원들의 이름과 급여를 출력하세요.

- select ename, sal from emp where deptno=10 and sal >= 3000;

 

- 직업이 SALESMAN 이거나 MANAGER 인 사원의 사원번호와 부서번호를 출력하세요.

- select empno, deptno from emp where job='SALESMAN' or job='MANAGER';

 

4. SQL 연산자 ( IN, ANY, ALL, BETWEEN, LIKE, IS NULL, IS NOT NULL )

 

4-1 IN 연산자 ( OR 연산자와 비슷한 역활)

- 부서번호가 10번이거나 20번인 사원의 사원번호와 이름, 부서번호 출력하기

- select empno, ename, deptno from emp where deptno in(10,20);

 

- 위의 내용을 or 연산자로 적으면

- select empno, ename, deptno from emp where deptno=10 or deptno=20;

 

4-2 ANY 연산자 (조건을 비교할때 어느 하나라도 맞으면 true)

- 급여가 1000 이상인 사원번호를 출력

- select empno, sal from emp where sal > ANY(1000, 2000, 3000);

→결과적으로 는 급여가 1000 이상인 로우를 SELECT 하게 된다.

 

4-3 ALL 연산자 (조건을 비교할때 조건이 모두 맞는다면 true)

- 급여가 3000이상인 사원번호를 출력

- select empno from emp where sal>= ALL(1000, 2000, 3000);

→결과적으로 는 급여가 3000 이상인 로우를 SELECT 하게 된다.

 

4-4 BETWEEN A AND B (A와 B사이의 데이터를 얻어온다)

- 급여가 1000과 2000 사이인 사원들의 사원번호, 이름, 급여를 출력하세요.

- select empno, ename, sal from emp where sal between 1000 and 2000;

 

4-5 IS NULL (NULL 인 경우 TRUE), IS NOT NULL (NULL 이 아닌경우 TRUE)

- 커미션이 NULL 인 사원의 사원이름과 커미션을  출력해보세요.

- select ename, comm from emp where comm is null;

 

- 커미션이 NULL 이 아닌 사원의 사원이름과 커미션을 출력해보세요.

- select ename, comm from emp where comm is not null;

 

4-6 EXISTS (데이터가 존재하면 true)

- 사원이름이 'FORD' 인 사원이 존재하면 사원의 이름과 커미션을 출력하기

- select ename, comm from emp where exists(select ename from emp where ename='FORD');

 

4-7 LIKE 연산자 (문자열 비교)

- 사원이름이 'J'로 시작하는 사원의 사원이름과 부서번호를 출력하기

- select ename, deptno from emp where ename like 'J%';

 

- 중앙에 포함될 경우

- 사원이름에 'J' 가 포함된는 사원의 이름과 부서번호를 출력하기

- select ename, deptno from emp where ename like '%J%';

 

- 두번째 글자가 포함될 경우

- 사원이름의 두번째 글자가 'A' 인 사원의 이름,급여,입사일을 출력하기

- select ename, sal, hiredate from emp where ename like '_A%';

 

- 끝나는 글자가 포함될 경우

- 사원 이름이 'ES' 로 끝나는 사원의 이름,급여,입사일을 출력해 보세요.

- select ename, sal, hiredate from emp where ename like '%ES';

 

5. 결합 연산자 ( || )

- 단순히 문자열을 연결해서 하나의 데이터로 리턴한다. (javascript 의 + 랑 비슷한 역활)

- select ename || '의 직업은' || job || '입니다.' from emp;