Tutorial SQL - Seu guia prático para execução de consultas – Parte II
Veja alguns exemplos da teoria estudada no primeira parte de Tutorial SQL.
Tutorial SQL
Seu guia prático para execução de consultas – Parte II
Reinaldo Viana
Prezado Leitor, diante da teoria apresentada na primeira parte desse tutorial, já é possível estudarmos alguns exemplos, que serão apresentados de forma gradativa em relação à complexidade. Caso haja dificuldade no entendimento, sugiro que você estude a parte teórica que fundamenta a solução apresentada.
Praticando consultas
Para os exemplos, serão utilizadas as tabelas CLIENTE e FONE, apresentadas na primeira parte do tutorial.
Exemplo 01: Listar todas as informações da tabela CLIENTE.
Resposta:
SELECT *
FROM CLIENTE
Comentário: neste caso, o * substitui a declaração de todos os campos da tabela CLIENTE.
Outra forma de realizar esta consulta é:
SELECT CLIENTE.*
FROM CLIENTE
É possível também escrever a consulta da seguinte forma, renomeando (virtualmente) a tabela CLIENTE:
SELECT C.*
FROM CLIENTE C
Exemplo 02: Listar o nome e a data de nascimento de todos os clientes.
Resposta:
SELECT nome, nascimento
FROM CLIENTE
Comentário: aqui, bastou inserir na cláusula SELECT os campos correspondentes à informação pedida.
Outra forma de realizar esta consulta é:
SELECT CLIENTE.nome, CLIENTE.nascimento
FROM CLIENTE
Ou mesmo:
SELECT C.nome, C.nascimento
FROM CLIENTE C
Exemplo 03: Listar o nome e o CPF dos clientes do sexo masculino.
Resposta:
SELECT nome, cpf
FROM CLIENTE
WHERE sexo=’masculino’
Comentário: neste caso, utilizou-se o filtro sexo=’masculino’ para retornar apenas os indivíduos do sexo masculino.
Exemplo 04: Ordenar a listagem anterior por nome, de forma decrescente.
Resposta:
SELECT nome, cpf
FROM CLIENTE
WHERE sexo=’masculino’
ORDER BY nome DESC
Comentário: aproveitou-se a solução anterior adicionando-se apenas a cláusula de ordenação de acordo com a descrição do problema.
Exemplo 05: Listar o nome e o salário dos clientes do sexo masculino que ganham menos de R$ 3000.
Resposta:
SELECT nome, salario
FROM CLIENTE
WHERE sexo=’masculino’ and salario < 3000
Comentário: aqui, tornou-se necessário o uso da expressão lógica de conjunção (and), para poder recuperar os clientes do sexo masculino (sexo=’masculino’) que ganham menos de R$ 3000 (salario < 3000). A expressão lógica (and) faz com que o SGBD retorne apenas as linhas que obedecem as duas condições simultaneamente.
Exemplo 06: Listar o nome e o telefone residencial dos clientes.
A solução deste exemplo está apresentada na Nota 1.
Nota 1. Recuperando informações de várias tabelas
Em diversas situações, existe a necessidade da execução de consultas cujos campos estão localizados em tabelas diferentes. Neste caso, além de declarar as tabelas, é necessário indicar que elas estão relacionadas para que o SGBD possa recuperar as informações de forma coerente. Há duas formas de realizar esta tarefa:
- Declarar as tabelas na cláusula FROM, indicando o relacionamento na cláusula WHERE, ou;
- Declarar as tabelas e indicar o tipo de relacionamento na cláusula FROM. Esta abordagem será estudada em outra oportunidade.
Para o Exemplo 06, temos:
SELECT nome, fone
FROM CLIENTE, FONE
WHERE CLIENTE.codigo=FONE.codigo and tipo=’residencial’
Comentário: Na cláusula FROM, foram declaradas as tabelas que possuem os campos (nome e fone) que devem aparecer no resultado. Na cláusula WHERE, CLIENTE.codigo=FONE.codigo representa o relacionamento entre as tabelas CLIENTE e FONE. Através desse trecho de código o SGBD filtra os registros que correspondem às informações corretas de cada cliente. Já o código tipo=’residencial’ solicita ao SGBD que sejam recuperados apenas os telefones residenciais.
Na realidade, nessas situações o SGBD comumente realiza os seguintes passos:
- Execução da operação de produto cartesiano entre as tabelas. Isto significa combinar cada linha da tabela CLIENTE com cada linha da tabela FONE, resultando numa estrutura que possui todas as colunas existentes nas tabelas envolvidas, e quantidade de linhas igual ao produto das linhas de cada tabela (no exemplo, 5 x 5 = 25 linhas). A Figura 1 representa esta situação.
Figura 1. Produto cartesiano entre as tabelas CLIENTE e FONE.
- Remoção das linhas que não correspondem à realidade do banco de dados. Observe que as linhas realçadas em cinza representam informações incorretas. Na prática, devem permanecer na tabela apenas as linhas cujos valores do campo código são idênticos (CLIENTE.codigo=FONE.codigo – linhas marcadas da Figura 1), configurando a situação apresentada na Figura 2.
Figura 2. Estrutura que corresponde à realidade dos dados do banco de dados.
- A cláusula tipo=’residencial’ considera apenas os telefones que são do tipo residencial (as linhas marcadas na Figura 2 são descartadas). Neste caso, temos o resultado intermediário apresentado na Figura 3.
Figura 3. Estrutura cujas linhas correspondem aos requisitos (cláusula WHERE) do
Exemplo 06.
- Finalmente, são mostrados apenas os campos declarados na cláusula SELECT (ver
Figura 4).
Figura 4. Resultado final da consulta
Exemplo 07: Listar o nome, o sexo e o fone celular dos clientes.
Resposta:
SELECT nome, sexo, fone
FROM CLIENTE, FONE
WHERE CLIENTE.codigo=FONE.codigo and tipo=’celular’
Comentário: esta solução é semelhante à do exemplo 6, sendo adicionado o campo sexo e modificado o campo tipo (tipo=’celular’) para recuperar apenas os clientes que possuem celular.
Neste artigo, foram apresentados diversos exemplos de consultas utilizando a linguagem SQL. Na última parte desse tutorial, estudaremos exemplos mais complexos, envolvendo funções de agregação e subconsultas.
Até breve!
Leia a primeira parte deste artigo em:

Space do autor

Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL


9
0
Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!