Olá! Vou mostrar algumas queries do MySQL que podem ser úteis para situações do cotidiano. Lembre-se que são apenas exemplos, e uma vez que você entende o “como faz”, fica fácil para modificar e adequar as suas necessidades!

Mesmo que você não seja um DBA, é interessante ter noção do que você está fazendo, então antes de partir para os códigos, um pouquinho de teoria é bom.

As queries abaixo fazem referencia ao information_schema, ele é a estrutura de dicionário de dados utilizada pelo MySQL. Esta estrutura contém informações referente a todos os objetos que estão relacionados neste banco de dados. Podemos extrair desta estrutura informações como privilégios de usuários, nomes de procedimentos armazenados, funções de um determinado schema e até informações sobre a estrutura das tabelas.

Agora que você já sabe mais ou menos o que é, vamos aos códigos!

  • Listar todas as tabelas que estão vazias(sem registros)
1
2
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_ROWS = 0 AND TABLE_SCHEMA = 'Nome_do_Banco_Dados'

  • E você ainda pode especificar mais, como por exemplo: “Quero as tabelas vazias que tem um determinado prefixo em seu nome”
1
2
3
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_ROWS = 0 AND TABLE_SCHEMA = 'Nome_do_Banco_Dados'
AND table_name LIKE '%prefixo_%'

  • Exibir todas as colunas de uma tabela, acompanhada pelo tipo
1
2
3
4
SELECT `COLUMN_NAME` as NomeColuna, `COLUMN_TYPE` as TipoColuna
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='Nome_do_Banco_Dados'
AND TABLE_NAME='Nome_da_Tabela';

  • Contar a quantidade de colunas existentes em uma tabela
1
2
3
4
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'Nome_do_Banco_Dados'
AND table_name = 'Nome_da_Tabela'

  • Procurar por ocorrências de um ou mais campos em tabelas do banco de Dados
    • Ex: Suponha que você tem o campo id_faturamento e você precisa saber em quais tabelas este campo está presente. Com a Query abaixo, você faz isso facilmente.
1
2
3
4
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('NomeCampo1','NomeCampo2')
AND TABLE_SCHEMA='Nome_do_Banco_Dados';

Bom, estes são alguns exemplos do que pode ser feito utilizando o information_schema. Se você já tem um bom conhecimento de SQL, já deve estar imaginando que é possível ir mais além e se estiver interessado em se especializar mais no assunto, basta clicar neste link.

Até a próxima! :smile: