DB(Database)/Basic Concept

[DB] ๋ทฐ(VIEW)

ํƒฑ์ ค 2021. 11. 4. 14:18

๋ทฐ(VIEW)

  • ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฐ€์ƒ ํ…Œ์ด๋ธ”
  • ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋…ผ๋ฆฌ์ ์œผ๋กœ๋งŒ ์กด์žฌ but ์ผ๋ฐ˜ ํ…Œ์ด๋ธ”๊ณผ ๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ
  • ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋ทฐ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ
  • ๋ทฐ ํ†ตํ•ด ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”(๋ทฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๋ฌผ๋ฆฌ์  ํ…Œ์ด๋ธ”) ๋‚ด์šฉ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ์„ ๋ณ€ํ™”์‹œํ‚ค๋Š” ์ž‘์—…์€ ์ œํ•œ์ 

→→ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์„ ๋“ค์—ฌ๋‹ค ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ฐฝ์˜ ์—ญํ• ์„ ๋‹ด๋‹น, ๋ฌผ๋ฆฌ์ X, ๋…ผ๋ฆฌ์  ๊ฐ€์ƒ ํ…Œ์ด๋ธ”


๋ทฐ ์ƒ์„ฑ : CREATE VIEW ๋ฌธ

CREATE VIEW ๋ทฐ_์ด๋ฆ„[(์†์„ฑ_๋ฆฌ์ŠคํŠธ)]
AS SELECT ๋ฌธ
[WITH CHECK OPTION];
  • CREATE VIEW ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์ƒ์„ฑํ•  ๋ทฐ์˜ ์ด๋ฆ„๊ณผ ๋ทฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ ์ด๋ฆ„ ๋‚˜์—ด
  • AS ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ SELECT ๋ฌธ ์ž‘์„ฑ (์ด๋•Œ, ORDER BY๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€)
  • WITH CHECK OPTION: ๋ทฐ์— ์‚ฝ์ž…์ด๋‚˜ ์ˆ˜์ • ์—ฐ์‚ฐ์„ ํ•  ๋•Œ SELECT ๋ฌธ์—์„œ ์ œ์‹œํ•œ ๋ทฐ์˜ ์ •์˜ ์กฐ๊ฑด ์œ„๋ฐ˜ํ•˜๋ฉด ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด ์ง€์ •

๋ทฐ ํ™œ์šฉ: SELECT ๋ฌธ

  • ๋ทฐ๋Š” ์ผ๋ฐ˜ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
  • ๋ทฐ์— ๋Œ€ํ•œ SELECT ๋ฌธ์ด ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ SELECT ๋ฌธ์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ˆ˜ํ–‰
  • ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ์€ ๋ชจ๋“  ๋ทฐ์— ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ

๋ทฐ ํ™œ์šฉ: INSERT, UPDATE, DELETE ๋ฌธ

  • ๋ทฐ์— ๋Œ€ํ•œ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ์—ฐ์‚ฐ์€ ์‹ค์ œ๋กœ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ์ˆ˜ํ–‰๋˜์–ด ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์ด ๋ณ€๊ฒฝ๋จ
  • ๋ทฐ์— ๋Œ€ํ•œ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ์—ฐ์‚ฐ์€ ์ œํ•œ์ ์œผ๋กœ ์ˆ˜ํ–‰ (๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ๋ทฐ VS ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ ๋ทฐ)
  • ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ทฐ์˜ ํŠน์ง•
    • ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋ทฐ
    • ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ์žˆ๋˜ ๋‚ด์šฉ์ด ์•„๋‹Œ ์ง‘๊ณ„ ํ•จ์ˆ˜๋กœ ์ƒˆ๋กœ ๊ณ„์‚ฐ๋œ ๋‚ด์šฉ์„ ํฌํ•จํ•˜๋Š” ๋ทฐ
    • DISTINCT ํ‚ค์›Œ๋“œ๋ฅผ ํฌํ•จํ•ด ์ •์˜ํ•œ ๋ทฐ
    • GROUP BY ์ ˆ์„ ํฌํ•จํ•ด ์ •์˜ํ•œ ๋ทฐ
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜์—ฌ ์ •์˜ํ•œ ๋ทฐ๋Š” ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ

๋ทฐ์˜ ์žฅ์ 

  • ์ฟผ๋ฆฌ๋ฌธ์„ ์ข€ ๋” ์‰ฝ๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅ
    • GROUP BY, ์ง‘๊ณ„ ํ•จ์ˆ˜, ์กฐ์ธ ๋“ฑ ์ด์šฉํ•ด ๋ทฐ ๋งŒ๋“ค์–ด ๋†“์œผ๋ฉด, ๋ณต์žกํ•œ SQL ๋ฌธ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ SELECT์™€ FROM์ ˆ๋งŒ์œผ๋กœ๋„ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ ์œ ์ง€์— ๋„์›€
    • ์ž์‹ ์—๊ฒŒ ์ œ๊ณต๋œ ๋ทฐ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋„๋ก ๊ถŒํ•œ ์„ค์ • ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค
    • ์ œ๊ณต๋œ ๋ทฐ์™€ ๊ด€๋ จ ์—†๋Š” ๋‹ค๋ฅธ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์Œ

๋ทฐ ์‚ญ์ œ: DROP VIEW ๋ฌธ

  • ๋ทฐ ์‚ญ์ œํ•ด๋„ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์€ ์˜ํ–ฅ ๋ฐ›์ง€ X
    DROP VIEW ๋ทฐ_์ด๋ฆ„;โ€‹
  • ๋งŒ์•ฝ ์‚ญ์ œํ•  ๋ทฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด ์กด์žฌํ•œ๋‹ค๋ฉด?
    • EX) ์‚ญ์ œํ•  ๋ทฐ ์ด์šฉํ•ด ๋งŒ๋“ค์–ด์ง„ ๋‹ค๋ฅธ ๋ทฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ
    • ๋ทฐ ์‚ญ์ œ๊ฐ€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Œ, ๊ด€๋ จ๋œ ์ œ์•ฝ์กฐ๊ฑด์„ ๋จผ์ € ์‚ญ์ œ ํ›„ ๋ทฐ๋ฅผ ์‚ญ์ œํ•ด์•ผํ•จ
728x90