데이터 사전이란 무엇입니까?
SQL Server 에서 data dictionary 는 데이터베이스의 정의에 대한 정보를 저장하는 데 사용되는 데이터베이스 테이블 세트입니다. 사전에는 테이블,인덱스,열,데이터 유형 및 뷰와 같은 데이터베이스 개체에 대한 정보가 포함되어 있습니다.
데이터 사전을 사용하여 SQL 서버는 쿼리를 실행하고 자동으로 업데이트될 때마다 객체를 추가,제거 또는 변경 내에서 데이터베이스입니다.
이 기사의 모든 예제는 Microsoft SQL Server Management Studio 및 AdventureWorks2012 데이터베이스를 기반으로합니다. 당신은 내 가이드를 사용하여 이러한 무료 도구를 사용하여 시작할 수 있습니다 Sql Server 를 사용하여 시작하기.
SQL Server 가 데이터 사전을 사용하는 방법
SQL Server 는 데이터베이스 사전을 사용하여 SQL 문을 확인합니다. 할 때 SQL 문을 실행 DBMS(데이터베이스 관리 시스템)구문 분석하는 문는지 여부를 결정합니다 테이블과 필드를 참조할 수 있습니다. 이 작업을 신속하게 수행하려면 데이터 사전을 참조합니다.
외에 추가 테스트의 유효성을 계산서,SQL 서버 데이터를 사용하여 사전에 지원하는 쿼리 계획을 세대 및 참조할 정보의 구조를 정의하는 데이터베이스입니다.
데이터 사전은 sql Server 가 데이터에 액세스하는 데 사용할 수있는 가이드 북 자체가됩니다. 간단히 말하지 않고,데이터 사전에,하지만 SQL 서버가 알고 이해하 SQL 언어,그것은 없을 알아에 대한 데이터베이스 테이블과 열;따라서,그것은 없을를 쿼리할 수 있다.
기타 사용하여 데이터에 대한 사전
때문에 데이터를 사전에 포함되어 데이터베이스의 정의,그것은 정말 좋은 당신을위한 자원을 사용에 대한 정보를 얻기 위해 데이터베이스입니다. 정말 멋진 점은 데이터 사전이 SQL 테이블과 뷰로 구성되어 있다는 것입니다. 즉,쿼리를 통해 DB 에 대한 정보를 얻을 수 있습니다!
데이터 사전은 디자이너와 개발자가 데이터베이스의 구조를 이해하는 데 사용됩니다. 사전을 최신 참조 문서로 생각할 수 있습니다.
sql Server Management Studio 와 같은 디자인 도구는 데이터 사전을 사용하여 개체 탐색기를 통해 데이터베이스에 대한 정보를 표시합니다.
테이블 위에 나열되지 않는 마술로 알려져 있고,오히려,개체의 탐색기에서 발급한 쿼리 데이터 사전 검색하는 모든 사용자의 테이블이 있습니다.
데이터 사전은 일련의 시스템 테이블에 저장됩니다. 이러한 테이블을 직접 쿼리 할 수는 있지만 Microsoft 는 데이터 사전을 구성하는 시스템 테이블을 수정할 권리가 있습니다. 이 때문에 테이블에 직접 액세스하는 것과는 반대로 INFORMATION_SCHEMA 뷰를 쿼리하는 것이 좋습니다.
할 수 있기 때문에 데이터 쿼리어 사전 자할 수 있는 몇 가지 질문에 답하는 것이 그렇지 않으면 많이 필요로 하는 사냥하고 서열을 통해 개체 explorer. 예를 들어 businessentityid 열을 사용하여 모든 테이블과 뷰를 어떻게 쉽게 찾을 수 있습니까? 없이 데이터 사전에 당신은 개체 탐색기를 사용하여 각도와 모든 테이블 및 보고를 통해보에 대한 정의 열입니다. 그러나 데이터 사전을 사용하여이 작업은 간단한 쿼리를 사용하여 수행 할 수 있습니다.
INFORMATION_SCHEMA 뷰
SQL Server 에 포함 된 INFORMATION_SCHEMA 뷰는 SQL-92ISO 표준을 준수합니다. 이는 ISO 표준을 준수하는 다른 데이터베이스 공급 업체가 동일한 뷰 세트를 제공한다는 것을 의미합니다.
다음은 더 일반적으로 사용되는 뷰와 그 설명 중 일부입니다:
- 열-현재 사용자가 현재 데이터베이스에서 사용할 수있는 액세스 권한이있는 각 열에 대해 하나의 행을 반환합니다. 이 뷰는 열이 사용하도록 정의 된 데이터 유형 및 테이블을 결정하는 데 사용할 수 있습니다.
- 테이블–중 하나를 반환에 대한 행 각각의 테이블에 액세스할 수 있는 사용자 내에서 사용하는 현재 데이터베이스입니다. 참고,테이블 및 뷰는 모두 테이블 뷰를 사용하여 반환됩니다.
- VIEW_TABLE_USAGE-현재 데이터베이스 내의 뷰에 사용되는 각 테이블에 대해 하나의 행을 반환합니다.
- VIEWS–현재 데이터베이스에서 현재 사용자의 권한을 사용하여 액세스 할 수있는 뷰에 대해 하나의 행을 반환합니다.
예를 사용하여 INFORMATION_SCHEMA 보기
나열 모든 테이블을 포함하는 지정된 column
을 사용하여 이 작업을 수행할 수 있습 INFORMATION_SCHEMA.열보기. 예를 들어 다음과 같은 나열 모든 테이블과 전망을 포함 열 BusinessEntityID
SELECT TABLE_NAMEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.COLUMNSWHERE COLUMN_NAME = 'BusinessEntityID'
으로 당신이 상상할 수 있는 데이터 사전 수 있습니다. 데이터베이스 내에서 필드의 모든 발생을 찾기 위해 손으로 모든 정의를 검색해야하는 것을 상상할 수 있습니까?
데이터베이스의 모든 테이블 나열
INFORMATION_SCHEMA 를 사용하십시오.이 작업을 수행 할 테이블보기.
SELECT TABLE_NAME, TABLE_TYPEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESORDER BY TABLE_NAME
이 쿼리는 기본 테이블과 뷰를 모두 반환합니다.
명부 숫자의 테이블에서 각각의 스키마
이 예제에서 각각의 스키마와 숫자의 테이블과 전망에 정의된 그들을 나열됩:
SELECT TABLE_SCHEMA, Count(TABLE_SCHEMA)FROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESGROUP BY TABLE_SCHEMA
SQL 서버 카탈로그 보기
카탈로그 보기는 또 다른 방법으로 데이터를 보는 사전. 객체 카탈로그 뷰가 더 많은 정보를 제공한다고 느끼고 INFORMATION_SCHEMA 뷰에서 이러한 뷰를 사용하는 경향이 있습니다.
의 일부 전망 나가 발견한 가장 유용한 포함한다:
- 개체–포함하는 행위는 각 개체 등 외국의 키나 기본 키의 제약에 정의된 데이터베이스입니다.
- 열-보기 또는 테이블과 같은 개체의 각 열에 대한 행을 포함합니다.
- 테이블–반환하는 행위는 각 개체 테이블
예를 사용하여 카탈로그 보기
다음 예제를 사용하여 Microsoft SQL Server 카탈로그망을 얻는 동 정보를 사용하여 그렇게 사용하여 위 INFORMATION_SCHEMA.
나열 모든 테이블을 포함하는 지정된 column
을 얻기 위해서는 이름의 테이블을 사용하여 특정 열 두 sys.테이블과 시스템.열보기를 함께 사용해야합니다. 테이블 및 뷰와 같은 일반적인 데이터베이스 개체를 식별하는 데 사용되는 object_id 를 통해 결합됩니다.
SELECT t.name, t.type_descFROM AdventureWorks2012_Data.sys.columns AS cINNER JOIN sys.tables AS t ON c.object_id = t.object_idWHERE c.name = 'BusinessEntityID'
데이터베이스의 모든 테이블을 나열
sys.테이블 뷰를 사용하여 데이터베이스에 정의 된 모든 테이블의 이름을 가져올 수 있습니다. 이 뷰는 기본 테이블과 뷰를 모두 반환합니다.
SELECT name, type_descFROM AdventureWorks2012_Data.sys.tablesORDER BY Name
각 스키마의 테이블 목록 번호
sys.테이블 뷰에는 스키마 이름이 포함되어 있지 않으므로 내장 함수 SCHEMA_NAME 이이를 얻는 데 사용됩니다.
SELECT SCHEMA_NAME(schema_id), count(name)FROM AdventureWorks2012_Data.sys.tablesGROUP BY SCHEMA_NAME(schema_id)
예제에서 볼 수 있듯이 INFORMATION_SCHEMA 를 사용하는 것보다 조금 더 기술적입니다. 그런데,나는 말에서 경험하는 훨씬 더 많은 정보에 포함 된 카탈로그 보기…이 있는 경우 특정 질문에 대한 데이터베이스의 구조,이들은 테이블을했다.