Day 23

๊ธฐ์กด์— ํ…Œ์ด๋ธ”์„ CREATE ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ NOT NULL ๊ฐ™์€ ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ฑธ์–ด์คฌ์—ˆ๋Š”๋ฐ ์ด๋Ÿฐ๊ฑฐ๋ฅผ ๋ด๋ณด์ž

ํ…Œ์ด๋ธ”์— ์ œ์•ฝ์„ ์„ค์ •ํ•จ์œผ๋กœ์จ ์ €์žฅ๋  ๋ฐ์ดํ„ฐ๋ฅผ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค ์œ„์—์„œ ์ž ๊น ์ด์•ผ๊ธฐํ•œ NOT NULL ์ด์™ธ์—๋„ ๊ธฐ๋ณธํ‚ค ์ œ์•ฝ์ด๋‚˜ ์™ธ๋ถ€ํ‚ค ์ œ์•ฝ๋“ฑ์ด ์กด์žฌํ•จ

ํ…Œ์ด๋ธ” ์ž‘์„ฑ ์‹œ ์ œ์•ฝ ์ •์˜

์ œ์•ฝ์€ ํ…Œ์ด๋ธ”์—๋‹ค๊ฐ€ ๊ฑฐ๋Š” ๊ฐœ๋…์ด๋‹ค ๊ทธ๋ž˜์„œ CREATE๋‚˜ ALTER ๋ฅผ ๊ฑธ๋•Œ ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ฑธ์–ด์ค€๋‹ค ์˜ˆ์‹œ๋กœ NOT NULL, UNIQUE๋ฅผ ๊ฑธ ์ˆ˜ ์žˆ์Œ

CREATE TABLE sample631(
    a INTEGER NOT NULL,
    b INTEGER NOT NULL UNIQUE,
    c VARCHAR(30)
);

์ด๊ฒƒ์ฒ˜๋Ÿผ ์—ด์—์„œ ์ง์ ‘ ๊ฐ ์—ด์— ๋Œ€ํ•œ ์ œ์•ฝ์กฐ๊ฑด์„ ๊ฑฐ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ณด๊ณ  ์—ด์ œ์•ฝ์ด๋ผ๊ณ  ํ•œ๋‹ค ์ด์™ธ์—๋„ ํ…Œ์ด๋ธ”์— ํ…Œ์ด๋ธ”์ œ์•ฝ์„ ๊ฑฐ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค

CREATE TABLE sample632(
    no INTEGER NOT NULL,
    sub_no INTEGER NOT NULL,
    name VARCHAR(30),
    PRIMARY KEY(no, sub_no)
);

์ด๋ ‡๊ฒŒ ํ…Œ์ด๋ธ” ์ œ์•ฝ์„ ๊ฑฐ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ๋ฐ ์ œ์•ฝ์— ์ด๋ฆ„์„ ๋ถ™ํžˆ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค ์ œ์•ฝ์— ์ด๋ฆ„์„ ๋ถ™ํžˆ๊ฒŒ ๋˜๋ฉด ๋‚˜์ค‘์— ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„์€ ๋ถ™ํžˆ์ž -> ์ด๊ฑด CONSTRAINT ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง€์ •

CREATE TABLE sample632(
    no INTEGER NOT NULL,
    sub_no INTEGER NOT NULL,
    name VARCHAR(30)
    CONSTRAINT pk_sample PRIMARY KEY(no, sub_no)
);

์ œ์•ฝ ์ถ”๊ฐ€

๊ธฐ์กด์— ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”์—์„œ๋„ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

์—ด ์ œ์•ฝ ์ถ”๊ฐ€

์—ด ์ œ์•ฝ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ALTER ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ •์˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค ALTER๋ฅผ ํ†ตํ•ด์„œ ์ œ์•ฝ์„ ์ง‘์–ด๋„ฃ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ผ๋‹จ ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ•œ ํ›„, ๊ทธ๋ฆฌ๊ณ  ๋„ฃ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์‚ฌํ•œ๋‹ค๋Š”์  ๊ธฐ์–ตํ•˜์ž img.png ์ด๋ ‡๊ฒŒ ์—ด์„ ์ˆ˜์ •ํ•˜๋ฉด์„œ ์ œ์•ฝ์กฐ๊ฑด์„ ์ง‘์–ด๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค

ํ…Œ์ด๋ธ” ์ œ์•ฝ ์ถ”๊ฐ€

ํ…Œ์ด๋ธ” ์ œ์•ฝ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ALTER TABLE ์˜ ADD ๋ช…๋ น์„ ํ†ตํ•ด์„œ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค ๊ทผ๋ฐ ๋งŒ์•ฝ ๊ธฐ๋ณธํ‚ค๋Š” ํ…Œ์ด๋ธ”์— ํ•˜๋‚˜๋งŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋–„๋ฌธ์— ๋งŒ์•ฝ์— ๋ฏธ๋ฆฌ ์„ค์ •๋˜์–ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์— ๋˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ๋„ฃ์œผ๋ ค๊ณ  ํ•˜๋ฉด ์—๋Ÿฌ๋‚œ๋‹ค๋Š”์  img_1.png

์ œ์•ฝ ์‚ญ์ œ

ํ…Œ์ด๋ธ”์˜ ์ œ์•ฝ์€ ๋‚˜์ค‘์— ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค ์‚ญ์ œ๋Š” ๋“ฑ๋กํ•  ๋•Œ์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค ์—ด ์‚ญ์ œํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ img_2.png ์ œ์•ฝ ์กฐ๊ฑด์„ ๋นผ๋‹ˆ๊นŒ nullable์ด ์‚ฌ๋ผ์ง ํ…Œ์ด๋ธ” ์ œ์•ฝ์„ ์‚ญ์ œ๋Š” ALTER์˜ DROP์„ ์‚ฌ์šฉํ•ด์„œ ์ง„ํ–‰

ALTER TABLE sample631 DROP CONSTRAINT pk_sample631;
--์ด๋ ‡๊ฒŒ ์ง์ ‘ ์‚ญ์ œ, ๊ทผ๋ฐ mysql์—์„œ๋Š” ์ด๋ ‡๊ฒŒ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐ‘์—์ฒ˜๋Ÿผ
ALTER TABLE sample631 DROP PRIMARY KEY;

๊ธฐ๋ณธํ‚ค

๊ธฐ๋ณธํ‚ค ์ œ์•ฝ์„ ์„ค์ •ํ•˜๋Š”๋ฐ ํ…Œ์ด๋ธ”์— ์–ด๋–ค ์กฐ๊ฑด์ด ์žˆ์–ด์•ผํ• ๊นŒ? ์ผ๋‹จ ํ…Œ์ด๋ธ”์—์„œ ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์€ ๋‹จ์ˆœํ•˜๊ฒŒ null์ด๋ฉด ์•ˆ๋œ๋‹ค ๊ธฐ๋ณธํ‚ค๋Š” ํ…Œ์ด๋ธ”์—์„œ ๋‹จ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๊ณ  ํ…Œ์ด๋ธ”์„ ์ฐพ๋Š”๋ฐ ์ง€ํ‘œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค ๊ธฐ๋ณธํ‚ค ์ œ์•ฝ์ด ์„ค์ •๋œ ํ…Œ์ด๋ธ”์—์„œ ๊ธฐ๋ณธํ‚ค๋กœ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ ๋ณต์ˆ˜์˜ ํ–‰์ด ๋‚˜์˜ฌ ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค ๊ทธ๋ž˜์„œ ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ํ–‰์ด ์œ ์ผ์„ฑ์„ ํ•„์š”๋กœ ํ•œ๋‹ค๋Š” ๋‹ค๋ฅธ ์˜๋ฏธ์—์„œ ์œ ์ผ์„ฑ ์ œ์•ฝ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ์šด๋‹ค

๋ณต์ˆ˜์˜ ์—ด๋กœ ๊ธฐ๋ณธํ‚ค ๊ตฌ์„ฑํ•˜๊ธฐ

๊ธฐ๋ณธํ‚ค ์ œ์•ฝ์—๋Š” ์ด๋ฅผ ๊ตฌ์„ฑํ•  ์—ด ์ง€์ •์ด ํ•„์š”ํ•˜๋‹ค -> ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ not null ์ œ์•ฝ์กฐ๊ฑด์ด ์„ค์ •๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค ์ผ๋‹จ ๊ธฐ๋ณธํ‚ค๋ฅผ ๋ณต์ˆ˜์˜ ์—ด๋กœ ์ง€์ •ํ•˜๊ฒŒ ๋˜๋ฉด ํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“  ์—ด์„ ์‚ฌ์šฉํ•ด์„œ ์ค‘๋ณตํ•˜๋Š” ๊ฐ’์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค ์˜ˆ์‹œ๋กœ a, b๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์ง€์ •ํ–ˆ์„ ๊ฒฝ์šฐ๋ฅผ ๋ณด์ž img_3.png ์ด๊ฑธ ๋ณด๋ฉด a๊ฐ’์ด ์ค‘๋ณต๋˜๋Š”๊ฒŒ ๋ช‡๊ฐœ๊ฐ€ ์žˆ์–ด๋„ a, b 2๊ฐœ๋ฅผ ๊ฐ™์ด๋ณด๋ฉด a,b๋ชจ๋‘ ๊ฐ™์€ ํ–‰์€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธํ‚ค ์ œ์•ฝ์— ์œ„๋ฐฐ๋˜์ง€ ์•Š๋Š”๋‹ค ํ•˜์ง€๋งŒ ์ด์ƒํƒœ์—์„œ a, b ๋ชจ๋‘ ๊ฐ™์€ ๊ฐ’์„ insertํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค

Last updated

Was this helpful?