1. select문 연습하기
SQL> select ename 이름, job 직업 from emp;
[select 필드명 alias from 테이블명 ]
필드명이 별명(alias)으로 대체되어져 보여짐!
이름 직업
-------------------- ------------------
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
JONES MANAGER
MARTIN SALESMAN
BLAKE MANAGER
CLARK MANAGER
KING PRESIDENT
TURNER SALESMAN
JAMES CLERK
FORD ANALYSTMILLER CLERK
12 개의 행이 선택되었습니다.
SQL> select * from emp
2 where ename ='KING';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7839 KING PRESIDENT 81/11/17 5000 10
SQL> select * from emp
2 order by ename;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ----------7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7902 FORD ANALYST 7566 81/12/03 3000 20
7900 JAMES CLERK 7698 81/12/03 950 30
7566 JONES MANAGER 7839 81/04/02 2975 20
7839 KING PRESIDENT 81/11/17 5000 10
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7934 MILLER CLERK 7782 82/01/23 1300 10
7369 SMITH CLERK 7902 80/12/17 800 20
7844 TURNER SALESMAN 7698 81/09/08 1500 0 307521 WARD SALESMAN 7698 81/02/22 1250 500 30
12 개의 행이 선택되었습니다.
문1>이름이 smith인 사람의 월급여를 조회하시오.
SQL> select sal from emp
2 where ename='SMITH';
SAL
----------
800
문2>월급이 2000이상인 사람의 이름과 직업을 선택하시오.
SQL> select ename, job from emp
2 where sal>=2000;
ENAME JOB
-------------------- ------------------
JONES MANAGER
BLAKE MANAGER
CLARK MANAGER
KING PRESIDENT
FORD ANALYST
문3>연봉이 많은 사람 기준으로 정령하여 나타내시오.
SQL> set linesize 150
SQL> select * from emp
2 order by sal desc;
문4>부서번호가 30번이고 급여가 2000이상인 사람만 조회하시오.
SQL> select * from emp
2 where sal>=2000 and deptno=30;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7698 BLAKE MANAGER 7839 81/05/01 2850 30
문5>부서번호가 10, 20번인 자료만 조회하시오.
SQL> select * from emp
2 where deptno=10 or deptno=20;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ----------7369 SMITH CLERK 7902 80/12/17 800 20
7566 JONES MANAGER 7839 81/04/02 2975 20
7782 CLARK MANAGER 7839 81/06/09 2450 10
7839 KING PRESIDENT 81/11/17 5000 10
7902 FORD ANALYST 7566 81/12/03 3000 20
7934 MILLER CLERK 7782 82/01/23 1300 10
6 개의 행이 선택되었습니다.
SQL> select * from emp
2 where deptno in(10,20); //where 속성명 in (찾는 값1, 값2, ...)
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ----------7369 SMITH CLERK 7902 80/12/17 800 20
7566 JONES MANAGER 7839 81/04/02 2975 20
7782 CLARK MANAGER 7839 81/06/09 2450 10
7839 KING PRESIDENT 81/11/17 5000 10
7902 FORD ANALYST 7566 81/12/03 3000 20
7934 MILLER CLERK 7782 82/01/23 1300 10
6 개의 행이 선택되었습니다.
문6>직업이 CLERK, SALESMAN인 사람의 이름, 직업, 연봉, 부서번호를 나타내시오.
SQL> select ename,job,sal,deptno from emp
2 where job in('CLERK','SALESMAN');
ENAME JOB SAL DEPTNO
-------------------- ------------------ ----------SMITH CLERK 800 20
ALLEN SALESMAN 1600 30
WARD SALESMAN 1250 30
MARTIN SALESMAN 1250 30
TURNER SALESMAN 1500 30
JAMES CLERK 950 30
MILLER CLERK 1300 10
7 개의 행이 선택되었습니다.
문7>부서번호를 정렬하여 나타내시오.(단, 부서번호가 같을 경우는 월급여가 많은 순서대로 나태내시오.)
SQL> select * from emp
2 order by deptno, sal desc;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ----------7839 KING PRESIDENT 81/11/17 5000 10
7900 JAMES CLERK 7698 81/12/03 950 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7934 MILLER CLERK 7782 82/01/23 1300 10
7902 FORD ANALYST 7566 81/12/03 3000 20
7566 JONES MANAGER 7839 81/04/02 2975 20
7369 SMITH CLERK 7902 80/12/17 800 20
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
12 개의 행이 선택되었습니다.
문8>emp 테이블의 모든 자료를 조회하여 이름, 직업, 월급, 연봉을 나태내시오.
SQL> select ename, job, sal, sal*12 from emp;
ENAME JOB SAL SAL*12
-------------------- ------------------ ---------- ----------
SMITH CLERK 800 9600
ALLEN SALESMAN 1600 19200
WARD SALESMAN 1250 15000
JONES MANAGER 2975 35700
MARTIN SALESMAN 1250 15000
BLAKE MANAGER 2850 34200
CLARK MANAGER 2450 29400
KING PRESIDENT 5000 60000
TURNER SALESMAN 1500 18000
JAMES CLERK 950 11400
FORD ANALYST 3000 36000MILLER CLERK 1300 15600
12 개의 행이 선택되었습니다.
SQL> select ename 이름, job 직업, sal 월급, sal*12 연봉 from emp;
이름 직업 월급 연봉
-------------------- ------------------ ---------- ----------
SMITH CLERK 800 9600
ALLEN SALESMAN 1600 19200
WARD SALESMAN 1250 15000
JONES MANAGER 2975 35700
MARTIN SALESMAN 1250 15000
BLAKE MANAGER 2850 34200
CLARK MANAGER 2450 29400
KING PRESIDENT 5000 60000
TURNER SALESMAN 1500 18000
JAMES CLERK 950 11400
FORD ANALYST 3000 36000MILLER CLERK 1300 15600
12 개의 행이 선택되었습니다.
문9>연봉의 0.33%는 세금이다. 이름, 직업, 연봉, 세금, 실수령액을 나타내시오.
SQL> select ename 이름, job 직업, sal*12 연봉, sal*12*0.33 세금, (sal*12)-(sal*12*0.33) 실수령액 from emp;
이름 직업 연봉 세금 실수령액
-------------------- ------------------ ---------- ---------- ----------
SMITH CLERK 9600 3168 6432
ALLEN SALESMAN 19200 6336 12864
WARD SALESMAN 15000 4950 10050
JONES MANAGER 35700 11781 23919
MARTIN SALESMAN 15000 4950 10050
BLAKE MANAGER 34200 11286 22914
CLARK MANAGER 29400 9702 19698
KING PRESIDENT 60000 19800 40200
TURNER SALESMAN 18000 5940 12060
JAMES CLERK 11400 3762 7638
FORD ANALYST 36000 11880 24120MILLER CLERK 15600 5148 10452
12 개의 행이 선택되었습니다.
문10>직업이 manager인 사람의 이름과 입사일을 아래와 같이 표시하시오.
SQL> select ename "이 름", hiredate "입 사 일" from emp
2 where job='MANAGER';
이 름 입 사 일
-------------------- --------
JONES 81/04/02
BLAKE 81/05/01
CLARK 81/06/09
문11>입사년도 81년인 사람을 모두 보이시오.
SQL> select ename from emp
2 where hiredate>='81/01/01' and hiredate<='81/12/31';
ENAME
--------------------
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
KING
TURNER
JAMES
FORD
10 개의 행이 선택되었습니다.
2. 날짜 검색하기
SQL> select sysdate from dual;
SYSDATE
--------
09/07/28
SQL> select ename, sysdate from emp;
ENAME SYSDATE
-------------------- --------
SMITH 09/07/28
ALLEN 09/07/28
WARD 09/07/28
JONES 09/07/28
MARTIN 09/07/28
BLAKE 09/07/28
CLARK 09/07/28
KING 09/07/28
TURNER 09/07/28
JAMES 09/07/28
FORD 09/07/28MILLER 09/07/28
12 개의 행이 선택되었습니다.
문12>emp데이터를 활용하여 각 데이터의 근무년수를 계산하시오.
SQL> select (sysdate-hiredate)/365 근무년수 from emp;
근무년수
----------
28.6319886
28.4539064
28.448427
28.3415777
27.8511667
28.2621256
28.1552763
27.7141804
27.9059612
27.6703448
27.670344827.5306188
12 개의 행이 선택되었습니다.
3. 중복 값 제거하기
SQL> select deptno from emp;
DEPTNO
----------
20
30
30
20
30
30
10
10
30
30
2010
12 개의 행이 선택되었습니다.
SQL> select distinct deptno from emp;
DEPTNO
----------
30
20
10
4. 문장 만들기
SQL> set pagesize 15;
SQL> select ename || '님의 직업은' || job || '입니다.' as 문장 from emp;
문장
-----------------------------------------------
SMITH님의 직업은CLERK입니다.
ALLEN님의 직업은SALESMAN입니다.
WARD님의 직업은SALESMAN입니다.
JONES님의 직업은MANAGER입니다.
MARTIN님의 직업은SALESMAN입니다.
BLAKE님의 직업은MANAGER입니다.
CLARK님의 직업은MANAGER입니다.
KING님의 직업은PRESIDENT입니다.
TURNER님의 직업은SALESMAN입니다.
JAMES님의 직업은CLERK입니다.
FORD님의 직업은ANALYST입니다.
MILLER님의 직업은CLERK입니다.
12 개의 행이 선택되었습니다.
SQL> desc emp;
이름 널? 유형
----------------------------------------------------------------------------- -------- -----------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
7566 JONES MANAGER 7839 81/04/02 2975 20
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7839 KING PRESIDENT 81/11/17 5000 10
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7900 JAMES CLERK 7698 81/12/03 950 30
7902 FORD ANALYST 7566 81/12/03 3000 20
7934 MILLER CLERK 7782 82/01/23 1300 10
12 개의 행이 선택되었습니다.
SQL> select distinct deptno from emp;
DEPTNO
----------
30
20
10
SQL> select distinct job from emp;
JOB
------------------
CLERK
SALESMAN
PRESIDENT
MANAGER
ANALYST
SQL> select ename || '님의 직업은'|| job ||'이고 연봉은'|| sal*12 ||'입니다.' from emp;
ENAME||'님의직업은'||JOB||'이고연봉은'||SAL*12||'입니다.'
------------------------------------------------------------------------------------------------
SMITH님의 직업은CLERK이고 연봉은9600입니다.
ALLEN님의 직업은SALESMAN이고 연봉은19200입니다.
WARD님의 직업은SALESMAN이고 연봉은15000입니다.
JONES님의 직업은MANAGER이고 연봉은35700입니다.
MARTIN님의 직업은SALESMAN이고 연봉은15000입니다.
BLAKE님의 직업은MANAGER이고 연봉은34200입니다.
CLARK님의 직업은MANAGER이고 연봉은29400입니다.
KING님의 직업은PRESIDENT이고 연봉은60000입니다.
TURNER님의 직업은SALESMAN이고 연봉은18000입니다.
JAMES님의 직업은CLERK이고 연봉은11400입니다.
FORD님의 직업은ANALYST이고 연봉은36000입니다.
MILLER님의 직업은CLERK이고 연봉은15600입니다.
12 개의 행이 선택되었습니다.
SQL> select * from dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select dname || '은 부서명이고 ' || loc || '은 위치 입니다.' from dept;
ACCOUNTING은 부서명이고 NEW YORK은 위치 입니다.
RESEARCH은 부서명이고 DALLAS은 위치 입니다.
SALES은 부서명이고 CHICAGO은 위치 입니다.
OPERATIONS은 부서명이고 BOSTON은 위치 입니다.
문13>
- 입사년도가 81이 아닌 데이터만 조회하시오.
SQL> select * from emp
2 where hiredate<'81/01/01' or hiredate>'81/12/31';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
7934 MILLER CLERK 7782 82/01/23 1300 10
- 부서번호가 30인 데이터의 업무종류를 중복없이 나타내시오.
SQL> select distinct job from emp
2 where deptno=30;
JOB
------------------
SALESMAN
CLERK
MANAGER
- 직업이 salesman인 사람들 중 급여가 1500 이상인 사람만 조회하시오.
SQL> select * from emp
2 where job='SALESMAN' and sal>=1500;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
- 부서번호가 10, 20인 데이터만 조회하되 급여가 많은 사람순으로 나타내시오.
SQL> select * from emp
2 where deptno in(10, 20)
3 order by sal desc;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7839 KING PRESIDENT 81/11/17 5000 10
7902 FORD ANALYST 7566 81/12/03 3000 20
7566 JONES MANAGER 7839 81/04/02 2975 20
7782 CLARK MANAGER 7839 81/06/09 2450 10
7934 MILLER CLERK 7782 82/01/23 1300 10
7369 SMITH CLERK 7902 80/12/17 800 20
6 개의 행이 선택되었습니다.
- 급여가 1000 이하인 사람의 이름, 직업, 급여, 부서번호를 조회하시오.
SQL> select ename 이름, job 직업, sal 급여, deptno 부서번호 from emp
2 where sal<=1000;
이름 직업 급여 부서번호
-------------------- ------------------ ---------- ----------
SMITH CLERK 800 20
JAMES CLERK 950 30
- comm(수당)이 500 미만인 자료를 조회하시오.
SQL> select * from emp
2 where comm<500 or comm IS NULL;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7566 JONES MANAGER 7839 81/04/02 2975 20
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7839 KING PRESIDENT 81/11/17 5000 10
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7900 JAMES CLERK 7698 81/12/03 950 30
7902 FORD ANALYST 7566 81/12/03 3000 20
7934 MILLER CLERK 7782 82/01/23 1300 10
10 개의 행이 선택되었습니다.
'DB(SQL)' 카테고리의 다른 글
[SQL] 함수 연습1 (0) | 2017.02.28 |
---|---|
[SQL] SQL 연습2 (0) | 2017.02.28 |
[SQL] 권한 관리 (0) | 2017.02.28 |
[SQL] 사용자 생성/권한부여/삭제 (0) | 2017.02.28 |
[SQL] 데이터 입력/수정/삭제 (0) | 2017.02.28 |