Parte 3

Propaganda
SQL – Structured Query
Language
 Tabela = Relação
 DDL – Data Definition Language
 Sub-conjunto do SQL que suporta a criação, remoção e
modificação de tabelas
 Domínio dos atributos




integer
real
char(n)
date
Introdução à Manipulação de Dados
1
DDL - Tabelas
 Definição de uma tabela
 CREATE TABLE
 Ex:
CREATE TABLE cliente (
id: integer,
nome: char(60),
morada: char(150),
telefone: integer
)
Introdução à Manipulação de Dados
2
DDL – Tuplos (registos)
 Inserção
 INSERT
 Ex:
INSERT INTO
cliente (BI, nome, morada, telefone)
VALUES (8236014, ‘João’, Évora’, 266748302)
 Pode-se omitir a lista de atributos da tabela, listando os valores a
inserir pela ordem apropriada (definida aquando da criação da tabela),
mas é bom estilo explicitar os nomes.
Introdução à Manipulação de Dados
3
DDL – Tuplos (registos)
 Remoção
 DELETE
DELETE FROM cliente
WHERE cliente.nome = ‘João’
 Modificação
 UPDATE
UPDATE cliente A
SET A.data_nasc = 14/10/72
WHERE A.nome = ‘Maria’
Introdução à Manipulação de Dados
4
Restrições de integridade
 São condições que restringem os dados a guardar
Tipos de restrições:
 Domínio dos atributos,
 Chave (principal meio de identificação de um
tuplo/valor único para cada tuplo/preenchimento
obrigatório),
 Chave externa/estrangeira (a chave externa na relação
que referencia tem que ser igual à chave primária na
relação referenciada),
 Outras (ex: data de casamento tem que ser superior à
data de nascimento).
Introdução à Manipulação de Dados
5
Chave externa
Exemplo
Chave primária
id_
reserva
Data_
reserva
duração
data_
chegada
id
id
nome
data_nasc
telefone
45670
10/5/05
3
20/6/05
1236
1236
Luís
12/6/69
21345879
1
47589
22/8/05
2
4/10/05
2867
3728
Maria
4/10/72
26674839
3
39658
2/4/05
3
30/4/05
3462
2867
Rute
30/4/70
28982134
6
29854
20/705
4
3/8/05
1236
3462
João
4/10/72
21291403
8
Reserva
(relação que referencia)
 Qualquer reserva deve referir um cliente;
Cliente
(relação referenciada)
 Podem existir clientes sem reservas efectuadas.
CREATE TABLE reserva (
id_reserva: integer,
Data_reserva: date,
duração: integer,
data_chegada: date,
PRIMARY KEY (id_reserva)
FOREIGN KEY (id) REFERENCES cliente;
)
Introdução à Manipulação de Dados
6
SQL- SELECT
 SELECT [DISTINCT] lista-select
FROM lista-from
WHERE qualificação
 O resultado é uma tabela!
Introdução à Manipulação de Dados
7
SQL- SELECT
 DISTINCT é opcional
 indica se a tabela resultado deve ou não conter tuplos
duplicados
 lista-from
 lista de tabelas – especifica o produto cartesiano entre
tabelas listadas
 lista-select
 lista de (expressões envolvendo) nomes de colunas de
tabelas referidas na lista-from
Introdução à Manipulação de Dados
8
SQL- SELECT
 qualificação
 é uma expressão que utiliza as operações lógicas AND,
OR e NOT, definindo condições da forma expr op expr,
onde
 op é um operador de comparação: <, <=, =, >=, >,
<>
 expr é um
 nome de coluna,
 constante
 expressão (aritmética ou de cadeia de caracter)
Introdução à Manipulação de Dados
9
Exemplo
id
nome
data_nasc
telefone
1236
Luís
12/6/69
21345879
1
3728
Maria
4/10/72
26674839
3
2867
Rute
30/4/70
28982134
6
3462
João
4/10/72
21291403
8
 Qual o nome e data de nascimento de todos os clientes?
 SELECT nome, data_nasc
FROM cliente
 Quais os clientes que nasceram depois de 1970?
 SELECT nome
FROM clientes
WHERE data_nasc > 31/12/1970
Introdução à Manipulação de Dados
10
Exemplo
 SELECT data_nasc
FROM cliente
data_nasc
12/6/69
4/10/72
30/4/70
4/10/72
 SELECT DISTINCT data_nasc
FROM cliente
data_nasc
12/6/69
4/10/72
30/4/70
Introdução à Manipulação de Dados
11
Exemplo
id_
reserva
Data_
reserva
duração
data_
chegada
id
id
nome
data_nasc
telefone
1236
Luís
12/6/69
21345879
1
45670
10/5/05
3
20/6/05
1236
47589
22/8/05
2
4/10/05
2867
3728
Maria
4/10/72
26674839
3
39658
2/4/05
3
30/4/05
3462
2867
Rute
30/4/70
28982134
6
29854
20/705
4
3/8/05
1236
3462
João
4/10/72
21291403
8
Reserva
Cliente
 Quais as reservas do Luís?
 SELECT reserva.id_reserva, reserva.data_chegada,
reserva.duração
FROM reserva, cliente
WHERE cliente.nome = ‘Luís’ AND cliente.id = reserva.id
Introdução à Manipulação de Dados
12
Operadores de agregação
 COUNT ([DISTINCT] A)
 número de valores (únicos) na coluna A
 SUM ([DISTINCT]A)
 soma de todos os valores (únicos) na coluna A
 AVG ([DISTINCT]A)
 média de todos os valores (únicos) na coluna A
 MAX (A)
 o valor máximo na coluna A
 MIN (A)
 o valor mínimo na coluna A
Introdução à Manipulação de Dados
13
Exemplos
 Qual o número de clientes que nasceu depois de 1970?
 SELECT COUNT (data_nasc)
FROM clientes
WHERE data_nasc > 31/12/70
 Qual a duração média das reservas efectuadas após
16/7/2005?
 SELECT AVG (duração)
FROM reservas
WHERE data_reserva > 16/7/05
 Qual a duração mínima das reservas efectuadas pelo Luís?
 SELECT MIN (reserva.duração)
FROM reserva, cliente
WHERE cliente.nome = ‘Luís’ AND cliente.id = reserva.id
Introdução à Manipulação de Dados
14
Download