Você está na página 1de 29

2008.

1

SQL - Consultas
Escola Estadual Dom Joo Becker
Prof. Eliseu Santos
2008.1
Manipulando Dados
CONSULTA
SELECT
INCLUSO
INSERT
ALTERAO
UPDATE
EXCLUSO
DELETE
2008.1
Consultas SQL
Realizao de consultas em tabelas

SELECT atributo1, atributo2, ...
FROM tabela 1, tabela 2, ...
WHERE condio

2008.1
Consultas SQL
Select Especifica as colunas e expresses exibidas no
resultado da consulta.
From Especifica as tabelas que contm os dados exibidos nos
resultado da consulta.
Where Especifica as condies usadas para filtrar registros no
resultado da consulta.
Order
by
Classifica os resultados da consulta com base nos
dados de uma ou mais colunas.
Group
By
Agrupa as linhas da consulta com base nos valores de
uma das colunas.
Having Especifica as condies usadas para filtrar
agrupamentos de dados no resultado da consulta. S
deve ser usado com GROUP BY.
2008.1
Consultas SQL
Exibir todos os dados de todos os clientes.
SELECT * FROM cliente

Exibir todos os dados de todos os funcionrios.
SELECT * FROM funcionrio

Exibir todos os dados de todos os produtos.
SELECT * FROM produto

2008.1
Selecionando Colunas
Exibir cdigo, nome e telefone de todos os clientes.
SELECT cdigo, nome, fone FROM cliente

Exibir cdigo, nome, estado civil e data de nascimento de
todos os funcionrios.
SELECT cdigo, nome, estcivil, datanasc
FROM funcionrio

Exibir cdigo, nome, preo de custo e preo de venda de
todos os produtos.
SELECT cdigo, nome, custo, venda
FROM produto
2008.1
Eliminando Duplicao na Seleo
Sintaxe:
SELECT DISTINCT <lista de colunas> FROM <tabela>

Exibir o cdigo de todos os clientes que j fizeram pedido
na empresa.
SELECT DISTINCT cliente FROM pedido

Exibir todos os bairros com os respectivos cdigos da cidade
dos funcionrios da empresa.
SELECT DISTINCT bairro, cidade FROM
funcionrio

Exibir o cdigo de todos os tipos de produtos existentes na
empresa.
SELECT DISTINCT cod FROM produto
2008.1
Exibir colunas calculadas
Sintaxe:
SELECT <lista de colunas,expresso> FROM
<tabela>

Exibir cdigo, quantidade em estoque, preo de venda e
valor total (quantidade X preo de venda) para cada
produto.
SELECT cdigo, quantest, venda, ValorTotal =
quantest*venda
FROM produto

Exibir cdigo, nome, salrio e o salrio com 32% de
aumento para todos os funcionrios.
SELECT cdigo, nome, salrio,
Novosalrio=salrio*1.32
FROM funcionrio
2008.1
Exibir colunas calculadas
SUM funo que soma valores de um
atributo
SELECT SUM(salario) FROM clientes
AVG funo que calcula a mdia dos
valores de um atributo
SELECT AVG(salario) FROM clientes
MAX funo que exibe o maior valor de um
atributo
SELECT MAX(salario) FROM clientes
2008.1
Exibir colunas calculadas
MIN funo que exibe o menor valor de um atributo
SELECT MIN(salario) FROM clientes
AS usado para dar nome a uma coluna resultante do
uso de uma funo agregada (COUNT, SUM, AVG, MAX,
MIN, etc)
SELECT AVG(salario) AS media_salarial
FROM clientes

2008.1
Exibir colunas calculadas
Exibir a soma de todos os salrios da empresa.
SELECT SUM(salrio)
FROM funcionrio
Exibir a mdia dos salrios da empresa.
SELECT AVG(salrio)
FROM funcionrio
Exibir o preo mdio de venda dos produtos do tipo
1
SELECT AVG(venda)
FROM produto WHERE tipo=1


2008.1
Exibir colunas calculadas
Exibir o preo do produto mais caro vendido na empresa.
SELECT MAX(venda) Preo FROM produto
Exibir a data de nascimento do homem mais novo da
empresa.
SELECT MIN(datanasc) FROM funcionrio
WHERE sexo=M
Exibir o maior salrio pago a uma funcionria.
SELECT MAX(salrio) FROM funcionrio
WHERE sexo=F
Exibir o menor preo de custo dos produtos do tipo 1.
SELECT MIN(custo) FROM produto WHERE tipo =
1
2008.1
Contando os Registros
Exibir quantos clientes tm cadastro na empresa.
SELECT COUNT(*) FROM cliente
Exibir quantos funcionrio tm e_mail.
SELECT COUNT(e_mail) FROM funcionrio
Exibir a quantas cidades a empresa atende.
SELECT COUNT(DISTINCT cidade)
FROM cliente
Exibir quantos vendedores j atenderam pedido.
SELECT COUNT(DISTINCT vendedor)
FROM pedido
2008.1
Clusula From
Selecionar dados de uma nica tabela
SELECT nome FROM clientes
Para cruzar dados que esto em tabelas diferentes,
preciso listar as tabelas na clusula FROM e usar o
mesmo princpio da operao produto cartesiano da
lgebra relacional para selecionar apenas as linhas com
cdigos correspondentes
SELECT nome, cod_f, data
FROM locacoes, clientes
WHERE locacoes.cod_c = clientes.cod_c
2008.1
Clusula From
Para atributos que possuem o mesmo nome em mais
de uma tabela, preciso incluir o nome da tabela
antes do nome do atributo
SELECT clientes.cod_c
FROM locacoes, clientes
WHERE locacoes.cod_c = clientes.cod_c
possvel definir apelidos para as tabelas e us-los
em vez dos nomes das tabelas
SELECT C.cod_c
FROM locacoes L, clientes C
WHERE L.cod_c = C.cod_c
2008.1
Clusula Where
Os operadores <, <=, >, >=, =, <> podem ser
usados para testar valores de atributos
SELECT * FROM clientes WHERE salario > 100
SELECT * FROM fitas WHERE titulo = Matrix
Os operadores lgicos AND, NOT, OR podem ser
usados para combinar condies
SELECT * FROM clientes
WHERE salario > 100 AND sexo = F

2008.1
Clusula Where
BETWEEN usado para verificar se o valor de um
atributo est em um intervalo de valores
dados dos clientes com salrio entre 500 e 1500
SELECT * FROM clientes
WHERE salario BETWEEN 500 AND 1500
IN usado para verificar se o valor de um atributo est
em um conjunto de valores
dados dos clientes com salrio igual a 500 OU
1500
SELECT * FROM clientes
WHERE salario IN (500,1500)
2008.1
Operando strings
Exibir cdigo e nome de todos os funcionrios que
tenham o nome comeando por M
SELECT cdigo, nome FROM funcionrio
WHERE nome LIKE M%
Exibir cdigo e nome de todos os funcionrios que
tenham o nome terminando por Silva
SELECT cdigo, nome FROM funcionrio
WHERE nome LIKE %Silva
2008.1
Clusula Where
Exibir cdigo e nome de todos os funcionrios que
tenham Costa em qualquer parte do nome.
SELECT cdigo, nome FROM funcionrio
WHERE nome LIKE %Costa%
Exibir cdigo e nome de todos os funcionrios que
tenham o nome comeando por Mar seguido de
um caractere qualquer e terminando por a
SELECT cdigo, nome FROM funcionrio
WHERE nome LIKE 'Mar_a%'
2008.1
Ordenando os resultados
Sintaxe:
SELECT <lista de colunas> FROM <tabela>
ORDER BY <coluna> [ASC] [DESC]

Exibir cdigo, nome e telefone de todos os clientes,
ordenados pelo nome do cliente em ordem ascendente.
SELECT cdigo, nome, fone FROM cliente
ORDER BY nome

Exibir cdigo, nome, estado civil e data de nascimento de
todos os funcionrios, ordenados pela data de nascimento
em ordem descendente.
SELECT cdigo, nome, estcivil, datanasc
FROM funcionrio
ORDER BY datanasc DESC
2008.1
Ordenando os resultados
Exibir cdigo, nome e tipo de todos os
produtos existentes na empresa, ordenados
pelo tipo em ordem ascendente e pelo
nome do produto em ordem descendente.
SELECT cdigo, nome, tipo
FROM produto
ORDER BY nome DESC

2008.1
Agrupando Informaes
Sintaxe:
SELECT <lista de colunas> FROM <tabela>
GROUP BY <coluna> HAVING <condio>

Exibir a quantidade de homens e mulheres da empresa.
SELECT sexo, COUNT(*) Quantidade
FROM funcionrio GROUP BY sexo

Exibir a quantidade de funcionrios e o total e salrios de
cada setor da empresa.
SELECT setor, COUNT(*) Funcionrios,
SUM(salrio)Total FROM funcionrio
GROUP BY setor
2008.1
Consultas com vrias tabelas
Exibir o cdigo de cada pedido e o nome do
cliente que realizou cada um deles.
SELECT pedido.cdigo, cliente.nome
FROM pedido, cliente
WHERE cliente.cdigo = pedido.cliente
2008.1
Consultas com vrias tabelas
Exibir o nome do setor, nome do funcionrio, salrio
e funo exercida por cada funcionrio, ordenados
pelo nome do setor
SELECT s.nome, f.nome , f.salario, fu.funcao
FROM setor s, funcionario f, funcao fu
WHERE s.sigla = f.setor and f.funo =
fu.cdigo
ORDER BY f.nome
2008.1
Sub-Consultas
Uma sub-consulta uma consulta cujo
resultado utilizado por uma outra consulta
mais externa, de forma encadeada e contida
no mesmo comando SELECT.
A consulta mais externa depende da
avaliao da sub-consulta.
2008.1
Sub-Consultas
Quando h necessidade de cruzar informaes de
duas ou mais tabelas, alm do produto cartesiano,
pode-se usar as sub-consultas
Ou seja, uma consulta mais interna retorna
parmetros para a execuo de uma consulta mais
externa

Nome de todos os clientes que realizaram locaes
SELECT nome
FROM clientes
WHERE cod_c IN (SELECT cod_c FROM locacoes)
2008.1
Sub-Consultas
Exibir o cdigo, o nome e a quantidade em
estoque do produto que tem a maior
quantidade em estoque da empresa.
SELECT cdigo, nome, quantest
FROM produto
WHERE quantest = (SELECT MAX
(quantest)
FROM produto)
2008.1
Sub-Consultas
Exibir o cdigo, o nome e o telefone dos clientes
estrangeiros.
Usando sub-consulta
SELECT cdigo,nome,fone FROM cliente
WHERE cidade IN
(SELECT cdigo FROM
cidade WHERE pas <> BRA)

Usando Juno
SELECT c.cdigo,c.nome,c.fone
FROM cliente c, cidade ci
WHERE ci.cdigo = c.cidade and ci.pas <> BRA

2008.1
Sub-Consultas
Exibir o cdigo, o nome e o preo de venda de todos os produtos
que no sejam do tipo Bebidas ou Condimentos.
Usando sub-consulta
SELECT cdigo, nome, venda
FROM produto
WHERE cdigo not IN (SELECT cdigo FROM tipo WHERE
nome IN (Bebidas,Condimentos))

Usando Juno
SELECT p.cdigo,p.nome,p.venda
FROM produto p tipo t
WHERE p.tipo=t.cdigo and t.nome not IN
(Bebidas,Condimentos)

Você também pode gostar