Sei sulla pagina 1di 34

SQL

Structured Query Language

53
SQL – Structured Query Language
( Linguagem Estrutura de Consulta )
Compõe-se de:
•DDL – criação do esquema, ou seja, estruturas de armazenamento
•DML – linguagem de consulta baseada em álgebra relacional
•DCL – linguagem de controle de acessos e autorização

Estrutura básica de uma expressão SQL:

Onde Ai = atributo i, ti = tabela i e C = conjunto de condições 54


SQL
ƒForma o produto cartesiano das tabelas indicadas na cláusula FROM (quando
houver mais de uma tabela na cláusula)
ƒExecuta uma seleção da álgebra relacional usando as condições da cláusula
WHERE
ƒProjeta o resultado para os atributos da cláusula SELECT

Obs.: O caractere * permite selecionar todos os atributos de uma ou mais


tabelas, quando colocado após a cláusula SELECT
Ex.: SELECT * FROM Tabela1
55
SELEÇÃO
A SELEÇÃO DE UMA TABELA “T” COM REFERÊNCIA A CERTA
CONDIÇÃO, É UMA OUTRA TABELA “R” QUE CONTÉM TODAS AS
LINHAS DE “T” PARA AS QUAIS A CONDIÇÃO É CERTA.
NRO-PED DATA REG-VDA TOTAL
10 23/01/86 SP 1250

T 11
12
13/12/87
27/01/86
RJ
SP
722
347
14 28/04/87 MG 2455
17 27/03/86 GO 145

R=SELEÇÃO T;
(REG-VDA .NEQ. ‘SP’ AND TOTAL .GT. 500)
NRO-PED DATA REG-VDA TOTAL

R 11 13/12/87 RJ 722

14 28/04/87 MG 2455
56
SELEÇÃO - Exemplos
TAB. AGÊNCIAS AG-NUM AG-NOME ENDEREÇO REGIÃO
11-002 Itaim R. Dr. Mário F. Sul
11-003 Sto. Amaro Lgo. 13 de Maio Sul
12-005 Boa Vista R. Boa Vista, 2 Centro
12-007 Direita R. Direita, 344 Centro
15-001 Diamantina R. Diamantina Norte

a) SELECT * AG-NUM AG-NOME ENDEREÇO REGIÃO


11-002 Itaim R. Dr. Mário F. Sul
FROM Agências
11-003 Sto. Amaro Lgo. 13 de Maio Sul
12-005 Boa Vista R. Boa Vista, 2 Centro
12-007 Direita R. Direita, 344 Centro
15-001 Diamantina R. Diamantina Norte

AG-NOME REGIÃO
b) SELECT AG-NOME, REGIÃO
Itaim Sul
FROM Agências
Sto. Amaro Sul
Boa Vista Centro
Direita Centro
Diamantina Norte 57
SELEÇÃO - Exemplos
TAB. AGÊNCIAS AG-NUM AG-NOME ENDEREÇO REGIÃO
11-002 Itaim R. Dr. Mário F. Sul
11-003 Sto. Amaro Lgo. 13 de Maio Sul
12-005 Boa Vista R. Boa Vista, 2 Centro
12-007 Direita R. Direita, 344 Centro
15-001 Diamantina R. Diamantina Norte

c) SELECT AG-NOME, REGIÃO AG-NOME REGIÃO


FROM Agências Boa Vista Centro
WHERE REGIÃO = “Centro” Direita Centro

d) SELECT AG-NOME, REGIÃO AG-NOME REGIÃO


FROM Agências Itaim Sul
Sto. Amaro Sul
WHERE REGIÃO <> “Centro”
Diamantina Norte

e) SELECT REGIÃO REGIÃO f) SELECT DISTINCT REGIÃO


FROM Agências Sul
FROM Agências
Sul REGIÃO
Centro Sul
Centro Centro
58
Norte Norte
JOIN - Fusão
A fusão de duas tabelas A e B com referência a um atributo ou conjunto de
atributos comuns é uma tabela que contém todas as linhas obtidas
concatenando linhas de A e linhas de B para as quais o atributo escolhido tem
o mesmo valor.

A: PEDIDOS B: FORNECEDORES
PEDIDO FORNEC DATA FORNEC NOME
720 214 110295 214 ALFA AS
721 273 220595 273 BETA AS
916 214 120396 283 GAMA AS
930 273 240496

C: Fusão de A e B segundo FORNEC


PEDIDO FORNEC DATA NOME
720 214 110295 ALFA AS
721 273 220595 BETA AS
916 214 120396 ALFA AS
930 273 240496 BETA AS 59
JOIN - Exemplos
TAB. AGÊNCIAS TAB. CLIENTES
AG-NUM AG-NOME ENDEREÇO REGIÃO NUM-CLI NOM-CLI AG-NUM END-CLI

11-002 Itaim R. Dr. Mário F. Sul 1002 Jair Bastos 12-005 R. ....

1003 Nair Mendes 15-001 Av. .....


11-003 Sto. Amaro Lgo. 13 de Maio Sul
1004 Nelson 11-002 R. .....
12-005 Boa Vista R. Boa Vista, 2 Centro Alves
1005 Ana Pádua 11-002 R. .....
12-007 Direita R. Diereita, 344 Centro
1006 Hugo Torres 11-003 ...
15-001 Diamantina R. Diamantina Norte 1007 Tiago Melo 11-002 ...

a) SELECT * FROM Agências, Clientes Æ Produto Cartesiano


NUM-CLI NOM-CLI AG-NOME
b) SELECT NUM-CLI,NOM-CLI,AG-NOME
1002 Jair Bastos Boa Vista
FROM Agências, Clientes
1003 Nair Mendes Diamantina
WHERE
1004 Nelson Alves Itaim
Agências.AG-NUM = Clientes.AG-NUM
1005 Ana Pádua Itaim
1006 Hugo Torres Sto. Amaro
60
1007 Tiago Melo Itaim
JOIN - Exemplos
TAB. AGÊNCIAS TAB. CLIENTES
AG-NUM AG-NOME ENDEREÇO REGIÃO NUM-CLI NOM-CLI AG-NUM END-CLI

11-002 Itaim R. Dr. Mário F. Sul 1002 Jair Bastos 12-005 R. ....

1003 Nair Mendes 15-001 Av. .....


11-003 Sto. Amaro Lgo. 13 de Maio Sul
1004 Nelson 11-002 R. .....
12-005 Boa Vista R. Boa Vista, 2 Centro Alves
1005 Ana Pádua 11-002 R. .....
12-007 Direita R. Diereita, 344 Centro
1006 Hugo Torres 11-003 ...
15-001 Diamantina R. Diamantina Norte 1007 Tiago Melo 11-002 ...

c) SELECT NUM-CLI, NOM-CLI, AG-NOME NUM-CLI NOM-CLI AG-NOME

FROM Agências, Clientes 1004 Nelson Alves Itaim


1005 Ana Pádua Itaim
WHERE Agências.AG-NUM=Clientes.AG-NUM
1006 Hugo Torres Sto. Amaro
AND REGIÃO=“Sul”
1007 Tiago Melo Itaim

d) SELECT NOM-CLI, NUM-CLI, AG-NOME NOM-CLI NUM-CLI AG-NOME

FROM Agências, Clientes Nair Mendes 1003 Diamantina


WHERE Agências.AG-NUM=Clientes.AG-NUM Nelson Alves 1004 Itaim 61
AND NOM-CLI LIKE “N%”
Normalização

62
Normalização

Normalização é uma técnica aceita para aumentar a confiabilidade na extração e


na atualização de dados num banco de dados. Partimos de dados não-
normalizados e otimizados até a 3ª Forma Normal.
Note que cada grau de otimização depende do anterior, isto é, para ir à 2ª F.N. é
necessário que a tabela esteja na 1ª F.N., e para ir à 3ª F.N., é necessário que a
tabela esteja na 2ª F.N.
Nem sempre é conveniente atingir a 3ª F.N., por várias razões. Por exemplo, o
aumento da quantidade de tabelas (que provoca, no mínimo, prejuízo de
performance) e pouco interesse de manter-se a consistência ou integridade dos
dados.

63
Consequências da Não-Normalização
PEDIDO
DES- VAL- VAL- VAL-
NUM DAT NUM- NOM- END- NUM- NOM- QTD PRC- PRC- PED-
CLI CLI CLI PRD PRD UNT TOT TOT

238 28/04 864 CARLOS RUA A, 21 GIZ 100 8,00 800,00 2180,00
N.76

238 28/04 864 CARLOS RUA A, 63 LÁPIS 240 2,00 480,00 2180,00
N.76

238 28/04 864 CARLOS RUA A, 16 CLIPS 10 90,00 900,00 2180,00


N.76
* * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * *
RUA
302 18/05 864 CARLOS CHUÍ 21 GIZ 100 9,00 900,00 900,00
N. 240
PERGUNTAS:
•Pode-se manter informação sobre um cliente que nunca fez pedido?
•O que acontece com os dados do cliente se for excluído o único pedido que
ele fez? 64
•O que é necessário fazer para alterar informações sobre um cliente?
Normalização
PEDIDO
DES- VAL- VAL- VAL-
NUM DAT NUM- NOM- END- NUM- NOM- QTD PRC- PRC- PED-
# CLI CLI CLI PRD PRD UNT TOT TOT

238 28/04 864 CARLOS RUA A, 21 GIZ 100 8,00 800,00 2180,00
N.76

238 28/04 864 CARLOS RUA A, 63 LÁPIS 240 2,00 480,00 2180,00
N.76

238 28/04 864 CARLOS RUA A, 16 CLIPS 10 90,00 900,00 2180,00


N.76

* * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * *
RUA
302 18/05 864 CARLOS CHUÍ 21 GIZ 100 9,00 900,00 900,00
N. 240

NORMALIZAÇÃO
65
PED
NUM DAT NUM-CLI VAL-PED-
PK FK TOT
* * * * CLI
* * * *
NUM NOM DES-END-CLI
* * * *
238 28/04 864 2180,00 * * *
* * * * * * *
* * * * * * *
* * * * 864 CARLOS RUA CHUÍ, N.240
302 18/05 864 900,00

ITMPRD PRD
NUM- NUN- QTD VAL-PRC-TOT NUM NOM VAL-PRC-UNT
PED
PRD * * *
PK
16 CLIPS 98,00
* * * *
* * *
* * * *
* * *
* * * *
21 GIZ 9,00
238 21 100 800,00
* * *
238 63 240 480,00
* * *
238 16 10 900,00
63 LÁPIS 2,60
* * * *
302 21 100 900,00
66
1ª FN – Exemplo 1
ELIMINAR DADO ESTRUTURADO

FUN
NUM # NOM NUM-TEL-CMP VAL-SAL
0100 JOÃO 011 2345678 90000
0200 CRISTINA 0194 424166 8888
* * * *
* * * *

1ª FN

FUN
NUM # NOM COD-DDD NUM-TEL VAL-SAL
0100 JOÃO 011 2345678 9000
0200 CRISTINA 0194 424166 8888
* * * * *
* * * * * 67
1ª FN – Exemplo 2
ELIMINAR DADO REPETITIVO

FUN
NUM # NOM NOM-DPD VAL-SAL
0100 JOÃO JOSÉ,MARIA,CAIO 90000
0300 JOSÉ BEATRIZ 80000
* * * *
* * * *

1ª FN
FUN
NUM # NOM NOM-DPD VAL-SAL
0100 JOÃO JOSÉ 90000
0100 JOÃO MARIA 90000
0100 JOÃO CAIO 90000
0300 JOSÉ BEATRIZ 90000 68
Dependência Funcional

(Anexo)

69
2ª FN – Exemplo 1
FUN NUM NOM NOM-DPD VAL-SAL NUM-DEP NOM-DIR
0100 JOÃO JOSÉ 90000 PESQUISA CAROLINE
0100 JOÃO MARIA 90000 PESQUISA CAROLINE
0100 JOÃO CAIO 90000 PESQUISA CAROLINE
* * *

2ª FN
FUN
NUM NOM VAL-SAL NOM-DEP NOM-DIR
0100 JOÃO 90000 PESQUISA CAROLINE
* * * * *

DPD +
NUM-FUN NOM-DPD
0100 JOSÉ
0100 MARIA
0100 CAIO 70
* *
2ª FN – Exemplo 2
RSV
NOM- DAT-INI- NUM- TIP- VAL- QTD- VAL-
CLI ETD APT APT DIA DIA TOT
JOSÉ 01/07/89 104 STD 100,00 3 300,00
JOSÉ 01/07/89 105 LUXO 140,00 3 420,00
ELZA 08/07/89 82 SUITE 170,00 2 340,00
* * * * * * *
* * * * * * *
* * * * * * *

•A tabela está na 1ª FN, pois não contém grupos repetidos.


•A tabela não está na 2ª FN, pois TIP-APT e VAL-DIA são determinados apenas
conhecendo-se NUM-APT.

2ª FN
71
2ª FN – Exemplo 2
RSV
NOM-CLI DAT-INI-ETD NUM-APT QTD-DIA VAL-TOT
JOSÉ 01/07/89 104 3 300,00
JOSÉ 01/07/89 105 3 420,00
* * * * *
* * * * *
* * * * *

APT
+
NUM TIP VAL-DIA
104 STD 100,00
105 LUXO 140,00
82 SUÍTE 170,00
* *
* *
* *
72
3ª FN – Exemplo 1
FUN NUM NOM-DEP NOM-DIR
0100 PESQUISA CAROLINE
0200 VENDAS JORGE
0300 VENDAS JORGE
0400 FINANÇAS FLAVIA

NUM Æ NOM-DEP
NOM-DEP Æ NOM-DIR
NOM-DEP Æ
/ NUM
3ª FN
FUN DEP
NUM NOM-DEP NOM NOM-DIR

0100 PESQUISA
+ PESQUISA
VENDAS
FINANÇAS
CAROLINE
JORGE
FLAVIA
0200 VENDAS
0300 VENDAS
0400 FINANÇAS 73
3ª FN – Exemplo 2
FUN
NUM NUM-TEL VAL-SAL-HOR NUM-PRJ NOM-PRJ DAT-FIM
0100 1234567 3,57 101 BIBLIOTECA 23/06/90
0200 2224567 4,59 101 BIBLIOTECA 23/06/90
0300 2312200 2,05 202 RH 20/08/91
0400 2312200 4,99 303 PD 20/12/92
0500 2223300 6,00 202 RH 20/08/91
* * * * * *

Está na 1ª e 2ª FN, porém, não está na 3ª FN, pois NOM-PRJ e DAT-FIM são
determinados apenas conhecendo-se o NUM-PRJ
FUN PRJ
N NUM- VAL- NUM- NUM NOM DAT-FIM

M
U TEL SAL-HOR PRJ
+ 101
202
BIBLIOTECA
RH
23/06/90
20/08/91

0100 1234567 3,57 101


0200 2224567 4,59 101
0300 2312200 2,05 202
0400 2311000 4,99 303 74
0500 2223300 6,00 202
Normalização - Regras

1ª Forma Normal
A 1ª F.N. exige que não se criem grupos de repetição em uma tabela, isto é, o
cruzamento de linha-coluna não deve ter mais de uma informação. Também não
se pode ter registros duplicados.

2ª Forma Normal
Uma tabela está na 2ª F.N. se estiver na 1ª F.N. e, adicionalmente, se cada
campo não-pertencente à chave for dependente da chave completa, e não apenas
de uma parte dela.

3ª Forma Normal
Uma tabela está na 3ª F.N. se estiver na 2ª F.N. e, se todos os campo não
pertencentes à chave principal (completa) forem independentes entre si.

75
Normalização

76
Normalização - Implicações

77
Anexos

78
Modelos de Bancos de Dados
Relacionamento
Generalização/Especialização
Entidade Associativa
Exercícios
Modelo Conceitual
Normalização
Contextos x Dados

Potrebbero piacerti anche