5. WHERE문 사용
1. WHERE문이 사용하는 연산자
- WHERE문이 사용할 수 있는 연산자는
비교 연산자,
부정 비교 연산자,
논리 연산자,
SQL 연산자,
부정 SQL 연산자가 있음
비교 연산자
= : 같은 것을 조회
< : 작은 것을 조회
<= : 작거나 같은 것을 조회
> : 큰것을 조회
>= : 크거나 같은 것을 조회
부정 비교 연산자
!= : 같지 않은 것을 조회
^= : 같지 않은 것을 조회
<> : 같지 않은 것을 조회
NOT 칼럼명 = : 같지 않은 것을 조회
NOT 칼럼명 > : 크지 않은 것을 조회
논리 연산자
AND : 조건을 모두 만족해야 참
OR : 조건중 하나만 만족해도 참
NOT : 참이면 거짓으로 바꾸고 거짓이면 참으로 바꿈
SQL 연산자
LIKE '%비교 문자열%' : 비교 문자열을 조회 '%'는 모든 값을 의미
BETWEEN A AND B : A와 B 사이의 값을 조회
IN (list) : OR를 의미하며 list 값 중 하나만 일치해도 조회
IS NULL : NULL 값을 조회
부정 SQL 연산자
NOT BETWEEN A AND B : A와 B사이의 해당되지 않는 값을 조회
NOT IN (list) : list와 불일치한 것을 조회
IS NOT NULL : NULL 값이 아닌 것을 조회
SELECT * FROM EMP
WHERE EMPNO=1001
AND SAL >= 10000;
- 위의 예는 EMP 테이블에서 EMPNO가 1001이고 SAL이 1000보다 크거나 같은 것을 조회
2.Like 문 사용
- Like문은 와일드카드를 사용해서 데이터를 조회
와일드카드
%
- 어떤 문자를 포함한 모든 것을 조회
- '조%'는 '조'로 시작하는 모든 문자를 조회
_(underscore)
SELECT * FROM EMP
WHERE ENAME LIKE 'test%";
- ENAME이 'test'로 시작하는 모든 데이터를 조회
SELECT * FROM EMP
WHERE ENMAE LIKE '%1";
- ENAME의 마지막이 '1'로 끝나는 모든 것을 조회
SELECT * FROM EMP
WHERE ENAME LIKE '%est%';
- ENAME의 중간에 'est'가 있는 모든 것을 조회
SELECT * FROM EMP
WHERE ENAME LIKE 'test1';
SELECT * FROM EMP
WHERE ENAME LIKE 'test_';
- ENAME 칼럼에서 'test'로 시작하고 하나의 글자만 더 있는 것을 조회
3. Between문 사용
- Between문은 지정된 범위에 있는 값을 조회
- "Between 1000 and 2000"은 1000과 2000을 포함하고 1000과 2000 사이의 값을 조회
SELECT * FROM EMP
WHERE SAL BETWEEN 1000 AND 2000;
- 위의 예는 급여(SAL)가 1000이상 2000이하인 직원을 조회
SELECT * FROM EMP
WHERE SAL NOT BETWEEN 1000 AND 2000;
- 위의 예는 급여(SAL)가 1000 미만 2000초과인 값을 조회
4. IN문 사용
- IN문은 "OR"의 의미를 가지고 있어서 하나의 조건만 만족해도 조회가 됨
SELECT * FROM EMP
WHERE JOB IN ('CLERK', 'MANAGER');
- IN은 OR의 의미를 가져, JOB컬럼이 CLERK이거나 MANAGER인 레코드를 조회
SELECT * FROM EMP
WHERE (JOB, ENAME)
IN (('CLERK', 'test1'),('MANAGER','test4'));
- 괄호를 사용해서 원하는 데이터를 칼럼명에 대응되도록 입력하므로,
IN문으로 여러 개의 칼럼에 대한 조건을 지정할 수 있음
5. NULL 값 조회
1. NULL의 특징
- NULL은 모르는 값을 의미
- NULL은 값의 부재를 의미
- NULL과 숫자 혹은 날짜를 더하면 NULL이 됨
- NULL과 어떤 값을 비교할 때, '알수없음'이 반환
2. NULL값 조회
- NULL을 조회할 경우 IS NULL을 사용하고
NULL값이 아닌 것을 조회할 경우는 IS NOT NULL을 사용
SELECT * FROM EMP
WHERE MGR IS NULL;
SELECT * FROM EMP
WHERE MGR IS NOT NULL;
NULL 관련 함수
NVL 함수
- NULL이면 다른 값으로 바꾸는 함수
- NVL(MGR, 0)은 MGR 컬럼이 NULL이면 0으로 바꿈
NVL2 함수
- NVL 함수와 DECODE 함수를 하나로 만든 것
- NVL2(MGR, 1, 0)은 MGR 컬럼이 NULL이 아니면 1 NULL이면 0을 반환
NULLIF 함수
- 두 개의 값이 같으면 NULL을 같지 않으면 첫 번째 값을 반환
- NULLIF(EXP1, EXP2)은 EXP1과 EXP2가 같으면 NULL
같지 않으면 EXP1을 반환
COALESCE
- NULL이 아닌 최초의 인자 값을 반환
- COALESCE(EXP1,EXP2,...) EXP1이 NULL이 아니면 EXP1 값을
그렇지 않으면 그뒤의 값이 NULL 여부를 판단하여 값을 반환