1. Bases de dados: SQL (continuação)
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 08, 12-03-2013
2. Modelo lógico vs modelo físico
O modelo lógico representa todas as lógicas inerentes ao problema:
tabelas, campos, chaves primárias e as suas relações. Deve incluir:
• entidades e respetivos atributos
• chaves primárias
• propriedades de relações
• relações e seus tipos
O modelo físico é uma versão mais completa do modelo lógico, sendo
adicionada a informação necessária para que esse modelo possa ser
implementado num SGBDR. Deve incluir:
• chaves estrangeiras
• tabelas de relação
• identificação do tipo de dados e suas características especiais (UN,NN,...)
3. SQL | Operadores e algumas funções
símbolo descrição exemplo observações
= Igual EmployeeNo = 2
> Maior EmployeeNo > 2
< Menor EmployeeNo < 2
<> Diferente EmployeeNo <> 2
>= Maior ou igual EmployeeNo >= 2
<= Menor ou igual EmployeeNo <= 2
IN Igual a um valor dentro de uma EmployeeNo IN (2,3,4)
colecção de valores
LIKE Similar LastName LIKE ‘Nunes’
BETWEEN ... AND Dentro de um conjunto de valores, EmployeeNo BETWEEN 2 AND Equivalente a:
incluindo os limites 4 EmployeeNo IN (2,3,4)
IS NULL DateEmployed IS NULL
IS NOT NULL DateEmployed IS NOT NULL
NOW() Devolve a DATA e HORA do servidor
4. SQL | Operadores Lógicos
AND, OR e NOT
• Estes operadores têm uma prioridade inferior relativamente aos
apresentados no slide anterior
• As prioridades podem ser alteradas através da utilização de ( )
símbolo descrição exemplo observações
AND As duas expressões SalesNo > 3 AND Customer O AND tem maior prioridade do que
têm que ter o valor < “Smith” o OR
verdadeiro para o
resultado final ser
verdadeiro
OR Se qualquer uma das SalesNo > 3 OR Customer <
expressões tiver o “Smith”
valor verdadeiro, o
resultado final é
verdadeiro
NOT Inverte o resultado SalesNo NOT IN (2; 3; 4)
booleano
5. SQL: SELECT DISTINCT … FROM
SELECT oficinasql.viaturas.Marca
FROM oficinasql.viaturas;
SELECT DISTINCT oficinasql.viaturas.Marca
FROM oficinasql.viaturas;
6. SQL: SELECT … FROM ... WHERE
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE oficinasql.viaturas.Marca < 'Fiat' OR
oficinasql.viaturas.Marca > 'Smart';
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE ((oficinasql.viaturas.Marca < 'Fiat') OR
(oficinasql.viaturas.Marca > 'Smart'))
AND oficinasql.viaturas.Modelo LIKE ‘C%’;
7. SQL: SELECT … FROM ... WHERE
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE oficinasql.viaturas.Marca IN ('Citroen', 'Smart');
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE oficinasql.viaturas.Marca BETWEEN "Ferrari" AND "Renault"
ORDER BY oficinasql.viaturas.Marca;
8. SQL: exemplos
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE oficinasql.viaturas.DataVenda IS NULL;
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE oficinasql.viaturas.DataVenda IS NOT NULL;
9. SQL: exemplos
• SELECT oficinasql.viaturas.Marca
FROM oficinasql.viaturas
WHERE NOT oficinasql.viaturas.Marca IN ("Subaru", "Ferrari", "Renault");
10. SQL: Funções pré-definidas
Funções pré-definidas que trabalham sobre grupos de dados
• AVG – valor médio
• MIN– valor mínimo
• MAX – valor máximo
• COUNT – número de elementos
• SUM – soma
11. SQL: Funções pré-definidas
• SELECT MAX(oficinasql.viaturas.Preco)
FROM oficinasql.viaturas;
• SELECT COUNT(oficinasql.viaturas.Modelo)
FROM oficinasql.viaturas;
12. SQL: AS
• SELECT COUNT(oficinasql.viaturas.Modelo) AS TotalViaturas
FROM oficinasql.viaturas;
TotalViaturas
• SELECT COUNT(oficinasql.viaturas.Modelo)
FROM oficinasql.viaturas AS tViat
... a partir daqui podemos utilizar “tViat” sempre que for necessário referir
a tabela “oficinasql.viaturas”;
13. SQL: Funções pré-definidas
• SELECT oficinasql.viaturas.Marca, COUNT(oficinasql.viaturas.Modelo)
FROM oficinasql.viaturas
GROUP BY oficinasql.viaturas.Marca;
14. SQL INSERT
INSERT INTO oficinasql.clientes VALUES (NULL, 'Joaquim Soares',
981234567, ‘Rua Estreita');
• Desta forma inserem-se valores em todos os campos da tabela pela
ordem como estão declaradas as colunas
• Utiliza-se o NULL em campos com AI (por exemplo, no caso da PK) ou
onde não se queira inserir informação
15. SQL INSERT
INSERT INTO oficinasql.clientes (Nome,Idade) VALUES ('Serafim
Saudade', 24);
• Podem inserir-se valores apenas em alguns campos
• Campos com AI serão actualizados automaticamente