NULL 이다. NULL은 상당히 공포스럽다. NULL값은 데이터를 아주 약간 다루다보니 개발할때 NULL에 대한 처리를 꼭 해줘야 한다. 나도 웹개발을 했을때 이 NULL값이 나오면 바로 에러가 나서, NULL값에 대한 예외처리를 해줘야 했다.
이거는 프론트단에서 해줘도 되고 바로 지금 배우는 SQL에서 NULL에 대해서 대체값을 처리해줘도 된다.
나같은 경우는 NULL값을 0으로 바꿔서 처리를 해줬었다.
알클님 유튜브 강의를 통해서 다시 재복습차원에서 열심히 들었다.
https://www.youtube.com/watch?v=wOh9T1JtiA0&list=PL4C2AmBC9jOYAQrvie3y5c8GN01KGq5WR&index=21
여기서 NVL함수는 기억하기론 오라클에서만 지원하는 NULL처리를 위한 함수이다. 아마 다른 DBMS에서는 별도로 제공하는 함수들이 있을것이다.
NVL(인자1, 인자2) | 인자1이 NULL이면, 인자2를 반환하는 함수 |
NVL2(인자1,인자2,인자3) | 인자1이 NULL이 아니면 인자2, NULL이면 인자3을 반환하는 함수 |
COALESCE(인자1,인자2,...) | 인자들 중 NULL이 아닌 첫번째 값을 반환하는 함수 |
인자: NULL, 인자: NULL, 인자3: (값) 출력: 인자3을 | |
LNNVL(조건식) | 조건식의 결과가 1)TRUE --> FALSE, 2) NULL,FALSE --> TRUE로 변환하는 함수 |
NULLIF(인자1,인자2) | 인자1과 인자2가 같으면 NULL |
인자1과 인자2가 다르면 인자1을 반환하는 함수 |
44. 테이블 EMPLOYEES의 COMMISSION_PCT를 중복없이 검색하되, NULL이면 0으로 조회하고 내림차순으로 정렬하는 SQL (HR계정의 샘플 데이터)
DISTINCT : 중복 없이 조회
NVL(값, 대체할 값) :해당 값이 NULL 이면 지정된 값으로 변환하는 함수
SELECT DISTINCT NVL(COMMISSION_PCT, 0) AS A
FROM EMPLOYEES
ORDER BY A DESC;
SELECT DISTINCT NVL(COMMISSION_PCT, 0)
FROM EMPLOYEES
ORDER BY NVL(COMMISSION_PCT, 0) DESC;
SELECT문의 실행순서
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
1. 테이블을 선택한다.
2. 조건에 맞는 데이터를 선택한다.
3. 그룹기준을 지정한다.
4. 그룹별로 조건에 맞는 데이터를 선택한다.
5. 조회할 컬럼을 선택한다.
6. 조회된 결과를 정렬기준에 따라 정렬\
45. 테이블 EMPLOYEES의 FIRST_NAME, SALARY, COMMISSION_PCT 속성을 이용하여
<예시>와 같이 SQL문을 작성하기
-- 조건
-- 최종급여 = 급여 + (급여X커미션)
-- 최종급여를 기준으로 내림차순 정렬
SELECT
first_name AS "이름",
salary AS "급여",
NVL(commission_pct,0) AS "커미션",
salary + (salary*NVL(commission_pct,0)) AS "최종급여",
NVL2(commission_pct, salary+(salary * commission_pct), salary) AS "최종급여2"
FROM EMPLOYEES
ORDER BY "최종급여" DESC;
*블로그의 내용은 알클님 강의를 기반으로 작성되었습니다!
'SQL공부' 카테고리의 다른 글
ORACLE 오라클 SQL9 - CASE, 그룹함수 (0) | 2025.01.14 |
---|---|
ORACLE 오라클 SQL 7 - 변환함수, 날짜함수 (0) | 2025.01.14 |
ORACLE 오라클 SQL 5 - 숫자함수 (0) | 2025.01.14 |
ORACLE 오라클 SQL 4 - SELECT 조회(기초) (0) | 2025.01.13 |
ORACLE 오라클 SQL 2 - HR 계정 생성하기 (0) | 2025.01.13 |