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;
'ํ๋ก๊ทธ๋๋ฐ ๊ณต๋ถ > Oracle' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ex16] update, delete (0) | 2023.03.19 |
---|---|
[ex14~15] sequence, insert (0) | 2023.03.19 |
[ex11~12] ๋ ์ง ์๊ฐ ํจ์(date time function), ํ๋ณํ ํจ์(casting function) (0) | 2023.03.19 |
[ex10] string function (0) | 2023.03.19 |
[ex08~09] ์ง๊ณํจ์(aggregation function), ์ํ ํจ์(numerical_function) (0) | 2023.03.19 |