DAY-26. Oracle DDL
๐ 2022-04-06 -2
๋ฐ์ดํฐ๋ฒ ์ด์ค
โ ์์ ์ ๋ฃ๊ณ , ๊ฐ์ธ์ด ๊ณต๋ถํ ๋ด์ฉ์ ์ ์ ๊ฒ ์ด๊ธฐ์ ์ค๋ฅ๊ฐ ๋ง์ ์๋ ์์
2022-04-06-2
๐ DDL (Data Definition Language)
๋ฐ์ดํฐ ์ ์์ด
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์์ฑ(create), ์์ (alter), ์ญ์ (drop) ํ๋ ๊ตฌ๋ฌธ
์ ์ฝ์กฐ๊ฑด (constraints)
ํ ์ด๋ธ์ ์์ฑํ ๋ ๊ตฌ์ฑํ๋ ์ปฌ๋ผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ์ ๋ํด ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํ๋ ๊ฒ
โ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ์ ํ์ฑ์ ์ ์งํ๊ธฐ ์ํด์(๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ)
- not null : ํด๋น ์ปฌ๋ผ์ null ๊ฐ์ด ๋ค์ด๊ฐ ์ ์์ โ null ๊ฐ ํ์ฉ x
- unique : ์ค๋ณต๋ ๊ฐ์ ํ์ฉ x โ null๊ฐ๋ ๋ค์ด๊ฐ๋ค
- primary key(๊ธฐ๋ณธํค) : not null + nuique โ null๊ฐ ํ์ฉ x ์ค๋ณต ๊ฐ ํ์ฉ x โ ์ปฌ๋ผ์ ๊ณ ์ ์๋ณ์๋ก ์ฌ์ฉ โ ํ๋์ ํ ์ด๋ธ์์ ํ๋ฒ ์ฌ์ฉ ๊ฐ๋ฅ
- foreign key(์ธ๋ํค) : ๋ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค์ โ Aํ ์ด๋ธ(id,pwโฆ) Bํ ์ด๋ธ(member_id, countโฆ)๊ฐ ์กด์ฌํ๋ค๊ณ ๊ฐ์ โ Bํ ์ด๋ธ์ member_id ์ปฌ๋ผ์ ๋ค์ด๊ฐ ์ ์๋ ๊ฐ์ด Aํ ์ด๋ธ์ id์ ์๋ ๋ฐ์ดํฐ์ฌ์ผํ๋ ๊ฒฝ์ฐ
- check : ํด๋น ์ปฌ๋ผ์ ์ ์ฅ ๊ฐ๋ฅํ ๊ฐ์ ๋ฒ์ ์กฐ๊ฑด์ ์ง์ ํด์ ์ค์ ํ ๊ฐ๋ง ํ์ฉ
๐ ์ ์ฝ์กฐ๊ฑด์ ๊ฑฐ๋ ๋ฐฉ์
- ์ปฌ๋ผ ๋ ๋ฒจ : ์ปฌ๋ผ๋ช ์๋ฃํ ์์ ์ ์ฝ์กฐ๊ฑด๋ช ์ ๋ช ์
- ํ ์ด๋ธ ๋ ๋ฒจ : ์ปฌ๋ผ์ ๋ชจ๋ ์ ์ํ ํ ๋ง์ง๋ง์ ์ ์ฝ์กฐ๊ฑด๋ช (์ปฌ๋ผ๋ช ) ํ์์ผ๋ก ์ ์ฝ์กฐ๊ฑด์ ๊ฑธ์ด์ฃผ๋ ๋ฐฉ์
๐
create table user_cons (
no number not null unique, // not null ๊ณผ unique๋ฅผ ๊ฐ์ด ์ฌ์ฉ
,pw varchar2(100) not null
,name varchar2(100) not null
,gender varchar2(10)
);
๐ primary key
๐
// ๋ ๊ฐ์ ์ปฌ๋ผ์ primary key๋ก ๋ฌถ์ ๋
create table user_cons (
no number
,id varchar(100)
,pw varchar2(100) not null
,gender varchar2(10)
,primary key (no,id)
);
insert into user_cons values(1,'11234','tom','๋จ');
insert into user_cons values(1,'555aa','kacey','์ฌ'); // ๊ฐ๋ฅ
insert into user_cons values(1,'555aa','kacey','์ฌ'); // unique constraint ๋ฐ์
- primary key๋ฅผ ํ๋์ ์ปฌ๋ผ์ด ์๋๋ผ ์ฌ๋ฌ๊ฐ์ ์ปฌ๋ผ์ ๋ํ ๋ณตํฉํค ํํ๋ก ์ ์ฉ์ ํ๊ณ ์ถ๋ค๋ฉด โ ์ปฌ๋ผ๋ ๋ฒจ์์๋ ๋ถ๊ฐ โ ํ ์ด๋ธ ๋ ๋ฒจ ์ฌ์ฉ
- primary key๊ฐ no, id ์ด๋ค โ no,id๋ฅผ ํ๋์ ์ ํธ๋ก ๋ณด๊ณ โ ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ insert๋ฅผ ํ๋ฉด ์๋ฌ ๋ฐ์
๐ foreign key
์ฐธ์กฐ๋ ๋ค๋ฅธ ํ ์ด๋ธ์ด ์ ๊ณตํ๋ ๊ฐ๋ง ์ฌ์ฉํ ์ ์๋๋ก ์ ์ฝํ๊ณ ์ถ์ ๋
โ ์ฐธ์กฐํ๋ ์ปฌ๋ผ, ์ฐธ์กฐ๋๋ ์ปฌ๋ผ์ ํตํด ๋ ํ ์ด๋ธ๊ฐ์ ๊ด๊ณ๊ฐ ์์ฑ
โ ์ฐธ์กฐํ๋ ์ปฌ๋ผ์ด ์ฐธ์กฐ๋๋ ์ปฌ๋ผ์ ์๋ ๊ฐ๊ณผ ์ผ์นํ๊ฑฐ๋, NULL ๊ฐ๋ง ๊ฐ์ง ์ ์์
// student ํ
์ด๋ธ
create table student (
id varchar2(100) primary key
,name varchar2(100) not null
,age number not null
);
insert into student values('001','tom',20);
insert into student values('002','salley',30);
insert into student values('003','chole',25);
// borrow ํ
์ด๋ธ 1
create table borrow (
book_id varchar2(100) primary key
,std_id varchar2(100)
,rent_date date
,foreign key (std_id) references student (id) // foreign key (์ฐธ์กฐํ๋ ์ปฌ๋ผ) references ์ฐธ์กฐ๋์ํ
์ด๋ธ (์ฐธ์กฐ๋์ ์ปฌ๋ผ๋ช
)
);
insert into borrow values('500','005',sysdate); // ์๋ฌ ๋ฐ์ -> 005๊ฐ ๋ฌธ์
insert into borrow values('500','002',sysdate); // ์๋ฌ ๋ฐ์ x ๋ถ๋ชจํค์ ์๋ id๋ง ์
๋ ฅ๊ฐ๋ฅ
// borrow ํ
์ด๋ธ 2
create table borrow(
book_id varchar2(100) primary key
, std_id varchar2(100) references student(id) // ์ปฌ๋ผ๋ช
์๋ฃํ reference ์ฐธ์กฐ๋์ (์ฐธ์กฐ๋์ ์ปฌ๋ผ๋ช
)
, rend_date date
)
insert into borrow values('500','002',sysdate); // ์๋ฌ ๋ฐ์ x
- ์ฐธ์กฐํ๋ ์ปฌ๋ผ : ์ฐธ์กฐ ๋์์ ์ฐธ์กฐํ๋ ํ ์ด๋ธ์ ์ปฌ๋ผ (borrow ํ ์ด๋ธ)
- ์ฐธ์กฐ๋๋ ์ปฌ๋ผ : ์ฐธ์กฐ ๋์์ด ๋๋ ํ ์ด๋ธ ์ปฌ๋ผ(student ํ ์ด๋ธ)
์ญ์
- ๋ถ๋ชจ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ ์์ ํ ์ด๋ธ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ ์ง โ ์ ์ฝ์กฐ๊ฑด์ ๊ฑธ ๋ ์ญ์ ์ต์ ๋ ํจ๊ป ๊ฑธ์ด์ค
- ๊ธฐ๋ณธ ์ญ์ ์ต์ ์ on delete no action โ ์์ ์ ์ฐธ์กฐํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ์ญ์ ํ ์ ์๋ค.(default)
๐
// ์ฐธ์กฐ๋๊ณ ์๋ id -> 002 -> ์ญ์
// ์ฐธ์กฐ๋๊ณ ์๋ ์ปฌ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์์ ์ปฌ๋ผ์ด ์๋ค๋ฉด ์๋ณธ ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ญ์
// borrow์๋ id๊ฐ 002๊ฐ ์กด์ฌ
delete from student where id = '002'; // integrity constraint violated - child record found
1) on delete set null
๐
create table student (
id varchar2(100) primary key
,name varchar2(100) not null
,age number not null
);
insert into student values('001','tom',20);
insert into student values('002','salley',30);
insert into student values('003','chole',25);
create table borrow(
book_id varchar2(100) primary key
, std_id varchar2(100) references student(id) on delete set null // ์ปฌ๋ผ๋ช
์๋ฃํ reference ์ฐธ์กฐ๋์ (์ฐธ์กฐ๋์ ์ปฌ๋ผ๋ช
)
, rend_date date
);
insert into borrow values('500','002',sysdate);
delete from student where id = '002'; // student์์ 002ํ ์ฌ๋ผ์ง๋ค
select * from borrow; // ๊ธฐ์กด์ ๊ฐ์ง๊ณ ์๋ 002 ๊ฐ์ด ์ฌ๋ผ์ง๋ค
- ๋ถ๋ชจ์ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ฉด ์์์ ๋ฐ์ดํฐ๊ฐ null๋ก ๋ฐ๋ โ ๊ธฐ์กด์ borrow ํ ์ด๋ธ์ std_id ๊ฐ null๋ก ๋ฐ๋
2) on delete cascade
- ๋ถ๋ชจ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ์์ ๋ฐ์ดํฐ ์ญ์๋ ํจ๊ป ์ญ์ โ on delete set null๊ณผ ๋ค๋ฅด๊ฒ ์์ ํ ์์ฒด๊ฐ ๋ค ์ญ์ ๋๋ฒ๋ฆผ
- ์์) ๊ฒ์๊ธ ํ๋์ 3๊ฐ์ ๋๊ธ์ด ๋ฌ๋ ธ๋ค โ 1๋ฒ ๊ฒ์๊ธ ์ญ์ โ 3๊ฐ์ ๋๊ธ๋ ๋ชจ๋ ์ญ์
drop table borrow;
create table borrow(
book_id varchar2(100) primary key
, std_id varchar2(100) references student(id) on delete cascade
, rend_date date
);
3) check
- ๊ฐ ์ ๋ ฅ์ ์กฐ๊ฑด์ ์ค๋ค
drop table user_cons;
create table user_cons(
no number
,id varchar2(100)
,pw varchar2(100)
,gender varchar2(100) check(gender in ('๋จ','์ฌ')) -- ๋จ ์๋๋ฉด ์ฌ๋ง ์
๋ ฅ ๊ฐ๋ฅํ๊ฒ ์กฐ๊ฑด
,primary key (no,id)
);
insert into user_cons values(1,'ab123','sdasd','๋ง๊ณ '); // check constraint ์๋ฌ
insert into user_cons values(1,'ab123','sdasd','๋จ');
select * from user_cons;
4) default
- ํ ์ด๋ธ ์์ฑ์ ๊ฐ์ ์ ๋ ฅํ์ง ์์์ ๋ ์๋์ผ๋ก ๋ค์ด๊ฐ ๊ฐ ์ค์
create table temp(
date_one date
,date_two date default sysdate // ๊ฐ์ ์ค์ ํด์ฃผ์ง ์์ผ๋ฉด default๋ก sysdate๋ก ์ค๋ค
);
insert into temp values(sysdate); // ์ปฌ๋ผ์ ์ด ๊ฐ์์ ์ผ์นํ์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ์์ด ์๋ฌ ๋ฐ์
insert into temp values(sysdate, default);
select * from temp;
alter
- ํ ์ด๋ธ์ ์ ์๋ ๋ด์ฉ์ ์์ ํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์ ์์ด
- ์ปฌ๋ผ ์ถ๊ฐ/์ญ์ , ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ/์ญ์ , ์ปฌ๋ผ์ ์๋ฃํ ๋ณ๊ฒฝ, defualt๊ฐ ๋ณ๊ฒฝ
- ํ ์ด๋ธ๋ช /์ปฌ๋ผ๋ช /์ ์ฝ์กฐ๊ฑด์ ์ด๋ฆ ๋ณ๊ฒฝ
// ํ
์ด๋ธ ์์ฑ
create table member(
no number primary key
,id varchar2(100)
,pw varchar2(100)
);
// desc member; -- ํ
์ด๋ธ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค
// ํ
์ด๋ธ ์์
// ์ด๋ฏธ ์กด์ฌํ๋ member ํ
์ด๋ธ์ ์๋ก์ด ์ปฌ๋ผ ์ถ๊ฐ(name)
alter table member add (name varchar2(100));
// ์๋ก์ด ์ปฌ๋ผ ์ถ๊ฐ(age) + default
alter table member add (age number default 0 );
// ์ ์ฝ ์กฐ๊ฑด ์ถ๊ฐ -> id ์ปฌ๋ผ์ unique ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ
alter table member add constraint id_unq unique(id);
// ์ ์ฝ ์กฐ๊ฑด ์ถ๊ฐ -> pw์ปฌ๋ผ์ not null ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ -> add๊ฐ ์๋ modify
// alter table member add constraint pw_nn not null(pw); ์๋ฌ
alter table member modify pw constraint pw_nn not null;
// ์ปฌ๋ผ๋ช
์์ -> pw ์ปฌ๋ผ์ password ๋ผ๊ณ ๋ณ๊ฒฝ
alter table member rename column pw to password;
// ์ปฌ๋ผ์ ๋ฐ์ดํฐ ํ์
์์ - name varchar2(100) -> char(100)
alter table member modify name char(100);
// ์ปฌ๋ผ ์ญ์ -age ์ปฌ๋ผ ์ญ์
alter table member drop column age;
// ์ ์ฝ์กฐ๊ฑด ์ญ์ -- passwrod ์ปฌ๋ผ์ ์ ์ฝ์กฐ๊ฑด ์ญ์
// ์ ์ฝ์กฐ๊ฑด์ ์ด๋ฆ์ ๋จผ์ ์์์ผ ํจ
select constraint_name from user_constraints where table_name = 'MEMBER';
alter table member drop constraint pw_nn;
// ์ ์ฝ์กฐ๊ฑด๋ช
์์
alter table member rename constraint SYS_C007105 to no_pk;
select constraint_name from user_constraints where table_name = 'MEMBER';
// ํ
์ด๋ธ๋ช
๋ณ๊ฒฝ
alter table member rename to tbl_member;
select * from member; -- ์๋ฌ member์์ tbl_member๋ก ๋ณ๊ฒฝ
select * from tbl_member;
Leave a comment