列出当前数据库中所有表的大小的SQL语句

本文介绍了一种使用T-SQL从sysindexes表中选择特定对象名称和行计数的方法,通过设置条件来过滤用户表并按行计数降序排列结果。此查询有助于理解数据库索引的分布情况。
select object_name(id),rowcnt from sysindexes where indid<2 and objectproperty(id,'isusertable')=1
order by 2 desc 
<think>好的,我现在需要帮助用户解决如何通过SQL查询获取当前数据库所有名的问题。首先,我得回忆一下不同数据库系统(比如MySQLSQL Server、Oracle、PostgreSQL、达梦)的查询方法,因为用户没有指定具体使用哪种数据库,所以应该覆盖主流的几种。 接下来,我需要参考用户提供的引用内容。用户给出了五个引用,涉及MySQLSQL Server、达梦等。例如,引用5提到了使用information_schema.tables在MySQL中查询,而引用2提到了SQL Server中使用sysobjects。达梦数据库则用SYSOBJECTS,如引用4所示。 我需要确保每个数据库的查询方法正确,并且语法无误。比如,在MySQL中,确实是通过INFORMATION_SCHEMA.TABLES来获取信息,同时需要指定TABLE_SCHEMA为当前数据库。对于SQL Server,sysobjects的xtype字段用来区分用户和系统,用户可能需要的是用户,所以xtype='U'。Oracle的话,用户可能需要访问ALL_TABLES或USER_TABLES,但用户提供的引用中没有提到,可能需要自己补充。 另外,用户提到“当前数据库”,所以在不同数据库中获取当前数据库名称的方法也不同。例如,MySQL中用DATABASE()函数,而SQL Server用DB_NAME()。需要确保这部分正确,否则查询可能不会返回预期结果。 然后,我要整理这些信息,分点列出每个数据库的查询语句,并给出注意事项。比如权限问题,不同版本可能有差异,或者是否需要替换数据库名称等。例如,在达梦数据库中,用户可能需要替换名的大小写,或者检查权限。 还要注意用户是否希望有一个通用的方法,但根据引用内容,似乎没有跨数据库的通用语句,所以必须分数据库说明。同时,确保示例中的SQL语句使用正确的语法,比如在MySQL中使用反引号还是单引号,以及条件语句是否正确。 最后,生成相关问题,可能需要包括其他数据库的查询方法、如何过滤系统、权限问题等,这些都是用户可能进一步想了解的。</think>根据不同的数据库类型,SQL查询当前数据库所有名的方法有所不同。以下是主流数据库的实现方式: ### 一、MySQL数据库 ```sql SELECT table_name FROM information_schema.tables WHERE table_schema = DATABASE(); ``` 说明:通过系统视图`information_schema.tables`过滤当前数据库名称(由`DATABASE()`函数获取)[^5] ### 二、SQL Server数据库 ```sql SELECT name FROM sysobjects WHERE xtype = 'U' AND dbid = DB_ID(); ``` 说明:`xtype='U'`示用户,`DB_ID()`获取当前数据库ID[^2] ### 三、Oracle数据库 ```sql SELECT table_name FROM user_tables; ``` 说明:`user_tables`视图包含当前用户拥有的所有 ### 四、PostgreSQL数据库 ```sql SELECT tablename FROM pg_tables WHERE schemaname = 'public'; ``` ### 五、达梦数据库 ```sql SELECT name FROM SYSOBJECTS WHERE type$ = 'SCHOBJ' AND subtype$ = 'UTAB'; ``` 说明:通过系统`SYSOBJECTS`查询用户[^4] §§注意事项§§ 1. 需要具有对应系统视图的查询权限 2. 部分数据库需要替换实际数据库名(如Oracle) 3. 查询结果可能包含系统,可通过条件过滤
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值