Académique Documents
Professionnel Documents
Culture Documents
Mestrado
Prossional
Banco
de
Dados
SQL
Fernando Fonseca
CIn.ufpe.br
CIn.ufpe.br
2
Enfoques de SQL
SQL
-
Origem/Histrico
Primeira verso: SEQUEL, definida por
Chamberlain em 1974 na IBM
Em 1975 foi implementado o primeiro prottipo
Revisada e ampliada entre 1976 e 1977 e teve
seu nome alterado para SQL por razes jurdicas
Em 1982, o American National Standard Institute
tornou SQL padro oficial de linguagem em
ambiente relacional
Utilizada tanto de forma interativa como includa
em linguagens hospedeiras
CIn.ufpe.br
3
Usos de SQL
SQL
-
Vantagens
Independncia de fabricante
Portabilidade entre sistemas
Reduo de custos com treinamento
Comandos em ingls
Consulta interativa
Mltiplas vises de dados
Manipulao dinmica dos dados
DDL
Criar (CREATE)
Destruir (DROP)
Modificar (ALTER)
Implementao
Ambiente
SQL
Segurana
Controle
Administrao
DML
Consultar (SELECT)
Inserir (INSERT)
Remover (DELETE)
Atualizar (UPDATE)
CIn.ufpe.br
5
CIn.ufpe.br
6
SQL - Desvantagens
CIn.ufpe.br
CIn.ufpe.br
Criao de Tabelas
CIn.ufpe.br
CIn.ufpe.br
Criao de Tabelas
10
Criao
de
Tabelas
Chave primria por auto-numerao (Cont.)
No Oracle
Define-se uma seqncia e esta ser
utilizada para gerar as chaves primrias
CONSTRAINT nometabela_pkey
PRIMARY KEY (<atributos>)
Chave primria definida por auto-numerao
Chave inteira cujo valor atribudo pelo
sistema, sendo incrementado de 1 a
cada insero de uma nova tupla
CIn.ufpe.br
11
Criao de Tabelas
Criao de Tabelas
Descrio de Restries
Salrio no pode ser inferior ao mnimo
CONSTRAINT nometabela_check
CHECK (salario >= 788.00)
Cada valor do atributo nico na relao,
CONSTRAINT nometabela_fkey
FOREIGN KEY (<atributo>)
REFERENCES <outra_tabela> (<chave primria>)
CONSTRAINT nometabela_const
UNIQUE (nome)
CIn.ufpe.br
CIn.ufpe.br
14
Criao de Tabelas
Criao
de
Tabelas
Exemplo 1 (Cont.)
CIn.ufpe.br
15
CIn.ufpe.br
16
Criao de Tabelas
Criao de Tabelas
Exemplo 2 (Cont.)
CIn.ufpe.br
CIn.ufpe.br
17
18
Criao de Tabelas
Criao de Tabelas
CIn.ufpe.br
19
Alterao de Tabelas
Alterao
de
Tabelas
Alterar definies de tabelas existentes ALTER
TABLE
Permite inserir/eliminar/modificar elementos da
definio de uma tabela
Anloga
ao
Create
/
Drop
CIn.ufpe.br
21
22
Remoo de Tabelas
Alterao de Tabelas
Observaes
Os dados so tambm excludos
No caso do Oracle,
para preservar as
definies da relao (s os dados so
eliminados) utilizar em vez de DROP
CIn.ufpe.br
24
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
empregados
CIn.ufpe.br
Nome
Salario
Jos
5000.00
Maria
8000.00
Joo
3000.00
CIn.ufpe.br
25
26
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Observao
Deve ser usado com cautela pois pode
comprometer o desempenho do sistema
CIn.ufpe.br
CIn.ufpe.br
27
28
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Uma
constante,
varivel
ou
consulta
aninhada
CIn.ufpe.br
29
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Joo
3000.00
CIn.ufpe.br
30
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Sexo
Jos
CIn.ufpe.br
CIn.ufpe.br
31
32
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Nome
Salario
Jos
5000.00
Joo
3000.00
CIn.ufpe.br
CIn.ufpe.br
33
34
Operadores SQL
Empregado
Operadores SQL
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Nome
Jos
CIn.ufpe.br
35
Maria
CIn.ufpe.br
36
Operadores SQL
Operadores SQL
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
CIn.ufpe.br
CIn.ufpe.br
37
38
Operadores SQL
Operadores SQL
Jos
Joo
Dependente
CIn.ufpe.br
CIn.ufpe.br
39
40
Operadores SQL
Operadores SQL
Cad_emp
Nome
Data_nasc
Grau_P
Bruno
01/02/2000
Gina
05/10/2002
Telma
04/03/2010
Data_nasc
Bruno
01/02/2000
Gina
05/10/2002
Numero
Nome
Num_Dep
Local
Desenvolvimento
Recife
Anlise
Olinda
Testes
NULL
CIn.ufpe.br
CIn.ufpe.br
41
42
Operadores SQL
Numero
Nome
Testes
Crescente (default)
CIn.ufpe.br
CIn.ufpe.br
43
44
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Joo
3000.00
Jos
5000.00
Maria
8000.00
NULL
CIn.ufpe.br
CIn.ufpe.br
45
46
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Maria
8000.00
NULL
Jos
5000.00
Joo
3000.00
CIn.ufpe.br
CIn.ufpe.br
47
48
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
CIn.ufpe.br
CIn.ufpe.br
49
50
Funes
Agregadas
Utilizao de funes sobre conjuntos
Disparadas a partir do SELECT
Renomear
atributo
para
sada
do
dado
SELECT Nome, (Salario * 1.60) AS Novo_salario
FROM Empregado WHERE Salario < 4000.00;
Nome
Novo_Salario
Joo
4800.00
CIn.ufpe.br
CIn.ufpe.br
51
52
Funes Agregadas
Funes Agregadas
Consulta aninhada
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Salario
Maria
8000.00
CIn.ufpe.br
CIn.ufpe.br
53
54
Funes Agregadas
Funes Agregadas
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Jos
5000.00
Maria
8000.00
NULL
Maria
8000.00
NULL
Joo
3000.00
Joo
3000.00
Count(*)
5333.33
CIn.ufpe.br
55
Clusula DISTINCT
CIn.ufpe.br
56
Clusula DISTINCT
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Cad_Spv
Maria
800.00
NULL
Joo
3000.00
CIn.ufpe.br
CIn.ufpe.br
57
58
Clusula GROUP BY
Clusula
GROUP
BY
Organiza a seleo de dados em grupos
Exemplo 24: Listar os quantitativos de
empregados de cada sexo
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Count(*)
CIn.ufpe.br
CIn.ufpe.br
59
60
10
Clusula HAVING
Clusula
HAVING
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
CIn.ufpe.br
Num_Dep
Count(*)
CIn.ufpe.br
61
62
Uso
de
Alias
Para substituir nomes de tabelas em comandos
SQL
So definidos na clusula FROM
Empregado.Nome
Departamento.Nome
Alias
CIn.ufpe.br
63
64
Juno de Tabelas
Juno de Tabelas
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Departamento
Numero
Nome
Cad_Ger
Data_Ini
E.NOME
D.NOME
RH
12/03/2010
Jos
RH
Contabilidade
15/01/2009
Joo
RH
Maria
Contabilidade
CIn.ufpe.br
CIn.ufpe.br
65
66
11
Juno de Tabelas
Juno
de
Tabelas
Exemplo 27: Listar os nomes dos departamentos
que tm projetos
SELECT D.Nome
FROM Departamento D, Projeto P
WHERE P.Num_Dep = D.Numero;
Departamento
Numero
Nome
Cad_Ger
Data_Ini
RH
12/03/2010
Contabilidade
15/01/2009
Projeto
Numero
Nome
Num_Dep
Local
Desenvolvimento
Recife
Anlise
Olinda
Testes
NULL
Nome
RH
CIn.ufpe.br
CIn.ufpe.br
67
68
Juno de Tabelas
Juno de Tabelas
Departamento
Numero
Nome
Cad_Ger
Data_Ini
RH
12/03/2010
Contabilidade
15/01/2009
Projeto
Numero
Nome
Num_Dep
Local
Desenvolvimento
Recife
Anlise
Olinda
Testes
NULL
CIn.ufpe.br
CIn.ufpe.br
69
70
Juno de Tabelas
Juno de Tabelas
SELECT D.Nome
FROM Departamento D, Projeto P
WHERE P.Local IN ('Olinda', 'Recife')
AND P.Numero < 3
AND P.Num_Dep = D.Numero
ORDER BY D.Nome;
Nome
RH
CIn.ufpe.br
CIn.ufpe.br
71
72
12
Juno de Tabelas
Juno
de
Tabelas
Departamento
Numero
Nome
Cad_Ger
Data_Ini
RH
12/03/2010
Contabilidade
15/01/2009
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
D.NOME
E.SALARIO
RH
1 Jos
5000.00
RH
3 Joo
3000.00
Contabilidade
2 Maria
8000.00
CIn.ufpe.br
73
74
Juno de Tabelas
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Trabalha_em
Cad_Emp
Num_Proj
Horas
20
24
44
15
15
14
CIn.ufpe.br
CIn.ufpe.br
75
76
Juno de Tabelas
Juno de Tabelas
E.NOME
CIn.ufpe.br
Juno de Tabelas
E.NUM_DEP
E.CAD
TOTAL
1
CIn.ufpe.br
CIn.ufpe.br
77
78
13
Juno de Tabelas
Juno de Tabelas
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Trabalha_em
Cad_Emp
Num_Proj
Horas
20
24
Departamento
44
Numero
Nome
Cad_Ger
Data_Ini
15
RH
12/03/2010
15
Contabilidade
15/01/2009
14
E.NOME
D.NOME
Jos
RH
Maria
Contabilidade
CIn.ufpe.br
CIn.ufpe.br
79
80
Juno de Tabelas
Juno
de
Tabelas
Outer join
Retorna todas as tuplas de uma tabela
e
somente as tuplas de uma tabela secundria
onde os campos de juno so iguais
( condio de juno encontrada)
Para todas as tuplas de uma das tabelas que
no tenham tuplas correspondentes na outra,
pela condio de juno, retornado null para
todos os campos da lista do select que sejam
colunas da outra tabela
CIn.ufpe.br
CIn.ufpe.br
81
82
Juno de Tabelas
Juno de Tabelas
SELECT <atributos>
FROM <tabela A> LEFT [OUTER] JOIN <tabela B>
ON <condio de juno>;
CIn.ufpe.br
CIn.ufpe.br
83
84
14
Juno de Tabelas
Juno
de
Tabelas
Departamento
Numero
Nome
Cad_Ger
Data_Ini
RH
12/03/2010
Contabilidade
15/01/2009
Projeto
Numero
Nome
Num_Dep
Local
Desenvolvimento
Recife
Anlise
Olinda
Testes
NULL
D.NOME
P.NOME
P.LOCAL
RH
Desenvolvimento
Recife
RH
Anlise
Olinda
RH
Testes
Contabilidade
CIn.ufpe.br
CIn.ufpe.br
85
86
Juno de Tabelas
Juno
de
Tabelas
Outer join (Cont.)
SELECT <atributos>
FROM <tabela A> RIGHT [OUTER] JOIN <tabela B>
ON <condio de juno>;
CIn.ufpe.br
CIn.ufpe.br
87
88
Juno de Tabelas
Juno
de
Tabelas
Departamento
Numero
Nome
Cad_Ger
Data_Ini
RH
12/03/2010
Contabilidade
15/01/2009
Projeto
Numero
Nome
Num_Dep
Local
Desenvolvimento
Recife
Anlise
Olinda
Testes
NULL
CIn.ufpe.br
89
D.NOME
P.NOME
P.LOCAL
RH
Desenvolvimento
Recife
RH
Anlise
Olinda
RH
Testes
CIn.ufpe.br
90
15
Juno de Tabelas
Juno
de
Tabelas
Outer join (Cont.)
SELECT <atributos>
FROM <tabela A> FULL [OUTER] JOIN <tabela B>
ON <condio de juno>;
CIn.ufpe.br
CIn.ufpe.br
91
92
Juno de Tabelas
Juno de Tabelas
Departamento
Numero
Nome
Cad_Ger
Data_Ini
RH
12/03/2010
Contabilidade
15/01/2009
Projeto
Numero
Nome
Num_Dep
Local
Desenvolvimento
Recife
Anlise
Olinda
Testes
NULL
D.NOME
P.NOME
P.LOCAL
RH
Desenvolvimento
Recife
RH
Anlise
Olinda
RH
Testes
Contabilidade
CIn.ufpe.br
CIn.ufpe.br
93
94
CIn.ufpe.br
CIn.ufpe.br
95
96
16
Empregado
2 Maria
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Numero
Nome
Cad_Ger
Data_Ini
RH
12/03/2010
Contabilidade
15/01/2009
CIn.ufpe.br
CIn.ufpe.br
97
98
Nome
Departamento
E.CAD
Cad
Empregado
E.SALARIO
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
8000.00
CIn.ufpe.br
CIn.ufpe.br
99
100
Dependente
Cad_Emp
Nome
Data_Nasc
Grau_P
Jonas
12/05/2000
Pai
Beatriz 05/06/2002
Pai
Clara
Pai
13/02/2001
Departamento
Numero
Nome
Cad_Ger
Data_Ini
RH
12/03/2010
Contabilidade
15/01/2009
Empregado
E.CAD
E.NOME
2
Maria
DifSal
2666.67
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
CIn.ufpe.br
CIn.ufpe.br
101
102
17
Data_Nasc
Grau_P
Jonas
12/05/2000
Pai
Beatriz
05/06/2002
Pai
Clara
13/02/2001
Pai
Clusulas
ANY/SOME
So usadas com subconsultas que produzem
uma nica coluna de nmeros
Exemplo 38: Listar os empregados cujos
salrios so maiores do que o salrio de pelo
menos um funcionrio do departamento 1
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
CIn.ufpe.br
CIn.ufpe.br
103
104
Clusulas ANY/SOME
Clusula ALL
Nome
Sexo
Salario
Num_Dep
Cad_Spv
CAD
NOME
SEXO
SALARIO
Jos
5000.00
Maria
8000.00
NULL
Jos
5000.00
Joo
3000.00
Maria
8000.00
CIn.ufpe.br
CIn.ufpe.br
105
106
Clusula ALL
CAD
NOME
SEXO
SALARIO
Maria
8000.00
CIn.ufpe.br
CIn.ufpe.br
107
108
18
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Departamento
Numero
Nome
Cad_Ger
Data_Ini
RH
12/03/2010
Contabilidade
15/01/2009
CAD
NOME
SEXO
SALARIO
Jos
5000.00
Joo
3000.00
CIn.ufpe.br
CIn.ufpe.br
109
110
CIn.ufpe.br
CIn.ufpe.br
111
112
Operaes de Conjunto
Operaes de Conjunto
Projeto
UNION
Linhas duplicadas so removidas da tabela
resultante
Exemplo 41: Construa uma lista de todos os
locais onde existe um departamento ou um
projeto
Numero
Nome
Num_Dep
Local
Desenvolvimento
Recife
Anlise
Olinda
Testes
NULL
Locais
Num_Dep
Nome_Loc
Camaragibe
Jaboato
Olinda
CIn.ufpe.br
CIn.ufpe.br
113
114
19
Operaes de Conjunto
Operaes
de
Conjunto
INTERSECT
Exemplo 42: Construa uma lista de todos os
locais onde existem ambos um departamento e
um projeto
Projeto
Local
Recife
Olinda
Camaragibe
Numero
Nome
Num_Dep
Local
Desenvolvimento
Recife
Anlise
Olinda
Testes
NULL
Locais
Jaboato
CIn.ufpe.br
Num_Dep
Nome_Loc
Camaragibe
Jaboato
Olinda
CIn.ufpe.br
115
116
Operaes de Conjunto
Operaes de Conjunto
MINUS
Exemplo 43: Construa uma lista de todos os
locais onde existe um departamento mas
nenhum projeto
Locais
Local
Olinda
Num_Dep
Nome_Loc
Camaragibe
Jaboato
Olinda
Projeto
CIn.ufpe.br
Numero
Nome
Num_Dep
Local
Desenvolvimento
Recife
Anlise
Olinda
Testes
NULL
CIn.ufpe.br
117
Operaes de Conjunto
118
Nome_Loc
Camaragibe
Jaboato
atributos>)
CIn.ufpe.br
119
120
20
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Clara
7000.00
CIn.ufpe.br
CIn.ufpe.br
121
122
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Clara
7000.00
Departamento
Depto_Info
Nome_Depto
...
Numero
Nome
Cad_Ger
Data_Ini
...
...
RH
12/03/2010
...
....
Contabilidade
15/01/2009
CIn.ufpe.br
123
124
para R$9500,00
Depto_Info
Nome_Depto
RH
Num_Emp
Total_Sal
3
15000.00
CIn.ufpe.br
CIn.ufpe.br
125
126
21
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
8000.00
NULL
Joo
3000.00
Clara
7000.00
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
9500.00
NULL
Joo
3000.00
Clara
7000.00
CIn.ufpe.br
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
9500.00
NULL
Joo
3000.00
Clara
7000.00
CIn.ufpe.br
127
Empregado
Cad
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
9500.00
NULL
Clara
7000.00
CIn.ufpe.br
129
130
Nome
Sexo
Salario
Num_Dep
Cad_Spv
Jos
5000.00
Maria
9500.00
NULL
Clara
7000.00
Trabalha_em
Cad_Emp
Num_Proj
Horas
20
24
44
34
128
CIn.ufpe.br
CIn.ufpe.br
131
132
22
Comando GRANT
Onde
<privilgios>: SELECT, INSERT, DELETE,
UPDATE, ALL PRIVILEGES e
<usurio>: usurio cadastrado, PUBLIC
Dep_1
Nome
Num_Proj
Jos
Clara
Todos
os
usurios
cadastrados
no
BD
CIn.ufpe.br
CIn.ufpe.br
133
134
Remover a permisso de
consulta tabela Projeto, dada aos demais
usurios do banco
CIn.ufpe.br
135
136
23