IT/DBMS

[Oracle]ORACLE 12C SQL에 추가된 새로운 기능

알 수 없는 사용자 2022. 11. 29. 06:58
반응형

목차

    DEFALUT VALUE로 sequence의 next value 지정 가능

    12c 이전의 오라클에서는 자동 증가값을 설정하기 위해 시퀀스를 생성 한 후 테이블을 만들 때부터 생성한 시퀀스의 값을 설정할 수 있음

    -- ex) 12c에서는 아래처럼 시퀀스를 생성 후 
    CREATE SEQUENCE t_seq
    start with 1
    increment by 1
    maxvalue 10
    nocycle
    ;
    
    -- 테이블을 만들 때 시퀀스의 next value 지정이 가능함
    CREATE TALBE test
    ( no NUMBER DEFAULT t_seq.nextval PRIMARY KEY,
      name varchar2(10)
    );

     

    invisible columne 사용 가능

    11g까지는 테이블에 invisible columne이 생성되지 않았지만 12c부터는 생성 가능함
    invisible된 컬럼은 안보이지만 제약조건도 적용됨

    순위 뽑을 때 Top-N 기능 사용 가능

    11g까지는 인라인뷰를 사용하거나 rownum등을 사용해서 비교적 복잡한(?) 방법을 사용했었지만 12c부터는 편하게 Top-N으로 가능해 졌음
    (11g 사용중이라 테스트는 못 해 봤음)

    IDENTITY Column 지원

    기존의 ANSI SQL에서는 테이블에서 primary key와 같은 기능을 사용하기 위해 자동증가되는 identity columne을 지원했으나 오라클은 없었음
    그래서 시퀀스 등을 이용해서 수동으로 설정 했었는데 12c부터 오라클에서도 이 기능을 지원하게 되었음
    mysql의 auto-increment와 비슷한 기능으로 이해 됨

    -- 문법은 아래와 같음
    CREATE TABLE t_iden
    ( no NUMBER GENERATED AS IDENTITY, -- 이 부분이 자동증가
      name varchar2(10)
    );

    Null 값 위한 DEFAULT 값 지정 가능

    12c에서는 null이 입력될 경우 null 대신 입력될 값을 default로 지정하는 기능이 추가 됨

    -- 문법은 아래와 같음
    CREATE TABLE d_test100
    ( no NUMBER,
      name varchar2(10),
      sal NUMBER DEFAULT on null 100 -- null일 경우 100을 입력
    );

     

    출처 : 오라클 SQL과 PL/SQL 책

     

    반응형

    'IT > DBMS' 카테고리의 다른 글

    [SQL] update에서 case when절 사용  (0) 2023.03.04
    [Oracle]ORACLE 계층형 쿼리  (0) 2022.11.29
    [MySQL/MariaDB] Update join...  (0) 2022.11.29
    [Oracle] Oracle 시퀀스 생성 쿼리  (0) 2022.11.29
    [Oracle] Oracle SELECT한 값으로 UPDATE하기  (0) 2022.11.29