Informações do SGBD
Comendos para verificar detalhes do sistema de gerenciamento de banco de dados.
Exibir a versão do SGBD
SELECT VERSION();
Verificar o status do SGBD
STATUS;
Listar recursos e estatísticas do SGBD
SHOW STATUS;
Mostrar permissões suportadas
SHOW PRIVILEGES;
Checar permissões de um usuário específico
SHOW GRANTS FOR 'nome_do_usuario';
Variáveis de Configuração
Consultar variáveis de ambiente e configurações do SGBD.
Listar todas as variáveis e seus valores
SHOW VARIABLES;
Filtrar variáveis por nome, como a porta de conexão
SHOW VARIABLES LIKE 'port';
Exibir configurações de codificação de caracteres
SHOW VARIABLES LIKE 'character%';
Encontrar o caminho dos arquivos de dados
SHOW VARIABLES LIKE '%datadir%';
Ver o limite máximo de conexões simultâneas
SHOW VARIABLES LIKE '%max_connections%';
Operações com Bancos de Dados
Gerenciar bancos de dados dentro do SGBD.
Listar todos os bancos de dados disponíveis
SHOW DATABASES;
Criar um novo banco de dados
CREATE DATABASE nome_do_banco;
Remover um banco de dados existente
DROP DATABASE nome_do_banco;
Selecionar um banco de dados para uso
USE nome_do_banco;
Identificar o banco de dados atual em uso
SELECT DATABASE();
Confirmar o usuário logado
SELECT USER();
Exibir mecanismos de armazenamento disponíveis e o padrão
SHOW ENGINES;
Listar triggers definidas no banco atual
SHOW TRIGGERS;
Gerenciamento de Tabelas
Comandos para criar, modificar e inspecionar tabelas.
Mostrar tabelas no banco de dados selecionado
SHOW TABLES;
Criar uma nova tabela
CREATE TABLE nome_da_tabela (colunas);
Excluir uma tabela
DROP TABLE nome_da_tabela;
Obter informações de status das tabelas
SHOW TABLE STATUS;
Descrever a estrutura de uma tabela
DESCRIBE nome_da_tabela;
ou
SHOW COLUMNS FROM nome_da_tabela;
Recuperar todos os registros de uma tabela
SELECT * FROM nome_da_tabela;
Verificação de Status e Definições
Comandos para inspecionar status de objetos e suas definições.
Consultar status de tabelas, procedures e funções
SHOW TABLE STATUS;
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
Visualizar o código de criação de objetos
SHOW CREATE PROCEDURE nome_da_procedure;
SHOW CREATE FUNCTION nome_da_funcao;
SHOW CREATE VIEW nome_da_view;
SHOW CREATE TABLE nome_da_tabela;
Tratamento de Avisos e Erros
Verificar mensagens de feedback após a execução de comandos.
Exibir erros da última instrução executada
SHOW ERRORS;
Mostrar avisos da última instrução executada
SHOW WARNINGS;
Exemplo Prático 1: Criação e Manipulação de Dados
1.1 Estabelecer um Banco de Dados
Conectar ao servidor MariaDB e criar um banco de dados chamado "exemplo_db"
MariaDB [(none)]> CREATE DATABASE exemplo_db;
MariaDB [(none)]> USE exemplo_db;
1.2 Definir Tabelas
Imagine um cenário acadêmico com tabelas para alunos, disciplinas e notas.
Tabela para informações dos alunos
CREATE TABLE Alunos (
id_aluno CHAR(10) PRIMARY KEY,
nome_aluno VARCHAR(50) NOT NULL,
idade INT
);
Tabela para disciplinas
CREATE TABLE Disciplinas (
id_disciplina CHAR(10) PRIMARY KEY,
nome_disciplina VARCHAR(50) NOT NULL
);
Tabela para registrar as notas dos alunos
CREATE TABLE Notas (
id_aluno CHAR(10),
id_disciplina CHAR(10),
pontuacao VARCHAR(20)
);
1.3 Inserir Registros
Popular a tabela Alunos
INSERT INTO Alunos (id_aluno, nome_aluno, idade) VALUES ('A01', 'Carlos', 20);
INSERT INTO Alunos (id_aluno, nome_aluno, idade) VALUES ('A02', 'Maria', 22);
INSERT INTO Alunos (id_aluno, nome_aluno, idade) VALUES ('A03', 'Pedro', 19);
Inserir disciplinas usando UNION ALL
INSERT INTO Disciplinas (id_disciplina, nome_disciplina)
SELECT 'D100', 'Banco de Dados' UNION ALL
SELECT 'D200', 'Programação Web';
Registrar notas
INSERT INTO Notas (id_aluno, id_disciplina, pontuacao) VALUES ('A01', 'D100', '85');
INSERT INTO Notas (id_aluno, id_disciplina, pontuacao) VALUES ('A02', 'D100', '90');
INSERT INTO Notas (id_aluno, id_disciplina, pontuacao) VALUES ('A01', 'D200', '78');
1.4 Consultar Informações
Listar todos os alunos maiores de 20 anos
SELECT nome_aluno, idade FROM Alunos WHERE idade > 20;
Encontrar alunos inscritos em uma disciplina específica
SELECT id_aluno, nome_aluno FROM Alunos
WHERE id_aluno IN (SELECT id_aluno FROM Notas WHERE id_disciplina = 'D100');
Contar quantos alunos se inscreveram em pelo menos uma disciplina
SELECT COUNT(DISTINCT id_aluno) FROM Notas;
1.5 Atualizar e Modificarr Estruturas
Alterar a nota de um aluno em uma disciplina
UPDATE Notas SET pontuacao = '95' WHERE id_aluno = 'A01' AND id_disciplina = 'D100';
Adicionar uma nova coluna à tabela Disciplinas
ALTER TABLE Disciplinas ADD COLUMN carga_horaria INT;
Remover a coluna adicionada
ALTER TABLE Disciplinas DROP COLUMN carga_horaria;
1.6 Remover Dados e Objetos
Excluir um registro específico
DELETE FROM Notas WHERE id_aluno = 'A02' AND id_disciplina = 'D100';
Deletar uma tabela inteira
DROP TABLE Notas;
Excluir o banco de dados
DROP DATABASE exemplo_db;
Exemplo Prático 2: Cálculo de Estoque
2.1 Criar Tabelas de Exemplo
Simule um sistema de inventário com produtos e saídas.
Tabela de estoque inicial
CREATE TABLE Inventario (
produto CHAR(1),
quantidade_inicial INT
);
INSERT INTO Inventario (produto, quantidade_inicial) VALUES ('X', 1000);
INSERT INTO Inventario (produto, quantidade_inicial) VALUES ('Y', 1500);
Tabela de vendas/saídas
CREATE TABLE Vendas (
produto CHAR(1),
quantidade_saida INT
);
INSERT INTO Vendas (produto, quantidade_saida) VALUES ('X', 150);
INSERT INTO Vendas (produto, quantidade_saida) VALUES ('X', 300);
INSERT INTO Vendas (produto, quantidade_saida) VALUES ('Y', 200);
INSERT INTO Vendas (produto, quantidade_saida) VALUES ('Y', 350);
2.2 Calcular Estoque Restente
Usar uma consulta com junção e agregação para determinar o estoque atual.
Primeiro, veja os dados brutos
SELECT * FROM Inventario;
SELECT produto, SUM(quantidade_saida) AS total_saida FROM Vendas GROUP BY produto;
Calcular o estoque restante por produto
SELECT
i.produto,
i.quantidade_inicial - COALESCE(v.total_saida, 0) AS estoque_restante
FROM Inventario i
LEFT JOIN (
SELECT produto, SUM(quantidade_saida) AS total_saida
FROM Vendas
GROUP BY produto
) v ON i.produto = v.produto;
2.3 Limpar Objetos de Exemplo
DROP TABLE Inventario;
DROP TABLE Vendas;