본문 바로가기
SQL

[Oracle] WHERE절과 WHERE절에 사용하는 연산자

by 나는 개발자 2021. 2. 13.
TIL: 스스로 이해한 것을 바탕으로 정리하였기에 오류가 있을 수 있습니다. 틀린 부분은 댓글로 알려주시면 감사하겠습니다.

 

 

WHERE 절

조회하고자 하는 테이블에 특정 조건을 제시하여 만족하는 데이터만 조회하는 구문

 

[표현법]

SELECT 조회할컬럼, 컬럼, . . . 
FROM 테이블명
WHERE 조건식;

 

조건식에는 다양한 연산자 사용이 가능하다.

 

 

 

 

 

 

WHERE 절에 쓸 수 있는 연산자 

 

* 비교연산자 

  >  <  >=  <=  =  !=   ^=   <> 

 

 

ex. EMPLOYEE라는 테이블로부터 급여가 400만 원 이상인 사원들 조회하기

SELECT EMP_NAME

FROM EMPLOYEE

WHERE SALARY >= 4000000;

 

 

ex. 부서코드가 D1이 아닌 사원들 조회하기

SELECT EMP_NAME

FROM EMPLOYEE

WHERE DEPT_CODE != 'D1';

 

 

 

 

 

 

* 논리연산자

여러 개의 조건을 엮을 때 사용

AND ( ~이면서, 그리고)

  OR ( ~이거나, 또는)

 

 

ex. 부서 코드가 D1이면서 급여가 400만 원 이상인 사원 조회

SELECT EMP_NAME

FROM EMPLOYEE

WHERE DEPT_CODE = 'D1' AND SALARY >= 4000000;

 

 

 

 

 

 

* BETWEEN AND

몇 이상 몇 이하인 범위에 대한 조건을 제시할 때 사용

[표현법]

비교대상컬럼명 BETWEEN 하한값 AND 상한값


[NOT표현법 2가지]

비교대상컬럼명 NOT BETWEEN 하한값 AND 상한값
NOT 비교대상컬럼명 BETWEEN 하한값 AND 상한값

 

ex. 급여가 350만원 이상이고 600만원 이하인 사원 조회

SELECT EMP_NAME

FROM EMPLOYEE

WHERE SALARY BETWEEN 3500000 AND 6000000;

 

 

 

ex. 입사일이 '90/01/01' ~ '01/01/01'인 사원 조회

SELECT EMP_NAME

FROM EMPLOYEE

WHERE HIRE_DATE BETWEEN '90/01/01' AND '01/01/01';

 

 

 

 

 

 

* LIKE 

비교하려는 컬럼값이 내가 지정한 특정 패턴에 만족될 경우 조회

 

[표현법]

비교대상컬럼명 LIKE '특정패턴'


[NOT표현법 2가지]

NOT 비교대상컬럼명 LIKE '특정패턴'
비교대상컬럼명 NOT LIKE '특정패턴'

특정패턴의 와일드카드인 '%'와 '_' 를 가지고 제시할 수 있다.

 

 

0글자 이상
_ 글자수
비교대상컬럼 LIKE '문자%' 컬럼값중에 '문자'로 시작되는 값 조회
비교대상컬럼 LIKE '%문자' 컬럼값중에 '문자'로 끝나는 값 조회
비교대상컬럼 LIKE '%문자%' 컬럼값중에 '문자'가 포함되는 값 조회

 

ex. 이름에 '혜'가 포함된 사원 조회

SELECT EMP_NAME

FROM EMPLOYEE

WHERE EMP_NAME LIKE '%혜%';

 

ex. 전화번호 4번째 자리가 2로 시작하는 사원 조회

SELECT EMP_NAME

FROM EMPLOYEE

WHERE PHONE LIKE '____2%';

 

ex. 이름 가운데 글자가 '혜'인 사원 조회

SELECT EMP_NAME

FROM EMPLOYEE

WHERE EMP_NAME LIKE '_혜_';

 

와일드카드와 문자열을 구분하고 싶을 땐, 

나만의 와일드카드를 만들어 ESCAPE로 등록해주기

ex. $을 ESCAPE로 만들기

WHERE EMAIL LIKE '____$_%' ESCAPE '$';

 

 

 

 

 

 

 

* IS NULL / IS NOT NULL

NULL값은 A = NULL 이 아닌 A IS NULL로 표기해야 한다.

[표현법]

비교대상컬럼 IS NULL                     : 컬럼값이 NULL일 경우
비교대상컬럼 IS NOT NULL              : 컬럼값이 NULL이 아닌 경우

 

 

 

 

 

 

* IN 

비교대상컬럼값에 내가 제시한 목록중에 일치하는 값이 있는지 

 

[표현법]
비교대상컬럼 IN (값, 값, 값 . . .)


[NOT표현법]
비교대상컬럼 NOT IN (값, 값, 값 . . .)

 

ex. 부서 코드가 D1이거나 또는 D2이거나 또는 D3인 사원 조회( WHERE DEPT_CODE = 'D1' OR DEPT_CODE = 'D2' OR DEPT_CODE = 'D3'와 동일)

SELECT EMP_NAME

FROM EMPLOYEE

WHERE DEPT_CODE IN ('D1', 'D2', 'D3');

 

 

 

 

 

 

 

* 연결 연산자 | |

 

여러 컬럼값들을 마치 하나의 컬럼인 것처럼 연결시켜주는 연산자

(자바에서 System.out.println(" A : " + A ); 에서 + 역할)

 

 

 

 

 

 

 

 

 

 

* 연산자 우선순위 

 

    0. ()
    1. 산술연산자
    2. 
    3. 비교연산자
    4. IS NULL          LIKE        IN
    5. BETWEEN AND
    6. NOT
    7. AND (논리연산자)
    8. OR (논리연산자) 

 

 

 

 

댓글