2011-01-10 13 views
13

He buscado a través de un grupo de sitios web y no he encontrado ningún código o tutorial que haya pasado por los detalles de obtener los nombres de tablas de una única base de datos.Obtener nombres de tablas de una base de datos

Suponiendo que tengo 4 bases de datos y quiero los nombres de todas las tablas dentro de la base de datos llamada mp21, ¿qué consulta puedo usar?

+1

¿Qué sabor está utilizando RDBMS - Servidor SQL, MySQL u otro ..? – AdaTheDev

+0

Además, ¿qué lenguaje/marco de programación está usando? .NET, Java, COBOL ...? ¿O quieres hacerlo usando solo SQL? – sleske

Respuesta

19
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' 
+3

Esto funciona. Todo lo que tuve que hacer fue agregar "AND TABLE_SCHEMA = 'mp21'" al final y funciona. Gracias. –

+0

Me alegro de poder ayudar –

9

En MySQL Esto mostrará una lista de todas las bases:

show databases; 

Para cada uno de estos se puede hacer:

use <database_name>; 

y luego

show tables; 
+0

USE mp21 SHOW TABLES tampoco funciona. También otro código que probé antes. –

1
use mp21 
SELECT name FROM dbo.sysobjects WHERE xtype = 'U' 
+0

Probé esto antes. No estoy seguro de por qué, pero sys no funciona con mis consultas. –

+0

¿Qué sistema de base de datos está utilizando, sqlserver? –

3

En SQL SERVER, sólo puede utilizar -

select * from sys.tables 
+0

No tengo idea de por qué, pero esto no funciona en mi SQL. Estoy bastante seguro de que es la última versión, pero sigo recibiendo errores. Gracias sin embargo. –

+1

@Syed Abdul Rahman: esta consulta funciona en SQL Server, no en mySql. Presumo que está utilizando MySql y, por lo tanto, esto no funcionaría. Como no había mencionado su RDBMS en cuestión, le envié una consulta del servidor SQL. De todos modos, tienes lo que querías. –

+0

Ah, ya veo. Gracias por aclarar esto. –

0

si solicita sobre el código .NET, entonces usted necesita SMO:

using Microsoft.SqlServer.Management.Smo; 
using Microsoft.SqlServer.Management.Common; 



public static List<Table> GetTables(string connection, string databaseName) 
     { 
      if (String.IsNullOrEmpty(connection)) 
       throw new ArgumentException("connection is null or empty.", "connection"); 

      Server srv = getServer(connection); 
      return srv.Databases[databaseName].Tables.Cast<Table>().ToList(); 
     } 
1

que utiliza esta consulta:

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' 

Me da nombre de tabla así como sysDiagram (diagrama de base de datos generado para esa base de datos)

0

Aquí está la consulta de MySQL que solicitó.

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='mp21' 
Cuestiones relacionadas