๐Ÿ‘“ View

eunsiverยท2023๋…„ 5์›” 10์ผ
0

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ชฉ๋ก ๋ณด๊ธฐ
8/9

View๊ฐ€ ๋ฌด์—‡์ด๊ณ , ์–ธ์ œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
โ€ข ๊ทธ๋ ‡๋‹ค๋ฉด, View์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•ด๋„ ์‹ค์ œ ํ…Œ์ด๋ธ”์—๋Š” ๋ฐ˜์˜๋˜์ง€ ์•Š๋‚˜์š”?


โ“View

  • VIEW์™€ TABLE๊ณผ์˜ ์ฐจ์ด์ ์€ ๊ทธ๋ƒฅ TABLE์€ ์‹ค์งˆ์ ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์ง€๋งŒ VIEW๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๊ณ  SQL๋งŒ ์ €์žฅํ•œ๋‹ค.
  1. ๋ทฐ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ‘๊ทผ์ด ํ—ˆ์šฉ๋œ ์ž๋ฃŒ๋งŒ์„ ์ œํ•œ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์œ ๋„๋œ, ์ด๋ฆ„์„ ๊ฐ€์ง€๋Š” ๊ฐ€์ƒ ํ…Œ์ด๋ธ”์ด๋‹ค.

  2. ๋ทฐ๋Š” ์ €์žฅ์žฅ์น˜ ๋‚ด์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์กด์žฌํ•˜์ง€ ์•Š์ง€๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ„์ฃผ๋œ๋‹ค.

  3. ๋ทฐ๋Š” ๋ฐ์ดํ„ฐ ๋ณด์ •์ž‘์—…, ์ฒ˜๋ฆฌ๊ณผ์ • ์‹œํ—˜ ๋“ฑ ์ž„์‹œ์ ์ธ ์ž‘์—…์„ ์œ„ํ•œ ์šฉ๋„๋กœ ํ™œ์šฉ๋œ๋‹ค.

  4. ๋ทฐ๋Š” ์กฐ์ธ๋ฌธ์˜ ์‚ฌ์šฉ ์ตœ์†Œํ™”๋กœ ์‚ฌ์šฉ์ƒ์˜ ํŽธ์˜์„ฑ์„ ์ตœ๋Œ€ํ™” ํ•œ๋‹ค.


๐Ÿ”ฐ view ์‚ฌ์šฉ ๋ชฉ์ 

  • ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฌธ์˜ ๊ฐ„์†Œํ™”, ์ค‘๋ณต ๋ฐœ์ƒํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์˜ ๊ด€๋ฆฌ(์‚ฌ์šฉ์ž ํŽธ์˜)
  • ๋ณด์—ฌ์ฃผ๋Š” ์ปฌ๋Ÿผ์˜ ์ œํ•œ (๋ณด์•ˆ์„ฑ) ๋˜ํ•œ ์ถ”๊ฐ€์ ์ธ ๋ชฉ์ (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณด์•ˆ)

๐Ÿ“ข๋ทฐ(View)์˜ ํŠน์ง•

  1. ๋ทฐ๋Š” ๊ธฐ๋ณธํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์œ ๋„๋œ ํ…Œ์ด๋ธ”์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์กฐ์ž‘๋„ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”๊ณผ ๊ฑฐ์˜ ๊ฐ™๋‹ค.

  2. ๋ทฐ๋Š” ๊ฐ€์ƒ ํ…Œ์ด๋ธ”์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

  3. ๋ฐ์ดํ„ฐ์˜ ๋…ผ๋ฆฌ์  ๋…๋ฆฝ์„ฑ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

  4. ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ทฐ๋กœ ์ •์˜ํ•ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๊ณ  ๋ช…๋ น๋ฌธ์ด ๊ฐ„๋‹จํ•ด์ง„๋‹ค.

  5. ๋ทฐ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ฒŒ ํ•˜๋ฉด ๋ทฐ์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ•˜๋Š” ํšจ์œจ์ ์ธ ๊ธฐ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  6. ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ํฌํ•จํ•œ ์†์„ฑ(์—ด) ์ง‘ํ•ฉ์œผ๋กœ ๋ทฐ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ์ง€๋งŒ ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฐฑ์‹ , ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  7. ์ผ๋‹จ ์ •์˜๋œ ๋ทฐ๋Š” ๋‹ค๋ฅธ ๋ทฐ์˜ ์ •์˜์— ๊ธฐ์ดˆ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

  8. ๋ทฐ๊ฐ€ ์ •์˜๋œ ๊ธฐ๋ณธํ…Œ์ด๋ธ”์ด ์‚ญ์ œ๋˜๋ฉด ๋ทฐ๋„ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋จ

  9. ๋ทฐ๋Š” ์›๋ณธ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.


๐Ÿ“Œ๋ทฐ(View)์‚ฌ์šฉ์‹œ ์žฅ๋‹จ์ 

์žฅ์ 

  1. ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

  2. ๋™์ผ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋™์‹œ์— ์—ฌ๋Ÿฌ์‚ฌ์šฉ์ž์˜ ์ƒ์ดํ•œ ์‘์šฉ์ด๋‚˜ ์š”๊ตฌ๋ฅผ ์ง€์›ํ•ด ์ค€๋‹ค.

  3. ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.

  4. ์ ‘๊ทผ ์ œ์–ด๋ฅผ ํ†ตํ•œ ์ž๋™ ๋ณด์•ˆ์ด ์ œ๊ณต๋œ๋‹ค.

๋‹จ์ 

  1. ๋…๋ฆฝ์ ์ธ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.

  2. ALTER VIEW๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ฆ‰ ๋ทฐ์˜ ์ •์˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.

  3. ๋ทฐ๋กœ ๊ตฌ์„ฑ๋œ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฐฑ์‹ , ์—ฐ์‚ฐ์— ์ œ์•ฝ์ด ๋”ฐ๋ฅธ๋‹ค.
    <๋‹จ์ˆœ ๋ทฐ์ธ๊ฒฝ์šฐ INSERT,UPDATE, DELETE ๊ฐ€ ์ž์œ ๋กญ๋‹ค ๊ทธ๋Ÿฌ๋‚˜ ํ•จ์ˆ˜, UNION, GROUP BY๋“ฑ์„ ์‚ฌ์šฉํ•œ ๋ณตํ•ฉ ๋ทฐ์ธ ๊ฒฝ์šฐ ๋ถˆ๊ฐ€ ๋Šฅ ํ•˜๋‹ค. (์กฐ์ธ๋งŒ ์‚ฌ์šฉํ•œ ๋ณตํ•ฉ ๋ทฐ๋Š” ์ œํ•œ์ ์œผ๋กœ ๊ฐ€๋Šฅ)>


๐Ÿ“ ๋‹จ์ˆœ ๋ทฐ vs ๋ณตํ•ฉ ๋ทฐ

  • ๋‹จ์ˆœ ๋ทฐ (Single View)

    • ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋กœ ์ƒ์„ฑ
    • ๊ทธ๋ฅฉ ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅ
    • Distinct ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅ
    • DML ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ
  • ๋ณตํ•ฉ ๋ทฐ( Complex View)

    • ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ…Œ์ด๋ธ”๋กœ ์ƒ์„ฑ (join)
    • ๊ทธ๋ฅฉ ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ
    • Distinct ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ
    • DML ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅ

๐Ÿช“ View ๋งŒ๋“œ๋Š” ๋ฒ•

view ๋งŒ๋“ค๊ธฐ

  • ์ผ๋ฐ˜ SELECT ์ฟผ๋ฆฌ ์œ„์— CREATE VIEW '์‹ ๊ทœ ๋ทฐ ๋ช…' AS ๋ฌธ๊ตฌ๋งŒ ์ถ”๊ฐ€
  • SELECT ์ฟผ๋ฆฌ์—๋Š” ๊ธฐ์กด ๋ทฐ ๋˜๋Š” ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•ด ์ฃผ๋ฉด ๋˜๋Š”๋ฐ, ๊ฐœ์ˆ˜๋Š” ํ•˜๋‚˜๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ฆ‰, ๋‹จ์ผ ํ…Œ์ด๋ธ” ๋˜๋Š” ์กฐ์ธํ•œ ํ˜•ํƒœ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค.
CREATE VIEW viewTableEx1 AS (
  SELECT CustomerID, OrderID, Quantity
  FROM Orders
  WHERE ProductID = "P1" )
;
-- ์ƒ์„ฑํ•  ๋ทฐ ๋ช…์นญ์€ viewTableEx1

์•„๋ž˜๋Š” ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜์—ฌ ๋ทฐ๋ฅผ ๋งŒ๋“  ์˜ˆ์‹œ.

  • ์œ„์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ joinํ•œ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฌธ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„๋•Œ ์กฐ์ธ ์ฟผ๋ฆฌ๋ฌธ์„ ๋งค๋ฒˆ ์ž‘์„ฑํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ์กฐํšŒ ์ฟผ๋ฆฌ๋ฌธ์„ ๋ทฐ๋กœ ๋งŒ๋“ค์–ด๋†“๊ณ  ๋ทฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์— VIEW๋ฅผ ์‚ฌ์šฉ
CREATE VIEW viewTableEx2 AS (
 SELECT Customer.CustomerName, Orders.Quantity
  FROM Customer JOIN Orders
    ON Customer.CustomerID = Orders.CustomerID )
;
-- ์ƒ์„ฑํ•  ๋ทฐ ๋ช…์นญ์€ viewTableEx2

View ์ฝ๊ธฐ ์ „์šฉ

๋ทฐ๋ฅผ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์ฟผ๋ฆฌ ๋งˆ์ง€๋ง‰์— 'with ready only' ๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด DML(INSERT, UPDATE, DELETE)์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ์— ์™ธ๋ถ€์— ์ œ๊ณตํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€ ์˜ต์…˜์ด๋‹ค.


View ์‚ญ์ œ

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

โ€ป ๋ทฐ๋Š” ALTER๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ์‚ญ์ œํ•œ ํ›„ ์žฌ์ƒ์„ฑํ•œ๋‹ค.


๐Ÿ“ญ " ๊ธฐ์กด ํ…Œ์ด๋ธ”์ด ์—…๋ฐ์ดํŠธ๋˜๋ฉด ๋ทฐ ํ…Œ์ด๋ธ”๋„ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ ๊นŒ? "

๋ทฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ๋งˆ๋‹ค, ์˜ตํ‹ฐ๋งˆ์ด์ €์—์„œ ๋ทฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ์ €์žฅํ•ด ๋†“์€ Select ๋ฌธ์ด ๋‚ ๋ผ๊ฐ€๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์—ฐํžˆ, ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ”๋กœ๋ณด๋Š” ๊ฐ€์ƒ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ๋˜ํ•œ ์—…๋ฐ์ดํŠธ

๐Ÿ“ญ "View์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•ด๋„ ์‹ค์ œ ํ…Œ์ด๋ธ”์—๋Š” ๋ฐ˜์˜๋˜์ง€ ์•Š๋‚˜์š”?"

๋ทฐ ํ…Œ์ด๋ธ”์— ์ž๋ฃŒ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์€ ์‹ค์ฒด ํ…Œ์ด๋ธ”์— ๋ฐ˜์˜๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜๋ฅผ ์š”ํ•œ๋‹ค.


์ฐธ๊ณ 
https://thalals.tistory.com/346
https://code-lab1.tistory.com/48
https://velog.io/@combi_jihoon/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%B7%B0-%ED%85%8C%EC%9D%B4%EB%B8%94View-table
http://www.tcpschool.com/mysql/mysql_view_createReplace

profile
Let's study!

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด