새소식

JAVA 교육/Sql

2019/07/22 SQL 활용 연습문제

  • -

[전 수업] 시나리오 정의서에 의한 테이블을 작성해보고 시퀀스를 사용해 일련번호를 넣어보았다

[본 수업] SQL 활용 연습문제들을 풀어보자

 


SQL 활용 연습문제.pdf
0.06MB

 문1) emp사원테이블을 생성하시오


create table emp(
    empno     number(4)   --사번
    ,ename     varchar2(10)--이름
    ,job          varchar2(9) --직급
    ,mgr         number(4)  --매니저정보
    ,hiredate   date           --입사일
    ,sal           number(7,2)--급여
    ,comm      number(7,2)--커미션(보너스)
    ,deptno     number(2)  --부서코드
);

 

 

문2) emp 사원테이블에 행을 추가하시오

insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7369, '개나리', '사원', 7902, '2000-12-17', 200, 20);

insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7499, '진달래', '주임', 7698, '2001-12-15', 360, 20);

insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7521, '라일락', '주임', 7698, '2001-02-17', 355, 30);

insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7654, '손흥민', '과장', 7839, '2002-01-11', 400, 30);

insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7698, '박지성', '주임', 7698, '2000-07-12', 325, 20);

insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7782, '김연아', '사원', 7698, '2001-12-17', 225, 10);

insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7778, '무궁화', '사원', 7839, '2005-11-14', 200, 10);

insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7839, '홍길동', '부장', 7566, '2006-06-17', 450, 20);

insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7844, '송강호', '과장', 7566, '2018-09-17', 400, 30);

insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7876, '정우성', '대표', 7839, '2004-09-09', 500, 30);

insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7900, '김혜수', '사원', 7902, '2001-12-03', 200, 20);

 

문3) 테이블의 필드 목록을 확인하시오


 

select * from emp;

 

 

 

 

문4~5) 사원이름순(오름차순) 정렬하시오

 

※오름차순
select empno,ename
from emp
order by ename;

 

※내림차순
select empno,ename
from emp
order by ename desc;

 

 

문6) 급여 내림차순으로 사원이름(enme),급여(sal), 부서코드(deptno)를 조회하시오

 

select ename,sal,deptno
from emp
order by sal desc;

 

 

 

문7) 부서코드 오름차순, 급여 내림차순으로
      사원이름(ename), 급여(sal), 부서코드(deptno)를 조회하시오


 

select ename,sal,deptno
from emp
order by deptno asc, sal desc;

 

 

 

 

문8) 이름(ename)/입사일자(hiredate)/부서코드(deptno)를
      부서코드 오름차순, 입사일자(hiredate) 오름차순으로 조회하시오

 

 

select ename,hiredate,deptno
from emp
order by deptno, hiredate;

 

 

 

 

문9) 직급(job) 칼럼의 중복데이터를 하나씩만 조회하시오

 

 

select DISTINCT (job)
from emp;

 

 

문10) emp테이블의 job 오름차순, sal 내림차순으로 정렬해서
           ename 이름, job 직급, sal 급여 칼럼명으로 별칭을 바꿔서 조회하시오

 

 

select ename 이름, job 직급, sal 급여
from emp
order by job asc,급여 desc;

 

 

※위에서 임시로 사용한 급여라는 이름으로 정렬이 가능하다

 

문11) 급여가 100보다 많고 400보다 작은 직원 조회하기(급여 내림차순)

 

select ename,sal
from emp
where sal>100 AND sal<400
order by sal desc;

 

 

 

문12) 급여가 100이하 또는 400 이상의 직원 검색하기(급여 내림차순)

 

select ename,sal
from emp
where sal<=100 OR sal>=400
order by sal desc;

 

 

문13) 직급(job)이 과장 또는 부장인 직원들을 이름순으로 조회하시오

 

select ename,job
from emp
where job in('과장','부장')
order by ename;

 

 

문14) 부서코드(deptno)가 30인 직원을 조회하시오

 

select ename,deptno
from emp
where deptno=30;

 

 

 

문15) 중복된 부서코드를 한개씩만 조회하시오


select DISTINCT deptno
from emp;

 

 

 

 

문16) 부서코드가 10 또는 20 또는 30인 직원을 조회하시오
        (or, in연산자 각각 활용해서 조회)

 

 

select ename,deptno
from emp
where deptno in('10','20','30');

 

 

 

 

문17) 급여가 300~500인 직원을 급여순으로 조회하시오
        (and, between연산자 각각 활용해서 조회)

 

select *
from emp
where sal between 300 and 500
order by sal asc;

 

 

 

 

문18) 이름이 무궁화 조회하시오

 

 

select ename
from emp
where ename='무궁화';

 

 

 

문19) 김씨성을 조회하시오

 

 

select ename
from emp
where ename like('김__');

 

 

 

 

문20) 이름에 '화' 포함된 줄을 조회하시오

 

select *
from emp
where ename like('%화%');

 

 

 

문21) 연봉을 아래와 같이 구한후 이름, 급여, 커미션, 연봉을 조회하시오
           연봉구하는 식 : 급여(sal)*12개월+보너스(comm)
           dual 로 임시테이블을 볼 수 있다

 

select ename,sal,comm,(sal*12)+comm as 연봉
from emp;

 

 

 

 

문22) 커미션(comm)이 null이면 0으로 바꾼후 연봉을 다시 계산해서
        이름, 급여, 커미션(comm), 연봉을 조회하시오

 

 

select ename,sal,nvl(comm,0)as 보너스,(sal*12)+nvl(comm,0) as 연봉
from emp;

 

 

 

문23) 각 사람의 급여를 검색해서 '누구누구의 급여는 얼마입니다'로 조회하시오
(|| 결합연산자)

 

select ename || '의' ||' 급여는 '|| sal || '입니다'
from emp;

 

 

 

문24) 다음의 SQL문을 분석하시오
select empno, sal 
from emp
where not(sal>200 and sal<300)
order by sal;

emp 테이블에서 급여가 200이하 300이상인 사번을 급여가 오름차순으로 해서 구하시오

 

 

문25) emp테이블에서 입사일(hiredate)이 2005년 1월 1일 이전인 사원에 대해
          사원의 이름(ename), 입사일, 부서번호(deptno)를 입사일순으로 조회하시오

 

select ename,hiredate,deptno
from emp
where hiredate<'2005-01-01'
order by hiredate;

 

 

 

문26) emp테이블에서 부서번호가 20번이나 30번인 부서에 속한
          사원들에 대하여 이름, 직업코드(job), 부서번호를 이름순으로 조회하시오
          (or, in연산자 각각 활용해서 모두 조회)

 

select ename,job,deptno
from emp
where deptno='20'OR deptno='30'
order by ename;

 

 

 

※연산자 우선순위
() 괄호:연산자 우선순위보다 우선함
1순위: 비교연산자,SQL연산자,산술연산자
2순위: not
3순위: and
4순위: or
5순위: 결합연산자

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.