Estou trabalhando em um aplicativo que pode lidar com vários servidores de banco de dados como "MySQL" e "MS SQL Server".
Desejo obter os nomes das tabelas de um banco de dados específico usando uma consulta geral adequada para todos os tipos de banco de dados. Eu tentei o seguinte:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Mas está dando nomes de tabela de todos os bancos de dados de um servidor específico, mas quero obter apenas nomes de tabelas do banco de dados selecionado. Como posso restringir esta consulta para obter tabelas de um banco de dados específico?
sql
sql-server
Awan
fonte
fonte
Respostas:
Provavelmente devido à maneira como diferentes dbms sql lidam com esquemas.
Tente o seguinte
Para SQL Server:
Para o MySQL:
Para a Oracle, acho que o equivalente seria usar
DBA_TABLES
.fonte
USE dbName GO
para SQL-Server. Se você não estiver usando o banco de dados , o resultado não será exibido, mesmo se houver tabelas nesse banco de dados.USE dbName GO
prefixo no Server 2014.Roubado daqui :
fonte
A consulta a seguir selecionará todos
Tables
os dados no banco de dados chamadoDBName
:fonte
Podemos lidar sem que
GO
você possa usar ponto e vírgula;
.fonte
Basta colocar
DATABASE NAME
na frente deINFORMATION_SCHEMA.TABLES
:fonte
No mysql, use:
Após selecionar o banco de dados com:
fonte
Eu não vi essa resposta, mas ei isso é o que eu faço:
fonte
Para o Mysql você pode fazer coisas simples. MOSTRAR MESAS;
fonte
fonte
fonte
sp_MSforeachtable
?Se você estiver trabalhando com vários esquemas em um servidor MS SQL, a seleção de TABLE_NAME sem selecionar simultaneamente simultaneamente TABLE_SCHEMA pode ser de benefício limitado, portanto, presumi que estamos interessados nas tabelas pertencentes a um esquema conhecido ao usar o MS SQL Server.
Testei a consulta acima com o SQL Server Management Studio usando um banco de dados meu do SQL Server e com o MySQL Workbench usando um banco de dados MySQL e, nos dois casos, fornece os nomes das tabelas.
A consulta reúne as duas consultas diferentes de Michael Baylon em uma que pode ser executada em qualquer tipo de banco de dados. A primeira parte da cláusula WHERE funciona nos bancos de dados MySQL e a segunda parte (após o OR) funciona nos bancos de dados do MS SQL Server. É feio e logicamente um pouco incorreto, pois supõe que não há esquema indesejado com o mesmo nome que o banco de dados. Isso pode ajudar alguém que está procurando uma única consulta que possa ser executada em qualquer servidor de banco de dados.
fonte
ATUALIZAÇÃO PARA A VERSÃO MAIS RECENTE DO MSSQL SERVER (17.7)
Ou
SELECT *
para obter todas as colunas.fonte
Para selecionar a consulta ao banco de dados abaixo:
Agora
Agora você pode ver as tabelas criadas abaixo no console.
PFA.
fonte
Sim oracle é:
Ou seja, se você deseja apenas objetos de propriedade do logon,
user/schema
caso contrário, você pode usarall_tables
oudba_tables
incluir tabelas do sistema.fonte
Com base na resposta de Michael Baylon, eu precisava de uma lista que também incluísse informações de esquema e foi assim que modifiquei sua consulta.
fonte
Em nosso banco de dados Oracle (PL / SQL) abaixo, o código está funcionando para obter a lista de todas as tabelas existentes em nosso banco de dados.
e
ambos estão trabalhando. vamos tentar encontrar o seu.
fonte
Basta obter todas as informações improtanat com isso abaixo do SQL no Mysql
fonte