SELECT TABLE_SCHEMA + '.' + TABLE_NAME as 'Schema.Table'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG = 'dbName'
ORDER BY TABLE_SCHEMA, TABLE_NAME
24
在mysql中,使用:
SHOW TABLES;
选择数据库后:
USE db_name
1
UPDATE FOR THE LATEST VERSION OF MSSQL SERVER (17.7)
SELECT name FROM sys.Tables WHERE type_desc = 'USER_TABLE'
14 回答
被盗here:
对于Mysql,你可以做到很简单 . SHOW TABLES;
以下查询将选择名为
DBName
的数据库中的所有Tables
:如果您在MS SQL服务器上使用多个模式,那么SELECT-ing TABLE_NAME而不同时选择TABLE_SCHEMA可能效果有限,因此我假设我们对使用MS SQL Server时属于已知模式的表感兴趣 .
我已经使用SQL Server数据库测试了上面的查询,使用了我的SQL Server数据库和使用MySQL数据库的MySQL Workbench,在这两种情况下它都给出了表名 .
该查询将Michael Baylon的两个不同查询组合成一个可以在任一数据库类型上运行的查询 . WHERE子句的第一部分适用于MySQL数据库,第二部分(在OR之后)适用于MS SQL Server数据库 . 它是丑陋的,逻辑上有点不正确,因为它假设没有不需要的模式与数据库同名 . 这可能有助于寻找可以在任一数据库服务器上运行的单个查询的人 .
可能是由于不同的sql dbms处理模式的方式 .
请尝试以下方法
对于SQL Server:
对于MySQL:
对于Oracle,我认为相当于使用
DBA_TABLES
.我没有看到这个答案,但是这就是我的意思:
根据Michael Baylon的回答,我需要一个列表,其中还包含架构信息,这就是我修改查询的方式 .
在mysql中,使用:
选择数据库后:
UPDATE FOR THE LATEST VERSION OF MSSQL SERVER (17.7)
或
SELECT *
获取所有列 .是的oracle是:
也就是说,如果您只想要登录
user/schema
所拥有的对象,否则您可以使用包含系统表的all_tables
或dba_tables
.我们可以在没有
GO
的情况下处理你可以使用分号;
.只需将
DATABASE NAME
放在INFORMATION_SCHEMA.TABLES
前面: