Tutorial SQL - Seu guia prático para execução de consultas – Parte II

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (12)  (0)

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.


 

26-09pic01.JPG

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.


 

26-09pic02.JPG

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.

 

26-09pic03.JPG

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).

 

26-09pic04.JPG

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 também

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?