select 컬럼명 (as) [별칭|"별 칭*#"] from 테이블명;
SQL> select ename "이름" , job as 업무, hiredate 입사일 from emp;
이름 업무 입사일
---------- --------- --------
SMITH CLERK 80/12/17
ALLEN SALESMAN 81/02/20
WARD SALESMAN 81/02/22
JONES MANAGER 81/04/02
MARTIN SALESMAN 81/09/28
BLAKE MANAGER 81/05/01
CLARK MANAGER 81/06/09
SCOTT ANALYST 87/04/19
KING PRESIDENT 81/11/17
TURNER SALESMAN 81/09/08
ADAMS CLERK 87/05/23
이름 업무 입사일
---------- --------- --------
JAMES CLERK 81/12/03
FORD ANALYST 81/12/03
MILLER CLERK 82/01/23
14 개의 행이 선택되었습니다.
select 컬럼명,... from 테이블명,...; -- 컬럼 제한
where 컬럼명 조건 -- 행(데이터) 제한
select deptno, ename from emp where deptno = 20;
SQL> select ename, sal from emp
2 where sal >= 1000 and sal <= 2000;
ENAME SAL
---------- ----------
ALLEN 1600
WARD 1250
MARTIN 1250
TURNER 1500
ADAMS 1100
MILLER 1300
6 개의 행이 선택되었습니다.
SQL> select ename, sal from emp
2 where sal between 1000 and 2000;
-- 어차피 and 연산으로 변환되어 실행된다. 권장되지 않는 방법
1000~2000이 아닌 사람 추출
SQL> select ename, sal from emp
2 where not (sal >= 1000 and sal <= 2000);
-- 인덱스를 사용할 수 없는 추출 (시간이 오래 걸린다)
SQL> select ename, sal from emp
2 where sal < 1000 or sal > 2000;
-- 인덱스를 사용하는 추출 (성능을 위해 권장되는 방법)
SQL> select ename, job from emp
2 where job like 'SALESMAN' or job like 'CLERK';
SQL> select ename, job from emp
2 where lower(job) like 'salesman' or lower(job) like 'clerk';
SQL> select ename, job from emp
2 where lower(job) = 'salesman' or lower(job) = 'clerk';
SQL> select ename, job from emp
2 where job in ('SALESMAN', 'CLERK');
-- in: 서브쿼리를 넣을 때 주로 사용하는 문법
ENAME JOB
---------- ---------
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
MARTIN SALESMAN
TURNER SALESMAN
ADAMS CLERK
JAMES CLERK
MILLER CLERK
8 개의 행이 선택되었습니다.
select ename, hiredate from emp
where hiredate >= to_date('87/01/01') and hiredate < to_date('22/07/19');
ENAME HIREDATE
---------- --------
홍동우 22/07/18
SCOTT 87/04/19
ADAMS 87/05/23
-- 날짜비교만 하는 경우는 to_date 없이도 가능
select ename, hiredate from emp
where hiredate >= '87/01/01' and hiredate < '22/07/19';
-- 시간비교를 하는 경우 to_date 함수를 사용
select ename, hiredate from emp
where hiredate >= '22/07/18'
and hiredate <= to_date('22/07/18 18:00:00', 'YY-MM-DD HH24:MI:SS');
ENAME HIREDATE
---------- --------
홍동우 22/07/18
SQL> select ename||'의 급여는 '||NVL(sal, 0)||'이다' as "직원급여" from emp;
직원급여
----------------------------------------------------------------
홍동우의 급여는 이다
SMITH의 급여는 800이다
ALLEN의 급여는 1600이다
WARD의 급여는 1250이다
JONES의 급여는 2975이다
MARTIN의 급여는 1250이다
BLAKE의 급여는 2850이다
CLARK의 급여는 2450이다
SCOTT의 급여는 3000이다
KING의 급여는 5000이다
TURNER의 급여는 1500이다
직원급여
----------------------------------------------------------------
ADAMS의 급여는 1100이다
JAMES의 급여는 950이다
FORD의 급여는 3000이다
MILLER의 급여는 1300이다
15 개의 행이 선택되었습니다.
SQL> select * from emp where comm is null;
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
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7788 SCOTT ANALYST 7566 87/04/19 3000 20
7839 KING PRESIDENT 81/11/17 5000 10
7876 ADAMS CLERK 7788 87/05/23 1100 20
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
SQL> select ename 이름, sal 급여, comm 커미션 , sal+nvl(comm, 0) 총급여 from emp;
이름 급여 커미션 총급여
---------- ---------- ---------- ----------
SMITH 800 800
ALLEN 1600 300 1900
WARD 1250 500 1750
JONES 2975 2975
MARTIN 1250 1400 2650
BLAKE 2850 2850
CLARK 2450 2450
SCOTT 3000 3000
KING 5000 5000
TURNER 1500 0 1500
ADAMS 1100 1100
이름 급여 커미션 총급여
---------- ---------- ---------- ----------
JAMES 950 950
FORD 3000 3000
MILLER 1300 1300
SQL> select ename from emp where ename like '_L%';
ENAME
----------
ALLEN
BLAKE
CLARK
SQL> select ename from emp where ename like '%L%L%';
ENAME
----------
ALLEN
MILLER
select ename from emp where instr(ename, 'L', 2) > 0 and instr(ename, 'L', 3) = 0;
SQL> select ename from emp where ename like 'A%' or ename like '_D%';
ENAME
----------
ALLEN
ADAMS