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์ ์ญ์