SQL Essencial: Inserir, Excluir e Consultar Dados

Classificado em Computação

Escrito em em português com um tamanho de 4,29 KB

Inserir Dados em Tabelas (INSERT)

A instrução INSERT INTO é utilizada para adicionar novos registros a uma tabela no banco de dados.

INSERT INTO nome_tabela [(nome_coluna,...)] VALUES (valores, ...)

Exemplo:

mysql> INSERT INTO filmes (cod, titulo, ano, diretor) VALUES (0, 'King Kong', 2006, 'Peter Jackson');

Esta instrução insere um registro na tabela filmes.

  • Note que o primeiro valor após VALUES é zero. Isso ocorre porque o campo COD é do tipo AUTO_INCREMENT: ao informar 0 ou NULL, o banco de dados calcula automaticamente o próximo valor válido.
  • Valores do tipo texto (string) são colocados entre aspas (simples ou duplas).
  • Valores do tipo DATE também devem ser formatados e, geralmente, colocados entre aspas.

Excluir Dados de Tabelas (DELETE)

A instrução DELETE FROM é usada para remover registros existentes de uma tabela.

DELETE FROM table_name WHERE condition

Exemplos:

mysql> DELETE FROM filmes WHERE ano = 2007; --- Apaga os filmes de 2007
mysql> DELETE FROM filmes; --- Apaga todos os filmes da tabela

Consultar Dados em Tabelas (SELECT)

A instrução SELECT é fundamental para recuperar dados de uma ou mais tabelas.

mysql> SELECT * FROM filmes;

Consultas com Múltiplas Tabelas

A consulta envolvendo mais de uma tabela gera uma junção entre as tabelas (produto cartesiano). O filtro ocorre através da equiparação entre chaves (primária e estrangeira).

Exemplo de Junção Implícita:

SELECT NUMPED, NOMEVEND
FROM PEDIDO P, VENDEDOR V
WHERE P.CODVEND = V.CODVEND;

Esta consulta usa o NUMPED que consta na tabela PEDIDO e NOMEVEND que consta na tabela VENDEDOR.

Consultas com INNER JOIN

Ao invés de separar as tabelas com vírgula, pode-se usar a palavra-chave JOIN (ou INNER JOIN e suas variações) para realizar junções explícitas.

Exemplo:

SELECT NUMPED, NOMEVEND
FROM PEDIDO P INNER JOIN VENDEDOR V
ON P.CODVEND = V.CODVEND;

Consultas com LEFT JOIN

O LEFT JOIN retorna todos os registros da tabela da esquerda e os registros correspondentes da tabela da direita. Se não houver correspondência, os valores da tabela da direita serão NULL.

Exemplo: Como identificar os vendedores que nunca venderam?

SELECT NOMEVEND
FROM VENDEDOR V LEFT JOIN PEDIDO P
ON P.CODVEND = V.CODVEND
WHERE P.CODVEND IS NULL;

Para cada linha na tabela da esquerda que não tenha linha correspondente na tabela da direita, o LEFT JOIN acrescenta uma linha de valores NULL.

Consultas com Subconsultas (Subquery)

Uma subconsulta (ou subquery) é uma consulta aninhada dentro de outra consulta SQL. Vimos anteriormente que uma outra forma de resolver problemas complexos é usando subconsultas.

Até a versão 4.0 do MySQL, por exemplo, não havia processamento de subconsultas. Portanto, a saída era somente com LEFT JOIN para certos cenários.

Exemplo:

SELECT NOMEVEND
FROM VENDEDOR
WHERE CODVEND NOT IN (SELECT CODVEND FROM PEDIDO);

Considerações Finais sobre JOINs e Otimização

  • O RIGHT JOIN funciona de maneira similar ao LEFT JOIN, só que a tabela que "comanda" a consulta é a tabela da direita.
  • Ao utilizar o JOIN em detrimento de consultas usando FROM com várias tabelas (junção implícita), o MySQL otimiza automaticamente a consulta, ou seja, organiza a ordem das tabelas para obter o resultado mais rapidamente.
  • Para mais informações, consulte o capítulo de Otimização de Consultas nos manuais do MySQL.

Entradas relacionadas: