Conceitos Básicos da Instrução SELECT
A instrução SELECT é o comando fundamental na linguagem SQL utilizado para recuperar informações armazenadas em uma ou mais tabelas de um banco de dados relacional.
Palavras-chave (Keywords): O SQL possui um conjunto de palavras reservadas que compõem a sua sintaxe oficial. Essas palavras-chave não devem ser utilizadas como identificadores para nomes de tabelas ou colunas, pois isso pode causar conflitos de inetrpretação no SGBD.
Regras gerais de sintaxe e formatação:
- Terminação: Embora nem todos os Sistemas de Gerenciamento de Banco de Dados (SGBD) exijam, é uma excelente prática encerrar instruções SQL com um ponto e vírgula (
;). - Case Sensitivity: Os comandos SQL não diferenciam letras maiúsculas de minúsculas. No entanto, a convenção da indústria dita que as palavras-chave sejam escritas em maiúsculas e os nomes de objetos (tabelas e colunas) em minúsculas, visando facilitar a leitura e a depuração do código.
- Espaços em branco: O interpretador SQL ignora quebras de linha e espaços extras. Isso permite que as consultas sejam formatadas em múltiplas linhas para melhorar a legibilidade.
Recuperação de uma Única Coluna
Para extrair dados de apenas um campo específico, basta informar o nome da coluna logo após o comando SELECT.
SELECT titulo
FROM catalogo_livros;
Extração de Múltiplas Colunas
Quando for necessário consultar mais de um campo simultaneamente, separe os nomes das colunas por vírgulas. Certifique-se de não adicionar uma vírgula após o último item da lista, para evitar erros de sintaxe.
SELECT id_livro, titulo, autor, preco
FROM catalogo_livros;
Seleção de Todas as Colunas
O caractere curinga asterisco (*) instrui o banco de dados a retornar todas as colunas existentes na tabela especificada. O uso indiscriminado dessa abordagem em ambientes de produção deve ser evitado, pois trafegar colunas não utilizadas pela aplicação consome recursos de rede e reduz a performance geral.
SELECT *
FROM catalogo_livros;
Filtragem de Registros Duplicados
Por padrão, uma consulta retorna todas as linhas correspondentes, incluindo registros duplicados. Para garantir que o conjunto de resultados contenha apenas valores exclusivos, utilize a palavra-chave DISTINCT imediatamente antes das colunas desejadas.
O escopo do DISTINCT abrange todas as colunas listadas na instrução, retornando apenas as combinações únicas de registros.
-- Consulta padrão que pode retornar editoras repetidas
SELECT editora
FROM catalogo_livros;
-- Consulta filtrando apenas editoras únicas
SELECT DISTINCT editora
FROM catalogo_livros;
-- Combinação exclusiva de editora e faixa de preço
SELECT DISTINCT editora, preco
FROM catalogo_livros;
Limitação de Resultados
Dialetos de SQL como MySQL, MariaDB e PostgreSQL utilizam a cláusula LIMIT para restringir o número total de linhas retornadas por uma consulta. Quando combinado com a cláusula OFFSET, torna-se possível criar mecanismos eficientes de paginação de dados.
É importante ressaltar que a contagem do índice das linhas inicia em 0, não em 1.
-- Retorna os 5 primeiros livros da tabela
SELECT titulo
FROM catalogo_livros
LIMIT 5;
-- Ignora os 5 primeiros registros e retorna a próxima sequência
SELECT titulo
FROM catalogo_livros
LIMIT 5 OFFSET 5;
Nota: Em algumas implementações do MySQL, a sintaxe abreviada LIMIT 5, 5 é aceita como um equivalente direto ao uso do OFFSET, onde o primeiro parâmetro indica o deslocamento e o segundo define o limite de registros.
Adição de Comentários ao Código
Documentar o código SQL é essencial para a manutenção de scripts complexos e trabalho em equipe. Existem diferentes formas de inserir anotações que serão completamente ignoradas pelo motor do banco de dados durante a execução:
- Comentários de linha única: Utilize dois traços consecutivos (
--) ou o caractere cerquilha (#, suportado em alguns dialetos específicos) no início do comentário. Todo o texto posicionado à direita será desconsiderado. - Comentários de bloco: Delimite o texto entre
/*e*/. Esta sintaxe é universalmente aceita e permite quebras de linha e parágrafos inteiros dentro do bloco de anotação.
-- Esta consulta busca livros de ficção científica
SELECT titulo
FROM catalogo_livros
WHERE categoria = 'Ficção Científica'; /* Filtro de gênero literário */