Ответ 1
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Я просматривал кучу веб-сайтов, и я не сталкивался с каким-либо кодом или учебным пособием, в котором рассмотрены особенности получения имен таблиц из одной базы данных.
Предполагая, что у меня есть 4 базы данных, и мне нужны имена всех таблиц в базе данных под названием mp21
, какой запрос я могу использовать?
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
В MySQL это будет список всех баз данных:
show databases;
Для каждого из них вы можете:
use <database_name>;
а затем
show tables;
В SQL SERVER вы можете просто использовать -
select * from sys.tables
use mp21
SELECT name FROM dbo.sysobjects WHERE xtype = 'U'
Я использовал этот запрос:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Он дает мне имя таблицы, а также sysDiagram (диаграмма базы данных, сгенерированная для этой базы данных)
если вы спрашиваете о .net-коде, тогда вам нужно 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();
}
Вот запрос MySQL, который вы задали.
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='mp21'