Study_note(zb_data)/SQL

์Šคํ„ฐ๋”” ๋…ธํŠธ (SQL, Primary Key, Foreign Key)

KloudHyun 2023. 8. 30. 18:52

๐Ÿ“Œ Primary Key (๊ธฐ๋ณธ ํ‚ค)

- ํ…Œ์ด๋ธ”์˜ ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‹๋ณ„

- ์ค‘๋ณต๋˜์ง€ ์•Š์€ ๊ณ ์œ  ๊ฐ’์„ ํฌํ•จ

- Null ๊ฐ’ ํฌํ•จ ๋ถˆ๊ฐ€๋Šฅ

- ํ…Œ์ด๋ธ” ๋‹น ํ•˜๋‚˜์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๊ฐ€์ง

๐Ÿ“Œ Table์— Primary Key๋ฅผ ์‹ฌ์–ด์ฃผ๊ธฐ

- constraint ๋ช…๋ น์–ด๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ (key_name)

- ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ์— Primary Key๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ

create table person
(
    pid int not null,
    name varchar(16),
    age int,
    sex char,
    primary key (pid)
);

- ์ด๋ฏธ ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”์—์„œ Primary Key๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ

alter table person
add constraint key_name primary key (pid);

- primary key๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ

alter table person
drop primary key;

๐Ÿ“Œ Foreign Key (๊ธฐ๋ณธ ํ‚ค)

- ํ…Œ์ด๋ธ”์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ํ‚ค

- ์ฐธ์กฐ ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ํ•ญ๋ชฉ์€ ๊ทธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค ๊ฐ’ (ํ˜น์€ ๋‹จ์ผ ๊ฐ’)

- primary key ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ constraint (key_name)์€ ์ƒ๋žต ๊ฐ€๋Šฅ 

- ์ƒ๋žต๋  ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ์ด๋ฆ„์ด ์ƒ์„ฑ ๋œ๋‹ค

create table orders
(
    oid int not null,
    order_no varchar(16),
    pid int,
    constraint constraint_name
    primary key (oid)
    constraint FK_person foreign key (pid) references person (pid)
)

๐Ÿงท Foreign Key ํ™•์ธํ•˜๊ธฐ

show create table_name;

๐Ÿงท constraint๋ฅผ ์ƒ๋žตํ•  ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ํ‚ค ์ด๋ฆ„์ด ์ƒ์„ฑ๋œ๋‹ค

- ์ด๋ฏธ ์ƒ์„ฑ๋œ Table์— Foreign Key๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ

alter table orders
add foreign key (column_name) references ref_tablename(ref_column);

- primary key๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ

- key_name์„ ํ™•์ธ ํ•œ ํ›„, ์ฟผ๋ฆฌ์— ์ด๋ฆ„์„ ๋„ฃ์–ด์ค˜์•ผํ•œ๋‹ค.

alter table orders
drop foreign key fk_constraint;