테이블 정보 조회하기, Table Description 쿼리
해당 쿼리는 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: 열의 순서에 따라 결과를 정렬합니다.