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