ํ˜ผ๊ณตS 4์ฃผ์ฐจ๐Ÿค“

์ธ์†Œ๋ฆฌยท2022๋…„ 7์›” 31์ผ
0

ํ˜ผ๊ณตS

๋ชฉ๋ก ๋ณด๊ธฐ
4/6

4์ฃผ์ฐจ๊นŒ์ง€ ์™„๋ฃŒ!
๋ฐฉํ•™์„ ์ฆ๊ธฐ๋‹ค ์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค~
๊ทธ๋Ÿผ ์˜ค๋Š˜๋„...SQL...์กฐ๋งŒ๊ฐ„...์ •๋ณต!!!!!!!!!!!!!!!!!


1. ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ํ…Œ์ด๋ธ”์„ ๊ฒฌ๊ณ ํ•˜๊ฒŒ

๐Ÿ”ธ ์ œ์•ฝ์กฐ๊ฑด ์˜๋ฏธ

๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ(๋ฐ์ดํ„ฐ์— ๊ฒฐํ•จ์ด ์—†์Œ)์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ์ œํ•œํ•˜๋Š” ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.

๐Ÿ”ธ ์ œ์•ฝ์กฐ๊ฑด์˜ ์ข…๋ฅ˜

  • PRIMARY KEY ์ œ์•ฝ์กฐ๊ฑด
  • FOREIGN KEY ์ œ์•ฝ์กฐ๊ฑด
  • UNIQUE ์ œ์•ฝ์กฐ๊ฑด
  • CHECK ์ œ์•ฝ์กฐ๊ฑด
  • DEFAULT ์ •์˜
  • NULL ๊ฐ’ ํ—ˆ์šฉ

๐Ÿ”ธ ๊ธฐ๋ณธ ํ‚ค(PRIMARY KEY) ์ œ์•ฝ์กฐ๊ฑด

mem _id CHAR(8) NOT NULL PRIMARY KEY

์—ด ์ด๋ฆ„ ๋’ค์— PRIMARY KEY๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๊ธฐ๋ณธ ํ‚ค๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

PRIMARY KEY(mem_id)

ํ…Œ์ด๋ธ”์˜ ์ œ์ผ ๋งˆ์ง€๋ง‰์— PRIMARY KEY(์—ด_์ด๋ฆ„)์„ ๋ถ™์—ฌ์ฃผ๋ฉด ๊ทธ ์—ด์ด ๊ธฐ๋ณธ ํ‚ค๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”ธ ALTER TABLE์—์„œ ๊ธฐ๋ณธ ํ‚ค ์ œ์•ฝ์กฐ๊ฑด ์„ค์ •

ALTER TABLE member
โ €โ €โ €โ €โ € ADD CONSTRAINT
โ €โ €โ €โ €โ € PRIMARY KEY(mem_id);

ALTER TABLE ๋ฌธ์œผ๋กœ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” member๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•œ ํ›„ mem_id ์—ด์— ๊ธฐ๋ณธ ํ‚ค ์ œ์•ฝ์กฐ๊ฑด์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ธ ์™ธ๋ž˜ ํ‚ค(FOREIGN KEY) ์ œ์•ฝ์กฐ๊ฑด

FOREIGN KEY(mem_id) REFERENCES member(mem_id)

์ฐธ์กฐ ํ…Œ์ด๋ธ”(buy)์˜ ์—ด(mem_id)์ด ๊ธฐ์ค€ ํ…Œ์ด๋ธ”(member)์„ ์ฐธ์กฐํ•˜์—ฌ ์—ด(mem_id)์„ ๊ธฐ๋ณธ ํ‚ค๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ธ ALTER TABLE์—์„œ ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ์กฐ๊ฑด ์„ค์ •

ALTER TABLE
โ €โ €โ €โ €โ € ADD CONSTRAINT
โ €โ €โ €โ €โ € FOREIGN KEY(mem_id)
โ €โ €โ €โ €โ € REFERENCES member(mem_id);

ALTER TABLE ๋ฌธ์œผ๋กœ ์™ธ๋ž˜ ํ‚ค๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” buy๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•œ ํ›„ mem_id์— ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ์กฐ๊ฑด์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ธ ๊ณ ์œ  ํ‚ค(UNIQUE) ์ œ์•ฝ์กฐ๊ฑด

email CHAR(30) NULL UNIQUE

์ค‘๋ณต๋˜์ง€ ์•Š์€ ์—ด์„ ๊ณ ์œ  ํ‚ค๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ• ๊ณ ์œ  ํ‚ค ์ œ์•ฝ์กฐ๊ฑด๊ณผ ๋‹ค๋ฅด๊ฒŒ NULL ๊ฐ’์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜, ๊ณ ์œ  ํ‚ค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ธ ์ฒดํฌ(CHECK) ์ œ์•ฝ์กฐ๊ฑด

height TINYINT UNSIGNED NULL CHECK (height >= 100)

์—ด์˜ ์ •์˜ ๋’ค์— CHECK(์กฐ๊ฑด)์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

โ• ALTER TABLE ๋ฌธ์œผ๋กœ ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒดํฌ ์ œ์•ฝ์กฐ๊ฑด์„ ์„ค์ •ํ•œ ํ›„์— ์กฐ๊ฑด์— ์œ„๋ฐฐ๋˜๋Š” ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ธ ๊ธฐ๋ณธ๊ฐ’(DEFAULT) ์ •์˜

๊ธฐ๋ณธ๊ฐ’ ์ •์˜๋Š” ๊ฐ’์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ์ž๋™์œผ๋กœ ์ž…๋ ฅ๋  ๊ฐ’์„ ๋ฏธ๋ฆฌ ์ง€์ •ํ•ด ๋†“๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

height TINYINT UNSIGNED NULL DEFAULT 160

ALTER TABLE member
โ €โ €โ €โ €โ € ALTER COLUMN phone1 SET DEFAULT '02';

ALTER TABLE ์‚ฌ์šฉ ์‹œ ์—ด์— DEFAULT๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ALTER COLUMN ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

INSERT INTO member VALUES('SPC', '์šฐ์ฃผ์†Œ๋…€', default, default);

๊ธฐ๋ณธ๊ฐ’์ด ์„ค์ •๋œ ์—ด์— ๊ธฐ๋ณธ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ ค๋ฉด default๋ผ๊ณ  ์จ์ฃผ๊ณ , ์›ํ•˜๋Š” ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ ค๋ฉด ํ•ด๋‹น ๊ฐ’์„ ์จ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”ธ ๋„ ๊ฐ’(NULL) ํ—ˆ์šฉ

๋„ ๊ฐ’์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ์ƒ๋žตํ•˜๊ฑฐ๋‚˜ NULL์„ ์‚ฌ์šฉํ•˜๊ณ , ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด NOT NULL์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โ• PRIMARY KEY๊ฐ€ ์„ค์ •๋œ ์—ด์—๋Š” ์ž๋™์œผ๋กœ NOT NULL๋กœ ์ธ์‹๋ฉ๋‹ˆ๋‹ค.
โ• NULL์€ ๊ณต๋ฐฑ์ด๋‚˜ 0๊ณผ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

2. ๊ฐ€์ƒ์˜ ํ…Œ์ด๋ธ”: ๋ทฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ์ฒด ์ค‘ ํ•˜๋‚˜์ธ ๋ทฐ๋Š”

  • ๋‹จ์ˆœ ๋ทฐ: ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ด€๋œ ๋ทฐ
  • ๋ณตํ•ฉ ๋ทฐ: 2๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ด€๋œ ๋ทฐ

๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ธ ๋ทฐ์˜ ํ˜•์‹

CREATE ๋ทฐ_์ด๋ฆ„
AS
โ €โ €โ €โ €โ € SELECT ๋ฌธ;

ํ•„์š”ํ•˜๋ฉด ์กฐ๊ฑด์‹๋„ ํ…Œ์ด๋ธ”๊ณผ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ธ ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ๋ณด์•ˆ์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • ๋ณต์žกํ•œ SQL์„ ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์ž‡์Šต๋‹ˆ๋‹ค.

๐Ÿ”ธ ๋ทฐ์˜ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ

๋ทฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ทฐ์˜ ์—ด ์ด๋ฆ„์„ ํ…Œ์ด๋ธ”๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ(๋ณ„์นญ), ๋„์–ด์“ฐ๊ธฐ๋‚˜ ํ•œ๊ธ€๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ณ„์นญ์€ ์—ด ์ด๋ฆ„ ๋’ค์— (') ๋˜๋Š” (")๋กœ ๋ฌถ์–ด์ฃผ๊ณ , ํ˜•์‹์ƒ AS๋ฅผ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.

SELECT DISTINCT 'ํšŒ์› ์•„์ด๋””', 'ํšŒ์› ์ด๋ฆ„' FROM v_viewtest1;

โ• ๋ทฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ๋Š” ์—ด ์ด๋ฆ„์— ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด ๋ฐฑํ‹ฑ(')์œผ๋กœ ๋ฌถ์–ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ALTER VIEW v_viewtest1
AS
โ €โ €โ €โ €โ € .
โ €โ €โ €โ €โ € .
โ €โ €โ €โ €โ € .

๋ทฐ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋Š” ALTER VIEW ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

DROP VIEW v_viewtest1;

๋ทฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋Š” DROP VIEW๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

DESCRIBE v_viewtest2;

๋ทฐ์˜ ์ •๋ณด๋Š” DESCRIBE ๋ฌธ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SHOW CREATE VIEW v_viewtest2;

๋ทฐ์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” SHOW CREATE VIEW ๋ฌธ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ธ WITH CHECK OPTION

๋ทฐ์— ์„ค์ •๋œ ์กฐ๊ฑด๋งŒ ์ž…๋ ฅ๋˜๋„๋ก ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ธ CHECK TABLE

๋ทฐ ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”ธ CREATE OR REPLACE VIEW

๊ธฐ์กด์— ๋ทฐ๊ฐ€ ์žˆ์œผ๋ฉด ๋ฎ์–ด์“ฐ๊ณ , ์—†์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, DROP VIEW์™€ CREATE VIEW๋ฅผ ์—ฐ์†์œผ๋กœ ์ž‘์„ฑํ•œ ํšจ๊ณผ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๋ฏธ์…˜๐Ÿ”โœจ

p. 226 - market_db์˜ ํšŒ์› ํ…Œ์ด๋ธ”(member) ์ƒ์„ฑํ•˜๊ณ , p. 229 - ๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•œ ํ›„ ์ธ์ฆ์ƒท!


์„ ํƒ ๋ฏธ์…˜๐Ÿ’ก๐ŸŒŸ

p. 271 - ํ™•์ธ๋ฌธ์ œ 4๋ฒˆ ํ’€๊ณ  ์ธ์ฆ์ƒท!

profile
์ฝ”๋”ฉ์ด๋ผ๋Š” ๊ฐ์˜ฅ์— ๊ฐ‡ํ˜€ ์‚ฌ๋Š” ์‚ถ

0๊ฐœ์˜ ๋Œ“๊ธ€