๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€/Oracle

[ex13] DDL(Data Definition Language)

ex13_ddl

 

1. DDL
        - Data Definition Language
        - ๋ฐ์ดํ„ฐ ์ •์˜์–ด
        - ํ…Œ์ด๋ธ”, ๋ทฐ, ์‚ฌ์šฉ์ž, ์ธ๋ฑ์Šค, ํŠธ๋ฆฌ๊ฑฐ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑ/์ˆ˜์ •/์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด
        a. create: ์ƒ์„ฑ
        b. drop: ์‚ญ์ œ
        c. alter: ์ˆ˜์ •
    
-ํ…Œ์ด๋ธ” ์กฐ์ž‘ํ•˜๊ธฐ
    create table ํ…Œ์ด๋ธ”๋ช…
    (
        ์ปฌ๋Ÿผ ์ •์˜,
        ์ปฌ๋Ÿผ ์ •์˜,
        ์ปฌ๋Ÿผ ์ •์˜,
        ์ปฌ๋Ÿผ ์ •์˜,
        ์ปฌ๋Ÿผ ์ •์˜,
        
        ์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•(๊ธธ์ด) NULL ์ œ์•ฝ์‚ฌํ•ญ
    );

 

***

null : null ํ—ˆ์šฉ(์ƒ๋žต์‹œ์—๋„ ํ—ˆ์šฉ)

not null : null ๋น„ํ—ˆ์šฉ

SQL์€ ๋นˆ๋ฌธ์ž('')๋„ null ์ทจ๊ธ‰ํ•œ๋‹ค.
    
    
    ์ œ์•ฝ ์‚ฌํ•ญ, Constraint
    - ํ•ด๋‹น ์ปฌ๋Ÿผ์— ๋“ค์–ด๊ฐˆ ๋ฐ์ดํ„ฐ(๊ฐ’)์— ๋Œ€ํ•œ ์กฐ๊ฑด
        - ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด > ๋Œ€์ž…
        - ์กฐ๊ฑด์„ ๋ถˆ๋งŒ์กฑํ•˜๋ฉด > ์—๋Ÿฌ๋ฐœ์ƒ
    - ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋„๊ตฌ
    - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค > ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ > ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ(***)์„ ๋ณด์žฅํ•˜๋Š” ๋„๊ตฌ
    
    1. NOT NULL
        - ํ•ด๋‹น ์ปฌ๋Ÿผ์ด ๋ฐ˜๋“œ์‹œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผํ•œ๋‹ค.
        - ํ•ด๋‹น ์ปฌ๋Ÿผ์— ๊ฐ’์ด ์—†์œผ๋ฉด ์—๋Ÿฌ๋ฐœ์ƒ
        - ํ•„์ˆ˜๊ฐ’
    
    2. PRIMARY KEY, PK
        - ๊ธฐ๋ณธํ‚ค
        - ํ…Œ์ด๋ธ”์—์„œ ํ–‰๊ณผ ํ–‰์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ > ์ œ์•ฝ
        - ๋ชจ๋“  ํ…Œ์ด๋ธ”์€ ๋ฐ˜๋“œ์‹œ 1๊ฐœ์˜ ๊ธฐ๋ณธํ‚ค๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.(***********************)
        - ์ค‘๋ณต๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค. > Unique
        - ๊ฐ’์„ ๋ฐ˜๋“œ์‹œ ๊ฐ€์ง„๋‹ค. > Not Null
        - Not Null + Unique > Primary key
    
    3. FOREIGN KEY (ํŒจ์Šค)
    
    4. UNIQUE
        - ์œ ์ผํ•˜๋‹ค. > ํ–‰๋“ค๊ฐ„์— ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.
        - Null์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. > ์‹๋ณ„์ž๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค.
        ex) ๊ฒฝํ’ˆ
            - ๊ณ ๊ฐ(๋ฒˆํ˜ธ(PK), ์ด๋ฆ„, ์ฃผ์†Œ, ๋‹น์ฒจ(UQ))
                1,ํ™๊ธธ๋™,์„œ์šธ,1๋“ฑ
                2,์•„๋ฌด๊ฐœ,๋ถ€์‚ฐ,null
                3,ํ•˜ํ•˜ํ•˜,์„œ์šธ,2๋“ฑ
                4,ํ˜ธํ˜ธํ˜ธ,์ธ์ฒœ,3๋“ฑ
        ex) ์ดˆ๋“ฑํ•™๊ต ๊ต์‹ค
            - ํ•™์ƒ(๋ฒˆํ˜ธ(PK), ์ด๋ฆ„, ์ง์ฑ…(UQ))
                1,ํ™๊ธธ๋™,๋ฐ˜์žฅ
                2,์•„๋ฌด๊ฐœ,๋ถ€๋ฐ˜์žฅ
                3,ํ•˜ํ•˜ํ•˜,null
                4,ํ˜ธํ˜ธํ˜ธ,์ฒด์œก๋ถ€์žฅ
    
    5. CHECK
        - ์‚ฌ์šฉ์ž ์ •์˜ ์ œ์•ฝ ์กฐ๊ฑด
        - where์ ˆ๊ณผ ๋™์ผํ•œ ์กฐ๊ฑด์„ ์ปฌ๋Ÿผ์— ์ ์šฉํ•œ๋‹ค.
    
    6. DEFAULT
        - ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •
        - insert/update ์ž‘์—… ๋•Œ ๊ฐ’์„ ๋Œ€์ž…ํ•˜์ง€ ์•Š์œผ๋ฉด, ๋ฏธ๋ฆฌ ์ค€๋น„ํ•ด๋†“์€ ๊ธฐ๋ณธ๊ฐ’์„ ๋Œ€์‹  ๋„ฃ๋Š” ์—ญํ• 

 


- ๋ฉ”๋ชจ ํ…Œ์ด๋ธ”

-- ๋ฉ”๋ชจ ํ…Œ์ด๋ธ”
create table tblMemo (
    
    --์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•(๊ธธ์ด) NULL ์ œ์•ฝ์‚ฌํ•ญ
    seq number(3) null,         --๋ฉ”๋ชจ๋ฒˆํ˜ธ
    name varchar2(30) null,     --์ž‘์„ฑ์ž
    memo varchar2(1000) null,   --๋ฉ”๋ชจ
    regdate date null           --์ž‘์„ฑ๋‚ ์งœ
    --๋’ค์— null : null๊ฐ’ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ๋œป
    
);



create table tblMemo (
    
    --์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•(๊ธธ์ด) NULL ์ œ์•ฝ์‚ฌํ•ญ
    seq number(3) not null,         --๋ฉ”๋ชจ๋ฒˆํ˜ธ
    name varchar2(30) null,         --์ž‘์„ฑ์ž
    memo varchar2(1000) not null,   --๋ฉ”๋ชจ
    regdate date               --์ž‘์„ฑ๋‚ ์งœ
    --not null : null๊ฐ’ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ
    --์ƒ๋žต์‹œ null ํ—ˆ์šฉ
    
);

insert into tblMemo (seq, name, memo, regdate)
            values (1, 'ํ™๊ธธ๋™', '๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค.', sysdate);
            
-- cannot insert NULL into ("HR"."TBLMEMO"."MEMO")
insert into tblMemo (seq, name, memo, regdate)
            values (2, 'ํ™๊ธธ๋™', null, sysdate);

insert into tblMemo (seq, name, memo, regdate)
            values (3, 'ํ™๊ธธ๋™', '', sysdate); --๋นˆ๋ฌธ์ž('') > SQL์€ ๋นˆ๋ฌธ์ž๋„ null๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

select * from tblMemo;



create table tblMemo (
    
    --์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•(๊ธธ์ด) NULL ์ œ์•ฝ์‚ฌํ•ญ
    seq number(3) primary key,      --๋ฉ”๋ชจ๋ฒˆํ˜ธ(์ผ๋ จ๋ฒˆํ˜ธ). Primary Key
    name varchar2(30) check(length(name) > 1),              --์ž‘์„ฑ์ž
    memo varchar2(1000),            --๋ฉ”๋ชจ
    regdate date,                   --์ž‘์„ฑ๋‚ ์งœ
    priority number check(priority between 1 and 3),         --1(์ค‘์š”), 2(๋ณดํ†ต), 3(์‚ฌ์†Œ)
    category varchar2(30) check(category in ('ํ• ์ผ', '์žฅ๋ณด๊ธฐ', '๊ณต๋ถ€'))
    
);

insert into tblMemo (seq, name, memo, regdate, priority, category)
            values (1, 'ํ™๊ธธ๋™', '๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค.', sysdate, 1, 'ํ• ์ผ');

insert into tblMemo (seq, name, memo, regdate, priority, category)
            values (1, 'ํ™', '๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค.', sysdate, 1, 'ํ• ์ผ');


select * from tblMemo where priority between 1 and 3;



create table tblMemo (
    
    --์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•(๊ธธ์ด) NULL ์ œ์•ฝ์‚ฌํ•ญ
    seq number(3) primary key,          --๋ฉ”๋ชจ๋ฒˆํ˜ธ(์ผ๋ จ๋ฒˆํ˜ธ). Primary Key
    name varchar2(30) default '์ต๋ช…',   --์ž‘์„ฑ์ž
    memo varchar2(1000),                --๋ฉ”๋ชจ
    regdate date default sysdate        --์ž‘์„ฑ๋‚ ์งœ
    
);


insert into tblMemo (seq, name, memo, regdate)
            values (1, 'ํ™๊ธธ๋™', '๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค.', sysdate);

insert into tblMemo (seq, name, memo, regdate)
            values (2, 'ํ™๊ธธ๋™', '๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค.', '2023-01-01');

insert into tblMemo (seq, name, memo, regdate)
            values (3, null, '๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค.', sysdate);

insert into tblMemo (seq, memo, regdate) --์—ฌ๊ธฐ์„œ name ์ƒ๋žตํ•˜๊ณ  insert
            values (4, '๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค.', sysdate);

insert into tblMemo (seq, memo, regdate) --์ƒ๋žต ์•ˆํ•˜๊ณ  default ์ƒ์ˆ˜
            values (5, '๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค.', default); --ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ default๋ฅผ ์ ์šฉํ•ด๋ผ

select * from tblMemo;

-์ œ์•ฝ ์‚ฌํ•ญ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
- ์ฝ”๋“œ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•
    
    1. ์ปฌ๋Ÿผ ์ˆ˜์ค€์—์„œ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
        - ์–ด์ œ ์ˆ˜์—… ๋‚ด์šฉ
        - ์ปฌ๋Ÿผ ์„ ์–ธ + ์ œ์•ฝ ์„ ์–ธ
    
    2. ํ…Œ์ด๋ธ” ์ˆ˜์ค€์—์„œ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
        - ์ปฌ๋Ÿผ ์„ ์–ธ๊ณผ ์ œ์•ฝ ์„ ์–ธ์„ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌ
    
    3. ์™ธ๋ถ€์—์„œ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
        - alter ๋ช…๋ น์–ด ๋ฐฐ์šฐ๊ณ  ์ˆ˜์—…
        - ํ…Œ์ด๋ธ” ์„ ์–ธ๊ณผ ์ œ์•ฝ ์„ ์–ธ์„ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌ

 

 

create table tblMemo (
    
    --์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•(๊ธธ์ด) NULL ์ œ์•ฝ์‚ฌํ•ญ
    
    --1. ์ปฌ๋Ÿผ ์ˆ˜์ค€์—์„œ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
    --seq number(3) primary key, --(๊ฐ„๋‹จ๋ฒ„์ „)
    --seq number(3) [constraint ์ œ์•ฝ์‚ฌํ•ญ๋ช…] ์ œ์•ฝ์ข…๋ฅ˜   --FM (์˜ค๋ฅ˜๋‚  ๊ฒฝ์šฐ ์ œ์•ฝ์‚ฌํ•ญ๋ช…์œผ๋กœ ์ฐพ๊ธฐ ๊ฐ€๋Šฅ)
    --seq number(3) constraint tblmemo_seq_pk primary key,
    
    --2. ์ปฌ๋Ÿผ ์„ ์–ธ ํ•œ๋ฒˆ์—ํ•˜๊ณ , ๋งˆ์ง€๋ง‰์— ์ œ์•ฝ์‚ฌํ•ญ ์„ ์–ธ ํ•œ๋ฒˆ์—(๊ฐ€๋…์„ฑ ์ข‹์Œ) > ํ”Œ์ ํ• ๋•Œ ์ถ”์ฒœ
    seq number(3),
    name varchar2(50),
    memo varchar2(1000), 
    regdate date,
    
    --์ œ์•ฝ ์‚ฌํ•ญ ์„ ์–ธ
    constraint tblmemo_seq_pk primary key(seq),
    constraint tblmemo_name_uq unique(name),
    constraint tblmemo_memo_ck check(length(memo) >= 10)
    
);

-- ORA-00001: unique constraint (HR.SYS_C007087) violated
-- ORA-02290: check constraint (HR.TBLMEMO_MEMO_CK) violated
-- ORA-00001: unique constraint (HR.TBLMEMO_NAME_UQ) violated
insert into tblMemo (seq, name, memo, regdate) values (1, 'ํ™๊ธธ๋™', '๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š”.', sysdate);

insert into tblMemo (seq, name, memo, regdate) values (2, 'ํ™๊ธธ๋™', '๋ฉ”๋ชจ์ž…๋‹ˆ๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š”.', sysdate);





select * from tblMemo;