정보 스키마 뷰 - SQL Server에서 메타데이터를 가져오기

MSSQL에는 정보 스키마 뷰(INFORMATION_SCHEMA VIEW)가 있다.

정보 스키마 뷰는 SQL Server에서 메타데이터를 가져오기 위해 사용할 수 있는 여러 수단 중 하나이다.

정보 스키마 뷰는 SQL Server 메타데이터의 내부 시스템 테이블에 종속되지 않는 뷰를 제공한다.

 

* 메타 데이터(Metadata)란 데이터의 데이터로서, 데이터베이스 또는 테이블의 이름, 컬럼의 데이터 타입, 또는 접근 권한과 같은 것을 말한다. 경우에 따라서 데이터 사전(data dictionary) 과 시스템 카탈로그(system catalog)로 불린다.

 

더보기

*참고* MySQL에서의 INFORMATION_SCHEMA

MySQL에서는 INFORMATION_SCHEMA라는 MySQL 서버 내에 존재하는 DB의 메타 정보(테이블, 칼럼, 인덱스 등의 스키마 정보)를 모아둔 DB를 가진다. INFORMATION_SCHEMA 데이터베이스 내의 모든 테이블은 읽기 전용이며, 단순 조회만 가능하다. 즉, 읽기전용(Read-only)으로 사용자가 직접 수정하거나 관여할 수는 없다.

 

실제로 이 데이터베이스 내의 테이블은 레코드가 있는 것이 아니라, SQL을 이용해서 조회할 때마다 메타 정보를 MySQL 서버의 메모리에서 가져와서 보여준다. 이런 이유로 한꺼번에 많은 테이블을 조회할 경우 시간이 많이 걸릴 수도 있다.

 

 

SQL Server는 현재 서버를 참조할 때 세 부분으로 된 명명 규칙을 지원한다.

ISO 표준도 세 부분으로 된 명명 규칙을 지원한다. 그러나 두 명명 규칙에 사용되는 이름은 서로 다르다.

정보 스키마 뷰는 INFORMATION_SCHEMA라는 특수한 스키마에 정의된다. 이 스키마는 각 데이터베이스에 있다. 각 정보 스키마 뷰에는 해당 특정 데이터베이스에 저장된 모든 데이터 개체에 대한 메타데이터가 들어 있다. 다음 표에서는 SQL Server 이름과 SQL 표준 이름 간의 관계를 보여 준다.

SQL Server 이름 매핑되는 해당 SQL 표준 이름
데이터베이스 카탈로그
스키마 스키마
Object Object
사용자 정의 데이터 형식 도메인

 

이 이름 매핑 규칙은 다음 SQL Server ISO 호환 뷰에 적용된다.

 

 

 

예시

TABLES : 현재 사용자가 사용 권한을 가진 현재 데이터베이스의 각 테이블당 한 개의 행을 반환한다.

SELECT * FROM INFORMATION_SCHEMA.TABLES

결과

 

 

 

 VIEW 속성 

CHECK_CONSTRAINTS ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스의 각 CHECK 제약 조건에 대해 한 행씩 반환한다. 이 정보 스키마 뷰는 현재 사용자가 사용 권한을 갖고 있는 개체에 대한 정보를 반환한다.

 

COLUMN_DOMAIN_USAGE ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 별칭 데이터 형식인 각 열에 대해 한 행을 반환한다. 이 정보 스키마 뷰는 현재 사용자가 사용 권한을 갖고 있는 개체에 대한 정보를 반환한다.

 

COLUMN_PRIVILEGES ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 현재 사용자에게 부여되었거나 현재 사용자가 부여할 권한이 있는 각 열당 한 개의 행을 반환한다.

 

COLUMNS ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 현재 사용자가 액세스할 수 있는 열마다 한 행을 반환한다.

 

CONSTRAINT_COLUMN_USAGE ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 제약 조건이 정의되어 있는 각 열당 한 개의 행을 반환한다. 

이 정보 스키마 뷰는 현재 사용자가 사용 권한을 갖고 있는 개체에 대한 정보를 반환한다.

 

CONSTRAINT_TABLE_USAGE ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 제약 조건이 정의되어 있는 각 테이블당 하나의 행을 반환한다. 

이 정보 스키마 뷰는 현재 사용자가 사용 권한을 갖고 있는 개체에 대한 정보를 반환한다.

 

DOMAIN_CONSTRAINTS ( MicroSoft Docs 해당 항목 페이지 )

현재 사용자가 액세스할 수 있고 바인딩되어 있는 규칙이 있는 현재 데이터베이스의 각 별칭 데이터 형식당 한 개의 행을 반환한다.

 

DOMAINS ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 현재 사용자가 액세스할 수 있는 각 별칭 데이터 형식에 대해 행 하나를 반환한다.

 

KEY_COLUMN_USAGE ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 제약 조건이 키로 지정되어 있는 각 열에 대해 한 행씩 반환한다. 이 정보 스키마 뷰는 현재 사용자가 사용 권한을 갖고 있는 개체에 대한 정보를 반환한다.

 

PARAMETERS ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 현재 사용자가 액세스할 수 있는 사용자 정의 함수 또는 저장 프로시저의 각 매개 변수당 한 개의 행을 반환한다. 함수의 경우에도 이 뷰는 반환 값 정보를 담은 한 행을 반환한다.

 

REFERENTIAL_CONSTRAINTS ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스의 각 FOREIGN KEY 제약 조건당 하나의 행을 반환한다. 이 정보 스키마 뷰는 현재 사용자가 사용 권한을 갖고 있는 개체에 대한 정보를 반환한다.

 

ROUTINE_COLUMNS ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 현재 사용자가 액세스할 수 있는 테이블 반환 함수에 의해 반환되는 각 열당 한 개의 행을 반환한다.

 

ROUTINES ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 현재 사용자가 액세스할 수 있는 각 저장 프로시저와 함수에 대해 한 행을 반환한다. 반환 값을 설명하는 열은 함수에만 적용된다. 저장 프로시저의 경우 이러한 열은 NULL이 된다.

 

SCHEMATA ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스 내의 각 스키마당 한 개의 행을 반환한다.

이러한 뷰에서 정보를 검색 하려면 INFORMATION_SCHEMA의 정규화 된 이름을 지정한다 . view_name. 인스턴스의 모든 데이터베이스에 대 한 정보를 검색 하려면 SQL Server SQL Server (transact-sql) 카탈로그 뷰를 쿼리 한다.

 

TABLE_CONSTRAINTS ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스 내의 각 테이블 제약 조건당 한 개의 행을 반환한다. 이 정보 스키마 뷰는 현재 사용자가 사용 권한을 갖고 있는 개체에 대한 정보를 반환한다.

 

TABLE_PRIVILEGES ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스의 현재 사용자에게 부여된 각 테이블 권한 또는 현재 사용자가 부여한 각 테이블 권한당 한 개의 행을 반환한다.

 

TABLES ( MicroSoft Docs 해당 항목 페이지 )

현재 사용자에 게 사용 권한이 있는 현재 데이터베이스의 각 테이블 또는 뷰에 대해 하나의 행을 반환 한다.

 

VIEW_COLUMN_USAGE ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 뷰 정의에 사용되는 각 열에 대해 한 행을 반환한다. 이 정보 스키마 뷰는 현재 사용자가 사용 권한을 갖고 있는 개체에 대한 정보를 반환한다.

 

VIEW_TABLE_USAGE ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 뷰에 사용되는 각 테이블에 대해 한 행을 반환한다. 이 정보 스키마 뷰는 현재 사용자가 사용 권한을 갖고 있는 개체에 대한 정보를 반환한다.

 

VIEWS ( MicroSoft Docs 해당 항목 페이지 )

현재 데이터베이스에서 현재 사용자가 액세스할 수 있는 각 뷰당 하나의 행을 반환한다.