koh*_*any 8 sql-server-2008 sql-server
我想编写一个脚本来列出我的数据库中的表以及该表中的列数。
像这样:
table name number
--------- --------
table1 1
table2 13
table3 2
table4 6
Run Code Online (Sandbox Code Playgroud)
Jul*_*eur 20
您可以查看sys.columns中的列:
为具有列(例如视图或表)的对象的每一列返回一行。以下是具有列的对象类型列表:
对于表中的列数,可以使用此查询:
SELECT [Schema] = s.name
, [Table] = t.name
, number = COUNT(*)
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id = t.object_id
INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
GROUP BY t.name, s.name
Run Code Online (Sandbox Code Playgroud)
sys.objects也可以与WHERE
所需类型的子句一起使用:
SELECT [Schema] = s.name
, [Table] = o.name
, number = COUNT(*)
, o.type_desc
FROM sys.columns c
INNER JOIN sys.objects o ON c.object_id = o.object_id
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE type IN (
'U' --> U = Table (user-defined)
, 'V' --> V = View
, ...)
GROUP BY o.name, s.name, o.type_desc;
Run Code Online (Sandbox Code Playgroud)尽管最好使用第一个查询(从 Aaron Bertrand阅读针对 INFORMATION_SCHEMA 视图的案例),但这也可以工作:
SELECT TABLE_SCHEMA
, TABLE_NAME
, number = COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_SCHEMA, TABLE_NAME;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48820 次 |
最近记录: |