검색 여닫기
검색
메뉴 여닫기
555
262
4
6.2천
noriwiki
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
파일 올리기
환경 설정 메뉴 여닫기
notifications
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
user-interface-preferences
한국어
개인 도구
로그인
View 문서 원본 보기
noriwiki
문서 공유하기
다른 명령
←
View
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
상위 문서: [[SQL]] ==개요== 모든 유저들이 데이터베이스 내의 모든 logical model(relation)을 볼 수 있는 권한을 가지는 것은 보안상의 측면에서 권장되지 않는다. 또한 어떤 사용자는 특정 릴레이션(relation)에 접근할 수는 있어도, 모든 속성(attribute)에 접근하는 것이 바람직하지 않을 수 있다. 예를 들어, 어떤 직원(employee)는 강사(instructor)의 ID, name, dept_name 속성에 접근할 필요가 있지만, 강사의 salary 속성을 볼 필요는 없을 수 있다. 따라서 해당 직원은 다음과 같은 SQL 쿼리(query)로 표현된 릴레이션에 접근해야 한다. <syntaxhighlight lang="sql"> select ID, name, dept_name from instructor; </syntaxhighlight> 즉, 위 쿼리의 결과를 계산하여 저장한 다음 저장된 릴레이션을 사용자에게 제공하는 방식으로 특정 사용자에게 제한된 릴레이션을 제공할 수 있다. 하지만 instructor, course, section 릴레이션 안의 데이터가 변경된다면, 저장된 쿼리 결과는 다시 쿼리를 실행했을 때의 결과와 일치하지 않는다.(out-of-date) 따라서 위와 같은 해결 방식, 즉 쿼리 결과를 계산해서 저장하는 것은 좋은 생각이 아니다. 대신 SQL에는 '''view'''라는 기능이 있다. View는 '''개념적인 모델(conceptual model)에는 없지만 사용자에게 virtual relation으로 보이도록 만든 릴레이션'''이다. 이를 위해 SQL은 쿼리에 의해 정의되는 '''virtual relation'''이라는 기능을 제공한다. Virtual relation은 '''미리 계산되어 저장되는 것이 아니라, virtual relation이 사용될 때마다 쿼리를 실행하여 계산된다. 이는 [[Nested Subquery#The With Clause|with 절]]과 유사한 기능이다. ==View definition== SQL에서 view를 정의하기 위해서는 <code>create view</code> 명령어를 사용해야 한다. 또한 view를 정의하기 위해서는 이름을 부여해야 하며, view를 계산할 쿼리를 명시해야 한다. <code>create view</code> 명령어는 v라는 이름의 view를 정의하기 위해 아래와 같이 사용된다. <syntaxhighlight lang="sql"> create view v as <query expression>; </syntaxhighlight> 이때 <code><query expression></code>는 어떤 쿼리 표현식이라도 문법만 맞다면 가능하다. 이를 활용하여 강사 릴레이션에서 salary 속성을 제외한 모든 속성에 접근하는 직원에 <syntaxhighlight lang="sql"> </syntaxhighlight> <syntaxhighlight lang="sql"> </syntaxhighlight> <syntaxhighlight lang="sql"> </syntaxhighlight> <syntaxhighlight lang="sql"> </syntaxhighlight> <syntaxhighlight lang="sql"> </syntaxhighlight> <syntaxhighlight lang="sql"> </syntaxhighlight> ==각주== [[분류:데이터베이스 시스템]]
View
문서로 돌아갑니다.