표현식 이란 한개 이사으이 값과 연산자 , SQL 함수 등이 결합된 식이다. 이 절에서는 특정 조건에 따라 값을 변경해서 보이는 CASE표현식에 대해 알아보자.
CASE WHEN 조건1 THEN 값1
WHEN 조건2 THEN 값2
ELSE 기타값
END
SELECT ROWNUM,EMPLOYEE_ID,SALARY,
CASE WHEN SALARY <=5000 THEN 'C등급'
WHEN SALARY > 5000 AND SALARY <=15000 THEN 'B등급'
ELSE 'A등급'
END AS SALARY_GRADE
FROM EMPLOYEES;
사원 테이블에서 급여가 5000이하면 C등급 500~15000 사이면 B등급 15000 이상이면 A등급 반환 하는 쿼리다
WHEN 다음에 조건을 기술하고 THEN 다음에는 앞에서 기술한 조건에 만족하면 실제 출력되는 값을 명시하고 있는데 주의할점은 THEN 이하 출력 값들의 데이터 타입은 반드시 일치시켜야 한다. 즉 앞의 쿼리는 THEN 다음에 있는 C등급 B등급은 데이터 타입이 모두 문자 형태로 동일하게 면시 했는데, 만약 C등급 3,4 처럼 문자형과 숫자형을 혼합해 기술하면 오류가 발생한다 CASE 표현식은 다른 프로그래밍 언어에서도 제공되는 기능으로 그쓰임새는 비슷하나 프로그램 언어나 DBMS 종류에 따라 구문 형식이 약간씩 다르다
조건식 (Chapter1)
조건 혹은 조건식은 한개 이상의 표현식과 논리 연산자가 결합된 식으로 TRUE, FALSE ,UNKNOWN 세 가지 타입을 반환한다. 지금까지 SQL문을 학습하면서 WHERE 절에서 사용했던 모든 조건이 바로 조건식에 포함된다. 대표적인 조건식은 다음과 같다.
비교 조건식
비교 조건식은 논리 연산자 ANY, SOME,ALL 키워드로 비교하는 조건식을 말한다. 여기서는 ANY,SOME,ALL 비교에 대해서 알아볼텐데 먼저 ANY를 살펴보자.
SELECT EMPLOYEE_ID, SALARY
FROM EMPLOYEES
WHERE SALARY = ANY(2000,3000,4000)
ORDER BY EMPLOYEE_ID;
SELECT EMPLOYEE_ID, SALARY
FROM EMPLOYEES
WHERE SALARY =2000
OR SALARY =3000
OR SALARY =4000
ORDER BY EMPLOYEE_ID;
이쿼리는 급여가 2000 , 3000, 4000 인 사원을 추출하는 것이다. ANY가 '아무것' 이나 ' 하나'란 뜻이 있으므로 위 문장은 세 가지 값, 즉 급여가 2000이거나 3000이나 4000 중 하나라도 일치하는 모든 사원을 추출한 것이다. 따라서 ANY는 OR 조건으로 변환이 가능하며 다음 문장도 같은 결과를 반환한다.
반면 AL은 모든 조건을 동시에 만족해야 한다. 다음 쿼리를 보자
SELECT EMPLOYEE_ID, SALARY
FROM EMPLOYEES
WHERE SALARY = ALL(2000,3000,4000)
ORDER BY EMPLOYEE_ID;
위 쿼리는 급여가 2000,3000,4000 모두가 해당되는 사원을 조회하므로 조회되는 데이터가 없다.
마지막으로 알아볼 SOME 은 ANY와 동일하게 사용되며 동작한다.
SELECT EMPLOYEE_ID, SALARY
FROM EMPLOYEES
WHERE SALARY = SOME(2000,3000,4000)
ORDER BY EMPLOYEE_ID;
내일은 비교조건식에 대해 알아보자 ㅜ
'DB' 카테고리의 다른 글
Oracle(PL/SQL) 구성요소 (0) | 2020.12.24 |
---|---|
Oracle(PL /SQL ) 기본구조 (0) | 2020.12.23 |
Oracle(의사컬럼) (0) | 2020.12.23 |
Oracle(MERGE) (0) | 2020.12.23 |
Oracle (index) (0) | 2020.12.21 |