์คํฐ๋ ๋ ธํธ (SQL, Primary Key, Foreign Key)
๐ 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;