首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >T-SQL列出表、列

问T-SQL列出表、列
EN

Stack Overflow用户
提问于 2013-05-16 03:20:40
回答 2查看 67.5K关注 0票数 31

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-16 03:24:24

请查看information schema。

代码语言:javascript
复制
select *
from MyDatabaseName.information_schema.columns
order by table_name, ordinal_position
票数 69
EN

Stack Overflow用户

发布于 2013-05-16 04:18:37

有很多方法可以做到这一点。下面是你可以列出的几种方式:

选项1:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16573301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档