Download - LabMM4 (T08 - 12/13) - SQL continuação
![Page 1: LabMM4 (T08 - 12/13) - SQL continuação](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051610/5494c5d6b479596a4d8b4b90/html5/thumbnails/16.jpg)
SQL UPDATE
UPDATE oficinasql.clientes SET oficinasql.clientes.Nome = "Serafim Saudoso", oficinasql.clientes.Idade = 65WHERE oficinasql.clientes.idClientes = 12;