๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ฆ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค (DB) ๐Ÿ“ฆ/๐Ÿ…พ ์˜ค๋ผํด DB & SQL

View (๋ทฐ)

by Meteora_ 2021. 2. 17.
728x90

View

 

๊ฐ€์ƒ ํ…Œ์ด๋ธ”, ์‹ค์ฒด๊ฐ€ ์—†๋Š” ํ…Œ์ด๋ธ”, ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ด๋ธ”
        
ํ…Œ์ด๋ธ”<----- ๋ทฐ <----- user 

์žฅ์  : ํ•œ๊ฐœ์˜๋ทฐ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ๊ฒ€์ƒ‰ํ• ์ˆ˜ ์žˆ๋‹ค.
      ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
      ์ œํ•œ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค. -> readonly

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
-----------------------------------------
--#1
CREATE VIEW UB_TEST_01
AS
SELECT job_id, job_title, min_salary
FROM jobs; -- ๋ทฐ ์ƒ์„ฑ
-----------------------------------------
SELECT *
FROM UB_TEST_01; -- ๋ทฐ ํ™•์ธ์šฉ
-----------------------------------------
INSERT INTO UB_TEST_01(job_id, job_title, min_salary)
VALUES('DEVELOPER','๊ฐœ๋ฐœ์ž',10000); -- ๋ฐ์ดํ„ฐ๊ฐ€ ์›๋ณธ ํ…Œ์ด๋ธ”๋กœ ๋“ค์–ด๊ฐ
-----------------------------------------
SELECT *
FROM jobs; -- ํ™•์ธ์šฉ
-----------------------------------------
ROLLBACK; -- ๋˜๋Œ๋ฆผ
COMMIT; -- ์ ์šฉ (ํ•œ๋ฒˆ ํ•ด๋ฒ„๋ฆฌ๋ฉด ๋กค๋ฐฑ์ด ๋ถˆ๊ฐ€๋Šฅ, DELETE ๋ช…๋ น์–ด๋กœ ์‚ญ์ œ๊ฐ€๋Šฅ)
-----------------------------------------
DELETE FROM UB_TEST_01
WHERE JOB_ID = 'DEVELOPER'-- ์ปค๋ฐ‹ํ•œ ๋ฐ์ดํ„ฐ ์‚ญ์ œ
-----------------------------------------
--#2
DROP TABLE TB_EMP
CASCADE CONSTRAINTS; -- TB_EMP ์™„์ „์‚ญ์ œ
-----------------------------------------
CREATE TABLE TB_EMP
AS
SELECT employee_id, first_name, salary   
FROM employees;-- TB_EMP์— EMPLOYEES ํ…Œ์ด๋ธ”์˜ 3๊ฐœ ์ปฌ๋Ÿผ ๋ณต์‚ฌ
-----------------------------------------
SELECT *
FROM TB_emp;--TB_EMP ํ™•์ธ
-----------------------------------------
CREATE VIEW UB_VIEW(empno, ename, sal) -- ์ƒˆ์ปฌ๋Ÿผ๋ช…์œผ๋กœ
AS
SELECT employee_id, first_name, salary
FROM TB_EMP; --UB_VIEW ์ƒ์„ฑ -> TABLE๊ณผ VIEW๋ฅผ ์—ฐ๊ฒฐ,์—ฐ๊ด€์ง“๋Š” ํ–‰์œ„
-----------------------------------------
INSERT INTO UB_VIEW
VALUES(100,'ํ™๊ธธ๋™',10000); --UB_VIEW ์ปฌ๋Ÿผ๋“ค์— ๊ฐ’ ์ž…๋ ฅ
 
INSERT INTO UB_VIEW
VALUES(110,'์„ฑ์ถ˜ํ–ฅ',12000); --UB_VIEW ์ปฌ๋Ÿผ๋“ค์— ๊ฐ’ ์ž…๋ ฅ
-----------------------------------------
SELECT *
FROM TB_EMP; -- ๊ฐ’ ํ™•์ธ์šฉ
SELECT *
FROM UB_VIEW; -- ๋˜‘๊ฐ™์ด ๋ณด์ž„
-----------------------------------------
--#3 READONLY (=๋ทฐ๋ฅผ ๋‹ซ์€๋‹ค์Œ์— ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ–๊ณ ์˜ค๊ธฐ)
CREATE VIEW DEPTVIEW("๋ถ€์„œ๋ฒˆํ˜ธ","๋ถ€์„œ๋ช…","์ง€์—ญ๋ฒˆํ˜ธ")
AS
SELECT department_id, department_name, location_id
FROM departments
WITH READ ONLY; -- READONLY๋กœ ๋ทฐ(์ฐฝ๋ฌธ)์„ ๋‹ซ์€๊ฒƒ
-----------------------------------------
SELECT *
FROM DEPTVIEW; -- ๋ทฐ ์ƒ์„ฑ ํ™•์ธ์šฉ
-----------------------------------------
INSERT INTO DEPTVIEW("๋ถ€์„œ๋ฒˆํ˜ธ","๋ถ€์„œ๋ช…","์ง€์—ญ๋ฒˆํ˜ธ")
VALUES(300,"๊ธฐํš๋ถ€",1700); -- โ˜…READ ONLY๋•Œ๋ฌธ์— INSERT ์˜ค๋ฅ˜๋ฐœ์ƒโ˜… 
-----------------------------------------
DELETE FROM DEPTVIEW -- ๋ทฐ๋ฅผ ๋‹ซ์•„์„œ ์ด๊ฑฐ๋ก  ์‚ญ์ œ๋ถˆ๊ฐ€
WHERE "๋ถ€์„œ๋ฒˆํ˜ธ"=270-- ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด๋„ ์‚ญ์ œ๋ถˆ๊ฐ€
-----------------------------------------
--4# ์กฐ์ธ, OR REPLACE ์‚ฌ์šฉ
CREATE OR REPLACE VIEW DEPT_EMP_VIEW --OR REPLACE ์ถ”๊ฐ€์‹œ ํ…Œ์ด๋ธ” ๋ง์”Œ์šฐ๋ฉด์„œ ๊ณ„์† ๋งŒ๋“ค๊ธฐ ๊ฐ€๋Šฅ
AS 
SELECT e.employee_id, e.first_name, b.department_id, b.department_name, b.location_id
FROM employees e, departments b
WHERE e.department_id=b.department_id
WITH READ ONLY;
-----------------------------------------
SELECT employee_id, department_id, department_name -- ์ง€์ •๋œ ์ปฌ๋Ÿผ๋งŒ ๋ณด๊ธฐ
FROM DEPT_EMP_VIEW;
-----------------------------------------
cs

๋Œ“๊ธ€