영보의 SystemOut.log

[Oracle] WHERE 조건절 / SQL 연산자 / SQL 예제 본문

Database/Oracle

[Oracle] WHERE 조건절 / SQL 연산자 / SQL 예제

영보로그 2020. 8. 5. 16:35
반응형

#WHERE : 원하는 조건만 골라내기

* 문법

1
2
3
SELECT [Column or Expression]
From [테이블 or View]
WHERE 원하는 조건 ;
cs

* 특징

- 문자/날짜 : ' ' 작은따옴표

- 숫자 : 그대로 표기

- 반드시 FROM 절 아래 와야함

 

 

#Oracle 다양한 연산자


연산자 종류

설명

=

  비교 대상 중 같은 조건 검색

!=, <>

  비교 대상 중 같지 않은 조건 검색

>

  비교 대상 중 큰 조건을 검색

>=

  비교 대상 중 크거나 같은 조건을 검색

<

  비교 대상 중 작은 조건을 검색

<=

  비교 대상 중 작거나 같은 조건을 검색

BTWEEN a AND b

  a와 b 사이에 있는 범위 값을 모두 검색

IN

  여러가지 조건 검색

LIKE

  특정 패턴을 가지고 있는 조건 검색

IS NULL / IS NOT NULL

  NULL 값을 검색 / NULL이 아닌 값을 검색

AND

  a조건과 b조건을 모두 만족하는 값만 검색

OR 

  a조건이나 b조건 중 한 가지라도 만족하는 값 검색

NOT 

  a가 아닌 모든 조건을 검색

 

 

 

#예제1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
--사원중에 급여가 3000인 사원의 모든 정보 출력(*)
SELECT * FROM emp WHERE sal=3000;
 
--사원중에 급여가 15000인 사원의 이름, 입사일, 급여 출력
SELECT ename, hiredate, sal FROM emp WHERE sal=1500;
 
--사원중에 이름이 SCOTT인 사원의 이름, 입사일, 직위(job), 급여 출력
SELECT ename, hiredate, job, sal FROM emp WHERE ename='SCOTT';
 
--사원중에 직위(job)가 MANAGER인 사원의 모든 정보 출력
SELECT * FROM emp WHERE job='MANAGER';
 
--입사일이 1982-12-9에 입사한 사원의 이름, 입사일, 급여 출력
SELECT ename, hiredate, sal FROM emp WHERE hiredate='82/12/09';
cs

 

#예제2

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--문자열일 경우에 대소문자를 구분한다
SELECT ename, hiredate, job, sal FROM emp WHERE ename='scott';
 
-- !=, <>
-- job이 CLERK이 아닌 사원의 이름, 직위만 출력
SELECT ename, job FROM emp WHERE job!='CLERK';
 
SELECT ename, job FROM emp WHERE job<>'CLERK';
 
-- < (작다) 
-- 사원중에 급여가 1500보다 작은 사원의 이름, 급여 출력
SELECT ename, sal FROM emp WHERE sal < '1500';
 
--입사일이 82/12/09보다 먼저 입사한 사원의 모든 정보 출력
SELECT * FROM emp WHERE hiredate < '82/12/09';
cs

 

#예제3

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
--AND : 범위, 기간이 포함하는 경우 / 급여가 1500보다 크다 3000이하
SELECT * FROM emp WHERE sal>1500 AND sal<3000;
 
--NULL
-- WHERE comm=NULL; IS NULL
-- 성과급이 없는 사원의 모든 정보
SELECT * FROM emp WHERE comm IS NULL;
 
--성과급이 있는 사원의 모든 정보
SELECT * FROM emp WHERE comm IS NOT NULL;
 
 
--사원중에 사수(mgr)이 없는 사람의 이름, 입사일, 직위 출력
SELECT ename, hiredate, job FROM emp WHERE mgr IS NULL;
 
--IN 
--사원중에 부서(deptno)가 10이거나 20인 사원의 모든 정보를 출력
SELECT * FROM emp WHERE deptno=10 OR deptno=20;
SELECT * FROM emp WHERE deptno IN(10,20);
 
--사원중에 직위(job)가 MANAGER이거나 CLERK인 사원의 모든 정보 출력
SELECT * FROM emp WHERE job IN('MANAGER''CLERK');
 
-81/06/0981/11/1782/01/23 사원의 모든 정보 출력
SELECT * FROM emp WHERE hiredate IN ('81/06/09','81/11/17','82/01/23');
 
--부서가 10이거나 20번인 사람을 제외하고 모든 정보 출력(포함되지않은걸 가져옴)
SELECT * FROM emp WHERE deptno NOT IN(10,20);
 
--BETWEEN ~ AND => 기간, 범위, 포함
--BETWEEN 10 AND 100 ==> 10, 100이 포함  >=10 AND <=100
-- 1981년에 입사한 모든 사원의 정보 출력
SELECT * FROM emp WHERE hiredate NOT BETWEEN '81/01/01' AND '81/12/31';
SELECT * FROM emp WHERE ename BETWEEN 'ADAMS' AND 'KING';
cs

 

#예제4

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
--문자, 날짜를 포함해서 처리가 가능
-- LIKE : 포함문자, 시작, 끝, 글자수 찾는 경우 사용
--형식) WHERE 컬럼명 LIKE '%A%' => 검색기
--% => 문자의 갯수를 모르는 경우 
-- _ => 한글자
-- 이름중에 A로 시작하는 사원의 모든 정보
SELECT * FROM emp WHERE ename LIKE 'A%';
 
--82년도에 입사한 사원의 모든 정보
SELECT * FROM emp WHERE hiredate LIKE '82%';
 
--이름중에 S로 끝나는 사원의 모든 정보
SELECT * FROM emp WHERE ename LIKE '%S';
 
--이름중에 K를 포함하고 있는 사원의 모든 정보
SELECT * FROM emp WHERE ename LIKE '%K%';
 
--주소중에 신촌을 포함하고 있는 모든 주소를 출력
SELECT * FROM zipcode WHERE dong LIKE '%신촌%';
 
--글자가 5글자 가운데 C가 있는 사원의 정보를 출력
SELECT * FROM emp WHERE ename LIKE '__O__';
 
-- 이름이 4글자인 사원의 모든 정보출력
SELECT * FROM emp WHERE ename LIKE '____';
 
SELECT * FROM emp WHERE LENGTH(ename)=4;
cs

 

 

#예제5

 

1
2
3
--ORDER BY : 정렬
--ORDER BY 컬럼명 ASC|DESC
SELECT ename, sal FROM emp ORDER BY sal DESC, ename DESC;
cs

 

 

반응형