연습문제 : 3장 기본적인 SELECT문
<<1>> 부서 번호가 10번인 부서의 사람 중 사원번호, 이름, 급여를 출력하라.
SQL> select empno, ename, sal
from emp
where deptno = 10;
<<2>> 사원번호가 7639인 사람 중 이름, 입사일자, 부서번호를 출력하라.
SQL> select ename, hiredate, deptno
from emp
where empno = '7369';
<<3>> 이름이 ALLEN인 사람의 모든 정보를 출력하라.
SQL> select *
from emp
where ename = 'ALLEN';
<<4>> 입사일자가 83/01/12인 사원의 이름, 부서 번호, 급여를 출력하라.
SQL> select ename, deptno, sal
from emp
where hiredate = '83/01/12';
SQL> select ename, deptno, sal
from emp
where hiredate = to_date('1983/01/12', 'yyyy/mm/dd'>> ;
<<5>> 직업이 MANAGER가 아닌 사람의 모든 정보를 출력하라.
SQL> select *
from emp
where job != 'MANAGER';
<<6>> 입사일자가 81/04/02 이후에 입사한 사원의 정보를 출력하라.
SQL> select *
from emp
where hiredate >= '81/04/02';
<<7>> 급여가 $800이상인 사람의 이름, 급여, 부서 번호를 출력하라.
SQL> select ename, sal, deptno
from emp
where sal >= 800;
<<8>> 부서번호가 20번 이상인 사원의 모든 정보를 출력하라.
SQL> select *
from emp
where deptno >= 20;
<<9>> 성명이 K로 시작하는 사람보다 높은 이름을 가진 사람의 모든 정보를 출력하라.
SQL> select *
from emp
where ename >= 'L%';
<<10>> 입사일자가 81/12/09 보다 먼저 입사한 사람들의 모든 정보를 출력하라.
SQL> select *
from emp
where hiredate < '81/12/09';
<<11>> 입사번호가 7698 보다 작거나 같은 사람들의 입사번호와 이름을 출력하라.
SQL> select empno, ename
from emp
where empno <= 7698;
<<12>> 입사일자가 81/04/02 보다 늦고 82/12/09 보다 빠른 사원의 이름, 월급, 부서 번호를 출력하라.
SQL> select ename, sal, deptno
from emp
where hiredate > '81/04/02'
and hiredate < '82/12/09';
<<13>> 급여가 1,600 보다 크고 $3,000보다 작은 사람은 이름, 직무, 급여를 출력하라.
SQL> select ename, job, sal
from emp
where sal > 1600
and sal < 3000;
<<14>> 사원번호가 7654와 7782 사이 이외의 사원의 모든 정보를 출력하라.
SQL> select *
from emp
where not empno between 7654 and 7782;
<<15>> 이름이 B와 J 사이의 모든 사원의 정보를 출력하라.
SQL> select *
from emp
where ename between 'B%' and 'K%';
<<16>> 입사일자가 81년 이외에 입사한 사람의 모든 정보를 출력하라.
SQL> select *
from emp
where hiredate not like '81%';
SQL> select *
from emp
where to_char(hiredate, 'yy/mm/dd'>> not like '81%';
<<17>> 직무가 MANAGER와 SALESMAN인 사람의 모든 정보를 출력하라.
SQL> select *
from emp
where job in ('MANAGER', 'SALESMAN'>> ;
<<18>> 부서 번호와 20,30번을 제외한 모든 사람의 이름, 사원번호, 부서 번호를 출력하라.
SQL> select ename, empno, deptno
from emp
where not deptno in (20, 30>> ;
<<19>> 이름이 S로 시작하는 사원의 사원번호, 이름, 입사일자, 부서번호를 출력하라.
SQL> select empno, ename, hiredate, deptno
from emp
where ename like 'S%';
<<20>> 입사일자가 81년도인 사람의 모든 정보를 출력하라.
SQL> select *
from emp
where to_char(hiredate, 'yy/mm/dd'>> like '81%';
<<21>> 이름 중 S자가 들어가 있는 사람만 모든 정보를 출력하라.
SQL> select *
from emp
where ename like '%S%';
<<22>> 이름이 S로 시작하고 마지막 글자가 T인 사람의 모든 정보를 출력하라 (단, 이름은 전체 5자리이다.>>
SQL> select *
from emp
where ename like 'S___T';
<<23>> 첫 번째 문자는 관계없고 두 번째 문자가 A인 사람의 정보를 출력하라.
SQL> select *
from emp
where ename like '_A%';
<<24>> 커미션이 NULL인 사람의 정보를 출력하라.
SQL> select *
from emp
where comm is null;
<<25>> 커미션이 NULL이 아닌 사람의 모든 정보를 출력하라.
SQL> select *
from emp
where comm is not null;
<<26>> 부서가 30번 부서이고 급여가 $1,500 이상인 사람의 이름, 부서, 월급을 출력하라.
SQL> select ename, deptno, sal
from emp
where deptno = 30
and sal >= 1500;
<<27>> 이름의 첫 글자가 K로 시작하거나 부서 번호가 30인 사람의 사원번호, 이름, 부서 번호를 출력하라.
SQL> select empno, ename, deptno
from emp
where ename like 'K%'
or deptno = 30;
<<28>> 급여가 $1,500이상이고 부서 번호가 30번인 사워 중 직업이 MANAGER인 사람의 정보를 출력하라.
SQL> select *
from emp
where sal >= 1500
and deptno = 30
and job = 'MANAGER';
<<29>> 부서 번호가 30인 사람 중 사원번호를 SORT 하라.
SQL> select *
from emp
where deptno = 30
order by empno;
<<30>> 급여가 많은 순으로 SORT하라.
SQL> select *
from emp
order by sal desc;
<<31>> 부서 번호로 ASCENDING SORT한 후 급여가 많은 사람 순으로 출력하라.
SQL> select *
from emp
order by deptno asc, sal desc;
<<32>> 부서 번호로 DESCENDING NSORT하고 이름 순으로 ASCENDING SORT, 급여 순으로 DESCENDING SORT하라.
SQL> select *
from emp
order by deptno desc, ename asc, sal desc;
연습문제 : 6장 조인과 서브 쿼리
<<1>> EMP와 DEPT TABLE을 JOIN하여 부서 번호, 부서명, 이름, 급여를 출력하라.
SQL> select e.deptno, d.dname, e.ename, e.sal
from emp e, dept d
where e.deptno = d.deptno;
SQL> select deptno, dname, ename, sal
from emp natural join dept;
<<2>> 이름이 'ALLEN'인 사원의 부서명을 출력하라.
SQL> select dname
from emp e, dept d
where e.deptno = d.deptno
and e.ename = 'ALLEN';
SQL> select d.dname
from emp e join dept d
on e.ename = 'ALLEN' and e.deptno = d.deptno;
<<3>> EMP Table의 데이터를 출력하되 해당사원에 대한 상관번호와 상관의 성명을 함께 출력하라.
SQL> select e.ename, e.mgr, c.ename mgr_name
from emp e, emp c
where e.mgr = c.empno;
SQL> select e.ename, e.mgr, c.ename mgr_name
from emp e join emp c
on e.mgr = c.empno;
<<4>> DEPT Table 에는 존재하는 부서코드이지만 해당부서에 근무하는 사람이 존재하지 않는 경우의 결과를 출력하라.
SQL> select *
from dept
where deptno not in (
select deptno
from emp
group by deptno
having count(*) > 0)
;
<<5>> 'ALLEN'의 직무와 같은 사람의 이름, 부서명, 급여, 직무를 출력하라.
SQL> select e.ename, d.dname, e.sal, e.job
from emp e, dept d
where e.deptno = d.deptno
and e.job = (select job from emp where ename = 'ALLEN')
;
<<6>> 'JONES'가 속해있는 부서의 모든 사람의 사원번호, 이름, 입사일자, 급여를 출력하라.
SQL> select e.empno, e.ename, e.hiredate, e.sal
from emp e
where e.deptno = (select deptno from emp where ename = 'JONES');
<<7>> 전체 사원의 평균 임금보다 많은 사원의 사우너번호, 이름, 부서명, 입사일, 지역, 급여를 출력하라.
SQL> select e.empno, e.ename, d.dname, e.hiredate, d.loc, e.sal
from emp e join dept d
on e.deptno = d.deptno
and e.sal > (select avg(sal) from emp );
<<8>> 10번 부서 사람들 중에서 20번 부서의 사원과 같은 업무를 하는 사원의 사원번호, 이름, 부서명, 입사일, 지역을 출력하라.
SQL> select e.empno, e.ename, d.dname, e.hiredate, d.loc
from emp e, dept d
where e.deptno = d.deptno
and e.job in (select job from emp where deptno = 20 );
<<9>> 10번 부서 중에서 30번 부서에는 없는 업무를 하는 사원의 사원번호, 이름, 부서명, 입사일자, 지역을 출력하라.
SQL> select e.empno, e.ename, d.dname, e.hiredate, d.loc
from emp e, dept d
where e.deptno = d.deptno
and e.job not in (select job from emp where deptno = 30);
<<10>> 10번 부서에 근무하는 사원의 사원번호, 이름, 부서명, 지역, 급여를 급여가 많은 순으로 출력하라.
SQL> select e.empno, e.ename, d.dname, d.loc, e.sal
from emp e, dept d
where e.deptno = d.deptno
and e.deptno = 10;
<<11>> 'MARTIN'이나 'SCOTT'의 급여와 같은 사원의 사원번호, 이름, 급여를 출력하라.
SQL> select empno, ename, sal
from emp
where sal in ( select sal from emp where ename in ('MARTIN', 'SCOTT') );
<<12>> 급여가 30번 부서의 최고 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라.
SQL> select empno, ename, sal
from emp
where sal > (select max(sal) from emp where deptno = 30 );
<<13>> 급여가 30번 부서의 최저 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라.
SQL> select empno, ename, sal
from emp
where sal > (select min(sal) from emp where deptno = 30 );
'IT > DB' 카테고리의 다른 글
[MySQL] 테이블 데이터 복사(컬럼값 변경 복사) (0) | 2021.01.11 |
---|---|
2018.07.17 - SQL JOIN 조인 (0) | 2018.07.17 |
MySql 내장함수 목록 (0) | 2018.04.26 |
mysql 샘플 테이블 + 쿼리 연습 문제 (7) | 2018.04.26 |
쿼리연습문제2 (0) | 2018.04.26 |