06 BD SQL DDL PDF
06 BD SQL DDL PDF
06 BD SQL DDL PDF
Eduardo Neves
edumneves@gmail.com
http://www.itnerante.com.br/profile/EduardoNeves
Artigos do Blog:
http://goo.gl/Sm6JgV
CESPE FCC CESGRANRIO OUTRAS TOTAL
SQL 173 131 66 153 523
Data warehouse 96 70 54 50 270
Modelagem 85 62 28 65 240
www.provasdeti.com.br
Aula 01
Introduo
Linguagens DML, DDL, DCL, TCL
Aula 02
Create Table
Aula 03
Contraints Primary key, foreign Key, ...
Aula 04
Alter Table
Aula 05
Foreign Key On UPDATE, On Delete, cascade
Aula 06
Restries de Integridade Adiveis
Aula 07, 08 e 09
Vises
Vises atualizveis
Aula 10, 11 e 12
Exerccios
36 Questes
www.provasdeti.com.br
Formao
Bacharel em Cincia da Computao/UFRJ
Ps-graduao Gesto de Projetos
Analista de Sistemas BNDES 2013
Principais aprovaes
4 - BNDES/2012 - CESGRANRIO
19 - BNDES/2011 - CESGRANRIO
30 - Petrobras/ 2011 - CESGRANRIO
12 - FINEP/2011 - CESGRANRIO
3 - Transpetro/2011 - CESGRANRIO
42 - TRT-RJ/2011 - FCC
7 - Petrobras Maca/2010 - CESGRANRIO
1 - Caixa Econmica Federal/2010 Nvel mdio informtica - CESPE
18 - BR Distribuidora/2010 Analista SAP - CESGRANRIO
NO DESISTIR!!!!
Aprender com os prprios erros
Estudar as matrias em ciclos
http://suficienciacontabil.com.br/wp-content/uploads/2014/12/ciclos-de-estudo-
alexandre-meirelles.pdf
Ter uma forma de reviso
Anki
http://www.itnerante.com.br/profiles/blogs/deck-anki-do-edu-
para-o-bndes-2013-4-lugar
Mapa Mental
Resumos
Fazer muitos exerccios
Da mesma banca primeiro da mais recente para a mais antiga
De outras bancas
Usar sites de questes
(qconcursos.com, mapadaprova, tecconcursos, )
Timasters
Tirar dvidas, compartilhar conhecimento.
Sistemas de Banco de Dados 6 edio
Ramez E. Elmasri, Shamkant B. Navathe
Editora Pearson, 2011
Sistemas de Banco de Dados 6 edio
Abraham Silberschatz, Henry F. Korth
Editora Campus, 2012
Introduo a Sistemas de Banco de Dados
C.J. Date
Editora Campus, 2004
Linguagem SQUEL desenvolvida pela IBM
para um banco de dados experimental R
Baseada no padro ANSI e ISO:
SQL-86
SQL-89
SQL-92
SQL:1999
SQL:2003
A maioria dos SGBD comerciais suportam o
SQL-92, e algumas das caracteristicas das
ltimas verses
DDL Data Definition Language (Linguagem de
Definio de Dados) so usadas para definir a
estrutura de banco de dados ou esquema.
CREATE- para criar objetos no banco de dados
ALTER altera a estrutura da base de dados
DROP apaga objetos no banco de dados
TRUNCATE remover todos os registros de uma
tabela, incluindo todos os espaos alocados para os
registros so removidos. No tem rollback.
COMMENT adicionar comentrios ao dicionrio de
dados
RENAME para renomear um objeto
DML Data Manipulation Language (Linguagem de
Manipulao de Dados) so utilizados para o
gerenciamento de dados dentro de objetos do
banco.
SELECT- recuperar dados do banco de dados
INSERT inserir dados em uma tabela
UPDATE atualiza os dados existentes em uma tabela
DELETE exclui registros de uma tabela,
CALL chamar um subprograma PL / SQL
EXPLAIN PLAN explicar o caminho de acesso aos
dados
LOCK TABLE controle de concorrncia
TCL Transaction Control Language (Controle de
Transaes) so usados para gerenciar as
mudanas feitas por instrues DML . Ele permite
que as declaraes a serem agrupadas em
transaes lgicas .
COMMIT salvar o trabalho feito
SAVEPOINT identificar um ponto em uma transao
para que mais tarde voc pode efetuar um ROLLBACK
ROLLBACK restaurar banco de dados ao original
desde o ltimo COMMIT
DCL Data Control Language (Linguagem de
Controle de dados) declaraes.
GRANT atribui privilgios de acesso do usurio a
objetos do banco de dados
REVOKE remove os privilgios de acesso aos objetos
obtidos com o comando GRANT
www.provasdeti.com.br
Linguagens no-procedurais so usualmente
mais fceis de aprender e usar do que DMLs
procedurais
Se o usurio NO especificar COMO obter os
dados, as linguagens no-procedurais
podero gerar um cdigo no to eficiente.
www.provasdeti.com.br
Assinale a opo correta.
a) A DML procedural requer a especificao de
que dados so necessrios e a forma de obt-
los.
b) A DML associativa requer apenas a
especificao de que dados so necessrios.
c) A DML funcional requer a especificao de que
dados so necessrios e a forma de obt-los.
d) A DML declarativa requer a especificao de
que dados so necessrios e a forma de obt-
los.
e) A DML procedural requer apenas a
especificao de que dados so necessrios.
Assinale a opo correta.
a) A DML procedural requer a especificao de
que dados so necessrios e a forma de obt-
los.
b) A DML associativa requer apenas a
especificao de que dados so necessrios.
c) A DML funcional requer a especificao de que
dados so necessrios e a forma de obt-los.
d) A DML declarativa requer a especificao de
que dados so necessrios e a forma de obt-
los.
e) A DML procedural requer apenas a
especificao de que dados so necessrios.
A linguagem SQL dividida em subconjuntos de acordo
com as operaes que se deseja efetuar sobre um banco
de dados. Considere os grupos de comandos:
Os comandos listados em
a) I correspondem Data Control Language - DCL e II
Data Definition Language - DDL.
b) I correspondem Data Manipulation Language - DML e
III Data Control Language - DCL.
c) II correspondem Data Manipulation Language - DML
e III Data Control Language - DCL.
d) I correspondem Data Definition Language - DDL e III
Data Manipulation Language - DML.
e) II correspondem Data Control Language - DCL e III
Data Definition Language - DDL.
A linguagem SQL dividida em subconjuntos de acordo
com as operaes que se deseja efetuar sobre um banco
de dados. Considere os grupos de comandos:
Os comandos listados em
a) I correspondem Data Control Language - DCL e II
Data Definition Language - DDL.
b) I correspondem Data Manipulation Language - DML e
III Data Control Language - DCL.
c) II correspondem Data Manipulation Language - DML
e III Data Control Language - DCL.
d) I correspondem Data Definition Language - DDL e III
Data Manipulation Language - DML.
e) II correspondem Data Control Language - DCL e III
Data Definition Language - DDL.
Julgue os itens subsequentes, acerca dos
conceitos relacionados a bancos de dados.
SQL ANSI:
ALTER TABLE <table name> ADD [COLUMN] <column definition>;
PostgreSQL:
ALTER TABLE Cliente ADD COLUMN Tipo_Cli VARCHAR(2) NOT NULL DEFAULT PF;
ALTER TABLE Cliente ADD COLUMN DataNascimento DATETIME, ADD COLUMN Idade
INTEGER;
SQL ANSI:
SQL Server
ALTER TABLE Cliente ALTER COLUMN Tipo_Cli VARCHAR(4);
PostgreSQL:
ALTER TABLE Cliente ALTER [COLUMN] Tipo_Cli VARCHAR(4)
CREATE TABLE Cliente (
CliId VARCHAR(4) NOT NULL,
Nome VARCHAR(80) NOT NULL,
CPF VARCHAR(14) NOT NULL,
Sexo VARCHAR(1) DEFAULT M CHECK (Sexo IN (M, F)),
CONSTRAINT PK_CLIENTE PRIMARY KEY(CliId),
CONSTRAINT AK_CPF UNIQUE (CPF)
);
ALTER TABLE Cliente ADD CONSTRAINT C_Tipo_Cli CHECK (Tipo_Cli in (PF, PJ));
<acao_ref>
NO ACTION impede Default. A ao na tabela mestre
<tabela_ref>, checagem da integridade feita depois de alterar
a tabela
RESTRICT impede a ao na tabela mestre <tabela_ref>,
checagem da integridade feita antes de alterar a tabela
CASCADE propaga a ao da tabela mestre
SET NULL valores de referencias alterados para nulo
SET DEFAULT valores de referncias alterados para default
Taxi Corrida
T1 Ka T1 C1 01/01/2016
T2 Siena T1 C1 12/02/2016
T3 HB20 T2 C2 20/01/2015
T1 Ka T1 C1 01/01/2016
T2 Siena T1 C1 12/02/2016
T3 HB20 T2 C2 20/01/2015
T1 Ka T1 C1 01/01/2016
T2 Siena T1 C1 12/02/2016
T3 HB20 T2 C2 20/01/2015
Quando pediu a opinio de uma colega sobre esse script, Joo recebeu os
seguintes comentrios:
I. No possvel que haja uma chave estrangeira definida como Joo imaginou,
pois o atributo que constitui a chave estrangeira obrigatoriamente deveria ser
denominado nomeCerveja, tal qual o atributo da tabela referenciada.
II. H incompatibilidade entre a semntica do script e a instncia apresentada
para a tabela.
III. H incompatibilidade entre a semntica do script e a declarao dos atributos
da tabela.
I. No possvel que haja uma chave estrangeira definida como Joo
imaginou, pois o atributo que constitui a chave estrangeira
obrigatoriamente deveria ser denominado nomeCerveja, tal qual o
atributo da tabela referenciada.
II. H incompatibilidade entre a semntica do script e a instncia
apresentada para a tabela.
III. H incompatibilidade entre a semntica do script e a declarao dos
atributos da tabela.
(A) II, apenas.
(B) II e III, apenas.
(C) I e III, apenas.
(D) I e II, apenas.
(E) I, II e III.
I. No possvel que haja uma chave estrangeira definida como Joo
imaginou, pois o atributo que constitui a chave estrangeira
obrigatoriamente deveria ser denominado nomeCerveja, tal qual o
atributo da tabela referenciada.
II. H incompatibilidade entre a semntica do script e a instncia
apresentada para a tabela.
III. H incompatibilidade entre a semntica do script e a declarao dos
atributos da tabela.
(A) II, apenas.
(B) II e III, apenas.
(C) I e III, apenas.
(D) I e II, apenas.
(E) I, II e III.
Empregado Departamento
E1 Caio D1 D1 RH E1
E2 Ana D1 D2 TI E3
E3 Daniel D2 D3 Vendas E2
(0,n) Trabalha
(1,1)
Empregado Departamento
(1,1) Gerencia
(0,1)
www.provasdeti.com.br
CREATE TABLE empregado ( CREATE TABLE departamento (
Id_emp varchar(2) NOT NULL, Id_Depto varchar(2) NOT NULL,
nome varchar(200) NOT NULL, nome char(200) NOT NULL,
Id_Depto varchar(2) NOT NULL, Id_gerente varchar(2) NOT NULL,
PRIMARY KEY (id_emp) PRIMARY KEY (id_Depto)
) )
PostgreSQL:
ALTER TABLE Cliente ADD COLUMN Tipo_Cli VARCHAR(2) NOT NULL DEFAULT
PF;
ALTER TABLE Cliente ADD COLUMN DataNascimento DATETIME, ADD COLUMN
Idade INTEGER;
www.provasdeti.com.br
56 Em um banco de dados, a tabela Pessoa foi criada
com a seguinte instruo:
1 registro inserido
INSERT INTO VW_CONTAS VALUES (6, 400);
SELECT COUNT(*) FROM CONTAS; 6 registros retornados
1 registro alterado
0 registros alterados
1 registro alterado
UPDATE VW_CONTAS SET VALOR = 2000 WHERE NUMERO = 2; OK! 0 registros alterados
Alterao de view
ALTER VIEW VW_CONTAS AS
SELECT NUMERO, NOME, VALOR
FROM CONTAS;
A instruo acima
CREATE VIEW valores (nome, minsal, maxsal, medsal)
AS SELECT d.depnome, MIN(e.sal), MAX(e.sal), AVG(e.sal)
FROM empregado e, departamento d
WHERE e.depnro=d.depnro
GROUP BY d.depnome;
A instruo acima
a) est incorreta, pois no possvel criar view para exibir
valores a partir de duas ou mais tabelas.
b) est incorreta, pois a subconsulta que define a view no pode
conter a clusula GROUP BY
c) est correta, porm, os apelidos definidos para as colunas
no sero aplicados, pois eles deveriam estar na subconsulta
e no aps a clusula CREATE VIEW.
d) est incorreta, pois a funo para obter a mdia dos valores
contidos no campo sal MED e no AVG.
e) est correta, e a view ser criada com os nomes de
departamento e os valores mnimo, mximo e mdio dos
salrios por departamento.
CREATE VIEW valores (nome, minsal, maxsal, medsal)
AS SELECT d.depnome, MIN(e.sal), MAX(e.sal), AVG(e.sal)
FROM empregado e, departamento d
WHERE e.depnro=d.depnro
GROUP BY d.depnome;
A instruo acima
a) est incorreta, pois no possvel criar view para exibir
valores a partir de duas ou mais tabelas.
b) est incorreta, pois a subconsulta que define a view no pode
conter a clusula GROUP BY
c) est correta, porm, os apelidos definidos para as colunas
no sero aplicados, pois eles deveriam estar na subconsulta
e no aps a clusula CREATE VIEW.
d) est incorreta, pois a funo para obter a mdia dos valores
contidos no campo sal MED e no AVG.
e) est correta, e a view ser criada com os nomes de
departamento e os valores mnimo, mximo e mdio dos
salrios por departamento.
Na base de dados de um sistema de controle de clientes, foi
criada a tabela CLIENTES, que conta com as colunas: ID, NOME,
ENDERECO, CIDADE e UF. Os valores da coluna ID no se
repetem. Sobre essa tabela CLIENTES foi criada a viso
VCLIENTES_RJ, que busca apresentar os clientes do estado do Rio
de Janeiro. O comando de criao da viso VCLIENTES_RJ :
Gabarito preliminar, E
(A) nenhuma linha, pois, como a viso VCLIENTES_RJ somente
apresenta clientes do Rio de Janeiro, no possvel atualizar o
nome de um cliente de So Paulo.
(B) nenhuma linha, pois no possvel realizar atualizao sobre
vises.
(C) at trs das linhas da viso, cujo novo valor para a coluna
Nome pode ser verificado atravs de consulta prpria viso
VCLIENTES_RJ.
(D) at trs linhas da viso VCLIENTES_RJ, no sendo atualizadas
linhas da tabela CLIENTES.
(E) at trs linhas da tabela CLIENTES.
Gabarito preliminar, E
Sobre vises em bancos de dados relacionais, considere as
afirmativas a seguir.
I - O uso de vises permite restringir o acesso a dados das
tabelas por razes de segurana.
II - Fazer insert em uma viso gerada a partir de uma nica
tabela, e que no contenha a chave primria da tabela nessa
viso, gera erro.
III - impossvel fazer update em vises geradas por junes em
mais de uma tabela.
Est correto APENAS o que se afirma em
(A) I
(B) II
(C) III
(D) I e II
(E) II e III
Sobre vises em bancos de dados relacionais, considere as
afirmativas a seguir.
I - O uso de vises permite restringir o acesso a dados das
tabelas por razes de segurana.
II - Fazer insert em uma viso gerada a partir de uma nica
tabela, e que no contenha a chave primria da tabela nessa
viso, gera erro.
III - impossvel fazer update em vises geradas por junes em
mais de uma tabela.
Est correto APENAS o que se afirma em
(A) I
(B) II
(C) III
(D) I e II
(E) II e III
Sobre vises em bancos de dados relacionais, considere as
afirmativas a seguir.
I - O uso de vises permite restringir o acesso a dados das
tabelas por razes de segurana.
II - Fazer insert em uma viso gerada a partir de uma nica
tabela, e que no contenha a chave primria da tabela nessa
viso, gera erro.
III - impossvel fazer update em vises geradas por junes em
mais de uma tabela.
Est correto APENAS o que se afirma em
(A) I
(B) II
(C) III Mudou com os recursos para A
(D) I e II
(E) II e III
Um funcionrio, encarregado de verificar o correto funcionamento de
uma base de dados relacional, faz o seguinte teste:
select nome from emp where matr = 123;
O resultado vazio. Ento ele executa:
insert into emp(matr, nome, salario, ativo)
values (123, Jos da Silva, 2000, N);
commit;
O banco de dados no retorna erro e informa que inseriu uma linha. Por
fim, para verificar, ele consulta novamente:
select nome from emp where matr = 123;
O resultado continua vazio.
Supondo que o sistema gerenciador de banco de dados esteja funcionando
corretamente, que opo explica o ocorrido?
(A) Como o funcionrio executou o primeiro SELECT momentos antes de executar
o INSERT, o resultado ficou na memria cache do computador e no foi
executado pelo banco de dados na segunda vez. Somente aps o protocolo
LRU ter retirado do cache o resultado do SELECT que ele ser novamente
executado.
(B) Como emp uma viso e uma viso nada menos que uma consulta gravada
no banco de dados, nunca possvel us-la em operaes de manipulao de
dados. O COMMIT ignora a insero anterior.
(C) emp uma viso que retorna todos os empregados ativos (ativo=S), mas foi
criada sem a expresso WITH CHECK OPTION, que evitaria o problema acima.
(D) emp no uma tabela, mas uma viso que retorna todos os empregados
ativos (ativo=S) e foi criada com a expresso WITH CHECK OPTION. Dessa
forma, como o empregado Jos da Silva no est ativo, o banco de dados no
gravou o registro no momento do COMMIT.
(E) O funcionrio executou o SELECT pouco tempo aps a insero do registro.
Mesmo finalizando a transao com o COMMIT, o registro est em memria e
ainda no foi gravado no disco. Somente aps o CHECKPOINT que o registro
estar disponvel para consulta.
Supondo que o sistema gerenciador de banco de dados esteja funcionando
corretamente, que opo explica o ocorrido?
(A) Como o funcionrio executou o primeiro SELECT momentos antes de executar
o INSERT, o resultado ficou na memria cache do computador e no foi
executado pelo banco de dados na segunda vez. Somente aps o protocolo
LRU ter retirado do cache o resultado do SELECT que ele ser novamente
executado.
(B) Como emp uma viso e uma viso nada menos que uma consulta gravada
no banco de dados, nunca possvel us-la em operaes de manipulao de
dados. O COMMIT ignora a insero anterior.
(C) emp uma viso que retorna todos os empregados ativos (ativo=S), mas foi
criada sem a expresso WITH CHECK OPTION, que evitaria o problema acima.
(D) emp no uma tabela, mas uma viso que retorna todos os empregados
ativos (ativo=S) e foi criada com a expresso WITH CHECK OPTION. Dessa
forma, como o empregado Jos da Silva no est ativo, o banco de dados no
gravou o registro no momento do COMMIT.
(E) O funcionrio executou o SELECT pouco tempo aps a insero do registro.
Mesmo finalizando a transao com o COMMIT, o registro est em memria e
ainda no foi gravado no disco. Somente aps o CHECKPOINT que o registro
estar disponvel para consulta.
Q26 - Com relao a vises (views) e SQL ANSI, julgue os
itens consecutivos.
E
100. Em SQL, tanto CREATE VIEW quanto CREATE LIST TABLE
so comandos que permitem que seja especificada
uma view.
E
100. Em SQL, tanto CREATE VIEW quanto CREATE LIST TABLE
so comandos que permitem que seja especificada
uma view.
a) AD - BE - CF
b) AD - BF - CE
c) AE - BD - CF
d) AE - BF - CD
40) Relacione os commandos tpicos utilizados em cada
linguagem conforme tabela abaixo:
a) AD - BE - CF
b) AD - BF - CE
c) AE - BD - CF
d) AE - BF - CD
Q1 C
Q2 E Q16 B Q31 E
Q3 D Q17 C Q32 C
Q4 B Q18 A Q33 C
Q5 A Q19 E Q34 A
Q6 D Q20 D Q35 B
Q7 C Q21 B Q36 D
Q8 E Q22 E
Q9 E Q23 A
Q10 C Q24 A
Q11 A Q25 C
Q12 A Q26 E, E, C
Q13 D Q27 E
Q14 B Q28 C
Q15 E Q29 A
Q30 C
14
2