1. nvl() 함수
이 함수는 마리아DB에서 ifnull() 함수와 같다.
nvl()을 사용하면 null값을 지정해줄 수 있다.
형식)
nvl(칼럼명, 값)
nvl(kor, 0) -- kor 값이 null이면 0의 값을 대입한다
문제) 주소가 'Incheon'인 행의 국어점수 최대값, 인원수를 조회하시오
select nvl(max(kor),0), count(*)
from sungjuk
where addr='Incheon' and kor=(select max(kor) from sungjuk where addr='Incheon');
select count(*)+1 -- 0+1
from sungjuk
where addr='Incheon';
select max(kor)+1 -- null, null은 연산이 되지 않음
from sungjuk
where addr='Incheon';
select nvl(max(kor), 0) -- null값이면 0으로 대체함
from sungjuk
where addr='Incheon';
select nvl(max(kor), 0)+1 as max_kor -- 1
from sungjuk
where addr='Incheon';
2. 모조 칼럼
모조 칼럼(Pseudo Columns), 즉 허상의 칼럼이란 뜻이다.
실제 테이블에 저장되어있지는 않지만 가상의 공간에 생성되는 칼럼이다.
종류는 ROWNUM 과 ROWID 가 있는데 ROWNUM은 퀴리의 결과로 나오게 되는 값들의 순서값, 그리고 ROWID는 ROWNUM마다 배정되는 이름이다.
select sno, uname, addr, rownum, rowid
from sungjuk
where rownum>=1 and rownum<=5;
이 모조칼럼은 단일 값에 접근하는 가장 빠른 수단이며, 테이블에 각 로우(행)들이 어떻게 저장되어지는지를 보여준다.
ROWNUM은 결과의 순서마다 붙어지는 숫자값이지만(어떤 값이 와도 순차적으로 붙여짐),
ROWID 값은 유일한(unique) 값이다.
* order by로 정렬했을 경우!
select sno, uname, addr, rownum, rowid
from sungjuk
order by uname;
order by로 정렬을 하면 행 자체의 값을 가지고 정렬을 시키기 때문에 rownum의 값이 우선 배정된 뒤 정렬이 된다.
그래서 rownum이 순서대로 붙여지지 않게 된다.
'⁂ Oracle DB > : 기본 익히기' 카테고리의 다른 글
[Oracle] #5-1 모델링(테이블 시나리오, 테이블 정의서) 개념 정리 (0) | 2022.08.25 |
---|---|
[Oracle] #4-4 오라클과 마리아DB의 자료형 (0) | 2022.08.23 |
[Oracle] #4-2 Oracle에서 자주 쓰이는 함수 모음 (0) | 2022.08.23 |
[Oracle] #4-1 서브쿼리 (0) | 2022.08.23 |
[Oracle] #3-5 having 조건절, CASE WHEN ~ THEN END 구문 (0) | 2022.08.23 |