본문 바로가기

자격증/SQLD

where 절

1. where 조건절 개요


정의

  • 결과 제한을 위한 조건 기술

  • 두 개 이상의 테이블 조인 조건 기술



형식

select [distinct/all] column_name [alias]

from table_name

where conditions;


구성

  • 컬럼명

  • 비교 연산자

  • 문자, 숫자, 표현식

  • 비교 칼럼명(JOIN 사용시)


2. 연산자의 종류


종류

  • 비교 연산자
    =, >, >=, <, <=, <>

  • SQL 연산자
    between A and B, in(list), like ‘비교_문자열’, is null

  • 논리 연산자
    and, or, not

  • 부정 비교 연산자
    !=, ^=, <>
    NOT column =
    NOT column>

  • 부정 SQL 연산자
    NOT between A and B, NOT in (list), IS NOT NULL


3. 비교 연산자


LIKL문의 wildcard 문자

  • % : 0개 이상의 어떤 문자를 의미

  • _ : 1개의 단일 문자를 의미


between A and B : A이상 B이하인 값


NULL

  • null값과의 수치연산은 null값 리턴

  • null값과의 비교연산은 무조건 false, ( null = null 도 안됨!)

  • 비교 불가능

  • IS NULL, IS NOT NULL을 통해 비교해야만 함

  • 잘못된 예제)
    select palyer_name, position,  back_no
    from palyer
    where position != null

  • 옳바른 예제)
    select palyer_name, position,  back_no
    from palyer
    where position is not null



6. CASE 표현

IF-THEN-ELSE 표현과 유사하다.


사용 예)
SELECT ENAME,

CASE WHEN SAL > 2000

THEN SAL

ELSE 2000

END REVISED_SALARY

FROM EMP;


종류

  • simple case expression
    CASE 다음에 컬럼이나 조건을  표시하고 앞에서 정의한 칼럼이 표현식과 같은지 아닌지 판단하는 문장

    CASE column
    WHEN “A” THEN “HI”
    WHEN “B” THEN “HELLO”
    ELSE “Get out here!”
    END

  • searched case expression
    각 케이스별로 조건식을 서술하는 형식

    CASE
    WHEN column > 1000 THEN “WOW”
    WHEN column > 500 THEN “GOOD”
    WHEN column > 100 THEN “Not bad…”
    ELSE “Sorry, I cant”
    END


중첩또한 가능하다!


CASE WHEN SAL >= 2000
THEN 1000

ELSE (CASE WHEN SAL >= 1000
THEN 500

ELSE 0

END)

END as BONUS




7. Null 관련 함수


NULL 의 특성

  • not null, primary key로 지정되지 않은 컬럼은 모두 null을 포함할 수 있음

  • null과의 연산은 null

  • null과의 비교는 false, 대상이 null이여도 무조건 null

  • null값이 아닌 다른 값을 얻고자 할 때는 NVL/ISNULL을 사용


함수

  • NVL(표현식1, 표현식2), ISNULL(표현식1, 표현식2)
    위 표현식1이 NULL이면 표현식2의 값으로 출력

  • NULLIF(표현식1, 표현식2)
    표현식1과 표현식2가 같으면 NULL을, 아니면 표현식1의 결과를 출력

  • COALESCE (표현식1, 표현식2 … 표현식N )
    N개의 표현식 중 NULL이 아닌 최초 표현식의 결과를 출력 모두 NULL이라면 NULL 출력

같은 표현

  1. CASE 사용
    CASE column IS NULL
    THEN “값이 없음”
    ELSE column
    END

  2. NVL 사용
    NVL(column, “값이 없음”)

  3. ISNULL 사용
    ISNULL(column, “값이 없음”)



공집합의 NVL/ISNULL 사용

  • 아무것도 없는 select 문에 없다면(null로 착각) 특정 값으로 대체하는 잘못된 사용

  • 반드시 통계함수로 작성

  • 집계 함수와 scalar subquery의 경우 공집합인 경우 null을 출력

  • 현실적인 사용법
    NVL(COUNT(*), “Nothing”) ..



'자격증 > SQLD' 카테고리의 다른 글

ORDER BY 절  (0) 2016.09.09
GROUP BY, HAVING 절  (0) 2016.09.09
TCL (Transaction Control Language)  (0) 2016.09.09
DML (Data Manipulation Language, 데이터 조작 언어)  (0) 2016.09.09
DDL (Data Definition Language)  (0) 2016.09.09