강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

:: INFOEMATION_SCHEMA 뷰 이용하기 ::
작성자 : 13 김영철
등록날짜 : 2009.01.24 22:56
2,119

예를 들어 pubs 데이터베이스에는 어떠한 테이블들이 존재하는지 알고 싶은 경우 시스템 테이블을 참고하여 이 정보를 얻을 수 있습니다. 특히 시스템 테이블 중에서 sysobjects 테이블을 이용하면 됩니다.

USE pubs
GO

SELECT name
FROM sysobjects
WHERE xtype = 'U'

그러나!

sysobjects 라고 하는 시스템 테이블은 SQL 서버 차기 버젼에서 제공이 된다는 보장이 없습니다. 만일 차기 버젼에서 sysobjects 테이블이 제공되지 않는다면 위 쿼리문은 수행이 될 수 없습니다. MS에서는 이러한 문제를 해결하기 위하여 INFORMATION_SCHEMA 뷰를 제공하고 있습니다. INFORMATION_SCHEMA 뷰는 실제 테이블이 아니고 뷰(View) 이기 때문에 물리적인 시스템 테이블이 변경된다 하더라도 뷰를 사용하는 방법과 결과는 달라지지 않기 때문에 SQL 서버 차기 버젼에서도 사용 할 수 있습니다. 예를 들어 pubs 데이터베이스의 테이블을 확인하는 위 쿼리문은 다음과 같이 변경하여 사용할 수 있습니다.

USE pubs
GO

SELECT table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE table_type = 'BASE TABLE'

이 쿼리문에서는 INFORMATION_SCHEMA.TABLES 라고 하는 뷰를 사용하고 있습니다. 여기서 우리는 INFORMATION_SCHEMA가 무엇인지 예측 할 수 있습니다. SQL 서버에서는 개체를 표시 할 때 개체 앞에 그 개체의 소유자를 지정하게 되어 있습니다. 물론 대부분 생략을 하고 사용합니다. INFORMATION_SCHEMA.TABLES 에서 뒷부분의 TABLES가 뷰 개체일 것이며 그 앞의 INFORMATION_SCHEMA 는 이 개체의 소유자가 됩니다. 이 것은 다음 [그림 1] 에서 확인할 수 있습니다.

lec_a0017a.jpg
[그림 1]

[그림 1]에서 보면 "소유자" 부분에 INFORMATION_SCHEMA로 되어 있는 것을 볼 수 있습니다. 그리고 관련된 뷰가 20개 정도 되는 것을 알 수 있습니다. 우리는 이 20개의 뷰를 이용해서 필요한 정보를 얻을 수 있습니다. 이들 뷰 중에서 많이 사용되는 몇가지 예를 살펴보도록 하겠습니다.

1. 테이블 정보 확인하기 : INFORMATION_SCHEMA.TABLES

앞에서 살펴본 것처럼 INFORMATION_SCHEMA.TABLES 를 이용하면 현재 데이터베이스에 속한 테이블에 대한 정보를 얻을 수 있습니다. 만일 다음과 같이 수행하게 되면 테이블과 뷰가 함께 표시됩니다.

USE pubs
GO

SELECT *
FROM INFORMATION_SCHEMA.TABLES

표시되는 것 중에서 일반적인 테이블은 table_type가 'BASE TABLE' 이며 뷰의 경우는 'VIEW' 입니다. 그래서 만일 뷰가 아닌 테이블만 보고 싶으면 다음과 같이 조건을 주면 됩니다.

USE pubs
GO

SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE table_type = 'BASE TABLE'

만일 't' 로 시작되는 테이블의 이름을 얻고 싶다면 어떻게 하면 될까요? 다음과 같이 하시면 됩니다.

USE pubs
GO

SELECT table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE table_type = 'BASE TABLE' AND table_name LIKE 't%'

2. 뷰(View) 정보 확인하기 : INFORMATION_SCHEMA.VIEWS

INFORMATION_SCHEMA.VIEWS 는 현재 데이터베이스에 속한 뷰에 대한 정보를 제공해 줍니다. 내부적으로 sysobjects와 syscomments 시스템 테이블을 이용하여 정보를 제공해주는 것입니다.

만일 pubs 데이터베이스의 titleview에 대한 정보를 얻고 싶으면 다음과 같이 하시면 됩니다.

USE pubs
GO

SELECT *
FROM INFORMATION_SCHEMA.VIEWS
WHERE table_name = 'titleview'

표시되는 내용에는 VIEW_DEFINITION 컬럼이 있는데 이 컬럼에는 CREATE VIEW... 가 포함되어 이 뷰가 어떠한 내용을 갖고 있는지 알 수 있습니다. 뷰의 실제 내용을 볼 때 sp_helptext 서장 프로시져를 사용 할 수도 있지만 다음과 같이 해도 된다는 것입니다.

USE pubs
GO

SELECT view_definition
FROM INFORMATION_SCHEMA.VIEWS
WHERE table_name = 'titleview'

3. 컬럼 정보 확인하기 : INFORMATION_SCHEMA.COLUMNS

현재 데이터베이스에서 현재 사용자가 액세스할 수 있는 각 열에 대한 정보를 얻을 수 있습니다. 뷰 내부적으로는 sysobjects, spt_datatype_info, systypes, syscolumns, syscomments, sysconfigures, syscharsets 과 같이 여러가지 시스템 테이블을 사용하고 있습니다. 이런 여러가지 시스템 테이블들에 대해서 알지 못해도 우리는 INFORMATION_SCHEMA.COLUMNS 만 검색하면 되는 것입니다.

다음의 쿼리문은 titles 테이블의 컬럼과 그 컬럼의 NULL 여부, 컬럼 형식이 무엇인지 표시해 줍니다.

USE pubs
GO

SELECT COLUMN_NAME, IS_NULLABLE, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'titles'

4. 정리

이 강좌에서는 많이 사용되는 뷰 몇 가지만 살펴 보았습니다. 하지만 이들 말고도 더 많은 INFORMATION_SCHEMA 뷰가 있습니다. 온라인 설명서에서 'INFORMATION_SCHEMA'를 찾아보시면 각 뷰들에 대한 설명을 보실 수 있습니다. 알고 있으면 참 편한데 알지 못하기 때문에 고생하는 경우가 많습니다. 어려운 시스템 테이블들을 아는 것고 좋지만 우선 INFORMATION_SCHEMA 뷰 들에 대한 내용을 알고 있는게 더 중요하다고 생각합니다.

EM(Enterprise Manager)에서 master 데이터베이스에 있는 INFORMATION_SCHEMA 뷰를 더블클릭하시면 이 뷰가 어떻게 만들어 졌는지 볼 수 있습니다. 이 내용을 참고하시면 시스템 테이블들을 한층 더 이해할 수 있습니다.

 

출처 : http://www.sqlworld.pe.kr

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
2685 :: 사용자 정의 함수(User Defined Function) :: 13 김영철 01.24 2680
2684 :: 트리거(Trigger) :: 13 김영철 01.24 2375
2683 :: 백업(Backup) 이란? :: 13 김영철 01.24 2500
2682 :: 백업 장치 만들기 :: 13 김영철 01.24 2319
2681 :: 전체 백업 받기 :: 13 김영철 01.24 2294
2680 :: 전체 백업으로부터의 복원 :: 13 김영철 01.24 2501
2679 :: 차등 백업 받기와 복원 :: 13 김영철 01.24 2121
2678 :: 데이터베이스 옵션을 이용한 트랜잭션 로그 제어 :: 13 김영철 01.24 2885
2677 :: 트랜잭션 로그 줄이기 테스트 :: 13 김영철 01.24 2304
2676 :: 백업과 복원 정리 :: 13 김영철 01.24 2010
2675 :: SQL Server Agent 서비스 이해 :: 13 김영철 01.24 2820
2674 :: [작업 만들기 마법사] 이용하기 :: 13 김영철 01.24 2725
2673 :: 등록된 작업 살펴보기 :: 13 김영철 01.24 2448
2672 :: 새로운 작업 등록하기 :: 13 김영철 01.24 2057
2671 :: 데이터베이스 유지 관리 계획 마법사 :: 13 김영철 01.24 2355
2670 ::[데이터 가져오기 및 보내기]를 이용한 데이터 변환 :: 13 김영철 01.24 2694
2669 :: 기본적인 웹 페이지 만들기 :: 13 김영철 01.24 2108
2668 :: 템플릿을 이용한 웹 페이지 만들기 :: 13 김영철 01.24 2323
2667 ▒엑셀파일을 ms-sql DB테이블로 전환하기 13 김영철 01.24 3253
열람중 :: INFOEMATION_SCHEMA 뷰 이용하기 :: 13 김영철 01.24 2120
2665 :: 인증모드와 로그인 관리 :: 13 김영철 01.24 2405
2664 :: 데이터베이스 사용자 추가 13 김영철 01.24 2242
2663 :: 연결된 서버 만들기 13 김영철 01.24 2934
2662 :: 엑셀 워크시트를 연결된 서버로 만들기 13 김영철 01.24 3115
2661 mssql 함수모음 13 김영철 01.24 3402
2660 :: text타입의 본문 문자열바꾸기 Sql 13 김영철 01.24 2346
2659 오라클과 MSSQL 의 날짜 비교 13 김영철 01.24 3564
2658 MSSQL 백업복구 13 김영철 01.24 3114
2657 [MSSQL]쿼리 분석기 더 잘 사용하기 13 김영철 01.24 3414
2656 SQL Injection 기법 정리(MSSQL) 13 김영철 01.24 4173
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취