1. 질문 그대로 TABLE 의 COLUMN 정보를 보려면 어떻게 쿼리를 써야 할까요 ?
> FIELDNAME TYPE KEY COMMENTS 정보를 보려 합니다.
2. 서버에 접속했을때 전체 DATABASE 리스트를 얻으려면 어떻게 쿼리를 써야 할까요 ?
> DATABASENAME 만 알수있으면 좋겠는데요...
1. sp_helpcolumns 테이블명
2. sp_helpdb
그럼..
sp 아닌 쿼리문으로 알수 있는 것은 이렇게 하면 됩니다.
칼럼에 대한 것을 보려면..
select a.* from syscolumns a join sysobjects b on a.id = b.idwhere b.name = '<table_name>'
그리고 sp_helpcolumns <table_name> 이 아닌 sp_columns <table_name>으로 하셔야 될 듯 ^^
그리고 DB의 리스트를 알고자 한다면
select * from master..sysDatabases
이렇게 하셔도 됩니다.
sp_helpcolumns라는 정체불명의 sp를.. ^^;;
죄송해여~ ^^*
(여리님, 감사~)
어째 글을 쓰신 분 보다 나그네님과 둘이 대화를 하는듯한 느낌이
팍 드는 걸요 ^^
다 아시는 얘기겠지만..
ms에서는 시스템테이블을 직접 엑세스하는 걸 권장하지 않습니다.
sp_help, sp_columns등의 프로시저로 확인하시거나..
또는 쿼리로 조회하시고 싶다면..
ansi 표준인 INFORMATION_SCHEMA 뷰를 이용해서 조회해야 합니다.
시스템 테이블이나 프로시저의 내부 내용은 버전이 향상됨에 따라..
변할 수 있기때문이죠.. 그래서 내부구조를 은닉할 수 있는
프로시저나 뷰를 이용하라는 거죠...
아시는 얘기들이실테지만.. 다시 한번 강조하고 싶네요..
참고로 아래는 테이블 생성 스크립트와 유사하게 만든..
INFORMATION_SCHEMA 뷰를 이용한 쿼리입니다.
SELECT ORDINAL_POSITION SEQNO ,COLUMN_NAME COLUMN_NAME ,DATA_TYPE + ISNULL('(' + CASE WHEN DATA_TYPE = 'decimal' THEN RTRIM(CAST(NUMERIC_PRECISION as char)) + ',' + RTRIM(CAST(NUMERIC_SCALE as char)) ELSE RTRIM(CAST(CHARACTER_MAXIMUM_LENGTH as char)) END + ')', '') DATA_TYPE ,CASE WHEN IS_NULLABLE = 'No' THEN 'NOT NULL' ELSE 'NULL' END NULLABLE ,ISNULL('DEFAULT ' + REPLACE(REPLACE(COLUMN_DEFAULT, '(', ''), ')', ''),'') COLUMN_DEFAULTFROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_CATALOG = db_name()AND TABLE_SCHEMA = user_name()AND TABLE_NAME = @in_table_nameORDER BY ORDINAL_POSITION