본문 바로가기

ORACLE/Excercise

Oracle - 연습문제 #2



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