[구문]
select 조회할 컬럼1, 조회할 컬럼2,...
from 테이블 1, 테이블2,...
where 조건
SQL> conn scott/tiger
Connected.
SQL> set linesize 300
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------------------------------------ -------------- ----------
DEPT TABLE
EMP TABLE
LOCATIONS TABLE
SALGRADE TABLE
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
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7839 KING PRESIDENT 81/11/17 5000 10
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7876 ADAMS CLERK 7788 83/01/12 1100 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
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
14 rows selected.
SQL> select * from dept;
DEPTNO DNAME LOC_
---------- ---------------------------- ----
10 ACCOUNTING A1
20 RESEARCH B1
30 SALES C1
40 OPERATIONS A1
50 INSA
여기서 desc는 내림차순이 아니라 테이블 정보 확인하는 명령인듯?
SQL> desc emp;
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
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 empno,ename,deptno
2 from emp;
EMPNO ENAME DEPTNO
---------- -------------------- ----------
7369 SMITH 20
7499 ALLEN 30
7521 WARD 30
7566 JONES 20
7654 MARTIN 30
7698 BLAKE 30
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7844 TURNER 30
7876 ADAMS 20
EMPNO ENAME DEPTNO
---------- -------------------- ----------
7900 JAMES 30
7902 FORD 20
7934 MILLER 10
14 rows selected.
SQL> select ename || sal
2 from emp;
ENAME||SAL
----------------------------------------------------------------------------------------------------
SMITH800
ALLEN1600
WARD1250
JONES2975
MARTIN1250
BLAKE2850
CLARK2450
SCOTT3000
KING5000
TURNER1500
ADAMS1100
ENAME||SAL
----------------------------------------------------------------------------------------------------
JAMES950
FORD3000
MILLER1300
14 rows selected.
SQL> select ename || '의 급여는' || sal || '이다.'
2 from emp;
ENAME||'의급여는'||SAL||'이다.'
------------------------------------------------------------------------------------------------------------------------
SMITH의 급여는800이다.
ALLEN의 급여는1600이다.
WARD의 급여는1250이다.
JONES의 급여는2975이다.
MARTIN의 급여는1250이다.
BLAKE의 급여는2850이다.
CLARK의 급여는2450이다.
SCOTT의 급여는3000이다.
KING의 급여는5000이다.
TURNER의 급여는1500이다.
ADAMS의 급여는1100이다.
ENAME||'의급여는'||SAL||'이다.'
------------------------------------------------------------------------------------------------------------------------
JAMES의 급여는950이다.
FORD의 급여는3000이다.
MILLER의 급여는1300이다.
14 rows selected.
SQL> select ename || '의 급여는' || sal || '이다.' 정보
2 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이다.
14 rows selected.
SQL> select ename || '의 급여는' || sal || '이다.' as 정보, sal * 12 +comm 연봉
2 from emp;
정보 연봉
-----------------------------------------------
SMITH의 급여는800이다.
ALLEN의 급여는1600이다. 19500
WARD의 급여는1250이다. 15500
JONES의 급여는2975이다.
MARTIN의 급여는1250이다. 16400
BLAKE의 급여는2850이다.
CLARK의 급여는2450이다.
SCOTT의 급여는3000이다.
KING의 급여는5000이다.
TURNER의 급여는1500이다. 18000
ADAMS의 급여는1100이다.
정보 연봉
-----------------------------------------------
JAMES의 급여는950이다.
FORD의 급여는3000이다.
MILLER의 급여는1300이다.
14 rows selected.
SQL> select ename, deptno, sal, comm, sal * 12 + comm "급여의 합계"
2 from emp;
ENAME DEPTNO SAL COMM 급여의 합계
-------------------- ---------- ---------- ---------- -----------
SMITH 20 800
ALLEN 30 1600 300 19500
WARD 30 1250 500 15500
JONES 20 2975
MARTIN 30 1250 1400 16400
BLAKE 30 2850
CLARK 10 2450
SCOTT 20 3000
KING 10 5000
TURNER 30 1500 0 18000
ADAMS 20 1100
ENAME DEPTNO SAL COMM 급여의 합계
-------------------- ---------- ---------- ---------- -----------
JAMES 30 950
FORD 20 3000
MILLER 10 1300
14 rows selected.
SQL> select ename ||'의 직업은' || job ||'입니다.' from emp;
ENAME||'의직업은'||JOB||'입니다.'
-----------------------------------------------------------------------
SMITH의 직업은CLERK입니다.
ALLEN의 직업은SALESMAN입니다.
WARD의 직업은SALESMAN입니다.
JONES의 직업은MANAGER입니다.
MARTIN의 직업은SALESMAN입니다.
BLAKE의 직업은MANAGER입니다.
CLARK의 직업은MANAGER입니다.
SCOTT의 직업은ANALYST입니다.
KING의 직업은PRESIDENT입니다.
TURNER의 직업은SALESMAN입니다.
ADAMS의 직업은CLERK입니다.
ENAME||'의직업은'||JOB||'입니다.'
-----------------------------------------------------------------------
JAMES의 직업은CLERK입니다.
FORD의 직업은ANALYST입니다.
MILLER의 직업은CLERK입니다.
14 rows selected.
SQL> select ename, hiredate, sal, comm, sal *0.9 as 인하급여 from emp;
ENAME HIREDATE SAL COMM 인하급여
-------------------- -------- ---------- ---------- ----------
SMITH 80/12/17 800 720
ALLEN 81/02/20 1600 300 1440
WARD 81/02/22 1250 500 1125
JONES 81/04/02 2975 2677.5
MARTIN 81/09/28 1250 1400 1125
BLAKE 81/05/01 2850 2565
CLARK 81/06/09 2450 2205
SCOTT 82/12/09 3000 2700
KING 81/11/17 5000 4500
TURNER 81/09/08 1500 0 1350
ADAMS 83/01/12 1100 990
ENAME HIREDATE SAL COMM 인하급여
-------------------- -------- ---------- ---------- ----------
JAMES 81/12/03 950 855
FORD 81/12/03 3000 2700
MILLER 82/01/23 1300 1170
14 rows selected.
SQL> select distinct job from emp;
JOB
------------------
CLERK
SALESMAN
PRESIDENT
MANAGER
ANALYST
[구문]
select 조회할 컬럼1,2,
from 테이블 1,2,
where 컬럼명 연산자 비교값 => boolean을 리턴
94페이지
select *
from emp
where sal >= 2500
or job = 'ANALYST'
;
ex) 10번, 20번 부서에 근무하는 사원의 모든 데이터를 조회
select *
from emp
where deptno=10 or deptno=20;
select *
from emp
where deptno in(10,20);
sal가 1000에서 3000사이의 데이터를 조회
SQL> select *
2 from emp
3 where sal between 1000 and 3000;
SQL> select *
2 from emp
3 where deptno not in(10,20);
SQL> select *
2 from emp
3 where deptno = 30;
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
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7900 JAMES CLERK 7698 81/12/03 950 30
6 rows selected.
SQL> select ename, sal,comm
2 from emp
3 where sal >= 3000;
ENAME SAL COMM
-------------------- ---------- ----------
SCOTT 3000
KING 5000
FORD 3000
SQL> select *
2 from emp
3 where ename = 'ALLEN';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
SQL> select ename,hiredate
2 from emp
3 where hiredate >= '1982/1/1';
ENAME HIREDATE
-------------------- --------
SCOTT 82/12/09
ADAMS 83/01/12
MILLER 82/01/23
SQL> select *
2 from emp
3 where ename = 'allen';
no rows selected
SQL> select *
2 from emp
3 where sal >= 2500
4 and job = 'ANALYST';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7902 FORD ANALYST 7566 81/12/03 3000 20
SQL> select *
2 from emp
3 where sal >= 2500
4 or job = 'ANALYST'
5 ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7566 JONES MANAGER 7839 81/04/02 2975 20
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7839 KING PRESIDENT 81/11/17 5000 10
7902 FORD ANALYST 7566 81/12/03 3000 20
SQL> select *
2 from emp
3 where sal >=1000 and sal <=3000;
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
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
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7876 ADAMS CLERK 7788 83/01/12 1100 20
7902 FORD ANALYST 7566 81/12/03 3000 20
7934 MILLER CLERK 7782 82/01/23 1300 10
11 rows selected.
SQL> select *
2 from emp
3 where sal between 1000 and 3000;
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
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
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7876 ADAMS CLERK 7788 83/01/12 1100 20
7902 FORD ANALYST 7566 81/12/03 3000 20
7934 MILLER CLERK 7782 82/01/23 1300 10
11 rows selected.
_ : 문자 한자리를 의미
% : 모든문자
A로 시작하는 문자
SQL> select ename, sal,comm
2 from emp
3 where ename like 'A%';
ENAME SAL COMM
-------------------- ---------- ----------
ALLEN 1600 300
ADAMS 1100
SQL> select ename, sal,comm
2 from emp
3 where ename like '%A';
no rows selected
A로 끝나는 문자
SQL> select ename, sal,comm
2 from emp
3 where ename like '%A';
no rows selected
A가 들어가는 문자
SQL> select ename, sal,comm
2 from emp
3 where ename like '%A%';
ENAME SAL COMM
-------------------- ---------- ----------
ALLEN 1600 300
WARD 1250 500
MARTIN 1250 1400
BLAKE 2850
CLARK 2450
ADAMS 1100
JAMES 950
7 rows selected.
2번째 글자가 A인 문자
SQL> select ename, sal,comm
2 from emp
3 where ename like '_A%';
ENAME SAL COMM
-------------------- ---------- ----------
WARD 1250 500
MARTIN 1250 1400
JAMES 950
SQL> select *
2 from emp
3 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 82/12/09 3000 20
7839 KING PRESIDENT 81/11/17 5000 10
7876 ADAMS CLERK 7788 83/01/12 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
10 rows selected.
SQL> select *
2 from emp
3 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
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
[문법]
select
from
where
order by 컬럼명 정렬방법, 컬럼명 정렬방법
SQL> select *
2 from emp
3 order by sal;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
7900 JAMES CLERK 7698 81/12/03 950 30
7876 ADAMS CLERK 7788 83/01/12 1100 20
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7934 MILLER CLERK 7782 82/01/23 1300 10
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7566 JONES MANAGER 7839 81/04/02 2975 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7902 FORD ANALYST 7566 81/12/03 3000 20
7839 KING PRESIDENT 81/11/17 5000 10
14 rows selected.
SQL> select *
2 from emp
3 order by comm desc;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
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
7876 ADAMS CLERK 7788 83/01/12 1100 20
7566 JONES MANAGER 7839 81/04/02 2975 20
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7934 MILLER CLERK 7782 82/01/23 1300 10
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7839 KING PRESIDENT 81/11/17 5000 10
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
14 rows selected.
SQL> select *
2 from emp
3 order by comm asc;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
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
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7839 KING PRESIDENT 81/11/17 5000 10
7876 ADAMS CLERK 7788 83/01/12 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
7698 BLAKE MANAGER 7839 81/05/01 2850 30
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7566 JONES MANAGER 7839 81/04/02 2975 20
7369 SMITH CLERK 7902 80/12/17 800 20
7782 CLARK MANAGER 7839 81/06/09 2450 10
14 rows selected.
SQL> select deptno,job,ename,sal
2 from emp
3 order by deptno asc, sal desc;
DEPTNO JOB ENAME SAL
---------- ------------------ -------------------- ----------
10 PRESIDENT KING 5000
10 MANAGER CLARK 2450
10 CLERK MILLER 1300
20 ANALYST SCOTT 3000
20 ANALYST FORD 3000
20 MANAGER JONES 2975
20 CLERK ADAMS 1100
20 CLERK SMITH 800
30 MANAGER BLAKE 2850
30 SALESMAN ALLEN 1600
30 SALESMAN TURNER 1500
DEPTNO JOB ENAME SAL
---------- ------------------ -------------------- ----------
30 SALESMAN MARTIN 1250
30 SALESMAN WARD 1250
30 CLERK JAMES 950
14 rows selected.
SQL> select *
2 from emp
3 where sal>avg(sal);
where sal>avg(sal)
*
ERROR at line 3:
ORA-00934: group function is not allowed here
SQL> select ename, length(ename)
2 from emp;
ENAME LENGTH(ENAME)
-------------------- -------------
SMITH 5
ALLEN 5
WARD 4
JONES 5
MARTIN 6
BLAKE 5
CLARK 5
SCOTT 5
KING 4
TURNER 6
ADAMS 5
ENAME LENGTH(ENAME)
-------------------- -------------
JAMES 5
FORD 4
MILLER 6
14 rows selected.
SQL> select ename, length(ename)
2 from emp
3 where length(ename)=4;
ENAME LENGTH(ENAME)
-------------------- -------------
WARD 4
KING 4
FORD 4
SQL> select sum(sal),avg(sal) from emp;
SUM(SAL) AVG(SAL)
---------- ----------
29025 2073.21429
SQL> select lower ('ORACLE ORACLE'), upper('oracle oracle'), initcap('oracle oracle')
2 from dual;
LOWER('ORACLEORACLE') UPPER('ORACLEORACLE') INITCAP('ORACLEORACLE')
-------------------------- -------------------------- --------------------------
oracle oracle ORACLE ORACLE Oracle Oracle
SQL> select chr(65),ascii('a') from dual;
CH ASCII('A')
-- ----------
A 97
SQL> select substr('oracle oracle',2) from dual;
SUBSTR('ORACLEORACLE',2)
------------------------
racle oracle
=> 2번째 글자부터 출력
SQL> select substr('oracle oracle',2,3) from dual;
SUBSTR
------
rac
=> 2번 위치에서 3글자 추출
cf.자바.. 오라클은 인덱스가 1번부터 시작
SQL> select substr('oracle oracle',-1,3) from dual;
SU
--
e
=> 뒤에서 1번째 글자에서 3글자 추출
SQL> select substr('oracle oracle',-5,3) from dual;
SUBSTR
------
rac
=> 뒤에서 5번째 글자에서 3글자 추출
INSTR ( 문자열, 찾을 문자 값, 찾기 시작할 위치, 찾은 결과의 순번 )
SQL> select instr('oracle oracle','o') from dual;
INSTR('ORACLEORACLE','O')
-------------------------
1
SQL> select instr('oracle oracle','j') from dual;
INSTR('ORACLEORACLE','J')
-------------------------
0
=> 해당 글자 없으면 0
SQL> select instr('oracle oracle','o',2 ) from dual;
INSTR('ORACLEORACLE','O',2)
---------------------------
8
SQL> select instr('oracle oracle','o',-1,2 ) from dual;
INSTR('ORACLEORACLE','O',-1,2)
------------------------------
1
=> 뒤에서 첫번째 글자에서 시작해서 두번째 o찾기
SQL> select concat('오라클','DBMS')from dual;
CONCAT('오라클','DBMS')
--------------------------
오라클DBMS
두개씩만 연결할 수 있어서 더하고싶으면 중첩
SQL> select concat(concat('오라클','DBMS'),'안녕')from dual;
CONCAT(CONCAT('오라클','DBMS'),'안녕')
--------------------------------------
오라클DBMS안녕
SQL> select replace('oracle database','database','db') from dual;
REPLACE('ORACLEDAT
------------------
oracle db
- lpad : 왼쪽에 특정문자를 채워서 문자열 길이 맞추기
- rpad : 오른쪽에 특정문자를 채워서 문자열 길이 맞추기
SQL> select lpad ('991012-',14,'*') from dual;
LPAD('991012-',14,'*')
----------------------------
*******991012-
SQL> select rpad ('991012-',14,'*') from dual;
RPAD('991012-',14,'*')
----------------------------
991012-*******
SQL> select ' oracle',ltrim(' oracle') from dual;
'ORACLE' LTRIM('ORACL
---------------------------- ------------
oracle oracle
SQL> select length( ' oracle'),length(ltrim(' oracle')) from dual;
LENGTH('ORACLE') LENGTH(LTRIM('ORACLE'))
---------------- -----------------------
14 6
SQL> select length( 'oracle '),length(rtrim('oracle ')) from dual;
LENGTH('ORACLE') LENGTH(RTRIM('ORACLE'))
---------------- -----------------------
13 6
SQL> select trim( ' oracle '), length(trim( ' oracle ')) from dual;
TRIM('ORACLE LENGTH(TRIM('ORACLE'))
------------ ----------------------
oracle 6
SQL> select 'oracleooooooooooo',rtrim('oracleoooooooooo','o') from dual;
'ORACLEOOOOOOOOOOO' RTRIM('ORACL
---------------------------------- ------------
oracleooooooooooo oracle
SQL> select trim('o'from'ooooooooooooracle oracleoooooo') from dual;
TRIM('O'FROM'OOOOOOOOOOO
------------------------
racle oracle
SQL> select trim(both 'o'from'ooooooooooooracle oracleoooooo') from dual;
TRIM(BOTH'O'FROM'OOOOOOO
------------------------
racle oracle
SQL> select trim(trailing 'o'from'ooooooooooooracle oracleoooooo') from dual;
TRIM(TRAILING'O'FROM'OOOOOOOOOOOORACLEORACLEOOOO
------------------------------------------------
ooooooooooooracle oracle
SQL> select ename || ':' || job
2 from emp
3 where job='MANAGER' and hiredate like '81%';
ENAME||':'||JOB
----------------------------------------
JONES:MANAGER
BLAKE:MANAGER
CLARK:MANAGER
SQL> select empno,ename,job,sal
2 from emp
3 where job = 'SALESMAN' and sal>=1500;
EMPNO ENAME JOB SAL
---------- -------------------- ------------------ ----------
7499 ALLEN SALESMAN 1600
7844 TURNER SALESMAN 1500
SQL> select empno,ename,sal
2 from emp
3 where sal between 2000 and 3000;
EMPNO ENAME SAL
---------- -------------------- ----------
7566 JONES 2975
7698 BLAKE 2850
7782 CLARK 2450
7788 SCOTT 3000
7902 FORD 3000
SQL> select empno,ename,sal,hiredate
2 from emp
3 where hiredate >='82/01/01' or sal >=5000;
EMPNO ENAME SAL HIREDATE
---------- -------------------- ---------- --------
7788 SCOTT 3000 82/12/09
7839 KING 5000 81/11/17
7876 ADAMS 1100 83/01/12
7934 MILLER 1300 82/01/23
SQL> select ename,sal,deptno
2 from emp
3 where deptno in (10,20) and sal>=2000;
ENAME SAL DEPTNO
-------------------- ---------- ----------
JONES 2975 20
CLARK 2450 10
SCOTT 3000 20
KING 5000 10
FORD 3000 20
SQL> select ename,job,sal,deptno
2 from emp
3 where sal between 1300 and 1700;
ENAME JOB SAL DEPTNO
-------------------- ------------------ ---------- ----------
ALLEN SALESMAN 1600 30
TURNER SALESMAN 1500 30
MILLER CLERK 1300 10
SQL> select empno, ename, job,sal,hiredate
2 from emp
3 where empno in (7902,7788,7566);
EMPNO ENAME JOB SAL HIREDATE
---------- -------------------- ------------------ ---------- --------
7566 JONES MANAGER 2975 81/04/02
7788 SCOTT ANALYST 3000 82/12/09
7902 FORD ANALYST 3000 81/12/03
SQL> select *
2 from emp
3 where sal>=2800 and job='MANAGER';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7566 JONES MANAGER 7839 81/04/02 2975 20
7698 BLAKE MANAGER 7839 81/05/01 2850 30
SQL> select *
2 from emp
3 where job not in('manager','clerk','analyst');
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
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7839 KING PRESIDENT 81/11/17 5000 10
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7876 ADAMS CLERK 7788 83/01/12 1100 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
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
14 rows selected.
SQL> select empno, ename,hiredate,sal
2 from emp
3 where ename like '_L%'
4 order by sal desc;
EMPNO ENAME HIREDATE SAL
---------- -------------------- -------- ----------
7698 BLAKE 81/05/01 2850
7782 CLARK 81/06/09 2450
7499 ALLEN 81/02/20 1600
SQL> select *
2 from emp
3 where deptno = 20 and mgr = 7902;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
SQL> select *
2 from emp
3 where deptno in(10,20) and job='ANALYST';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7902 FORD ANALYST 7566 81/12/03 3000 20
SQL> select empno,ename,sal,sal*12 +comm 연봉
2 from emp
3 where comm is not null;
EMPNO ENAME SAL 연봉
---------- -------------------- ---------- ----------
7499 ALLEN 1600 19500
7521 WARD 1250 15500
7654 MARTIN 1250 16400
7844 TURNER 1500 18000
SQL> select ename, concat(concat(concat(ename,'의 '),'급여 '),'800만원')
2 from emp
3 where sal<1000;
ENAME CONCAT(CONCAT(CONCAT(ENAME,'의'),'급여'),'800만원')
-------------------- ---------------------------------------------------
SMITH SMITH의 급여 800만원
JAMES JAMES의 급여 800만원
SQL> select ename,hiredate
2 from emp
3 where substr(hiredate,1,2)=81;
ENAME HIREDATE
-------------------- --------
ALLEN 81/02/20
WARD 81/02/22
JONES 81/04/02
MARTIN 81/09/28
BLAKE 81/05/01
CLARK 81/06/09
KING 81/11/17
TURNER 81/09/08
JAMES 81/12/03
FORD 81/12/03
10 rows selected.
SQL> select ename,job,lpad(sal,5,'*')
2 from emp
3 where sal<=2000;
ENAME JOB LPAD(SAL,5,'*')
-------------------- ------------------ ----------------
SMITH CLERK **800
ALLEN SALESMAN *1600
WARD SALESMAN *1250
MARTIN SALESMAN *1250
TURNER SALESMAN *1500
ADAMS CLERK *1100
JAMES CLERK **950
MILLER CLERK *1300
8 rows selected.
SQL> select ename,job,ltrim(lpad(sal,5,'*'),'*')
2 from emp
3 where sal<=2000;
ENAME JOB LTRIM(LPAD(SAL,5,'*'),'*')
-------------------- ------------------ ---------------------------
SMITH CLERK 800
ALLEN SALESMAN 1600
WARD SALESMAN 1250
MARTIN SALESMAN 1250
TURNER SALESMAN 1500
ADAMS CLERK 1100
JAMES CLERK 950
MILLER CLERK 1300
8 rows selected.
SQL> select empno,ename,lower(job),deptno
2 from emp
3 where ename ='SCOTT';
EMPNO ENAME LOWER(JOB) DEPTNO
---------- -------------------- ------------------ ----------
7788 SCOTT analyst 20
SQL> select empno,ename,job,sal,deptno
2 from emp
3 where (substr(ename,1,1))>'K' and (substr(ename,1,1))<'Y'
4 order by ename;
EMPNO ENAME JOB SAL DEPTNO
---------- -------------------- ------------------ ---------- ----------
7654 MARTIN SALESMAN 1250 30
7934 MILLER CLERK 1300 10
7788 SCOTT ANALYST 3000 20
7369 SMITH CLERK 800 20
7844 TURNER SALESMAN 1500 30
7521 WARD SALESMAN 1250 30
6 rows selected.
SQL> select trim('A' from job), trim('1'from sal)
2 from emp
3 where deptno=10;
TRIM('A'FROMJOB) TRIM('1'FROMSAL)
------------------ -------------------------------
MANAGER 2450
PRESIDENT 5000
CLERK 300
본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.