08 labmm4 - bases de dados

17
Bases de dados: SQL (continuação) Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 08, 14-03-2012

Upload: carlos-santos

Post on 08-Jul-2015

642 views

Category:

Education


0 download

TRANSCRIPT

Page 1: 08 LabMM4 - Bases de dados

Bases de dados: SQL (continuação)

Carlos SantosLabMM 4 - NTC - DeCA - UAAula 08, 14-03-2012

Page 2: 08 LabMM4 - Bases de dados

SQL | Structured Query Language

Desenvolvida no início dos anos 70. Permite a interação com os SGBD e as BD aí existentes. Utilizada por todos os SGBDR (embora com pequenas diferenças!). Está estruturada em várias categorias:

• Data Query Language (DQL) – consultar os dados existentes na BD• SELECT

• Data Manipulation Language (DML) – criar e modificar os dados na BD• INSERT, UPDATE, DELETE

• Data Definition Language (DDL) – criar e modificar objectos da BD (tabelas, views, …), ou a própria BD• CREATE, ALTER, DROP

• Data Control Language (DCL) – gerir os privilégios dos utilizadores na gestão da BD, dos seus objectos e dos dados aí existentes• GRANT, REVOKE

Page 3: 08 LabMM4 - Bases de dados

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: 08 LabMM4 - Bases de dados

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: 08 LabMM4 - Bases de dados

SQL: SELECT DISTINCT … FROM

SELECT oficinasql.viaturas.MarcaFROM oficinasql.viaturas;

SELECT DISTINCT oficinasql.viaturas.MarcaFROM oficinasql.viaturas;

Page 6: 08 LabMM4 - Bases de dados

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: 08 LabMM4 - Bases de dados

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: 08 LabMM4 - Bases de dados

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: 08 LabMM4 - Bases de dados

SQL: exemplos

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

Page 10: 08 LabMM4 - Bases de dados

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: 08 LabMM4 - Bases de dados

SQL: Funções pré-definidas

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

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

Page 12: 08 LabMM4 - Bases de dados

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: 08 LabMM4 - Bases de dados

SQL: Funções pré-definidas

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

Page 14: 08 LabMM4 - Bases de dados

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: 08 LabMM4 - Bases de dados

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: 08 LabMM4 - Bases de dados

SQL UPDATE

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

Page 17: 08 LabMM4 - Bases de dados

SQL DELETE

DELETE FROM oficinasql.clientesWHERE oficinasql.clientes.idClientes = 12;

DELETE FROM oficinasql.clientes;

• Apagaria todos os registos da tabela!