최상의 답변
데이터베이스 관리자와 사용자가 항상 직면하는 문제는 복잡한 SQL 쿼리를 작성하고 데이터베이스 액세스를 보호하는 것입니다. 원래 테이블에 프록시를 사용하면 이러한 쿼리를 단순화하는 데 도움이됩니다. 또한 관리자가 데이터베이스에 대한 직접 액세스를 제한하려는 경우가 있습니다. 이 두 가지 경우 모두보기를 사용할 수 있습니다.
보기?
런타임에 컴파일되는 가상 테이블을보기라고합니다. SQL에는 뷰인 특수 버전의 테이블이 있습니다. . 뷰는 SQL 문일 뿐이며 이와 관련된 데이터는 뷰에 물리적으로 저장되지 않고 기본 테이블에 저장됩니다. 여기에는 테이블의 모든 행과 열이 있거나 액세스를 제한해야하는 경우 선택한 행과 열이 몇 개 있습니다. 뷰를 만드는 데 사용 된 SQL 쿼리에 따라 하나 또는 여러 테이블에서 만들 수 있습니다.
뷰는 사용자가 자연스럽게 찾고 복잡한 쿼리를 단순화하며 액세스를 제한하는 방식으로 데이터를 구조화하는 데 사용됩니다. 데이터에 추가하고 여러 테이블의 데이터를 요약하여 보고서를 만듭니다.
보기 관리와 관련된 여러 측면이 있습니다. 예를 들면 다음과 같습니다.
보기 제거 : drop view문을 사용하여 기존보기를 제거 할 수 있습니다.
보기 만들기 : 보기 만들기문을 사용하여보기를 만들 수 있습니다. 보기는 구체화 된보기, 테이블 또는 기타보기를 참조하는 쿼리로 정의됩니다.
보기 나열 : SQL의 모든보기 서버 데이터베이스는 시스템 카탈로그보기를 쿼리하여 나열 할 수 있습니다.
보기 이름 바꾸기 : 보기 이름을 바꿀 수 있으며 모든 항목이 뷰의 이전 이름을 참조하는 객체는 이제 새 이름을 가져야합니다.
SQL의 뷰 유형
시스템 정의보기
시스템 정의보기는 Tempdb, Master, 및 같은 SQL Server 데이터베이스에 이미 존재하는 미리 정의 된보기입니다. 온도 각 데이터베이스에는 고유 한 속성과 기능이 있습니다. 시스템 정의보기는 모든 사용자 정의 데이터베이스에 자동으로 연결됩니다. 그리고 이들은 데이터베이스, 테이블 및 데이터베이스와 테이블의 모든 속성에 대한 정보를 제공합니다. 시스템 정의보기에는 정보 스키마, 카탈로그보기 및 동적 관리보기의 세 가지 유형이 있습니다.
카탈로그보기
카탈로그보기는 사용자 지정 형식의 정보를 가져오고 표시하고 변환하는 효율적인 방법을 제공하며 SQL 서버에서 사용하는 정보를 반환하는 데 사용됩니다. 여기에는 백업, 복제 또는 유지 관리 계획 등에 대한 정보가 포함되어 있지 않습니다. 이러한보기는 데이터베이스의 메타 데이터에 액세스하는 데 사용되며 이름과 열 이름은 설명 적이므로 사용자가 예상되는 내용을 쿼리하는 데 도움이됩니다.
동적 관리보기
관리자는 문제를 진단하고 서버 인스턴스의 상태를 모니터링하기 위해 서버 상태에 대한 정보를 얻을 수 있습니다. 이러한보기를 통해 성능을 조정하십시오. 서버 범위 동적 관리보기는 마스터 데이터베이스에만 저장되는 반면 데이터베이스 범위 동적 관리보기는 각 데이터베이스에 저장됩니다.
정보 스키마
SQL 서버에는 20 개의 서로 다른 스키마 뷰가 있습니다. 테이블, 제약 조건, 열 및 뷰와 같은 데이터베이스의 물리적 정보를 표시하는 데 사용됩니다. 특정 데이터 규칙이 열에 대해 준수되도록하기 위해 테이블의 특정 열에 제약 조건이 사용됩니다.
사용자 정의보기
복잡한보기
이러한보기는 둘 이상의 기본 테이블을 포함하거나 둘 이상의 기본 테이블에서 구성 될 수 있습니다. , 여기에는 group by 절, 조인 조건, order by 절이 포함됩니다. 여기에서 그룹 함수를 사용할 수 있으며 여기에는 데이터 그룹이 포함됩니다. Complex View는 항상 DML 작업을 수행하는 데 사용할 수는 없지만 Simple View와 달리 Complex View는 group by, pseudocolumn like rownum, distinct, columns defined by expressions, 또한 Insert, delete, update는 복잡한 뷰에 직접 적용 할 수 없습니다. / p>
단순보기
이보기는 단일 기본 테이블 만 포함하거나 하나의 테이블에서만 만들 수 있습니다. MAX (), COUNT () 등과 같은 그룹 함수는 여기서 사용할 수 없으며 데이터 그룹을 포함하지 않습니다 .Simple View에는 group by, rownum과 같은 pseudocolumn, distinct, expression에 의해 정의 된 열이 포함되지 않습니다. 단순보기에는 기본 테이블의 NOT NULL 열도 포함되지 않습니다.
결론적으로 SQL의보기를 정의하고 자세히 설명하며보기를 관리하는 다양한 방법도 정의합니다.시스템 정의보기 및 사용자 정의보기와 같은 SQL의 다양한보기 유형은 각 유형 아래의 다양한 하위 유형과 함께 자세히 설명됩니다.
답변
의 목적을 위해 이 대답은 먼저 뷰를 정의한 다음 두 가지 유형의 뷰를 나열합니다. 더 많을 수 있지만이 두 가지는 내가 일반적으로보고 사용하는 것입니다.
먼저 뷰는 데이터 집합을 제공하는 SQL 조각입니다. “select * from x”는 데이터 세트를 제공하기 때문에보기가 될 수 있습니다.
내가 노출 된 대부분의 RDBMS 시스템에는 두 가지 주요 유형의보기가 있습니다. 첫 번째는 RDBMS 시스템에 의해 정의 된 클래식보기입니다. 뷰 생성 구문을 사용하여 별칭으로 사용할 수있는 뷰를 생성합니다. 즉, 복잡한 SQL 조각을 작성하여 뷰에 할당 한 다음 전체 뷰를 입력하지 않고 이름으로 다른 SQL 조각에서 해당 뷰를 호출 할 수 있습니다.
두 번째 및 그 이하 일반적이지만 덜 중요한 유형의보기를 인라인보기라고합니다. 인라인보기는 다른 select 문 내에 중첩 된 select 문이있는 곳입니다. 그것은 내부의 select 문이 외부 select 문에 데이터 세트를 제공한다는 것입니다. 예 :
select * from (select columna, columnb, columnc from table a)
괄호 안의 부분은 인라인보기입니다. 일반적으로 데이터를 추가로 집계하는 외부 SQL 문에 도달하기 전에 데이터를 집계하는 데 사용됩니다.