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 campoCOD
é do tipoAUTO_INCREMENT
: ao informar0
ouNULL
, 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 aoLEFT JOIN
, só que a tabela que "comanda" a consulta é a tabela da direita. - Ao utilizar o
JOIN
em detrimento de consultas usandoFROM
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.