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!”
ENDsearched 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 출력
같은 표현
CASE 사용
CASE column IS NULL
THEN “값이 없음”
ELSE column
ENDNVL 사용
NVL(column, “값이 없음”)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 |