在 T-SQL (SQL Server 2000) 中。如何列出数据库中的所有表和列?此外,在单独的查询中,有一种方法可以列出所有列以及数据类型和约束(NULLS 等)。谢谢。
问问题
68599 次
2 回答
70
请查看信息架构。
select *
from MyDatabaseName.information_schema.columns
order by table_name, ordinal_position
于 2013-05-15T19:24:23.990 回答
16
有很多方法可以做到。以下是您可以列出的几种方法:
选项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
于 2013-05-15T20:18:37.333 回答