您现在的位置是:休闲 >>正文

sqlserver查所有的表名

休闲797人已围观

简介 在SQL Server里查所有表名,最直接的办法就是查系统视图。别绕弯子,`sys.tables`就是干这个的。跑一句`SELECT name FROM sys.tables`,当前数据库里所有用户 ...

在SQL Server里查所有表名,最直接的办法就是查系统视图。别绕弯子,`sys.tables`就是干这个的。跑一句`SELECT name FROM sys.tables`,当前数据库里所有用户表的名字就齐刷刷列出来了。这玩意儿比`INFORMATION_SCHEMA.TABLES`快,因为它是SQL Server自己的内部视图,专门针对引擎优化过。

不过你光知道这个还不够。我见过太多人栽在“当前数据库”这几个字上。你连的是`master`库,跑出来全是系统表,一脸懵。所以写代码前先确认`USE YourDatabaseName`,或者直接在查询里写`SELECT name FROM YourDatabaseName.sys.tables`。这个坑我踩过,当年排查一个存储过程,查了半天表名对不上,最后发现是连错库了。

再说个实用场景。你要做数据库文档,得把表名、字段、类型、注释全导出来。这时候单查`sys.tables`就不够用了,得连`sys.columns`和`sys.extended_properties`。给你个组合拳:

SELECT t.name AS TableName, c.name AS ColumnName, ty.name AS DataType FROM sys.tables t JOIN sys.columns c ON t.object_id = c.object_id JOIN sys.types ty ON c.user_type_id = ty.user_type_id ORDER BY t.name, c.column_id

这段能把你库里所有表的字段结构一次性拉出来。注意`ORDER BY c.column_id`,这是按建表时的字段顺序排的,别用`c.name`排序,否则字段顺序全乱了。

还有个冷门但好用的技巧——用`OBJECT_ID`过滤临时表。有时候你想看存储过程里创建的临时表,但`sys.tables`里根本找不到。临时表在`tempdb`里,得切到那个库去查:`SELECT name FROM tempdb.sys.tables WHERE name LIKE '#%'`。别笑,我之前调试一个复杂报表,就是靠这招找到临时表结构,才知道中间算错了哪一步。

最后提醒一句:别老想着用`SELECT * FROM INFORMATION_SCHEMA.TABLES`。那个视图虽然标准,但性能差,而且不包含索引、分区这类物理信息。真要干重活,系统视图才是亲儿子。你写存储过程或者做数据库对比工具的时候,多花五分钟翻翻`sys.objects`、`sys.indexes`,比到处搜“sqlserver查所有表名”靠谱得多。

对了,如果你只是想快速数一下有多少张表,用`SELECT COUNT(*) FROM sys.tables`就行。但如果是做数据字典,建议把表名、创建时间、修改时间一起查出来:

SELECT name, create_date, modify_date FROM sys.tables ORDER BY create_date DESC

这样你能看出哪些表是最近才加的,哪些是老古董一直没动过。做数据库清理的时候,这招比看注释管用——注释可能骗人,时间戳不会。

Tags:

相关文章

  • 福彩漏洞

    休闲

    彩票站的老周上个月关了门。他守了那个窗口十二年,最熟的不是号码走势图,是彩民们掏钱时的手——有人抖,有人攥得发白,有人把皱巴巴的十块钱抹了三遍才递进来。老周说,他见过太多人把“概率”两个字活成了“宿命 ...

    【休闲】

    阅读更多
  • 渗透型防水剂能坚持多久

    休闲

    渗透型防水剂能坚持多久?答案很扎心:取决于你花多少钱,以及施工的人是否靠谱。市面上几十块钱一桶的“纳米硅烷”和几百块一升的进口纯硅树脂,寿命能差出十年。 我见过最离谱的案例,是某业主花两百块买了三桶“ ...

    【休闲】

    阅读更多
  • 劳务后端服务

    休闲

    劳务后端服务,说白了就是给劳务公司擦屁股的活儿。别误会,这不是贬义。我见过太多劳务派遣公司,前端业务员跑得比兔子还快,签合同、收钱、许诺工资日结,一套流程行云流水。可一旦工人进场,问题就来了——考勤算 ...

    【休闲】

    阅读更多


友情链接