SQL Server 查询所有表及记录行数
在 SQL Server 中,我们经常需要查询数据库中所有表的信息,包括表名、列名、数据类型、是否为 NULL、以及每个表中记录的行数等。以下是一些可以用于获取这些信息的 SQL 查询。
查询所有表名
我们可以使用以下查询语句查询给定数据库的所有表名:
SELECT name FROM sys.tables;
这个查询将返回给定数据库中所有表的名称。
查询所有表的列信息
要查询所有表的列信息,我们可以使用以下查询:
SELECT
t.name AS table_name,
c.name AS column_name,
c.system_type_id AS data_type_id,
c.is_nullable,
CASE
WHEN c.max_length=-1 THEN 'MAX'
ELSE CAST(c.max_length AS VARCHAR(5))
END AS max_length,
c.column_id,
c.is_identity,
c.is_computed
FROM
sys.tables AS t
INNER JOIN sys.columns c ON t.object_id = c.object_id
ORDER BY
table_name, column_id;
这个查询将返回所有表的列信息,包括表名、列名、数据类型、是否为空、最大长度、列ID、是否为标识列以及是否为计算列。
查询所有表的记录数
要查询每个表中的行数,可以使用以下查询:
SELECT
SCHEMA_NAME(schema_id) AS schema_name,
t.name AS table_name,
i.rows
FROM
sys.tables t
INNER JOIN
sys.sysindexes i ON t.object_id = i.id
WHERE
i.indid < 2
ORDER BY
schema_name, table_name;
这个查询将返回每个表的行数,按模式名称和表名称排序。
查询所有表及其列和记录数
要同时查询给定数据库中每个表的列和记录数,可以将上面的两个查询组合在一起:
SELECT
SCHEMA_NAME(schema_id) AS schema_name,
t.name AS table_name,
c.name AS column_name,
c.system_type_id AS data_type_id,
c.is_nullable,
CASE
WHEN c.max_length=-1 THEN 'MAX'
ELSE CAST(c.max_length AS VARCHAR(5))
END AS max_length,
c.column_id,
c.is_identity,
c.is_computed,
i.rows
FROM
sys.tables AS t
INNER JOIN sys.columns c ON t.object_id = c.object_id
INNER JOIN sys.sysindexes i ON t.object_id = i.id
WHERE
i.indid < 2
ORDER BY
schema_name, table_name, column_id;
这将返回每个表的列及其相应的数据类型、是否为空、最大长度、列ID、是否为标识列和是否为计算列,以及每个表的行数。
结论
使用上述查询语句,我们可以查询 SQL Server 数据库中的所有表信息和记录数。这对于维护数据库和进行性能调优非常有用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:sqlserver 查询所有表及记录行数 - Python技术站