SQL서버 SQL강좌: 7-3. 뷰 수정

코난(김대우) 2023.08.18 16:42 Views : 33 Upvote:1

안녕하세요. SQLER의 코난 김대우입니다. 
이번 강좌에서는, 7-3. 뷰 수정을 진행 하겠습니다.


SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록

 

이번에 진행할 강좌는 뷰(VIEW) 수정입니다.

 

 

 

TL;DR

ALTER 구문으로 뷰를 수정합니다. 데이터베이스 개체를 생성 또는 수정할 수 있는 CREATE OR ALTER 구문도 진행하고, 뷰 변경과 권한 문제를 살펴보겠습니다.

 


뷰 변경도 SQL Server의 개체 변경 구문인 ALTER를 이용합니다.

 

 

뷰를 수정하는 이유

뷰 수정보다 뷰 지우고 다시 만드는 게 더 빠르지 않나요?


제가 이전 강좌 예제에서 몇 번 뷰를 DROP 하고 다시 생성했습니다. 하지만, 주의하셔야 합니다. 뷰 또는 테이블에 대해 다양한 권한이 사용자에게 부여된 경우가 많습니다.

 

-- 뷰가 존재하면 삭제
IF OBJECT_ID(N'dbo.v_Employee', N'V') IS NOT NULL  
   DROP VIEW dbo.v_Employee;  
GO

-- 뷰 생성 
CREATE VIEW v_Employee
AS
SELECT emp_num, emp_name, email FROM Employee;
GO

-- UserA USER 생성
CREATE USER UserA WITHOUT LOGIN;
GO

-- GRANT로 UserA에게 v_Employee 뷰 SELECT 권한 부여
GRANT SELECT ON dbo.v_Employee TO UserA;
GO

-- 현재 세션 사용자를 UserA로 설정
EXECUTE AS USER = N'UserA';
-- 현재 세션 사용자 체크 - UserA
SELECT CURRENT_USER;
GO

-- 뷰 조회 - GRANT SELECT 되어서 가능
SELECT * FROM v_Employee;
GO

-- Employee 테이블 조회 - 불가
SELECT * FROM Employee;
GO

REVERT;  -- 사용자를 다시 dbo로 되돌림
GO

-- 현재 사용자 체크 - dbo
SELECT CURRENT_USER;

 

이렇게 GRANT로 복잡하게 사용자 권한 설정이 완료된 테이블이나 뷰를 삭제하고 재생성하면 어떤 일이 생길까요? 예상 대로, GRANT로 부여한 권한 기록이 사라지면서 문제가 발생할 수 있습니다. 


DROP 하고 빠르게 재생성하는 경우는, 저와 같이 SQLER에서 공부할 때만 수행하시고, 실제 업무에서는 ALTER를 사용하세요. ALTER는 뷰의 권한 및 여러 종속성을 그대로 유지하면서 뷰를 변경합니다.

 

ALTER 구문으로 뷰 변경

-- ALTER로 뷰 변경
ALTER VIEW v_Employee
AS
SELECT emp_num, emp_name, email FROM Employee;
GO

-- CREATE OR ALTER
CREATE OR ALTER VIEW v_Employee
AS
SELECT emp_num, emp_name, email FROM Employee;
GO

 

CREATE 대신 이렇게 ALTER를 이용하면 뷰를 변경할 수 있습니다. 또는 CREATE OR ALTER 구문으로 생성 또는 변경 설정도 가능합니다.


참고로, CREATE OR ALTER는 뷰, 저장 프로시저(Stored Procedure), 함수(Function), 트리거(Trigger) 등 데이터베이스 개체에서 사용 가능합니다.
 

 

SQL 강좌 책 구매

강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다. 

 

책구매 링크: 챗GPT와 함께하는 마이크로소프트 SQL Server 2022 

책구매링크.png

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 23535
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12426
2274 SQL강좌: 8-3. 저장 프로시저 - 매개변수(파라미터) 코난(김대우) 2023.08.18 55
2273 SQL강좌: 8-2. 저장 프로시저 - 생성과 실행 코난(김대우) 2023.08.18 49
2272 SQL강좌: 8-1. 저장 프로시저(Stored Procedure) - 소개 코난(김대우) 2023.08.18 60
2271 SQL강좌: 7-10. 실무에서 뷰 사용 코난(김대우) 2023.08.18 35
2270 SQL강좌: 7-9. 인덱싱된 뷰(Indexed View) file 코난(김대우) 2023.08.18 39
2269 SQL강좌: 7-8. 분할 뷰(Partitioned View) file 코난(김대우) 2023.08.18 30
2268 SQL강좌: 7-7. 뷰에서 데이터 수정 코난(김대우) 2023.08.18 30
2267 SQL강좌: 7-6. 뷰에서 뷰 생성 코난(김대우) 2023.08.18 30
2266 SQL강좌: 7-5. 뷰 옵션 코난(김대우) 2023.08.18 22
2265 SQL강좌: 7-4. 뷰 삭제 코난(김대우) 2023.08.18 15
» SQL강좌: 7-3. 뷰 수정 코난(김대우) 2023.08.18 33
2263 SQL강좌: 7-2. 뷰 생성 file 코난(김대우) 2023.08.18 33
2262 SQL강좌: 7-1. 뷰(VIEW) 소개 코난(김대우) 2023.08.18 48
2261 SQL강좌: 6-9. 데이터 무결성 - 데이터 무결성 주의사항 file 코난(김대우) 2023.08.18 43
2260 SQL강좌: 6-8. 데이터 무결성 - 트리거(TRIGGER) file 코난(김대우) 2023.08.18 70
2259 SQL강좌: 6-7. 데이터 무결성 - 사용자 정의 형식(User-Defined Type - UDT) 코난(김대우) 2023.08.18 31
2258 SQL강좌: 6-6. 데이터 무결성 - 기본값(DEFAULT) file 코난(김대우) 2023.08.18 20
2257 SQL강좌: 6-5. 데이터 무결성 - 규칙(RULE) 코난(김대우) 2023.08.18 32
2256 SQL강좌: 6-4. 데이터 무결성 - 체크 제약(CHECK Constraint) file 코난(김대우) 2023.08.18 38
2255 SQL강좌: 6-3. 데이터 무결성 - 기본 키(Primary Key) 제약, UNIQUE 제약, 외래 키(Foreign Key) 제약 file 코난(김대우) 2023.08.18 56





XE Login