Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CONTEDO PROGRAMTICO
1.
2.
3.
4.
5.
6.
Historia do SQL
7.
8.
Operaes de conjuntos
9.
10.
Subconsultas aninhadas
11.
12.
BIBLIOGRAFIA
BSICA:
C.J. DATE INTRODUO A SISTEMAS DE BANCO DE DADOS
ABRAHAM SILBERSCHATZ / HENRY F. KORTH / S. SUDARSHAN
SISTEMAS DE BANCO DE DADOS
COMPLEMENTAR:
C.J. DATE - SQL AND RELATIONAL THEORY: HOW TO WRITE
ACCURATE SQL CODE
KOPPELAARS, TOON / HANN, LEX DE APPLIED MATHEMATICS FOR
DATABASE PROFESSIONALS
MARKLYN, BILL / WHITEHORN MARK INSIDE RELATIONAL DATABASE
COMPOSIO DA NOTA
PRIMEIRA LISTA DE EXERCCIOS - VALOR: 2,0
SEGUNDA LISTA DE EXERCCIOS VALOR: 2,0
PROVA VALOR: 6,0
Captulo 1
O Modelo Relacional
Nome
Ender
Funo
Salario
Dep
100
Ana
Rua da Juaras, 12
Secretri
a
700,00
D1
250
Pedro
Rua J. Silva, 24
Engenhei
ro
2000,0
0
D1
108
Andr
Rua Itlia, 33
Tcnico
1000,0
0
D2
210
Paulo
Rua Par, 98
Engenhei
ro
2200,0
0
D2
105
Snia
Rua Oliveiras, 76
Engenhei
ro
2500,0
0
D1
Terminologia
Na terminologia de BD Relacional, uma linha chamada
tupla, um nome de coluna chamado atributo e uma
tabela chamada relao;
Definies
Domnio: Um domnio D um conjunto de valores
atmicos.
Ex.
Fone: conjunto de 10 dgitos;
CPF: conjunto de 11 dgitos;
Idade_Empregado: 16 <= idade <= 70;
Departamentos: conjunto de departamentos de uma
empresa.
Chave
Primria:
o
atributo
que
identifica/individualiza uma tupla dentro de uma
relao (Integridade de chave);
Nenhum valor de chave primria pode ser NULO
(Integridade de entidade);
Uma relao pode ter atributos que contm
valores com mesmo domnio de um conjunto de
atributos que forma a chave primria de uma
outra relao;
Estes
atributos
so
chamados
CHAVE
ESTRANGEIRA (Integridade Referencial).
Nome
D2
Produo
D1
Custos
D5
Pessoal
Empregado
Matr
Nome
Ender
Funo
Salario
Dep
100
Ana
Rua da Juaras, 12
Secretri
a
700,00
D1
250
Pedro
Rua J. Silva, 24
Engenhei
ro
2000,0
0
D1
108
Andr
Rua Itlia, 33
Tcnico
1000,0
0
D2
210
Paulo
Rua Par, 98
Engenhei
ro
2200,0
0
D2
105
Snia
Rua Oliveiras, 76
Engenhei
ro
2500,0
0
D1
sua
prpria
relao
(autorelacionamento).
Exemplo: Empregado (matrcula, nome,
salrio, matr_supervisor).
Insero:
- 1. Inserir
<102,Andr,null,Engenheiro,1980,00,D2
> => aceito sem problemas.
2. Inserir
<100,Maria,null,Tcnica,950.00,D1>
=> viola a restrio de chave.
Insero
O que fazer quando se detectar uma
violao de integridade?
- Rejeitar a insero (podendo explicar o
porqu);
- Tentar corrigir a anomalia para depois
inserir.
Remoo
1. Remover da tabela Empregado a
tupla com matrcula = 100
=>
Remoo aceita sem problemas.
2. Remover da tabela Departamento a
tupla com Dep = D1 => Viola a regra
de integridade referencial, pois existem
empregados que esto alocados neste
departamento.
Remoo
- O que fazer quando em uma remoo
ocorrer uma violao?
- Rejeitar a remoo;
- Dar o efeito cascata na remoo,
removendo todas as tuplas referenciadas
por aquela tupla que est sendo removida.
Modificao
1. Modificar o salrio do empregado com
matrcula = 250
=> operao aceita sem problemas.
2. Modificar o departamento da tupla de
empregado com matrcula 210 para D1
=> operao aceita sem problemas.
Modificao
3. Modificar o departamento do empregado
com matrcula = 108 para D9 viola a
integridade referencial;
4. Modificar a matrcula do empregado
100 para 250 => viola a regra de
identidade de chave.
Captulo 2
lgebra Relacional
lgebra Relacional
lgebra Relacional
lgebra Relacional
Operao de Seleo ()
- Seleciona um subconjunto de tuplas de uma
relao, de acordo com uma condio;
- Sintaxe: <predicado> (<Relao>)
- onde = operador de seleo
- Predicado: <atributo> <op> <constante>
ou
<atributo> <op> <atributo>
- <op> = {=, >, <, , , }
- No predicado pode-se ter as clusulas ligadas
pelos conectivos booleanos AND, OR e NOT.
lgebra Relacional
lgebra Relacional
lgebra Relacional
lgebra Relacional
Operao de Projeo ()
- Produz um subconjunto de atributos de
uma dada relao;
-Sintaxe: <LISTA DE ATRIBUTOS>(<Relao>)
lgebra Relacional
lgebra Relacional
lgebra Relacional
lgebra Relacional
Unio ()
A unio de duas relaes, R S, o
conjunto das tuplas que esto em R, ou em
S,
ou
em
ambas.
Duplicatas
so
eliminadas.
As relaes R e S tm que ser uniocompatveis, isto , tm que conter as
mesmas colunas.
lgebra Relacional
R
A
a
d
c
RS
B
b
a
b
C
c
f
d
A
b
d
B
g
a
C
a
f
A
a
d
c
b
B
b
a
b
g
C
c
f
d
a
lgebra Relacional
Exemplo:
Obter a matrcula dos empregados que ganham
mais que 1000,00 ou que trabalham
no
departamento D1.
Emp1000 salrio>1000(Empregado)
EmpDepto1 dep=D1(Empregado)
Resultado matrE(Emp1000)
matrE(EmpDepto1)
lgebra Relacional
Interseo ()
A interseo de duas relaes, R S, o
conjunto das tuplas que esto em R e em
S.
As relaes R e S tm que ser uniocompatveis, isto , tm que conter as
mesmas colunas.
lgebra Relacional
R
A
a
d
c
RS
B
b
a
b
C
c
f
d
A
b
d
B
g
a
C
a
f
A
d
B
a
C
f
lgebra Relacional
Exemplo:
Obter a matrcula dos empregados que ganham
mais que 1000,00 e trabalham
no
departamento D1.
Emp1000 salrio>1000(Empregado)
EmpDepto1 depto=D1(Empregado)
Resultado matrE(Emp1000) matrE(EmpDepto1)
lgebra Relacional
Diferena (-)
A diferena entre duas relaes, R - S, o
conjunto das tuplas que esto em R mas
no esto em S.
As relaes R e S tm que ser uniocompatveis, isto , tm que conter as
mesmas colunas.
lgebra Relacional
R
A
a
d
c
B
b
a
b
C
c
f
d
A
b
d
R-S
B
g
a
C
a
f
A
a
c
B
b
b
C
c
d
lgebra Relacional
Exemplo:
Obter a matrcula dos empregados que ganham
mais que 1000,00 e no trabalham
no
departamento D1.
Emp1000 salrio>1000(Empregado)
EmpDepto1 depto=D1(Empregado)
Resultado matrE(Emp1000) - matrE(EmpDepto1)
lgebra Relacional
Produto Cartesiano
O produto cartesiano de duas relaes R X
S combina cada tupla de R com cada tupla
de S.
O
resultado
de
R(A1,A2,...,An)
X
S(B1,B2,...,Bm) uma relao T com n +
m atributos:
T(A1,A2,...,An, B1,B2,...,Bm).
lgebra Relacional
lgebra Relacional
Mulher sexo=F(Empregado)
NomesMulheres matrE,nomeE(Mulher)
DependentesMulher1
NomesMulheres X Dependentes
DependentesMulher2
matrE=matrEmp(DependentesMulher1)
ResultadonomeD,nomeE(DependentesMulher2)
lgebra Relacional
Juno
A juno de duas relaes A e B, A |X| B,
produz uma combinao entre as tuplas da
relao A com as tuplas correspondentes
da relao B, sendo em princpio
correspondente a uma seleo pelos
atributos de relacionamento sobre o
produto cartesiano dessas tabelas.
A |X| B = A.chave1=B.chave2(AXB)
lgebra Relacional
lgebra Relacional
Operador de Diviso ()
um operador adicional que produz como
resultado a projeo de todos os elementos
da primeira tabela que se relacionam com
todos os elementos da segunda tabela.
lgebra Relacional
Exemplo:
R
A
a1
a2
a3
a4
a1
a3
a2
a3
a4
a1
a2
a3
B
b1
b1
b1
b1
b2
b2
b3
b3
b3
b4
b4
b4
S
A
a1
a2
a3
Captulo 3
Linguagem SQL
Histrico
Histrico
DDL
(Data
Definition
Language)
ou
Linguagem de Definio de Dados
Permite ao usurio o manuseio de tabelas e
elementos associados, tipo chaves primrias,
chaves estrangeiras, ndices etc.
Normalmente,
est
restrita
aos
Administradores de Base de Dados.
Comandos DDL
Criao de tabelas
Para a criao de tabelas em um banco de
dados, utiliza-se o comando CREATE TABLE.
Comandos DDL
Forma geral:
CREATE TABLE <nome-da-tabela>
(<campo-1> <tipo de dado-1>,
...
<campo-n> <tipo de dado-n>,
[clusulas adicionais]);
Comandos DDL
Tipos de dados:
Integer: valores numricos inteiros;
Number: valores numricos;
Varchar: valores alfanumricos;
Date: datas.
Comandos DDL
Clusulas adicionais:
Primary Key: chave primria;
Foreign Key: chave estrangeira;
Not null: campos requeridos;
Check: restrio de valores;
Default: valores padro.
Comandos DDL
Comandos DDL
Tabela Funcionrio:
create table func
(fun_matr integer,
fun_nome varchar(40) not null,
fun_sexo varchar(1) not null,
fun_dt_adm date not null,
fun_salar number(5,2) default 1000 not null,
dep_cod integer not null,
primary key (fun_matr),
foreign key (dep_cod) references depart(dep_cod),
check (fun_sexo in (M,F)));
Comandos DDL
Alterao de tabelas
Para alterar estruturas de tabelas, usa-se o
comando ALTER TABLE.
Comandos DDL
Forma Geral:
ALTER TABLE <nome-da-tabela>
[add <campo> <tipo-de-dado>
<[clusulas adicionais]>]
ou
[drop <campo>];
Comandos DDL
Exemplo1:
Adicionar o campo fun_email na tabela de
funcionrios:
alter table func
add fun_email varchar(30);
Comandos DDL
Exemplo 2:
Remover o campo para e-mail na tabela de
funcionrios:
alter table func
drop column fun_email;
Comandos DDL
Remoo de tabelas
Para remover tabelas, utiliza-se o comando
DROP TABLE.
Comandos DDL
Forma geral:
DROP TABLE <nome-da-tabela>;
Comandos DDL
Comandos DML
Incluso de tuplas
O comando utilizado
operao o INSERT.
para
este
tipo
de
Comandos DML
Forma geral:
INSERT INTO <nome-da-tabela>
(<campo-1,...,campo-n>)
VALUES
(<contedo-1,...,contedo-n>);
Comandos DML
Comandos DML
Comandos DML
Comandos DML
Comandos DML
Comandos DML
Alterao de tuplas
Comandos DML
Forma geral:
UPDATE <tabela>
SET <coluna>=<valor>
[WHERE <condies>];
Comandos DML
Comandos DML
Comandos DML
Remoo de tuplas
comando
Comandos DML
Forma geral:
DELETE
FROM <tabela>
[WHERE <condies>];
Comandos DML
Comandos DML
Exerccios