Вы находитесь на странице: 1из 61

BANCO DE DADOS AULA 10

Prof. SIDNEY NICOLAU VENTURI FILHO

Prof. SIDNEY NICOLAU VENTURI FILHO

AULA 10
SQL Parte 4
OBJETIVOS

Inserir, modificar e excluir registros nas tabelas.


Aprender sobre o conceito e as propriedades das
transaes em um ambiente de banco de dados.
Aprender a definir transaes em SQL.
Aprender a criar ndices e vises
Conhecer os comandos que tratam da segurana
do banco de dados.
Conhecer os operadores de conjunto

Prof. SIDNEY NICOLAU VENTURI FILHO

Acessando o Oracle

Prof. SIDNEY NICOLAU VENTURI FILHO

Acessando o Oracle

FAA LOGIN
NOME USURIO: AULABD
SENHA : SENHA

Prof. SIDNEY NICOLAU VENTURI FILHO

Acessando o Oracle

Prof. SIDNEY NICOLAU VENTURI FILHO

Acessando o Oracle

Prof. SIDNEY NICOLAU VENTURI FILHO

Acessando o Oracle

Prof. SIDNEY NICOLAU VENTURI FILHO

MODELO DE DADOS

Prof. SIDNEY NICOLAU VENTURI FILHO

TABELAS

Prof. SIDNEY NICOLAU VENTURI FILHO

TABELAS

Prof. SIDNEY NICOLAU VENTURI FILHO

TABELAS

Prof. SIDNEY NICOLAU VENTURI FILHO

DML
Comando Insert
O comando INSERT insere linhas em uma tabela. A forma mais
simples do comando INSERT insere somente uma linha , dados
os valores conforme a sintaxe abaixo:
insert into
values

<nome_tabela> (coluna1, coluna2, ..., colunan)


(valor1, valor2, ..., valorn);

Prof. SIDNEY NICOLAU VENTURI FILHO

DML
EMPREGADOS QUE GANHEM MAIS QUE O SALARIO MEDIO DA EMPRESA

INSERIR UM NOVO DEPARTAMENTO

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

INSERT INTO CLIENTE VALUES ( 200, MEU CLIENTE, 6)

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

SELECT * FROM CLIENTE

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

INSERT INTO CLIENTE (NOME, ID)


VALUES (MEU CLIENTE2, 300)

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

SELECT * FROM CLIENTE

Prof. SIDNEY NICOLAU VENTURI FILHO

DML
Comando Delete
Para excluirmos linhas em uma tabela utilizamos o comando
DELETE.
Veja a sintaxe do comando abaixo:
DELETE [FROM] [schema.]nome_tabela
WHERE condio

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

DESMARCAR COMMIT AUTOMATICO


APAGAR A LINHA DO CLIENTE DE ID 300

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

COMMIT DESMARCADO
DELETE CLIENTE

SEM FROM, NO ORACLE FROM OPCIONAL

APAGOU 5 LINHAS????

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

SELECT * FROM CLIENTE

DELETE SEM WHERE APAGA TODAS AS LINHAS


E AGORA?

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

COMMIT DESMARCADO
ROLLBACK

Prof. SIDNEY NICOLAU VENTURI FILHO

CANCELA A TRANSAO

DML

SELECT * FROM CLIENTE

VOLTARAM AS LINHAS

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

COMMIT DESMARCADO
DELETE FROM CLIENTE
WHERE ID = 300

AGORA COM FROM E WHERE

SO A LINHA DE ID 300 APAGADA

COMO TORNAR A ALTERAO DEFINITIVA?

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

COMMIT

FECHOU A TRANSAO

IMPORTANTE
DEPOIS DO COMMIT NO ADIANTA DAR ROLLBACK

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

SELECT * FROM CLIENTE

LINHA DE ID 300 FOI APAGADA

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

COMMIT DESMARCADO
DELETE FROM CLIENTE
WHERE ID = 300

Prof. SIDNEY NICOLAU VENTURI FILHO

AGORA COM FROM E WHERE

DML
Comando Update
Para alterarmos dados j existentes em nossas tabelas
utilizaremos o comando UPDATE.
Veja a sintaxe do comando abaixo:
UPDATE [schema. ] nome_tabela
SET coluna1 = expresso I subquery [, colunan = ... ]
WHERE condio

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

SELECT * FROM CLIENTE

ALTERAR O VENDEDOR DO CLIENTE DE ID 200 PARA 5

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

COMMIT DESMARCADO
UPDATE CLIENTE
SET VENDEDOR = 5
WHERE ID = 200

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

SELECT * FROM CLIENTE

ALTERAR O ID E O NOME DO CLIENTE 200


PARA 250 E CLIENTE250

ALTEROU O VENDEDOR DO CLIENTE DE ID 200 PARA 5

Prof. SIDNEY NICOLAU VENTURI FILHO

DML

UPDATE CLIENTE
SET ID = 250,
NOME = CLIENTE 250
WHERE ID = 200

Prof. SIDNEY NICOLAU VENTURI FILHO

ALTERANDO DUAS COLUNAS


REPARE A VIRGULA
SEPARANDO AS COLUNAS

DML

IMPORTANTE
COMO A CAIXA ESTA DESMARCADA
NO ESQUEA DE DAR COMMIT PARA CONFIRMAR
SELECT * FROM CLIENTE

ALTEROU O ID E O NOME DO CLIENTE 200


PARA 250 E CLIENTE250

Prof. SIDNEY NICOLAU VENTURI FILHO

INDICES
ndices: estruturas de dados auxiliares cujo nico propsito
tornar mais rpido o acesso a registros baseado em certos
campos, chamados campos de indexao.
Tipos:
ndice primrio - baseado na chave de ordenao.
ndice secundrio - baseado em qualquer campo no ordenado de um
arquivo.

Prof. SIDNEY NICOLAU VENTURI FILHO

INDICES
Criando um ndice
Vejamos a sintaxe do comando abaixo:
CREATE INDEX [schema.]nome_indice ON tabela (coluna1 [, coluna2 [,...]
])

Prof. SIDNEY NICOLAU VENTURI FILHO

INDICES

CREATE INDEX IND_VEND ON CLIENTE(VENDEDOR)

Prof. SIDNEY NICOLAU VENTURI FILHO

INDICES
Eliminando um ndice

Prof. SIDNEY NICOLAU VENTURI FILHO

SEGURANA
Comando GRANT
Em SQL, os privilgios so concedidos atravs do comando
grant, cuja a forma geral :
GRANT <lista_de_privilgios> ON <nome_objeto>
TO <lista_de_usurios>;

Comando REVOKE
Da mesma forma que podemos conceder privilgios de
acesso a outros usurios, podemos tambm retir-los atravs
do comando REVOKE, cuja a forma geral :
REVOKE <lista_de_privilgios> ON <nome_objeto>
FROM <lista_de_usurios>;

Prof. SIDNEY NICOLAU VENTURI FILHO

GRANT E REVOKE

ASSEGURANDO DIREITOS DE DBA PARA AULABD

Prof. SIDNEY NICOLAU VENTURI FILHO

VISES
Criando Vises
Uma View funciona de forma semelhante a uma tabela.
utilizada em comandos SELECT, INSERT, UPDATE e DELETE, para
recuperao e manipulao de dados (com restries), porm,
no armazena estes dados.
Este objeto tem suas linhas e colunas calculadas dinamicamente
atravs de um SELECT pr-estabelecido, cada vez que o
solicitamos.
Apenas a sua definio armazenada no dicionrio de dados.

Prof. SIDNEY NICOLAU VENTURI FILHO

VISES

Prof. SIDNEY NICOLAU VENTURI FILHO

VISES

CRIAR UM VISO COM O ID, NOME COMPLETO E CARGO DO EMPREGADO E


NOME DO DEPARTAMENTO ONDE ELE TRABALHA

Prof. SIDNEY NICOLAU VENTURI FILHO

VISES

CREATE VIEW EMP_DEP


AS
SELECT E.ID , E.PRIM_NOME|| ' ' ||E.ULT_NOME AS "NOME EMPREGADO" ,
E.CARGO , D.NOME AS "NOME DEPARTAMENTO"
FROM EMPREGADO E INNER JOIN DEPARTAMENTO D ON E.ID_DEPTO = D.ID

Prof. SIDNEY NICOLAU VENTURI FILHO

VISES

SELECT * FROM EMP_DEP

USUARIO PENSA QUE UMA TABELA

Prof. SIDNEY NICOLAU VENTURI FILHO

VISES

Prof. SIDNEY NICOLAU VENTURI FILHO

VISES

DROP VIEW EMP_DEP

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO
Trabalhando com Conjuntos
Muitas vezes necessitamos que nossas consultas incluam, em uma
mesma coluna, dados de mais de uma tabela. Para isto utilizamos
os operadores de conjuntos UNION, UNION ALL, INTERSECT e
MINUS.
Regras para Utilizao dos Operadores de Conjuntos
Os comandos SELECT participantes tm que ter o mesmo nmero
de colunas,
As colunas correspondentes tm que ser do mesmo tipo de dado,
Linhas duplicadas so automaticamente descartadas, exceto com
UNION ALL,
Os nomes das colunas resultantes so os da primeira consulta,
ALIAS de colunas s tem efeito se utilizados na primeira consulta,
A clusula ORDER BY s pode ser utilizada ao final do comando,
Os operadores de conjuntos podem ser utilizados em subconsultas
Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO
O Operador UNION
Resulta na combinao de todas as linhas de duas ou mais
tabelas participantes do UNION, eliminando as linhas
duplicadas resultantes.
Se quisermos, por exemplo, id dos empregados que
trabalham nos departamentos 10 ou 30 ou que atendem
clientes
Select id from empregado where id_depto in (10,30)
Union
Select vendedor from cliente

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO

id dos empregados que trabalham nos departamentos 10


ou 30 ou que atendem clientes

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO

Select id from empregado where id_depto in (10,30)


Union
Select vendedor from cliente

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO
O Operador UNION ALL
Resulta na combinao de todas as linhas de duas ou mais
tabelas participantes do UNION, mantendo todas as linhas
duplicadas.
Se quisermos, por exemplo, id dos empregados que
trabalham nos departamentos 10 ou 20 ou que atendem
clientes
Select id from empregado where id_depto in (10,20)
Union all
Select vendedor from cliente

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO

id dos empregados que trabalham nos departamentos 10


ou 20 ou que atendem clientes

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO

Select id from empregado where id_depto in (10,20)


Union
Select vendedor from cliente

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO

Select id from empregado where id_depto in (10,20)


Union all
Select vendedor from cliente

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO
O Operador INTERSECT
Resulta na interseo entre todas as linhas de duas ou mais
tabelas participantes do INTERSECT, ou seja, apenas as linhas
comuns entre ela
Se quisermos, por exemplo, id dos empregados que
trabalham nos departamentos 10 ou 20 e que atendem
clientes
Select id from empregado where id_depto in (10,20)
Intersect
Select vendedor from cliente

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO

id dos empregados que trabalham nos departamentos 10


ou 20 e que atendem clientes

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO

Select id from empregado where id_depto in (10,20)


Intersect
Select vendedor from cliente

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO
O Operador MINUS (Except)
Resulta nas linhas existentes na primeira tabela, mas que no
existem na segunda.
As linhas comuns tambm no so resultantes. Se quisermos,
por exemplo, id dos empregados que trabalham nos
departamentos 10 ou 20 e que no atendem clientes
Select id from empregado where id_depto in (10,20)
Intersect
Select vendedor from cliente

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO

id dos empregados que trabalham nos departamentos 10


ou 20 e que no atendem clientes

Prof. SIDNEY NICOLAU VENTURI FILHO

OPERADORES DE CONJUNTO

Select id from empregado where id_depto in (10,20)


MINUS
Select vendedor from cliente

Prof. SIDNEY NICOLAU VENTURI FILHO

PROXIMA AULA
Na prxima aula :
Faremos uma reviso para a AV2

Prof. SIDNEY NICOLAU VENTURI FILHO

Вам также может понравиться