DBMS

[MySQL]๊ธฐ๋ณธํ‚ค์™€ ๊ณ ์œ ํ‚ค, ์™ธ๋ž˜ํ‚ค / ๋ทฐ

Alchemists 2022. 7. 25. 11:34
728x90

https://www.yalco.kr/@sql-adv/4-1/

 

 

๊ธฐ๋ณธํ‚ค์™€ ๊ณ ์œ ํ‚ค, ๊ทธ๋ฆฌ๊ณ  ์™ธ๋ž˜ํ‚ค

์–ด๋ ค์šด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…๋“ค์„ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์œ ํŠœ๋ธŒ ์ฑ„๋„ '์–„ํŒํ•œ ์ฝ”๋”ฉ์‚ฌ์ „'. ์˜์ƒ์—์„œ ๋‹ค ์•Œ๋ ค์ฃผ์ง€ ๋ชปํ•œ ์ •๋ณด๋“ค์ด๋‚˜ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ๋“ค์˜ ๋‹ต๋ณ€๋“ค, ์˜ˆ์ œ ์ฝ”๋“œ๋“ค์„ ์–„์ฝ”์—์„œ ํ™•์ธํ•˜์„ธ์š”!

www.yalco.kr

์–„์ฝ”๋‹˜์˜ MySQL๊ฐ•์˜๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๊ฐœ์ธ ๊ณต๋ถ€์šฉ์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๊ธฐ๋ณธํ‚ค

 

์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ณ ์œ ๊ฐ’๋งŒ ํ—ˆ์šฉ.

NULL๊ฐ’ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ.

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

 

-- ๊ธฐ๋ณธํ‚ค ๋„ฃ๋Š” ๋ฐฉ๋ฒ• 1
CREATE TABLE people (
  first_name CHAR(2) PRIMARY KEY,
  last_name CHAR(3),
  nickname VARCHAR(10)
);

primaryํ‚ค๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์€

 

ALTER TABLE people DROP PRIMARY KEY;

์–ด์ฐจํ”ผ peopleํ…Œ์ด๋ธ”์—๋Š” first_name๋งŒ ๊ธฐ๋ณธํ‚ค์ด๋‹ค. (ํ…Œ์ด๋ธ”๋‹น ๊ธฐ๋ณธํ‚ค๋Š” ํ•˜๋‚˜)

last_name์— ๊ณ ์œ ํ‚ค๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด์„œ

ALTER TABLE people ADD PRIMARY KEY (last_name);

๋‹ค์ค‘ ๊ธฐ๋ณธํ‚ค

์—ฌ๊ธฐ์„œ ๋‹ค์ค‘์˜ ์˜๋ฏธ๋Š” primary key์•ˆ์— column์ด ์—ฌ๋Ÿฌ๊ฐœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

first_name๊ณผ last_name์˜ ์กฐํ•ฉ์ด ๊ฒน์น˜์ง€ ์•Š์œผ๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

INSERT INTO PEOPLE VALUES('ํ™', '๊ธธ๋™', '๋ณ„๋ช…');
INSERT INTO PEOPLE VALUES('์ „', '์šฐ์น˜', '๋ณ„๋ช…');

์ด๋ ‡๊ฒŒ ๋‘๊ฐœ์˜ value๋ฅผ ๋„ฃ์—ˆ๋Š”๋ฐ

 

INSERT INTO PEOPLE VALUES('ํ™', '์šฐ์น˜', '๋ณ„๋ช…');
INSERT INTO PEOPLE VALUES('์ „', '๊ธธ๋™', '๋ณ„๋ช…');

 

ํ™์šฐ์น˜์™€ ์ „๊ธธ๋™์€ ๊ดœ์ฐฎ๋‹ค. first_name๊ณผ last_name์˜ ์กฐํ•ฉ์ด ๊ฒน์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

INSERT INTO PEOPLE VALUES('ํ™', '๊ธธ๋™', '๋ณ„๋ช…');

๋งŒ์•ฝ ํ™๊ธธ๋™์„ ๋‹ค์‹œ ๋„ฃ์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค. ์™œ๋ƒ๋ฉด ํ™๊ณผ ๊ธธ๋™์˜ first_name๊ณผ last_name์˜ ์กฐํ•ฉ์ด ๊ฒน์น˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

 

๊ณ ์œ ํ‚ค (unique)

์ค‘๋ณต์ œํ•œํ•˜๊ณ  ,NULL์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

-- ๊ณ ์œ ํ‚ค ๋„ฃ๋Š” ๋ฐฉ๋ฒ• 1
CREATE TABLE people (
  person_id INT AUTO_INCREMENT PRIMARY KEY,
  first_name CHAR(2) UNIQUE,
  last_name CHAR(3)
);

 

๋‹ค์ค‘ ๊ณ ์œ ํ‚ค๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

-- ๋‹ค์ค‘ ๊ณ ์œ ํ‚ค
CREATE TABLE people (
  person_id INT AUTO_INCREMENT PRIMARY KEY,
  first_name CHAR(2),
  last_name CHAR(3),
  UNIQUE (first_name, last_name)
);

 

์™ธ๋ž˜ํ‚ค

ALTER TABLE _์ž์‹ํ…Œ์ด๋ธ”๋ช…
  ADD CONSTRAINT _์ œ์•ฝ๋ช… 
  FOREIGN KEY ( _์ž์‹ํ…Œ์ด๋ธ”์™ธ๋ž˜ํ‚ค )
  REFERENCES ๋ถ€๋ชจํ…Œ์ด๋ธ”๋ช… ( _๋ถ€๋ชจํ…Œ์ด๋ธ”๊ธฐ๋ณธํ‚ค )
  -- ON DELETE _์‚ญ์ œ์‹œ์ œ์•ฝ 
  -- ON UPDATE _์ˆ˜์ •์‹œ์ œ์•ฝ

์™ธ๋ž˜ํ‚ค๋Š” ์ž์‹ ํ…Œ์ด๋ธ”์˜ Alter table์—์„œ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. 

section table์˜ ์ž์‹ ํ…Œ์ด๋ธ”์ธ business ํ…Œ์ด๋ธ”์— foregin key๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š”  ๋ฐฉ๋ฒ•์ด๋‹ค.

 

๋˜ํ•œ ๋ถ€๋ชจํ…Œ์ด๋ธ”์— ์—†๋Š” ๊ฐ’์„ ์ž์‹ํ…Œ์ด๋ธ”์—์„œ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค. 

 

 ALTER TABLE _์ž์‹ํ…Œ์ด๋ธ”๋ช… DROP FOREIGN KEY _์ž์‹ํ…Œ์ด๋ธ”์™ธ๋ž˜ํ‚ค

์™ธ๋ž˜ํ‚ค๋ฅผ ์‚ญ์ œํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

 

์™ธ๋ž˜ํ‚ค์— ์ œ์•ฝ์„ ๋„ฃ๋Š” ๊ฒƒ์€ ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์—์„œ ํ•ด์ค€๋‹ค. 

 

NO ACTION , RESTRICT  : ์ž์‹ํ…Œ์ด๋ธ”์— ํ•ด๋‹น ์™ธ๋ž˜ํ‚ค๊ฐ€ ์žˆ์„ ๋•Œ ์ˆ˜์ •, ์‚ญ์ œ ๋˜์ง€ ์•Š์Œ

CASCADE : ์ž์‹ ํ…Œ์ด๋ธ”์˜ ํ•ด๋‹น ํ–‰๋„ ์ˆ˜์ •/์‚ญ์ œ
SET NULL : ์ž์‹ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค๋ฅผ NULL๋กœ (๋‹จ, ์ž์‹ ์™ธ๋ž˜ํ‚ค๊ฐ€ NOT NULL์ผ ์‹œ ์„ค์ •๋ถˆ๊ฐ€)

SET DEFAULT : ์ž์‹ ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ

 

 

 

On Update๋ฅผ ํ†ตํ•ด ์ˆ˜์ • ์„ค์ •์„ ํ•ด์ฃผ๊ณ  , On Delete๋ฅผ ํ†ตํ•ด ์‚ญ์ œ ์„ค์ •์„ ํ•ด์ค€๋‹ค. 

 

๋ทฐ - ๊ฐ€์ƒํ…Œ์ด๋ธ” ์„ค์ •

 

section view๋ผ๋Š” ๋ทฐ์— ์ €์žฅ์„ ํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

-- ๋ทฐ ์ƒ์„ฑ
CREATE VIEW section_view AS
SELECT section_id, section_name
FROM sections;

๋ทฐ์˜ ์กฐํšŒ์™€ ์‚ญ์ œ

 

-- ๋ทฐ ์กฐํšŒ
SELECT * FROM section_view;

-- ๋ทฐ ์‚ญ์ œ
DROP VIEW section_view;

 

728x90