一、基础查询表名
在SQL Server中,我们可以用以下语句来查询所有表的名称:
SELECT name FROM sys.tables
该语句中,sys.tables是一个系统表,它存储了所有表的信息,包括表名称、表ID等。通过查询该表,我们可以获取所有表的名称。
这里需要注意的是,查询结果可能会包含一些系统表,例如sysdiagrams等,我们可以根据需求进行过滤。
二、查询特定模式下的表名
在某些情况下,我们可能只需要查询特定模式下的表名。例如在一个数据库中,可能有多个模式,我们希望只查询其中一个模式下的表名。
下面是查询特定模式下表名的语句:
SELECT name FROM sys.tables WHERE SCHEMA_NAME(schema_id) = '模式名称'
该语句中,SCHEMA_NAME(schema_id)函数用于获取模式名称,模式名称需要用单引号括起来。同时,我们也可以使用LIKE运算符对模式名称进行模糊匹配。
三、查询表名称和行数
有时候我们需要查询表的名称以及其中的行数,下面是查询表名称和行数的语句:
SELECT T.name AS TableName, P.rows AS RowCounts FROM sys.tables T INNER JOIN sys.partitions P ON T.object_id = P.object_id WHERE P.index_id IN (0,1)
该语句中,我们使用了INNER JOIN语句来关联sys.tables表和sys.partitions表,以获取表名称和行数信息。其中,0和1表示聚集索引和非聚集索引,我们可以根据实际情况进行调整。
四、查询表名称和大小
除了行数,我们还可以查询表的大小,下面是查询表名称和大小的语句:
SELECT T.Name AS TableName, SUM(P.reserved_page_count) * 8.0 / 1024 / 1024 AS TableSizeInMB FROM sys.tables T INNER JOIN sys.dm_db_partition_stats P ON T.object_id = P.object_id GROUP BY T.Name
该语句中,我们使用了sys.dm_db_partition_stats表来获取表的大小信息。该表包含了表的分区统计信息,通过聚合计算,我们可以得到表的总大小。
五、查询表的列信息
除了表名、行数和大小,我们还可以查询表的列信息,下面是查询表的列信息的语句:
SELECT T.Name AS TableName, C.name AS ColumnName, TYPE_NAME(C.system_type_id) AS DataType, C.max_length, C.is_nullable FROM sys.tables T INNER JOIN sys.columns C ON T.object_id = C.object_id ORDER BY T.name, C.column_id
该语句中,我们使用了sys.columns表来获取表的列信息。通过关联sys.tables表和sys.columns表,我们可以获取每个表的列信息,并且按照表名和列顺序进行排序。
六、查询表的索引信息
表的索引对查询效率有重要的影响,因此我们可以通过以下语句来查询表的索引信息:
SELECT T.Name AS TableName, I.name AS IndexName, AC.Name AS ColumnName, I.is_unique, I.is_primary_key FROM sys.tables T INNER JOIN sys.indexes I ON T.object_id = I.object_id INNER JOIN sys.index_columns IC ON I.object_id = IC.object_id AND I.index_id = IC.index_id INNER JOIN sys.all_columns AC ON T.object_id = AC.object_id AND IC.column_id = AC.column_id
该语句中,我们使用了sys.indexes表、sys.index_columns表和sys.all_columns表来获取表的索引信息。通过关联这几个表,我们可以获取每个表的索引信息,并且查询结果包含了索引名称、列名称、是否唯一等信息。
原创文章,作者:QTFBD,如若转载,请注明出处:https://www.506064.com/n/361091.html