데이터베이스 (DB)

테이블 정보 조회하기, Table Description 쿼리

DevL1 2024. 10. 25. 13:41

해당 쿼리는 MSSQL 기준으로 작성되었습니다.


이 쿼리는 지정된 사용자 정의 테이블의 열 정보를 포함하여, 각 열의 데이터 유형, 길이, NULL 허용 여부, 정렬 규칙, 그리고 설명을 조회합니다. 결과는 열의 순서에 따라 정렬됩니다.

SELECT c.colorder AS column_index,
       a.name AS table_name,
       e.value AS table_description,
       c.name AS column_name,
       f.value AS column_description,
       d.data_type AS type,
       d.character_octet_length AS length,
       d.is_nullable AS is_nullable,
       d.collation_name AS collation_name
  FROM SYSOBJECTS AS a with(nolock)
 INNER JOIN SYSUSERS AS b with(nolock)
    ON a.uid = b.uid
 INNER JOIN SYSCOLUMNS AS c with(nolock)
    ON c.id = a.id
 INNER JOIN INFORMATION_SCHEMA.COLUMNS AS d with(nolock)
    ON d.table_name = a.name
   AND d.column_name = c.name
  LEFT OUTER JOIN SYS.EXTENDED_PROPERTIES AS e with(nolock)
    ON e.major_id = a.id
   AND e.minor_id = 0
   AND e.name = 'MS_Description'
  LEFT OUTER JOIN SYS.EXTENDED_PROPERTIES AS f with(nolock)
    ON f.major_id = c.id
   AND f.minor_id = c.colid
   AND f.name = 'MS_Description'
 WHERE a.type = 'U'
   AND a.name = '[Table_Name]'
 ORDER BY c.colorder



쿼리 설명


SELECT 절:
c.colorder as column_index: 열의 순서(index)를 가져옵니다.
a.name as table_name: 테이블의 이름을 가져옵니다.
e.value as table_description: 테이블에 대한 설명을 가져옵니다.
c.name as column_name: 열의 이름을 가져옵니다.
f.value as column_description: 열에 대한 설명을 가져옵니다.
d.data_type as type: 열의 데이터 유형을 가져옵니다.
d.character_octet_length as length: 열의 길이를 가져옵니다.
d.is_nullable as is_nullable: 열이 NULL을 허용하는지 여부를 가져옵니다.
d.collation_name as collation_name: 열의 정렬 규칙을 가져옵니다.


FROM 절:
SYSOBJECTS as a: 데이터베이스 내의 객체(테이블 등) 정보를 담고 있는 시스템 테이블입니다.
SYSUSERS as b: 사용자 정보를 담고 있는 시스템 테이블입니다.
SYSCOLUMNS as c: 열 정보를 담고 있는 시스템 테이블입니다.
INFORMATION_SCHEMA.COLUMNS as d: SQL 표준 정보 스키마로, 열에 대한 정보를 제공합니다.
SYS.EXTENDED_PROPERTIES as e 및 f: 추가 속성, 예를 들어 테이블 및 열에 대한 설명을 담고 있는 시스템 테이블입니다.

 

JOIN 절:
INNER JOIN 및 LEFT OUTER JOIN을 사용하여 위의 테이블들을 연결합니다.
a, b, c, d는 각각 객체, 사용자, 열, 열 정보를 연결합니다.
e, f는 테이블 및 열에 대한 설명을 가져오기 위해 사용됩니다.


WHERE 절:
a.type = 'U': 사용자 정의 테이블만 선택합니다.
a.name = '[Table_Name]': 특정 테이블 이름에 대한 정보를 조회합니다. [Table_Name] 부분은 실제 테이블 이름으로 대체되어야 합니다.


ORDER BY 절:
c.colorder: 열의 순서에 따라 결과를 정렬합니다.