通过SQL查询获取特定数据库的所有表名?

Awa*_*wan 283 sql sql-server

我正在开发可以处理多个数据库服务器的应用程序,如"MySQL"和"MS SQL Server".

我想使用适用于所有数据库类型的通用查询来获取特定数据库的表名.我试过以下:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Run Code Online (Sandbox Code Playgroud)

但它给出了特定服务器的所有数据库的表名,但我想获取所选数据库的表名.如何限制此查询以获取特定数据库的表?

小智 465

可能是由于不同的sql dbms处理模式的方式.

请尝试以下方法

对于SQL Server:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='dbName'
Run Code Online (Sandbox Code Playgroud)

对于MySQL:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='dbName' 
Run Code Online (Sandbox Code Playgroud)

对于Oracle,我认为相当于使用DBA_TABLES.

  • 当我在一个数据库(SQL Server)中有不同的表模式时,我更喜欢这个解决方案:SELECT CONCAT(TABLE_SCHEMA,'.',TABLE_NAME)FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE ='BASE TABLE'和TABLE_CATALOG ='MyDB' (3认同)
  • 必须使用特定的**DB**来获取信息.`USE dbName GO` for SQL-Server.如果您没有使用**DB**,即使该DB中有表,也不会显示结果. (3认同)
  • 对于Mysql,您可以做的简单。显示表; (2认同)

bla*_*bla 79

这里来的:

USE YOURDBNAME
GO 
SELECT *
FROM sys.Tables
GO
Run Code Online (Sandbox Code Playgroud)

  • 最有可能SELECT名称来自sys.Tables,其中is_ms_shipped = 0 (3认同)
  • 或者, SELECT * FROM yourdbname.sys.Tables; 如果你更喜欢简洁。至少可以在 SQL Server 中使用。 (2认同)

ani*_*key 26

以下查询将选择Tables名为的数据库中的所有内容DBName:

USE DBName
GO 
SELECT *
FROM sys.Tables
GO
Run Code Online (Sandbox Code Playgroud)


Gop*_*005 16

USE DBName;
SELECT * FROM sys.Tables;
Run Code Online (Sandbox Code Playgroud)

我们可以GO在没有就地使用分号的情况下处理;.

  • 对于Azure上的SQL Server,这对我有用,但接受的答案却没有.谢谢. (3认同)

小智 14

只需把它DATABASE NAME放在前面INFORMATION_SCHEMA.TABLES:

select table_name from YOUR_DATABASE.INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE'
Run Code Online (Sandbox Code Playgroud)


AGR*_*AGR 11

如果有人想在不使用“use”关键字的情况下列出特定数据库中的所有表,请执行以下操作:

SELECT TABLE_NAME FROM databasename.INFORMATION_SCHEMA.TABLES
Run Code Online (Sandbox Code Playgroud)


小智 11

这很好用

SELECT * FROM information_schema.tables;


Lor*_*ate 10

在mysql中,使用:

SHOW TABLES;
Run Code Online (Sandbox Code Playgroud)

选择数据库后:

USE db_name
Run Code Online (Sandbox Code Playgroud)


Tar*_*Ray 7

选择下面的数据库查询:

use DatabaseName
Run Code Online (Sandbox Code Playgroud)

现在

SELECT * FROM INFORMATION_SCHEMA.TABLES
Run Code Online (Sandbox Code Playgroud)

现在您可以在控制台中看到下面创建的表。

PFA。

询问


Dar*_*ino 6

我没有看到这个答案,但是这就是我的意思:

SELECT name FROM databaseName.sys.Tables;
Run Code Online (Sandbox Code Playgroud)