Académique Documents
Professionnel Documents
Culture Documents
/*
Introdução ao SQL - Parte II
===========================
Folha de Exercícios
Resolução dos exercícios em SQL Server 2000
*/
-- Manipulação de Dados
-- Precedência de Operadores
-- <maior> (,) >>> *,/ >>> +,- >>> NOT >>> AND >>> OR <menor>
SELECT *
FROM Orders
WHERE CustomerID = 'VINET' OR
CustomerID = 'CHOPS' AND
OrderDate = '1996-07-04'
-- IN
-- Apresentar uma lista das encomendas (OrderID, OrderDate)
-- efectuadas pelos clientes com os códigos 'VINET','CHOPS' ou 'HANAR'
SELECT OrderID, OrderDate, CustomerID
FROM Orders
Where CustomerID IN ('VINET','CHOPS','HANAR')
ORDER BY OrderDate DESC
-- BETWEEN
-- Quantas encomendas for efectuadas entre os dias
-- '1996-07-01' e '1996-08-31'
SELECT COUNT(OrderID) AS "Número de Encomendas"
FROM Orders
Where OrderDate BETWEEN '1996-07-01' AND '1996-08-31'
-- HAVING
-- Esta clausula só pode ser utilizada para actuar sobre resultados
-- de grupos.
SELECT ProductID, sum(UnitPrice*Quantity) AS "Total w/Discount",
sum(UnitPrice*Quantity * (1-Discount)) AS "Total"
FROM [Order Details]
WHERE OrderId IN (10248, 10259, 10285, 10300, 10301, 11000)
GROUP BY ProductId
HAVING sum(UnitPrice*Quantity * (1-Discount)) > 200
-- LIKE
-- Apresentar uma lista (CustomerID, CompanyName) dos clientes
-- cujos nomes respeitem as seguintes expressões de procura: 'A_a%' ou '%Bo_t%'
-- Demosnstração da utilização de caracteres especiais ("wildcards") - % e _
SELECT CustomerID, CompanyName
FROM Customers
WHERE CompanyName LIKE 'A_a%' OR CompanyName LIKE '%Bo_t%'
-- ESCAPE
-- Nomes de fornecedores que contenham a string "100%"
SELECT *
FROM Suppliers
WHERE CompanyName LIKE '%100\%%' ESCAPE '\'
-- SubQueries -- Sub-Interrogações
-- Lista das encomendas anotadas atéaomomento de clientes espanhóis.
-- Utilizando o operador IN
SELECT *
FROM ORDERS
WHERE CustomerId IN
(SELECT CustomerId
FROM Customers
WHERE Country = 'Spain')
-- EXISTS
-- Apresentar uma lista dos clientes que não têm encomendas.
SELECT CustomerID, CompanyName
FROM Customers AS CL
WHERE NOT EXISTS
(SELECT CustomerID FROM Orders
WHERE CustomerID = CL.CustomerID)
ORDER BY CompanyName
-- ANY (e ALL)
-- Lista dos Clientes que não são Brasileiros.
SELECT Country,CustomerID, CompanyName
FROM Customers AS CL
WHERE Country = ANY
(SELECT Country FROM Customers
WHERE Country <> 'Brazil')
ORDER BY Country, CompanyName
-- UNION
SELECT convert(char(5),SupplierID) AS "EID", CompanyName, Country, 'F' AS EType
FROM Suppliers
-- Descrição de Dados
-- CREATE: Criação de uma tabela, do seu esquema.
-- Criação de uma nova tabela - "Visits" - para armazenar os registos
-- de visitas feitos a clientes pelos funcionários da Northwind.