Sql server T-SQL列表表、列

Sql server T-SQL列表表、列,sql-server,tsql,sql-server-2000,Sql Server,Tsql,Sql Server 2000,在T-SQL(SQL Server 2000)中。如何列出数据库中的所有表和列? 另外,在单独的查询中,有一种方法可以列出所有列以及数据类型和约束(null等)。谢谢 请查看下表 有很多方法可以做到这一点。以下是您可以列出的两种方法: 选项1: SELECT db_name() as DATABASE_NAME, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, DATA_TYPE, C

在T-SQL(SQL Server 2000)中。如何列出数据库中的所有表和列? 另外,在单独的查询中,有一种方法可以列出所有列以及数据类型和约束(null等)。谢谢

请查看下表


有很多方法可以做到这一点。以下是您可以列出的两种方法:

选项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
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
选项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_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
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

请查看
信息\u架构
视图或
系统对象
系统列
等。谢谢Tim,我对此表示感谢。有没有办法添加表分配给哪个数据库?我看到目录是主目录。
使用MyDatabaseName,然后查询。或者,在normal中的
from
子句中添加DB名称(我已将此添加到答案中)。我刚刚发现了这一点。再次感谢