IT/DataBase

[Oracle]ORACLE 12C SQL์— ์ถ”๊ฐ€๋œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2022. 11. 29.

๋ชฉ์ฐจ

    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 ์ฑ…

     

    ๋Œ“๊ธ€