ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/DataBase

[SQL] ๋ทฐ View

NaNaRin๐Ÿ™ƒ 2021. 3. 15. 16:30

1. ๋ทฐ View

- ๊ฐ€์ƒ ํ…Œ์ด๋ธ”(virtual table)์ด๋ผ๊ณ  ๋ถ€๋ฆ„

- ํ•˜๋‚˜ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜๋Š” SELECT ๋ฌธ์„ ์ €์žฅํ•œ ๊ฐ์ฒด

- ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜์ง€๋Š” ์•Š์Œ

- ๋ทฐ๋ฅผ SELECT ๋ฌธ์˜ FROM ์ ˆ์— ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํšจ๊ณผ

-- 1. ๋ทฐ VW_EMP20 ์ƒ์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •
SELECT EMPNO, ENAME, JOB, DEPTNO
  FROM EMP
 WHERE DEPTNO = 20;
 
 -- 2. ๋ทฐ
 SELECT *
   FROM VW_EMP20;
 
 -- 3.
  SELECT *
   FROM ( SELECT EMPNO, ENAME, JOB, DEPTNO
  			FROM EMP
 		   WHERE DEPTNO = 20 );

  (1) EMP ํ…Œ์ด๋ธ”์—์„œ DEPTNO๊ฐ€ 20์ธ EMPNO, ENAME, JOB, DEPTNO ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SELECT๋ฌธ์„ ์ €์žฅํ•œ ๋ทฐ VW_EMP20์„ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •

  (2) ๋ทฐ VW_EMP20์„ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์กฐํšŒ

  (3) ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐํšŒ. (2)๋ฒˆ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅ

 

2-1. ๋ทฐ์˜ ์‚ฌ์šฉ ๋ชฉ์  - ํŽธ๋ฆฌ์„ฑ

- SELECT๋ฌธ์˜ ๋ณต์žก๋„๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด

- ์—ฌ๋Ÿฌ SQL๋ฌธ์—์„œ ์ž์ฃผ ํ™œ์šฉํ•˜๋Š” SELECT๋ฌธ์„ ๋ทฐ๋กœ ์ €์žฅํ•ด ๋†“์€ ํ›„ ๋‹ค๋ฅธ SQL๋ฌธ์—์„œ ํ™œ์šฉํ•˜๋ฉด ์ „์ฒด SQL๋ฌธ์˜ ๋ณต์žก๋„๋กค ์™„ํ™”ํ•˜๊ณ  ๋ณธ๋ž˜ ๋ชฉ์ ์ธ ๋ฉ”์ธ์ฟผ๋ฆฌ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์–ด ํŽธ๋ฆฌ

 

2-2. ๋ทฐ์˜ ์‚ฌ์šฉ ๋ชฉ์  - ๋ณด์•ˆ์„ฑ

- ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์นผ๋Ÿผ์„ ๋…ธ์ถœํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ

- ์‚ฌ์šฉ์ž์—๊ฒŒ ํŠน์ • ํ…Œ์ด๋ธ”์˜ ์ „์ฒด ์กฐํšŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์— ์œ„ํ˜‘์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ด๋ธ”์˜ ์ผ๋ถ€ ๋˜๋Š” ์กฐ์ธ์ด๋‚˜ ์—ฌ๋Ÿฌ ํ•จ์ˆ˜ ๋“ฑ์œผ๋กœ ๊ฐ€๊ณต์„ ๊ฑฐ์นœ ๋ฐ์ดํ„ฐ๋งŒ SELECT ํ•˜๋Š” ๋ทฐ ์—ด๋Ÿผ ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋…ธ์ถœ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์•ˆ์ „

 

3. ๋ทฐ ์ƒ์„ฑ

- CREATE๋ฌธ์œผ๋กœ ์ƒ์„ฑ

- ์ผ๋ฐ˜ ๊ณ„์ •์€ ๋ทฐ ์ƒ์„ฑ ๊ถŒํ•œ์ด ์—†์œผ๋ฏ€๋กœ SYSTEM ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ•˜์—ฌ ๋ทฐ ์ƒ์„ฑ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด ์ฃผ์–ด์•ผ ํ•จ

- ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜๊ฑฐ๋‚˜ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ๋ณตํ•ฉ์ ์ธ SELECT ๋ฌธ ๋˜ํ•œ ๋ทฐ์— ์ €์žฅ ๊ฐ€๋Šฅ

CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW ๋ทฐ ์ด๋ฆ„(์นผ๋Ÿผ ์ด๋ฆ„1, ์นผ๋Ÿผ ์ด๋ฆ„2, …, ์นผ๋Ÿผ ์ด๋ฆ„n)
	AS (์ €์žฅํ•  SELECT ๋ฌธ)
[WITH CHECK OPTION [CONSTRAINT ์ œ์•ฝ ์กฐ๊ฑด]]
[WITH READ ONLY [CONSTRAINT ์ œ์•ฝ ์กฐ๊ฑด]];

  - OR REPLACE : ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ทฐ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•  ๊ฒฝ์šฐ์— ํ˜„์žฌ ์ƒ์„ฑํ•  ๋ทฐ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์ƒ์„ฑ (์„ ํƒ)

  - FORCE : ๋ทฐ๊ฐ€ ์ €์žฅํ•  SELECT๋ฌธ์˜ ๊ธฐ๋ฐ˜ ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•˜์ง€ ์•Š์•„๋„ ๊ฐ•์ œ๋กœ ์ƒ์„ฑ (์„ ํƒ)

  - NOFORCE : ๋ทฐ๊ฐ€ ์ €์žฅํ•  SELECT๋ฌธ์˜ ๊ธฐ๋ฐ˜ ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•  ๊ฒฝ์šฐ์—๋งŒ ์ƒ์„ฑ (๊ธฐ๋ณธ๊ฐ’)(์„ ํƒ)

  - ๋ทฐ ์ด๋ฆ„ : ์ƒ์„ฑํ•  ๋ทฐ ์ด๋ฆ„์„ ์ง€์ • (ํ•„์ˆ˜)

  - ์นผ๋Ÿผ ์ด๋ฆ„ : SELECT ๋ฌธ์— ๋ช…์‹œ๋œ ์ด๋ฆ„ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์นผ๋Ÿผ ์ด๋ฆ„ ์ง€์ • (์ƒ๋žต ๊ฐ€๋Šฅ)(์„ ํƒ)

  - ์ €์žฅํ•  SELECT ๋ฌธ : ์ƒ์„ฑํ•  ๋ทฐ์— ์ €์žฅํ•  SELECT ๋ฌธ ์ง€์ • (ํ•„์ˆ˜)

  - WITH CHECK OPTION : ์ง€์ •ํ•œ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ํ•œํ•ด DML ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ทฐ ์ƒ์„ฑ (์„ ํƒ)

  - WITH READ ONLY : ๋ทฐ์˜ ์—ด๋žŒ, ์ฆ‰ SELECT๋งŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ทฐ ์ƒ์„ฑ (์„ ํƒ)

-- 1.
CREATE VIEW VW_EMP20
	AS ( SELECT EMPNO, ENAME, JOB, DEPTNO
  		   FROM EMP
 		  WHERE DEPTNO = 20);

  (1) EMP ํ…Œ์ด๋ธ”์—์„œ DEPTNO๊ฐ€ 20์ธ EMPNO, ENAME, JOB, DEPTNO ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SELECT๋ฌธ์„ ์ €์žฅํ•œ ๋ทฐ VW_EMP20์„ ์ƒ์„ฑ

 

4. ๋ทฐ ์‚ญ์ œ

- DROP ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉ

- ๋ทฐ๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ SELECT๋ฌธ๋งŒ ์ €์žฅํ•˜๋ฏ€๋กœ ๋ทฐ๋ฅผ ์‚ญ์ œํ•ด๋„ ํ…Œ์ด๋ธ”์ด๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜์ง€๋Š” ์•Š์Œ

-- 1.
DROP VIEW VW_EMP20;

  (1) EMP ํ…Œ์ด๋ธ”์—์„œ DEPTNO๊ฐ€ 20์ธ EMPNO, ENAME, JOB, DEPTNO ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SELECT๋ฌธ์„ ์ €์žฅํ•œ ๋ทฐ VW_EMP20์„ ์‚ญ์ œ