- ORACLE 12C Ver. 부터 생긴 기능!
- 12c 이전에는 Sequence 객체를 생성하여서 해당 컬럼에 값을 생성했었다.
GENERATED [ALWAYS | BY DEFAULT [ ON NULL ] ]
AS IDENTITY [ (identity options) ]
1. GENERATED ALWAYS
- 무조건 오라클이 생성
2. GENERATED BY DEFAULT
- 오라클이 생성하는데, 내가 넣는 값도 인정한다.
- 단, NULL이 포함되면 오류가 발생!
3. GENERATED BY DEFAULT ON NULL
- 오라클이 생성하는데, 내가 넣는 값도 인정한다.
- 단, NULL이 포함되면 오라클이 값을 지정한다.
CREATE TABLE t ( ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 1000 INCREMENT BY 1, text VARCHAR2(50) );
ANSI 표준 SQL 문법
[ OFFSET offset { ROW | ROWS } ] [ FETCH { FIRST | NEXT } [ { rowcount | percent PERCENT } ] { ROW | ROWS } { ONLY | WITH TIES } ]
사용 예
SELECT val FROM rownum_order_test ORDER BY val DESC FETCH FIRST ROW ONLY;
FETCH FIRST 옵션
-- 가장 최 상단의 행만 출력 FETCH FIRST ROW ONLY; - -- 가장 최상단의 행만 출력하되, 동일값이 있으면 같이 출력 ex) 100, 100, 99, 98... => 100이 2개 출력 FETCH FIRST ROW WITH TIES; - FETCH FIRST ROWS ONLY; - -- 가장 최 상단(첫번째행)의 데이터를 출력하되, 같은값이 있다면 같이 출력하라 FETCH FIRST ROWS WITH TIES; - -- 처음부터 5개의 행만 출력하라 FETCH FIRST 5 ROWS ONLY; - -- 처음부터 5개의 행만 출력하되, 동점이 있다면 같이 출력 FETCH FIRST 5 ROWS WITH TIES; - -- 전체 데이터 중에서 전체 데이터의 21% 만 출력하라 FETCH FIRST 21 PERCENT ROWS ONLY; - -- 전체 데이터 중에서 21% 만 출력하되, 동점이 있다면 같이 출력하라 FETCH FIRST 21 PERCENT ROWS WITH TIES;
FETCH NEXT 옵션
-- * 위의 FETCH FIRST와 결과는 동일하다! - -- 최상단 행 3개를 출력 FETCH NEXT 3 ROWS ONLY; - -- * OFFSET은 0부터 시작 - -- 0(첫)번째 행부터 3번째 행까지 출력 OFFSET 0 ROWS FETCH NEXT 3 ROWS ONLY; - -- ROW와 ROWS의 단수/복수의 차이점은 존재하지 않는다. 결과값이 같음 OFFSET 0 ROW FETCH NEXT 3 ROWS ONLY; - OFFSET 0 ROW FETCH NEXT 3 ROW ONLY; - -- 오프셋 4번 위치 즉, 5번째 행부터 4개의 행을 출력 OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY; - -- 오프셋 0번 위치 즉, 1번째 행부터 3개의 행을 출력하되, 동점도 같이 출력하라.??? OFFSET 0 ROWS FETCH NEXT 3 ROWS WITH TIES; - -- 오프셋 4번 위치 즉, 5번째 행부터 20% 행을 출력 OFFSET 4 ROWS FETCH NEXT 20 PERCENT ROWS ONLY;