Instalação e Inicialização
Após a conclusão da instalação do MySQL, o serviço é iniciado automaticamente junto com o sistema operacional, não havendo necessidade de procedimentos manuais para ativação. Porém, caso precise controlar o serviço manualmente, execute os comandos a seguir no prompt de comando como administrador:
1 - net start mysql80 (iniciar o serviço)
2 - net stop mysql80 (encerrar o serviço)
Linguagem SQL
1. Sintaxe Geral do SQL
1). Instruções SQL podem ser escritas em uma única linha ou em múltiplas linhas, terminando sempre com ponto e vírgula.
2). Espaços em branco e indentação podem ser utilizados para melhorar a legibilidade das instruções.
3). Comentários:
- Comentário de linha única: -- conteúdo ou # conteúdo
- Comentário de múltiplas linhas: /* conteúdo */
2. Categorias do SQL
O SQL é dividido em várias categorias conforme sua finalidade dentro do sistema de banco de dados.
DDL - Definição de Dados
1. Operações com Bancos de Dados
1). Listar todos os bancos de dados existentes
SHOW DATABASES;
2). Verificar qual banco está em uso atualmente
SELECT DATABASE();
3). Criar um novo banco de dados
CREATE DATABASE [IF NOT EXISTS] nome_banco
[DEFAULT CHARSET conjunto_caracteres]
[COLLATE regra_ordenação];
4). Remover um banco de dados
DROP DATABASE [IF EXISTS] nome_banco;
5). Selecionar um banco para trabalho
USE nome_banco;
2. Operações com Tabelas
Consulta de Estrutura de Tabelas
1). Listar todas as tabelas do banco atual
SHOW TABLES;
2). Visualizar a estrutura de uma tabela específica
DESC nome_tabela;
3). Ver a instrução SQL de criação da tabela
SHOW CREATE TABLE nome_tabela;
Criação de Tabelas
CREATE TABLE nome_tabela (
campo1 tipo_campo1 [COMMENT 'descrição do campo1'],
campo2 tipo_campo2 [COMMENT 'descrição do campo2'],
campo3 tipo_campo3 [COMMENT 'descrição do campo3'],
...
campoN tipo_campoN [COMMENT 'descrição do campoN']
) [COMMENT 'descrição da tabela'];
Exemplo prático:
CREATE TABLE tb_cliente (
id INT COMMENT 'identificador único',
nome VARCHAR(50) COMMENT 'nome completo',
idade INT COMMENT 'idade em anos',
sexo CHAR(1) COMMENT 'M ou F'
) COMMENT 'tabela de registro de clientes';
Tipos de Dados
Tipos Numéricos
Os tipos numéricos incluem valores inteiros e decimais para armazenamento de dados numéricos.
Tipos de Texto
Destinados ao armazenamento de cadeias de caracteres, variando entre tamanho fixo e variável.
Tipos de Data e Hora
Utilizados para registro de informações temporais como datas, horários e combinações keduanya.
Alteração de Estrutura
1). Adicionar um novo campo
ALTER TABLE nome_tabela ADD nome_campo tipo(tamanho) [COMMENT 'descrição'];
2). Alterar o tipo de dado de um campo
ALTER TABLE nome_tabela MODIFY nome_campo novo_tipo(tamanho);
3). Modificar o nome e tipo de um campo
ALTER TABLE nome_tabela CHANGE nome_antigo nome_novo tipo(tamanho) [COMMENT 'descrição'];
4). Remover um campo existente
ALTER TABLE nome_tabela DROP nome_campo;
5). Renomear a tabela
ALTER TABLE nome_tabela RENAME TO novo_nome;
Exclusão de Tabelas
1). Excluir uma tabela permanentemente
DROP TABLE [IF EXISTS] nome_tabela;
2). Remover todos os dados e recriar a estrutura
TRUNCATE TABLE nome_tabela;
DML - Manipulação de Dados
1. Inserção de Registros
-- Visualizar dados existentes
SELECT * FROM cliente;
1). Inserir dados em campos específicos
INSERT INTO nome_tabela (campo1, campo2, ...) VALUES (valor1, valor2, ...);
OU
INSERT INTO nome_tabela SET campo1 = valor1, campo2 = valor2;
2). Inserir dados em todos os campos
INSERT INTO nome_tabela VALUES (valor1, valor2, ...);
3). Inserção em lote
INSERT INTO nome_tabela (campo1, campo2, ...) VALUES (valor1, valor2, ...), (valor1, valor2, ...);
INSERT INTO nome_tabela VALUES (valor1, valor2, ...), (valor1, valor2, ...), (valor1, valor2, ...);
2. Atualização de Registros
Sintaxe:
UPDATE nome_tabela SET campo1 = valor1, campo2 = valor2 ... [WHERE condição];
Atenção: A cláusula WHERE é opcional. Quando omitida, todos os registros da tabela serão atualizados.
3. Remoção de Registros
Sintaxe:
DELETE FROM nome_tabela [WHERE condição];
Notas importantes:
- A condição WHERE é opcional. Sem ela, todos os registros serão removidos.
- DELETE remove registros inteiros, não valores individuais. Para zerar um campo específico, utilize UPDATE definindo-o como NULL.
DQL - Consulta de Dados
1. Consultas Básicas
1). Selecionar campos específicos
SELECT campo1, campo2, campo3 ... FROM nome_tabela;
2). Selecionar todos os campos
SELECT * FROM nome_tabela;
3). Aplicar aliases aos campos
SELECT campo1 [AS apelido1], campo2 [apelido2] ... FROM nome_tabela;
4). Eliminar registros duplicados
SELECT DISTINCT lista_campos FROM nome_tabela;
2. Consultas com Condições
Sintaxe:
SELECT lista_campos FROM nome_tabela WHERE condições;
3. Funções de Agregação
Funções agregadas realizam cálculos sobre conjuntos de registros, retornando um único valor resumido.
4. Agrupamento de Resultados
Sintaxe:
SELECT lista_campos FROM nome_tabela [WHERE condição] GROUP BY campo_agrupamento [HAVING condição_filtro];
Diferença entre WHERE e HAVING:
- WHERE: executa a filtragem antes do agrupamento, excluindo registros que não satisfazem a condição antes da formação dos grupos.
- HAVING: executa a filtragem após o agrupamento, aplicando condições sobre os grupos já formados.
- Limitações: WHERE não pode utilizar funções agregadas em suas condições, enquanto HAVING sim.
Pontos importantes:
- Após GROUP BY, os campos selecionados devem ser exclusivamente funções agregadas ou o próprio campo de agrupamento.
- Ordem de execução: WHERE → funções agregadas → HAVING.
- Agrupamento múltiplo é suportado através da sintaxe: GROUP BY campoA, campoB.
5. Ordenação de Resultados
Sintaxe:
SELECT lista_campos FROM nome_tabela ORDER BY campo1 modo1, campo2 modo2;
Modos de ordenação:
- ASC: ordem crescente (padrão)
- DESC: ordem decrescente
Nota: Em ordenação múltipla, o segundo campo só é considerado quando o primeiro apresenta valores iguais.
6. Limitação de Resultados
Sintaxe:
SELECT lista_campos FROM nome_tabela LIMIT deslocamento, quantidade;
Observações:
- O deslocamento inicial é zero. Fórmula: deslocamento = (página - 1) × registros_por_página.
- LIMIT é uma característica específica do MySQL, podendo variar em outros bancos de dados.
- Para a primeira página, o deslocamento pode ser omitido: LIMIT quantidade.
7. Ordem de Execução
A compreensão da sequência de processamento das cláusulas é fundamental para escrever consultas eficientes e corretas.