SQL - WHERE 절에 들어가는 연산자

2023. 3. 10. 13:21SQLD 정리

반응형

IN(값1, 값2, 값3,...) >>> IN 안에 있는 값이 하나라도 일치하면 TRUE 아니면 FALSE

EX) SELECT '출력됨' FROM DUAL WHERE 3 IN(1,2,3) >>> '출력됨'

 

NOT IN(값1, 값2, 값3,...) >>> NOT IN 안에 있는 값이 하나라도 일치하면 FALSE 아니면 TRUE

EX) SELECT '출력됨' FROM DUAL WHERE 5 NOT IN(1,2,3) >>> '출력됨'

 

IS NULL >>> NULL 이면 TRUE 아니면 FALSE

EX) SELECT '출력됨' FROM DUAL WHERE '이것은 NULL이 아니다' IS NULL >>>  출력되지 않음

 

IS NOT NULL >>> NULL이 아니면 TRUE 아니면 FALSE

EX) SELECT '출력됨' FROM DUAL WHERE '이것은 NULL이 아니다' IS NOT NULL >>>  '출력됨'

 

BETWEEN a AND b >>> a와 b 사이에 값이 있으면 TRUE 아니면 FALSE

EX) SELECT '출력됨' FROM DUAL WHERE 45 BETWEEN 40 AND 50 >>>  '출력됨'

 

연산자(=, <, >, <=, >= ) 

EX) SELECT '출력됨' FROM DUAL WHERE 45 < 50 >>>  '출력됨'

 

문자열 조건문 관련 연산자

- A LIKE B >>> A에 대하여 B와 유사한 문자열 찾아줌

- %  >>> 문자 1개 이상이 존재한다는 의미

- _ >>> 문자 한 개

EX)

    SELECT *

    FROM TEST

    WHERE SUBJECT LIKE '%S_'

TEST라는 테이블에 끝에서 두번째 문자는 S인 값들을 출력

 

ANY, ALL

ANY >>> 어느 하나라도 참이면 TRUE, 모두 거짓이면 FALSE

EX)

    SELECT 컬럼명 FROM 테이블명 WHERE 60000 > ANY(10999999, 2312312, 1)

    ANY안에 숫자 세개중에 1이 60000보다 작으니 TRUE 반환

 

    SELECT 컬럼명 FROM 테이블명 WHERE 60000 > ANY(10999999, 2312312, 676767676767)

    ANY안에 숫자 세개 모두 60000보다 크니 FALSE 반환

 

ALL >>> 모두 참이면 TRUE, 모두 거짓이면 FALSE

EX)

    SELECT 컬럼명 FROM 테이블명 WHERE 60000 > ALL(10999999, 2312312, 1)

    ANY안에 숫자 세개중에 1빼고 모두 60000보다 크니 FALSE 반환

 

    SELECT 컬럼명 FROM 테이블명 WHERE 60000 > ALL(1, 2, 3)

    ANY안에 숫자 세개 모두 60000보다 작으니 TRUE 반환

 

 

참고) WITH  문

- 서브쿼리를 사용해서 임시테이블이나 뷰처럼 사용 가능

- 별칭 지정 가능

- 인라인뷰나 임시테이블로 판단

 

    WITH 테이블별명 AS(

        SELECT * FROM  테이블명

    )

 

위에서 만든 테이블별명을 

    SELECT * FROM 테이블별명 

와 같이 사용할 수 있다. 

 

참고) 서브쿼리

- 서브쿼리 : SELECT 문 내에 SELECT 문이 있는 쿼리

- 인라인뷰 : 서브쿼리가 FROM 절 내에 쓰여진 것 ( SELECT에 서브쿼리가 있으면 스칼라 서브쿼리)

- 서브쿼리가 출력되는 행의 개수에 따라 단일행 서브쿼리(1개출력), 다중행 서브쿼리(여러개 출력)으로 나뉨

- 서브쿼리에서는 정렬을 수행하는 ORDER BY를 사용할 수 없다(사용은 가능하나 사용해도 효과가 없음).

- 여러 행을 반환하는 서브쿼리는 다중 행 연산자를 사용해야 한다.

- EXISTS에 있는 서브쿼리가 반환하는 값은 True 혹은 False이다.

  ex) WHERE EXISTS ( SELECT 1 FROM 나는 = '천재')     >>>    True 반환

 

참고) 뷰 VIEW

- 가상테이블로 실제 데이터가 하드웨어에 저장되는것은 아님

- 실제 데이터를 가지고 있지 않다.

- 테이블 구조가 변경되더라도 독립적으로 존재

- 사용자의 편의, 속도의 향상, SQL 성능 향상, 임시적인 작업, 보안관리를 위해 사용

- 서브쿼리는 메인쿼리의 컬럼을 모두 사용할 수 있지만 메인쿼리는 서브쿼리의 컬럼을 사용할 수 없다.

 

 

반응형