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 informar0ouNULL, 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
DATEtambé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 conditionExemplos:
mysql> DELETE FROM filmes WHERE ano = 2007; --- Apaga os filmes de 2007mysql> DELETE FROM filmes; --- Apaga todos os filmes da tabelaConsultar 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 JOINfunciona de maneira similar aoLEFT JOIN, só que a tabela que "comanda" a consulta é a tabela da direita. - Ao utilizar o
JOINem detrimento de consultas usandoFROMcom 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.