labmm4 (t08 - 12/13) - sql continuação

16
Bases de dados: SQL (continuação) Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 08, 12-03-2013

Upload: carlos-santos

Post on 18-Dec-2014

405 views

Category:

Education


4 download

DESCRIPTION

 

TRANSCRIPT

Page 1: LabMM4 (T08 - 12/13) - SQL continuação

Bases de dados: SQL (continuação)

Carlos SantosLabMM 4 - NTC - DeCA - UAAula 08, 12-03-2013

Page 2: LabMM4 (T08 - 12/13) - SQL continuação

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

Page 3: LabMM4 (T08 - 12/13) - SQL continuação

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 colecção de valores

EmployeeNo IN (2,3,4)

LIKE Similar LastName LIKE ‘Nunes’

BETWEEN ... AND Dentro de um conjunto de valores, incluindo os limites

EmployeeNo BETWEEN 2 AND 4

Equivalente a: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

Page 4: LabMM4 (T08 - 12/13) - SQL continuação

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 têm que ter o valor verdadeiro para o resultado final ser verdadeiro

SalesNo > 3 AND Customer < “Smith”

O AND tem maior prioridade do que o OR

OR Se qualquer uma das expressões tiver o valor verdadeiro, o resultado final é verdadeiro

SalesNo > 3 OR Customer < “Smith”

NOT Inverte o resultado booleano

SalesNo NOT IN (2; 3; 4)

Page 5: LabMM4 (T08 - 12/13) - SQL continuação

SQL: SELECT DISTINCT … FROM

SELECT oficinasql.viaturas.MarcaFROM oficinasql.viaturas;

SELECT DISTINCT oficinasql.viaturas.MarcaFROM oficinasql.viaturas;

Page 6: LabMM4 (T08 - 12/13) - SQL continuação

SQL: SELECT … FROM ... WHERE

• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.ModeloFROM oficinasql.viaturasWHERE oficinasql.viaturas.Marca < 'Fiat' ORoficinasql.viaturas.Marca > 'Smart';

• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.ModeloFROM oficinasql.viaturasWHERE ((oficinasql.viaturas.Marca < 'Fiat') OR(oficinasql.viaturas.Marca > 'Smart')) AND oficinasql.viaturas.Modelo LIKE ‘C%’;

Page 7: LabMM4 (T08 - 12/13) - SQL continuação

SQL: SELECT … FROM ... WHERE

• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.ModeloFROM oficinasql.viaturasWHERE oficinasql.viaturas.Marca IN ('Citroen', 'Smart');

• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.ModeloFROM oficinasql.viaturasWHERE oficinasql.viaturas.Marca BETWEEN "Ferrari" AND "Renault"ORDER BY oficinasql.viaturas.Marca;

Page 8: LabMM4 (T08 - 12/13) - SQL continuação

SQL: exemplos

• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.ModeloFROM oficinasql.viaturasWHERE oficinasql.viaturas.DataVenda IS NULL;

• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.ModeloFROM oficinasql.viaturasWHERE oficinasql.viaturas.DataVenda IS NOT NULL;

Page 9: LabMM4 (T08 - 12/13) - SQL continuação

SQL: exemplos

• SELECT oficinasql.viaturas.MarcaFROM oficinasql.viaturasWHERE NOT oficinasql.viaturas.Marca IN ("Subaru", "Ferrari", "Renault");

Page 10: LabMM4 (T08 - 12/13) - SQL continuação

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

Page 11: LabMM4 (T08 - 12/13) - SQL continuação

SQL: Funções pré-definidas

• SELECT MAX(oficinasql.viaturas.Preco)FROM oficinasql.viaturas;

• SELECT COUNT(oficinasql.viaturas.Modelo)FROM oficinasql.viaturas;

Page 12: LabMM4 (T08 - 12/13) - SQL continuação

SQL: AS

• SELECT COUNT(oficinasql.viaturas.Modelo) AS TotalViaturasFROM oficinasql.viaturas;

• 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”;

TotalViaturas

Page 13: LabMM4 (T08 - 12/13) - SQL continuação

SQL: Funções pré-definidas

• SELECT oficinasql.viaturas.Marca, COUNT(oficinasql.viaturas.Modelo)FROM oficinasql.viaturasGROUP BY oficinasql.viaturas.Marca;

Page 14: LabMM4 (T08 - 12/13) - SQL continuação

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

Page 15: LabMM4 (T08 - 12/13) - SQL continuação

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

Page 16: LabMM4 (T08 - 12/13) - SQL continuação

SQL UPDATE

UPDATE oficinasql.clientes SET oficinasql.clientes.Nome = "Serafim Saudoso", oficinasql.clientes.Idade = 65WHERE oficinasql.clientes.idClientes = 12;