T-SQL (SQL Server 2000). 데이터베이스의 모든 테이블과 컬럼을 나열하려면 어떻게합니까? 또한 별도의 쿼리에서 데이터 형식 및 제약 조건 (NULLS 등)과 함께 모든 열을 나열하는 방법이 있습니다. 감사.T-SQL 목록 테이블, 열
답변
information schema을 확인하십시오.
select *
from MyDatabaseName.information_schema.columns
order by table_name, ordinal_position
감사합니다. Tim 감사합니다. 테이블이 할당 된 데이터베이스를 추가하는 방법이 있습니까? 나는 카타로그가 마스터 인 것을 본다. – user1804387
'use MyDatabaseName;', 그런 다음 쿼리. [MSDN : 데이터베이스 선택] (http://msdn.microsoft.com/en-us/library/ms180770.aspx) 다른 방법으로는, 일반적인 [4-part fashion] (http://msdn.microsoft.com/en-us/library/ms177563.aspx)의'from' 절에 DB 이름을 추가하십시오.). –
방금 발견했습니다. 다시 한 번 감사드립니다. – user1804387
여러 가지 방법이 있습니다.
옵션 1 :
SELECT db_name() as DATABASE_NAME, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION,
COLUMN_DEFAULT, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH,
NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE,
DATETIME_PRECISION
FROM INFORMATION_SCHEMA.COLUMNS
옵션 2 :
DECLARE @SQL VARCHAR(8000)
SELECT @SQL = ''
SELECT @SQL = @SQL + 'UNION
SELECT ''' + name + ''' [DataBaseName], t.name [TableName], c.name [ColumnName], st.name [DataType] FROM ' + name + '..sysobjects t INNER JOIN ' + name + '..syscolumns c ON t.id = c.id INNER JOIN '+ name + '..systypes st on c.xtype = st.xtype where t.xtype = ''U'''
FROM master..sysdatabases
WHERE name IN ('databasename1', 'databaseName2') -- change here !!
SELECT @SQL = RIGHT(@SQL, LEN(@SQL)-5) + ' ORDER BY 1, 2, 3'
EXEC(@SQL)
옵션 3 :
select db_name() as database_name
,table_name = sysobjects.name
,column_name = syscolumns.name
,datatype = systypes.name
,length = syscolumns.length
from sysobjects
inner join syscolumns on sysobjects.id = syscolumns.id
inner join systypes on syscolumns.xtype = systypes.xtype
where sysobjects.xtype = 'U'
order by sysobjects.name
,syscolumns.colid
하 다음은 표시 할 수있는 방법의 커플은 너 뭐 해봤 니? –
'INFORMATION_SCHEMA' 뷰나'sysobjects','syscolumns' 등을보세요. –