1. WHERE 절에 HIREDATE의 비교를 '01-JAN-82'가 아닌 '01-jan-82'로 기술하면 결과는?
SQL> SELECT * 2 FROM emp; 3 WHERE hiredate = '01-jan-82'; |
-------------------------------------------------------------------
답 - 오류가 뜨면서 결과가 출력되지 않는다. where hiredate = 'A' 에서 A는 지정되어 있는 값이기 때문이다.
SQL> select * from emp
2 where hiredate = '01-jan-82';
where hiredate = '01-jan-82'
*
2행에 오류:
ORA-01858: 수치를 지정해야 할 위치에 비수치 문자가 지정되었습니다
SQL>
2. EMP 테이블에서 급여가 3000 이상인 사원의 사원번호, 이름, 담당업무, 급여를 출력하는 SELECT 문장을 작성하시오.
-------------------------------------------------------------------
SQL> select empno, ename, job, sal from emp
2 where sal >= 3000;
EMPNO ENAME JOB SAL
---------- -------------------- ------------------ ----------
7788 SCOTT ANALYST 3000
7839 KING PRESIDENT 5000
7902 FORD ANALYST 3000
SQL> select ename, deptno from emp
2 where empno = 7788;
ENAME DEPTNO
-------------------- ----------
SCOTT 20
SQL>
3. EMP 테이블에서 사원번호가 7788 인 사원의 이름과 부서번호를 출력하는 SELECT 문장을 작성하시오.
-------------------------------------------------------------------
SQL> select ename, deptno from emp
2 where empno = 7788;
ENAME DEPTNO
-------------------- ----------
SCOTT 20
SQL>
4. EMP 테이블에서 입사일이 February 20, 1981 과 May 1, 1981 사이에 입사한 사원의 이름, 업무, 입사일을 출력하는 SELECT 문장을 작성하시오. 단 입사일 순으로 출력하시오.
-------------------------------------------------------------------
SQL> select ename, job, hiredate from emp
2 where hiredate between '81/02/20' and '81/05/01';
ENAME JOB HIREDATE
-------------------- ------------------ --------
ALLEN SALESMAN 81/02/20
WARD SALESMAN 81/02/22
JONES MANAGER 81/04/02
BLAKE MANAGER 81/05/01
SQL>
5. EMP 테이블에서 부서번호가 10, 20 인 사원의 모든 정보를 출력하는 SELECT 문장을 작성하시오. 단 이름순으로 정렬하시오.
-------------------------------------------------------------------
SQL> select * from emp
2 where deptno in (10,20)
3 order by ename asc;
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------
SAL COMM DEPTNO
---------- ---------- ----------
7876 ADAMS CLERK 7788 87/05/23
1100 20
7782 CLARK MANAGER 7839 81/06/09
2450 10
7902 FORD ANALYST 7566 81/12/03
3000 20
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------
SAL COMM DEPTNO
---------- ---------- ----------
7566 JONES MANAGER 7839 81/04/02
2975 20
7839 KING PRESIDENT 81/11/17
5000 10
7934 MILLER CLERK 7782 82/01/23
1300 10
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------
SAL COMM DEPTNO
---------- ---------- ----------
7788 SCOTT ANALYST 7566 87/04/19
3000 20
7369 SMITH CLERK 7902 80/12/17
800 20
8 개의 행이 선택되었습니다.
SQL>
6. EMP 테이블에서 급여가 1500 이상이고 부서번호가 10 또는 30인 사원의 이름과 급여를 출력하는 SELECT 문장을 작성하여라. 단 HEADING 을 Employee 과 Monthly Salary로 출력하여라.
-------------------------------------------------------------------
SQL> select ename as "Employee", sal as "Monthly salary" from emp
2 where sal >= 1500 and deptno in(10,30);
Employee Monthly salary
-------------------- --------------
ALLEN 1600
BLAKE 2850
CLARK 2450
KING 5000
TURNER 1500
SQL>
7. EMP 테이블에서 1982 년에 입사한 사원의 모든 정보를 출력하는 SELECT 문을 작성하여라.
-------------------------------------------------------------------
SQL> select * from emp
2 where hiredate between '82/01/01' and '82/12/31';
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------
SAL COMM DEPTNO
---------- ---------- ----------
7934 MILLER CLERK 7782 82/01/23
1300 10
SQL>
8. EMP 테이블에서 COMMISSION 이 NULL 이 아닌 사원의 모든 정보를 출력하는 SELECT 문을 작성하여라.
-------------------------------------------------------------------
SQL> select * from emp
2 where comm is not null;
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------
SAL COMM DEPTNO
---------- ---------- ----------
7499 ALLEN SALESMAN 7698 81/02/20
1600 300 30
7521 WARD SALESMAN 7698 81/02/22
1250 500 30
7654 MARTIN SALESMAN 7698 81/09/28
1250 1400 30
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------
SAL COMM DEPTNO
---------- ---------- ----------
7844 TURNER SALESMAN 7698 81/09/08
1500 0 30
SQL>
9. EMP 테이블에서 보너스가 급여보다 10%가 많은 모든 종업원에 대하여 이름, 급여, 보너스를 출력하는 SELECT 문을 작성하여라.
-------------------------------------------------------------------
SQL> select ename, sal, comm from emp
2 where comm >= sal+(sal*0.1);
ENAME SAL COMM
-------------------- ---------- ----------
MARTIN 1250 1400
SQL>
10. EMP 테이블에서 업무가 Clerk 이거나 Analyst 이고 급여가 1000, 3000, 5000 이 아닌 모든 사원의 정보를 출력하는 SELECT 문을 작성하여라.
-------------------------------------------------------------------
SQL> select * from emp
2 where (job = 'CLERK' or job = 'ANALYST') and sal not in (1000,3000,5000);
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------
SAL COMM DEPTNO
---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17
800 20
7876 ADAMS CLERK 7788 87/05/23
1100 20
7900 JAMES CLERK 7698 81/12/03
950 30
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------
SAL COMM DEPTNO
---------- ---------- ----------
7934 MILLER CLERK 7782 82/01/23
1300 10
SQL>
11. EMP 테이블에서 이름에 L이 두자가 있고 부서가 30 이거나 또는 관리자가 7782인 사원의 모든 정보를 출력하는 SELECT 문을 작성하여라.
-------------------------------------------------------------------
SQL> select * from emp
2 where ename like '%L%L%' and (deptno = 30 or empno = 7782);
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------
SAL COMM DEPTNO
---------- ---------- ----------
7499 ALLEN SALESMAN 7698 81/02/20
1600 300 30
SQL>
'ORACLE > Excercise' 카테고리의 다른 글
Oracle - 연습문제 #7 (0) | 2008.12.29 |
---|---|
Oracle - 연습문제 #6 (0) | 2008.12.29 |
Oracle - 연습문제 #5 (0) | 2008.12.27 |
Oracle - 연습문제 #4 (0) | 2008.12.27 |
Oracle - 연습문제 #3 (0) | 2008.12.26 |
Oracle - 연습문제 #1 (0) | 2008.12.26 |