Banco de Dados Relacionais Parte V
Banco de Dados Relacionais Parte V
Banco de Dados Relacionais Parte V
INFORMAÇÃO
Banco de Dados Relacionais – Parte V
SISTEMA DE ENSINO
Livro Eletrônico
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Sumário
Patrícia Lima Quintão
Apresentação. . .................................................................................................................................. 4
Álgebra Relacional. . ......................................................................................................................... 5
Dependência Funcional.. ................................................................................................................13
Normalização de Dados. . .............................................................................................................. 14
SQL (Linguagem de Consulta Estruturada).............................................................................. 20
Terminologia Utilizada nesta Aula............................................................................................. 22
Regras Básicas para Escrever Comandos SQL.. ....................................................................... 23
Criação de Visões............................................................................................................................31
Comando SELECT. . .......................................................................................................................... 33
Cláusula WHERE............................................................................................................................. 34
Cláusula ORDER BY........................................................................................................................ 35
Junção de Tabelas.......................................................................................................................... 35
Funções de Grupo.......................................................................................................................... 37
Cláusula Group By. . ........................................................................................................................ 38
Cláusula Having. . ............................................................................................................................ 39
Subqueries (Subconsultas).......................................................................................................... 39
Tipos de Domínio na SQL..............................................................................................................42
Linguagens de Banco de Dados.................................................................................................. 43
DDL – Data Definition Language ou Linguagem de Definição de Dados. . .......................... 43
DML – Data Manipulation Language ou Linguagem de Manipulação de Dados..............44
DQL – Data Query Language ou Linguagem de Consulta de Dados....................................44
DCL – Data Control Language ou Linguagem de Controle de Dados..................................44
DTL – Data Transaction Language ou Linguagem de Transação de Dados.......................44
SDL – Storage Definition Language ou Linguagem de Definição de Armazenamento....44
VDL – View Definition Language ou Linguagem de Definição de Visões.. .......................... 45
PostgreSQL......................................................................................................................................49
Oracle............................................................................................................................................... 52
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 2 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
MySQL............................................................................................................................................... 54
Microsoft SQL Server.................................................................................................................... 55
Enterprise DB.................................................................................................................................. 58
Resumo............................................................................................................................................. 59
Questões Comentadas em Aula.................................................................................................. 63
Questões de Concurso.................................................................................................................. 67
Gabarito.......................................................................................................................................... 124
Referências Bibliográficas. . ....................................................................................................... 125
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 3 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Apresentação
Olá, querido(a) amigo(a), tudo bem?
Após os estudos sobre os conceitos fundamentais de bancos de dados, vamos ao
aprendizado da Álgebra Relacional, da normalização de dados, e da SQL – uma linguagem de
pesquisa declarativa para Bancos de Dados Relacionais.
Com o conhecimento de SQL é possível, entre outras coisas, extrair informações dos
Bancos de Dados, de forma a torná-los uma ferramenta útil para a realização de auditorias,
inspeções etc.
Por fim, destacaremos alguns pontos principais relacionados a: PostgreSQL, Oracle, MySQL,
SQL Server e EnterpriseDB.
Estarei adicionando inúmeros exercícios para melhor fixação da matéria. Espero que
aproveite!
Finalizando, como qualquer questão pode ser decisiva para a sua aprovação, então, vamos
“arregaçar as mangas” e partir para mais esta etapa do curso. Boa sorte nos estudos! Estou
torcendo pelo seu sucesso!
Em caso de dúvidas, acesse o fórum do curso ou entre em contato.
Um forte abraço,
Profa Patrícia Quintão
Instagram: @coachpatriciaquintao
WhatsApp: (31) 99442.0615
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 4 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
ÁLGEBRA RELACIONAL
• A Álgebra Relacional é uma linguagem de consulta formal, porém procedimental, em
que o usuário dá as instruções ao sistema para que o mesmo realize uma sequência de
operações na base de dados para calcular o resultado desejado.
• A álgebra relacional é uma forma de cálculo sobre conjuntos ou relações.
• Existem diversas operações em álgebra relacional, como: seleção, projeção, renomear,
produto cartesiano, união e diferença entre conjuntos, interseção de conjuntos, junção
natural.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 5 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Seleção σ
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 6 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Projeção
Seleção e
projeção
juntas
Exemplo:
π CPF,Nome,Cidade (σ Nascimento > 30/07/1970
(Aluno))
Nesse caso irá primeiramente resolver o que está dentro
dos parênteses, sendo retornada uma relação com as
tuplas que obedecem à condição estabelecida (que o
atributo Nascimento seja maior que 30/07/1970).
Nessa relação retornada é feita uma operação de
projeção, para retornar apenas os campos listados.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 7 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 8 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Esquematizando:
www.grancursosonline.com.br 9 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Álgebra Relacional pode ser definida como uma linguagem de consulta formal e procedimental,
ou seja, um conjunto de operações de alto nível sobre relações ou conjuntos cujo resultado
seja uma nova relação ou conjunto.
As principais operações são: seleção, projeção, junção, produto cartesiano, união, intersecção
e diferença.
Nota: qualquer operação sobre uma tabela resultará em uma nova tabela.
Letra b.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 10 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Existem diversas operações em álgebra relacional, entre as quais: seleção, projeção, renomear,
produto cartesiano, união e diferença entre conjuntos, interseção de conjuntos, junção natural.
Seleção, projeção, produto cartesiano são operações fundamentais.
A seleção é utilizada para selecionar um conjunto de tuplas (linhas) de uma relação.
A operação de projeção (particionamento vertical) seleciona certas colunas da tabela (relação)
e descarta outras.
Produto cartesiano é uma operação binária (atua em duas relações) que une cada elemento de
uma relação a um elemento da outra relação.
Letra d.
Trata-se da operação de junção (⋈), quando dois conjuntos de dados são concatenados de
acordo com uma determinada condição.
Letra e.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 11 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Interseção (∩) é uma operação que produz como resultado uma tabela que contém, sem
repetições, todos os elementos que são comuns às duas tabelas fornecidas como operandos.
Letra b.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 12 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
A diferença (-) é uma operação que produz como resultado uma tabela que contém todas as
linhas que existem na primeira tabela e não existem na segunda.
Letra c.
Dependência Funcional
Antes de explicitar as formas normais e destacar a linguagem SQL (Structured Query
Language ou Linguagem de Consulta Estruturada), vamos ao conceito de dependência
funcional.
Dependência funcional nada mais é do que um relacionamento que existe entre atributos de
uma relação.
Considerando a Relação ATOR acima, temos que nomeAtor depende funcionalmente de idAtor.
O que significa isso? Ora, significa que pelo idAtor eu descubro o nomeAtor. Ou seja, idAtor
determina nomeAtor, e nomeAtor depende funcionalmente de idAtor.
Isso é representado da seguinte forma:
idAtor -> nomeAtor
Mas será que o contrário é verdadeiro? Não, não é. Eu posso ter dois atores com o mesmo
nome, mas eles teriam idAtor diferentes. Então, pelo nomeAtor eu não determino idAtor.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 13 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Bem, já sabemos que a chave primária determina os outros atributos. Mas olhem o atributo
Total. O que é total? Simplesmente é Quantidade x ValorUnitario. Então, esses dois campos
determinam Total, existindo assim uma dependência funcional (DF):
Quantidade,Valor -> Total
Dessa forma, temos que: um atributo Y é funcionalmente dependente de um atributo X se
cada valor de X tenha associado a ele precisamente um valor de Y.
Quando o atributo X é uma chave primária, então todos os atributos são, por definição,
dependentes de X, pois não podem existir dois registros com o mesmo valor para X.
Notação: R.x R.y (lê-se a coluna x da tabela relacional R funcionalmente determina
(identifica) a coluna y.
A dependência funcional pode ser classificada em:
• Total: um atributo é totalmente dependente de outro se ele for funcionalmente dependente
do outro e não dependente de um subconjunto de outro.
• Parcial: um atributo é parcialmente dependente de outro se ele for funcionalmente
dependente de um subconjunto de outro.
Considere a tabela seguinte, em que a chave primária é formada pelos atributos código-
func + código-curso.
• O atributo avaliação é dependente total da chave composta.
• Já o atributo descrição-curso tem dependência parcial com relação a esta chave, pois
depende somente de parte dela, ou seja, de códigocurso.
Normalização de Dados
A normalização pode ser vista como o processo no qual são eliminados esquemas de
relações (tabelas) não satisfatórios, decompondo-os, por meio da separação de seus atributos
em esquemas de relações menos complexas mas que satisfaçam às propriedades desejadas.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 14 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
As primeiras formas normais foram criadas na década de 1970 por Codd, e persistem até
hoje. Elas são importantes para verificar se seu Banco de Dados está bem projetado.
Vamos ver aqui as principais formas normais.
• Primeira Forma Normal (1FN)
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 15 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Telefone 1 Endereço
sendo que a mesma não está na 1a Forma Normal pois seus atributos não são atômicos.
Para que a tabela acima fique na 1a Forma Normal temos que eliminar os atributos não
atômicos, gerando as seguintes tabelas como resultado:
Uma relação estará na 2ª FN, se e somente se, estiver na 1a FN e os seus atributos não
chaves forem dependentes funcionais completos da chave primária.
Em outras palavras, se algum atributo da tabela depender funcionalmente apenas de parte
da chave primária, então este atributo deverá migrar para outra tabela. Dessa forma, eu não
posso ter um atributo na chave primária que, sozinho, define um outro atributo não chave.
A 2a Forma Normal prega o conceito da dependência funcional total. Uma dependência
funcional X Y é total se removemos um atributo A qualquer do componente X e desta forma,
a dependência funcional deixa de existir.
A dependência funcional X Y é uma dependência funcional parcial se existir um atributo
A qualquer do componente X que pode ser removido e a dependência funcional X Y não deixa
de existir.
{ RG_Empregado, Número_Projeto } Horas
é uma dependência funcional total, pois se removermos o atributo RG_Empregado ou o
atributo Número_Projeto, a dependência funcional deixa de existir.
Uma tabela T está na 2a Forma Normal se estiver na 1a Forma Normal e todos os seus
atributos não chaves forem totalmente funcionalmente dependente da chave primária C.
Se uma tabela não está na 2a Forma Normal, a mesma pode ser normalizada gerando
outras tabelas cujos atributos que não façam parte da chave primária sejam totalmente
funcionalmente dependente da mesma, ficando a tabela na 2a Forma Normal.
Exemplo:
Seja a relação AtorParticipa (IdDVD, IdAtor, NomeAtor) aqui destacada. Essa relação não
está na 2FN, porque um dos atributos que fazem parte da chave primária, de forma isolada,
determina um atributo não chave. Ou seja, idAtor determina NomeAtor.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 16 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
E como fazer para deixar essa relação na 2FN? Simples, basta tirar o atributo nomeAtor
dessa relação e deixá-lo apenas na relação Ator.
Ator (IdAtor, nomeAtor)
Uma relação estará na 3ª FN, se e somente se, estiver na 2 a FN e todos os seus atributos
não chaves forem dependentes não transitivos da chave primária.
Assim, a 3a Forma Normal prega o conceito de dependência transitiva. Uma tabela está
na 3a Forma Normal se estiver na 2a Forma Normal e não houver dependência transitiva entre
atributos não chave.
Mas trocando em miúdos, para uma relação estar em 3FN um campo não chave não pode
ser determinado por outro(s) campo(s) não chave. No caso da 3FN, fazemos essa checagem
para cada chave candidata.
O que seria essa Dependência Transitiva?
Quando você terminar de normalizar a 2FN, TODOS os seus atributos serão plenamente
dependentes da chave primária. Mas, isso não impede a dependência transitiva, pois se A ->
B e B -> C, por transitividade A -> C, logo C é plenamente dependente da chave primária. Em
outras palavras se CPF --> CARGO e o CARGO --> SALARIO, CPF também determina o salário.
Esse tipo de dependência funcional será resolvido pela 3FN.
A normalização feita a partir da regra definida pela terceira forma normal leva a relação para
um estado específico. Neste, a relação tem que estar na segunda forma normal e ainda todo
atributo não primário da relação não é transitivamente dependente de uma chave da relação.
Uma relação está na Terceira Forma Normal (3NF) se ela está na 2FN e nenhum atributo
não chave (não primário) é transitivamente dependente de uma chave candidata. Enfim, na
3FN não se aceita dependência transitiva.
Se você achou essa definição de dependência transitiva complexa, deixa eu tentar explicar
de outra forma. Primeiro você precisa ter em mente que, para existir a transitividade, temos que
ter algumas premissas. Um atributo chave (primário), por exemplo, CPF, determina um outro
atributo (não primário), por exemplo, telefoneResidencial; que, por sua vez, determina outro
atributo (não primário), por exemplo, Endereco.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 17 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Além da 3FN, todo atributo não chave deve depender funcionalmente diretamente da chave
primária, ou seja, não pode haver dependências entre atributos não chave. É uma afirmação
um pouco mais forte do que a 3FN.
Uma relação estará na 4ª FN, se e somente se, estiver na 3a FN e não possuir dependências
multivaloradas.
Conforme destaca Oliveira (2002), “pode ocorrer de estarmos com um modelo na 3FN e
mesmo assim haver alguma redundância. Isso ocorrerá quando um atributo não chave contiver
valores múltiplos para uma mesma chave, o que indica uma dependência multivalorada (a
repetição de dois ou mais atributos não chave, gerando uma redundância desnecessária
no modelo)”.
Veja o exemplo com dependência multivalorada, citado por Oliveira (2002), a seguir:
Música Intérprete Gravadora
Será Renato Russo EMI
Será Simone PolyGram
Será Renato Russo PolyGram
Imagine John Lenon EMI
Imagine Simone EMI
Imagine John Lenon PolyGram
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 18 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Observe que não podemos criar uma chave com música (ela se repete), nem com música
+ intérprete (também há repetição), e caso coloquemos os três campos como chave, teremos
uma alternativa válida, mas redundante, pois haverá repetição de música e autor ou música e
gravadora.
Solução (com aplicação da 4FN):
É necessário dividir essa entidade em duas. Cada uma das entidades herdará a Música
como chave e conterá o outro atributo. A primeira entidade ficaria assim:
Música Intérprete
Será Simone
Imagine Simone
e a outra assim:
Música Gravadora
Será EMI
Será PolyGram
Será PolyGram
Imagine EMI
Imagine MI
Imagine PolyGram
Caso raro de ocorrer, é o que destaca Oliveira (2002). Segundo esse autor, tecnicamente,
utiliza-se a 5FN quando uma tabela na 4FN pode ser subdividida em duas ou mais tabelas,
para evitar eventuais redundâncias ainda existentes.
É como se tivéssemos, na aplicação da 4FN, deixado três campos em uma das tabelas
criadas e esses campos tivessem novamente valores multivalorados.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 19 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Solução: Para solucionar essa redundância, basta dividir novamente a tabela em duas
outras, carregando o campo-chave e herdando o outro atributo.
A verificação da 5 FN somente precisa ser empreendida em relações que tenham 3 ou mais
atributos como parte da chave.
Figura. Normalização
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 20 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 21 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
• SQL é uma linguagem de consulta interativa: o usuário tecla comandos num editor
interativo que recupera e permite uma consulta fácil e rápida ao banco de dados.
• SQL é uma linguagem de programação de banco de dados: programadores incluem
comandos SQL em seus programas de aplicação para acessar os dados em um banco.
• SQL é uma linguagem para administração do banco de dados: o Administrador do Banco
de Dados usa SQL para definir a estrutura da base de dados e controlar o acesso aos
dados que nela serão armazenados.
• SQL é uma linguagem cliente/servidor: programas em computadores pessoais usam
SQL para comunicar em uma rede com servidores de bancos de dados.
• SQL é uma linguagem de bancos de dados distribuídos: SGBDs distribuídos usam SQL
para auxiliar a distribuição dos dados por meio de vários computadores interligados.
Isso mesmo! Trata-se de uma linguagem padrão para manipulação de bancos de dados
relacionais. Por meio dela, um usuário pode executar comandos para inserir, pesquisar,
atualizar ou deletar registros em um banco de dados, criar ou excluir tabelas, conceder ou
revogar permissões para acessar o banco de dados etc.
Certo.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 22 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Alguns exemplos:
select
SELECT *
select * from cliente; *
from cliente;
from cliente;
• Criação de Tabelas:
A criação do banco de dados deve começar com a criação das tabelas nas quais os dados
serão introduzidos.
Para criar uma tabela em SQL, usa-se o comando CREATE TABLE.
O comando DDL para criar uma tabela deve conter os nomes das colunas, os tipos dos
seus dados e os tamanhos dos dados a serem introduzidos.
É a seguinte a sintaxe desse comando:
CREATE TABLE nome_da_tabela
(Nome_da_coluna1 tipo_do_dado (tamanho_do_dado)
Nome_da_coluna2 tipo_do_dado (tamanho_do_dado)
...
Nome_da_colunaN tipo_do_dado (tamanho_do_dado));
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 23 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Obs.: Constraints nada mais são que restrições que você estabelece para uma coluna no
banco de dados, ou seja, um método para validar a integridade de todos os dados que
entram em sua base.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 24 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Conforme visto, cabe destacar que o Check é a constraint que pode ser usada para restringir os
valores de domínio, verificando se eles estão contidos no conjunto de valores especificados.
Como ficaria essa definição de campo em uma tabela qualquer? Veja:
nomeColuna INTEGER NOT NULL CHECK (nomeColuna > 0).
Letra b.
• Criação de um Índice:
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 25 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
• Exclusão de Tabelas:
Para excluir uma tabela de um banco de dados, use o comando DROP TABLE seguido do
nome da tabela:
DROP TABLE nomedatabela;
Quando uma tabela é excluída por um comando SQL, como acima, todas as visões e índices
definidos sobre a tabela são automaticamente excluídos.
Exemplo:
DROP TABLE EMP;
• Exclusão de Índices:
Para EXCLUIR um índice, use o comando SQL DROP INDEX seguido do nome do índice:
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 26 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Obs.: A eliminação de um índice não elimina as tabelas ou visões relacionadas com o índice.
• Inserção:
A maioria dos sistemas trata a carga inicial no banco de dados de um grande conjunto de
dados numa operação genérica de carga. O comando SQL INSERT geralmente é usado para
inserir linhas individuais de dados num banco de dados já existente.
A sintaxe desse comando é:
INSERT
INTO nome_da_tabela (nome_da_coluna1, nome_da_coluna2,...)
VALUES (‘valor1’, ‘valor2’, ...);
Se a lista de valores está na mesma sequência que as colunas na tabela e há um valor para
cada coluna da tabela, então a lista de nomes das colunas pode ser omitida. Caso contrário, os
nomes das colunas devem ser especificados como mostrado acima.
Os valores inseridos devem ter o tipo compatível com o tipo da coluna na qual estão sendo
inseridos.
Valores do tipo CHAR devem estar entre aspas simples; valores do tipo NUM ou do tipo
NULL não devem ser colocados entre aspas simples.
Exemplos:
Insert Into PESSOA (CPF, NOME, SEXO)
values (‘11122233344’,’Patricia’, ‘F’);
Insert Into PESSOA (CPF, NOME, SEXO)
Select CPF, NOME, SEXO From Aluno
• Atualização:
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 27 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
WHERE condição;
A cláusula SET do comando UPDATE indica as colunas a serem alteradas e quais os
novos valores.
O comando UPDATE atua em todas as linhas que satisfazem a condição especificada pela
cláusula WHERE. A cláusula WHERE é opcional, mas, se for omitida, todas as linhas serão
atualizadas.
Você pode atualizar várias colunas em cada linha com um único comando UPDATE listando
as várias colunas após a cláusula SET, conforme visto acima.
A cláusula WHERE no comando UPDATE pode conter uma subconsulta.
Exemplo:
UPDATE PESSOA
SET idade = 20
WHERE nome = ‘Maria’;
• Exclusão:
O comando DELETE é usado para remover linhas de uma tabela. Sua forma geral:
DELETE
FROM nome_da_tabela
WHERE condição;
Você não pode excluir parcialmente uma linha, portanto não precisa especificar os nomes
das colunas no comando DELETE.
A cláusula WHERE determina que linhas serão eliminadas. Ela pode ser complexa e incluir
várias condições, conectores e/ou subconsultas.
Se você deseja excluir todas as linhas de uma tabela, omita a cláusula WHERE, como
listado a seguir:
DELETE
FROM nome_da_tabela;
O comando anterior eliminará todas as linhas, deixando apenas as especificações das
colunas e o nome da tabela.
• Recuperação Usando SELECT:
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 28 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Obs.: SELECT e a cláusula FROM são necessárias em todas as consultas SQL. Devem
aparecer antes de qualquer outra cláusula na consulta.
O resultado de uma consulta SQL é SEMPRE uma tabela.
A cláusula FROM é necessária para uma consulta SQL; as cláusulas WHERE, GROUP BY,
HAVING e ORDER BY são opcionais.
Exemplos:
SELECT * From PESSOA;
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 29 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Observe o uso do LIKE no exemplo acima. LIKE determina se uma cadeia de caracteres
específica corresponde a um padrão especificado. Um padrão pode incluir caracteres normais
e coringas.
Durante a correspondência de padrões, os caracteres normais devem corresponder
exatamente aos caracteres especificados na cadeia de caracteres.
No entanto, os caracteres coringas podem ser correspondidos a fragmentos arbitrários da
cadeia de caracteres.
Exemplo:
O caractere % (combina qualquer substring, independentemente do tamanho) e _ (combina
caractere a caractere).
Expressão Explicação
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 30 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Expressão Explicação
Criação de Visões
Uma visão (view) pode ser considerada como uma maneira alternativa de observação de
dados de uma ou mais entidades (tabelas). Pode ser considerada também como uma tabela
virtual ou uma consulta armazenada.
Uma vez que a view é gerada, o seu conjunto de dados é armazenado em uma tabela
temporária (virtual), tornando o acesso às informações mais rápido.
Deve-se ressaltar que uma view não existe fisicamente, é uma tabela virtual. No entanto,
os dados contidos em uma view podem ser modificados normalmente.
View (visão) é uma tabela única derivada de outras tabelas. Por não existir fisicamente,
pode ser considerada uma tabela virtual. A visão, diferentemente das tabelas básicas, não
contém suas tuplas armazenadas no banco de dados.
As vantagens de se usar views são:
• permite economizar tempo, evitando retrabalho;
• aumenta a velocidade de acesso aos dados;
• esconde a complexidade do banco de dados;
• simplifica a gerência de permissão de usuários; e
• organiza os dados a serem exportados.
Para criar uma visão, você seleciona apenas as colunas da tabela (ou tabelas) básica em
que está interessado.
Obs.: Visões podem ser criadas usando expressões de consulta para extrair dados de
outras visões.
Além disso, é possível criar uma visão que contém apenas dados calculados e, que,
portanto, não possuem dados armazenados em uma tabela base.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 31 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Para definir uma visão, você deve dar um nome para a visão e então estabelecer a consulta
contendo os nomes das colunas e as especificações que constituirão a visão. A sintaxe é:
CREATE VIEW nome-de-visão [ (nomes_das_colunas_da_visão) ]
AS (expressão da consulta);
onde (expressão da consulta) é um comando SELECT FROM.
Exemplo:
CREATE VIEW Empregados_Sede
AS SELECT (Nome, Endereco, Sexo, Data-nasc)
FROM EMPREGADO
Mais comandos:
TRIGGERS (gatilhos)
Uma trigger é uma sub-rotina, parecida com uma stored procedure, que tem como
característica ser executada automaticamente a partir de alguma ação realizada no
banco de dados.
Geralmente utilizada com um tipo de proteção ao acesso indiscriminado a dados de uma
tabela. Quando há uma tentativa de inserir, atualizar ou excluir os dados em uma tabela, e
uma trigger tiver sido definida na tabela para essa ação específica, ela será executada
automaticamente, não podendo ser ignorada.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 32 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Comando SELECT
A sintaxe mais simples do comando SELECT é:
SELECT [DISTINCT | ALL] {* | coluna [, coluna, ...]}
FROM tabela
em que:
Cláusula Descrição
Exemplo: Para retornar todos os nomes e códigos dos clientes da tabela cliente:
SELECT cod_cliente, nome_cliente
FROM cliente
Exemplo:
SELECT * FROM Empregado
Esse exemplo utiliza o coringa “*” para selecionar as colunas na ordem em que foram
criadas. A instrução select seleciona um grupo de registros de uma (ou mais) tabela(s). No
caso, a instrução from indica a necessidade de pesquisarmos tais dados apenas na tabela
Empregado.
Eliminação de Duplicações
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 33 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Utilização de Pseudônimos
A SQL oferece um modo de renomear os atributos de uma relação resultante. Para isso,
usa a cláusula as, tomando a forma:
nome-antigo as nome-novo
Exemplo:
SELECT Matricula AS Matricula_Empregado
FROM Empregado
A cláusula as pode aparecer nas cláusulas select e from. Considere a consulta seguinte
como exemplo:
SELECT nome AS nome_instrutor, id_curso
FROM instrutor, ministra
WHERE instrutor.ID = ministra.ID;
Nesse exemplo, o nome do atributo nome foi substituído pelo nome nome_instrutor.
A cláusula as é particularmente útil na renomeação de relações. Um motivo para renomear
uma relação é substituir um nome de relação longo por uma versão abreviada, mais
conveniente para usar em outro ponto da consulta. Veja o exemplo: “Para todos os instrutores
na universidade que ministraram algum curso, ache seus nomes e a ID do curso para todos os
cursos que eles ministraram”.
SELECT T.nome, S.id_curso
FROM instrutor as T, ministra as S
WHERE T.ID = S.ID;
Cláusula WHERE
SELECT colunas
FROM tabela
[WHERE condição]
• Operadores:
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 34 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Conjunção de condições
SELECT *
FROM Empregado
WHERE Nome = ‘Paulo’ AND Salario > 1000
Disjunção de condições
SELECT *
FROM Empregado
WHERE Matricula = 1 OR Nome LIKE ‘J%’
Cláusula ORDER BY
SELECT colunas
FROM tabela
[WHERE condição]
[ORDER BY {coluna1,...} [ASC|DESC]]
• Exemplo:
SELECT *
FROM Empregado
ORDER BY Nome
Junção de Tabelas
• Objetivo: combinar linhas de tabelas diferentes, por meio de valores comuns em colunas
correspondentes.
• Exemplo:
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 35 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Essa é a primeira grande diferença entre os joins e o produto cartesiano. Neste eu posso
relacionar tabelas que não têm nenhum campo em comum (apesar de isso não fazer muito
sentido). Já nos joins, eu preciso ter um relacionamento entre as tabelas, senão não tem join.
Temos os seguintes tipos de joins:
LEFT JOIN: é usando para juntar dados de duas ou mais tabelas retornando todas as linhas
da tabela à esquerda (A) MESMO QUE NÃO HAJA correspondência na tabela da direita (B).
SELECT *
FROM A
LEFT JOIN B ON A.ID = B.ID
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 36 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
LEFT JOIN: Podemos ainda excluir os registros exibindo os itens da tabela à esquerda (A)
que NÃO tem correspondências na tabela à direita (B).
SELECT *
FROM A
LEFT JOIN B ON A.ID = B.ID
WHERE A.ID IS NULL;
RIGTH JOIN: é usado para juntar dados de duas ou mais tabelas retornando todas as linhas
da tabela à direita MESMO QUE NÃO HAJA correspondência na tabela da esquerda.
Funções de Grupo
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 37 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
• Exemplo
Cláusula Group By
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 38 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
GROUP BY CodFilial
SELECT COUNT (Nome)
FROM Empregado
GROUP BY CodFilial
Cláusula Having
• Objetivo: restringir funções de grupo! Esta opção só é utilizada combinada com a opção
GROUP BY.
Obs.: A cláusula GROUP BY deve ser colocada ANTES da HAVING, pois os grupos são
formados e as funções de grupos são calculadas antes de se resolver a cláusula HAVING.
Subqueries (Subconsultas)
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 39 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
• Sintaxe de exemplo:
• Exemplos:
Quando a subquery retornar mais de um valor, os operadores ANY e ALL podem ser
utilizados para compatibilizar o resultado da subquery com o tipo do operador de comparação.
<campo> > ANY <subquery>
Essa condição será verdadeira quando <campo> for maior que qualquer um dos resultados
da subquery.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 40 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
SELECT Descricao
FROM Produto
WHERE Precounitario > ALL ( SELECT Precounitario
FROM Produto
WHERE Tipo = ‘HARDWARE’);
Operadores IN e NOT IN
Verifica se o dado faz parte ou não da lista fornecida. A lista pode ser formada por valores
retornados por uma subquery.
Exemplo: Listar as notas de venda e os respectivos vendedores, em que constem mais de
2 produtos vendidos.
Operadores de Conjuntos
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 41 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Exemplo:
Listar todas as Notas de venda que sejam do vendedor ‘JUCA’, ou em que conste o produto 14.
EXISTS: retorna “verdadeiro” se uma determinada subquery retornar ao menos uma linha e
“falso” caso contrário.
NOT EXISTS: retorna o resultado contrário do operador EXIST.
Exemplo:
Listar a descrição de todos os produtos que já foram vendidos.
SELECT Descricao
FROM Produto p
WHERE EXISTS (SELECT IdProduto FROM ItemNota i WHERE p.IdProduto =
i.IdProduto )
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 42 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 43 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
www.grancursosonline.com.br 44 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Isso mesmo! O comando DROP TABLE é utilizado para excluir uma tabela do banco de dados.
Deve ser usado com cuidado porque ele apaga a tabela com todos os seus dados.
SINTAXE DO COMANDO:
DROP TABLE NOME_DA_TABELA;
EXEMPLO DO COMANDO:
DROP TABLE teste;
O comando DROP TABLE remove a tabela inteira da base de dados que inclui a sua
estrutura e registros.
Letra c.
A linguagem SQL possui diversos comandos para acessar e manipular dados, criação, exclusão
e alteração das tabelas, índices e demais estruturas de bancos de dados, além de comandos para
controlar os dados e transações. Podemos subdividir a linguagem nos seguintes subgrupos:
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 45 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 46 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
A DCL (Data Control Language ou Linguagem de Controle de Dados) serve para controlar dados!
E qual é o significado dela? Essa linguagem possui um conjunto de comandos para lidar com
autorizações de dados e licenças de usuários para controlar quem tem acesso para ver ou
manipular dados dentro do banco de dados.
São exemplos de comandos dessa linguagem:
GRANT: utilizado para conceder permissão a um usuário em relação a algum objeto, assim
altera as permissões em objetos-esquema.
REVOKE: utilizado para remover ou restringir a capacidade de um usuário de executar
operações. É o inverso do commando GRANT.
Ao executarmos o comando REVOKE <privilégio> FROM <usuário>, estamos cancelando a
permissão que aquele usuário tem de realizar a operação.
Certo.
A questão deixa dúvidas quando menciona “gerar os dados das tabelas”. Quando falamos em
dados pensamos nas informações armazenadas nas tabelas e isso se trata de comandos DML
(Data Manipulation Language), portanto, estaria errada a afirmação. Por outro lado, a palavra
“dados” pode ser interpretada como a estrutura da tabela, ou seja, os campos, as restrições de
integridade e os tipos de dados.
Diante da polêmica, essa questão teve seu gabarito alterado de ERRADO para CERTO usando o
seguinte argumento como justificativa: “Os comandos do grupo DDL – Data Definition Language
– do SQL permitem gerar tabelas que formam um banco de dados, porém, as estruturas e os
conteúdos das tabelas devem ser definidos anteriormente. Dessa forma, opta-se pela alteração
do gabarito”
Certo.
017. (UFPR/ITAIPU/2015) Sobre a Linguagem SQL (DDL e DML), assinale a alternativa correta
segundo o padrão SQL ANSI 92.
a) Insert, Delete e Update são operações DDL.
b) Inner join, left outer join, right outer join, full outer join e cross join são cláusulas de junções
suportadas pelo padrão.
c) Modify Table e Truncate Table são operações DDL.
d) ADD, EXISTS, BETWEEN, LIKE, IS e IN são operadores relacionais válidos segundo o padrão.
e) CASE, NVL, TRIM e UPPER são operações DDL.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 47 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 48 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
PostgreSQL
• SGBD objeto-relacional (ORDBMS), com ênfase em extensibilidade e em padrões de
conformidade.
• É baseado no POSTGRES versão 4.2, desenvolvido na Universidade de Berkeley na
Califórnia, mais especificamente em Berkeley Computer Science Department.
• Possui licença livre, assim, pode ser usado, modificado e distribuído gratuitamente por
qualquer pessoa, para qualquer fim, seja ele privado, comercial ou acadêmico.
• Suporta grande parte dos comandos da linguagem SQL/ANSI padrão.
• Oferece diversas características modernas, como: consultas complexas, chaves
estrangeiras, triggers, visões atualizáveis, integridade transacional e controle de
concorrência multiversão.
• Multiversion Concurrency Control (MVCC): o nível de bloqueio de tabela foi substituído
por um sistema de controle de concorrência multiversão sofisticado, que permite aos
usuários continuar lendo dados consistentes durante a atividade de escrita, possibilitando
backups on-line, enquanto o banco de dados está em execução.
• Várias melhorias foram feitas na sintaxe do SQL, incluindo subconsultas, padronização,
restrições, chaves primárias, chaves estrangeiras, identificadores entre aspas, tipo de
coerção de string literal (literal string type coercion), tipo casting, entrada dos tipos inteiro
binário e hexadecimal etc.
• Usa um modelo cliente/servidor, consistindo de um processo servidor que gerencia os
arquivos do banco de dados, controla as conexões dos clientes ao banco dados e efetua
ações no banco de dados em favor dos clientes.
• A aplicação cliente pode estar localizada em uma máquina diferente da máquina em
que o servidor está instalado. Neste caso, a comunicação entre ambos é efetuada por
uma conexão TCP/IP.
• O servidor PostgreSQL pode lidar com várias conexões simultâneas de clientes. Em outras
palavras, o servidor pode aceitar diferentes conexões dos clientes ao mesmo tempo.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 49 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
• Suporta vários tipos de dados SQL em diversas categorias: tipos numéricos, monetários,
cadeias de caractereres, binários, booleanos, enuns, geométricos, data e hora etc.
• Oferece suporte a tipos de dados especializados, tais como: o JSon (armazena uma cópia
exata do texto de entrada) e o JSonb (armazena em um formato binário decomposto que
torna um pouco mais lento a entrada devido à sobrecarga de conversão adicionada, no
entanto é significativamente mais rápido de processar, pois não é necessária nenhuma
nova correção. Também suporta indexação.).
• É possível configurar diversos parâmetros de funcionamento por meio da edição do
arquivo postgresql.conf, que é lido sempre que o processo do servidor principal recebe
um sinal SIGHUP.
• O diretório de dados do PostgreSQL contém um arquivo postgresql.auto.conf, que possui
o mesmo formato do postgresql.conf, mas nunca deve ser editado manualmente.
• Podemos acessar o servidor PostgreSQL remotamente através da rede. No entanto,
devemos especificar o host, que é um nome de host, ou um hostaddr, que é um endereço
IP. Pode-se especificar o host como “localhost”, se quisermos fazer uma conexão TCP/
IP para o mesmo servidor.
• SELECT inet_server_port(); -> Exibe a porta na qual o servidor está escutando.
• SELECT current_database(); -> Mostra o banco de dados atual.
• SELECT current_user; -> Mostra o ID do usuário atual.
• SELECT inet_server_addr(); -> Mostra o endereço IP do servidor que aceitou a conexão.
• O parâmetro de configuração listen_address especifica os endereços TCP/IP nos quais
o servidor deve escutar conexões de aplicativos clientes.
− Na maioria dos casos, nós queremos aceitar conexões em todas as NICs. Por isso,
usamos a entrada especial “*”, que significa “todos os endereços IP”. A entrada
0.0.0.0 permite escutar todos os endereços IPv4 e:: permite escutar todos os
endereços IPv6.
• A autenticação do cliente é controlada por um arquivo de configuração, cujo nome é
pg_hba.conf.
− Os registros do pg_hba.conf são examinados sequencialmente para cada tentativa
de conexão (as diretivas são avaliadas a partir da linha superior, para a linha inferior).
− Cada registro do pg_hba.conf especifica:
o um tipo de conexão,
o um intervalo de endereços IP do cliente (se relevante para o tipo de conexão),
o um nome de banco de dados,
o um nome de usuário, e
o o método de autenticação a ser utilizado para as conexões que correspondem a
esses parâmetros.
• As configurações de memória compartilhada exigem que o banco de dados seja
reinicializado para serem aplicadas.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 50 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Isso mesmo! Como os registros do pg_hba.conf são examinados sequencialmente para cada
tentativa de conexão, as diretivas são avaliadas a partir da linha superior, para a linha inferior.
Certo.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 51 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Oracle
• Toda vez que um banco de dados é iniciado, uma área global de sistema é alocada e os
processos background são iniciados.
• System Global Area (SGA) é uma região de memória compartilhada que contém os
dados e informações de controle para uma instância Oracle.
− O Oracle aloca a SGA quando uma instância é iniciada e desaloca quando a instância
é finalizada.
− Cada instância tem seu próprio SGA.
• Quando uma instância é iniciada, o SGBD Oracle 11g aloca uma área de memória e
inicia processos de background. A memória alocada para variáveis de sessão, como
informações de logon e outras informações necessárias por uma sessão do banco de
dados, é a: User Global Area.
• Uma estrutura física de bancos de dados ORACLE inclui datafiles, redo log files e control
files.
• Os elementos básicos do Scheduler (Agendador) são: Programas, Jobs e Schedules.
• Uma transação no SGDB Oracle só é encerrada mediante os comandos COMMIT (efetiva
a transação) ou ROLLBACK (desfaz a transação). Dentro de uma transação, é permitida
a marcação de SAVEPOINTs, que podem servir para dividir uma transação longa em
partes menores, e, por exemplo, desfazer uma transação a partir do momento atual até
determinado savepoint (o restante da transação permaneceria intacto)
• (https://docs.oracle.com/cd/B28359_01/server.111/b28318/transact.htm).
• Os processos em um sistema de banco de dados Oracle podem ser classificados em:
− Processos de usuário: executam o aplicativo ou ferramenta de código Oracle.
− Processos de banco de dados Oracle: executam o código do servidor de banco de
dados Oracle. Eles incluem os processos do servidor e os processos em segundo
plano.
• Na arquitetura do SGBD Oracle, existem os processos executados em background
mandatórios e opcionais.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 52 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 53 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
MySQL
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 54 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 55 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 56 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 57 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Enterprise DB
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 58 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
RESUMO
A tabela-resumo seguinte destaca comandos principais da linguagem, MUITO cobrados
em provas!
Uma Restrição de Integridade (RI) descreve as condições que cada instância legal de uma
relação deve satisfazer.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 59 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 60 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 61 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 62 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 63 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 64 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 65 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
017. (UFPR/ITAIPU/2015) Sobre a Linguagem SQL (DDL e DML), assinale a alternativa correta
segundo o padrão SQL ANSI 92.
a) Insert, Delete e Update são operações DDL.
b) Inner join, left outer join, right outer join, full outer join e cross join são cláusulas de junções
suportadas pelo padrão.
c) Modify Table e Truncate Table são operações DDL.
d) ADD, EXISTS, BETWEEN, LIKE, IS e IN são operadores relacionais válidos segundo o padrão.
e) CASE, NVL, TRIM e UPPER são operações DDL.
www.grancursosonline.com.br 66 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
QUESTÕES DE CONCURSO
022. (CESPE/EBSERH/ANALISTA DE TECNOLOGIA DA INFORMAÇÃO/2018) Com relação
a banco de dados, julgue o item seguinte. Em normalização, a primeira forma normal é
caracterizada por uma tabela com a existência obrigatória de uma chave primária e uma chave
estrangeira.
Uma consulta SQL que tem como resultado a tabela acima apresentada é
a)SELECT *
FROM Teste WHERE
Profissão LIKE ‘%a%
b)SELECT Peso, Profissão
FROM Teste
HAVING Profissão ORDER BY Desc
c)SELECT Profissão, Peso
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 67 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
FROM Teste
WHERE Peso BETWEEN 65 and 75
d)SELECT Chave, Profissão, Peso
FROM Teste
OCULT Chave
e)SELECT Chave, Profissão, Peso
FROM Teste
SHOW Profissão, Peso
Os campos exibidos como resultados são somente Profissão e Peso, respectivamente. Deste
modo, eles precisam aparecer na consulta logo após o comando SELECT indicando o nome
dos campos ou colunas da tabela.
A condição na cláusula WHERE é que o valor de Peso esteja no intervalo de 65 – 75 e para isso
usamos a cláusula BETWEEN (entre) os valores passados na consulta.
Observe que as restrições ou predicados em uma consulta SQL devem aparecer na cláusula
WHERE. Para compor as restrições, podemos usar a cláusula BETWEEN, que nos permite se-
lecionar intervalos de dados ao retornar os resultados de uma consulta.
A sintaxe para uso da cláusula BETWEEN é a seguinte:
SELECT colunas FROM tabela
WHERE coluna BETWEEN valor1 AND valor2;
Usamos o operador lógico AND para auxiliar na criação do código de consulta.
Letra c.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 68 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O valor de X deve ser substituído pela cláusula HAVING que é aplicada às linhas no conjunto
de resultados. Só os grupos que atendem os parâmetros de HAVING são exibidos na saída
da consulta.
É importante lembrar que só aplicamos uma cláusula HAVING em colunas da tabela que também
são exibidas na cláusula GROUP BY ou em uma função de agregação (MIN, MAX, AVG etc.).
NOTAS
1)Consultas SQL:
SELECT[ DISTINCT| ALL] { * | <select list> }
[ WHERE<searchcondition> ]
[ GROUPBY<groupingspecification> ]
[ HAVING<searchcondition> ]
[ ORDERBY<ordercondition> ]
2)Observe a seguir exemplos de funções agregadas que operam sobre conjuntos de valores
de uma coluna de uma relação e retornam um valor para cada conjunto: COUNT (), SUM (), MIN
(), MAX (), AVG ().
Quando utilizamos funções agregadas, devemos utilizar o GROUP BY para os atributos na
cláusula SELECT que não aparecem como parâmetros nas funções agregadas e a opção
HAVING para predicados que são aplicados após a formação dos grupos.
Letra b.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 69 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
SQL Injection é uma técnica que permite a um criminoso injetar comandos SQL nos campos
do formulário para alterar o comportamento do sistema ou danificá-lo. Dessa forma, o mesmo
consegue roubar informações importantes ou até mesmo apagá-las.
Do ponto de vista da segurança, SQL Injection é uma falha grave, que deve ser evitada. O
primeiro passo para isso é entender que os dados concatenados em um comando SQL podem
modificar sua lógica de execução.
A técnica fundamental para evitar o SQL Injection é remover qualquer comando SQL dos dados
informados pelo usuário da aplicação.
Letra d.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 70 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
A linguagem SQL é a linguagem para manipulação de banco de dados mais difundida nos dias
de hoje. Ela permite por exemplo efetuar consultas a banco de dados, definir a estrutura dos
dados, modificar dados em um banco e especificar restrições de segurança.
Letra a.
O operador “LIKE” é usado para buscar uma determinada string na linguagem SQL. Podemos
utilizar também o caractere “%” para indicar um “coringa”, ou seja, um texto qualquer que
pode aparecer no campo.
A alternativa B é correta, pois destaca qualquer coisa que apareça após a letra “a” % estando
ela na segunda posição (underline indicando a primeira posição).
Letra b.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 71 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Conforme visto a seguir, select é uma instrução de manipulação de dados, usada para recuperar
dados do banco de dados.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 72 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 73 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Isso mesmo! SQL é uma linguagem de pesquisa declarativa para Bancos de Dados Relacionais
em oposição a outras linguagens procedurais. Por ser não procedural, você especifica QUAL
informação quer, e não como trazê-la. Em outras palavras, não é necessário especificar o
método de acesso aos dados. O SGBD usa o “otimizador” para interpretar o comando SQL e
escolher o melhor caminho para acesso aos dados.
Certo.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 74 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
a) Errado. Este comando procura pelo maior preço, indicado por MAX(preco), dentro da tabela
tbproduto onde o idtipo tem o valor 5. Ao procurar todos os registros cujo idtipo é igual a 5,
encontramos 2 registros. Um deles é o sabão e tem o preço de 11,00 e o outro é o shampoo,
cujo preço é de 12,30. Queremos o que tem o maior preço de todos. Logo a resposta é 12,30.
Item errado.
b) Certo. O comando utilizado na assertiva B é interessante.
Mas, cuidado para não confundir o comando da alternativa com o comando a seguir: “SELECT
sum(preco) FROM tbproduto WHERE idtipo=5”. Este último comando mostra a soma de todos
os preços dos registros cujo idtipo seja 5.
Mas o comando da alternativa não é exatamente isso. Ele tem a cláusula “GROUP BY” seguido
do “HAVING”.
O “GROUP BY” vai fazer com que o comando mostre todos os preços antes de fazer a soma.
Neste caso, ele irá mostrar os valores 11,00 e 12,30. Estes valores são menores do que 14, o
que satisfaz a condição do HAVING.
c) Errado. Quando colocamos a condição “nome like ‘%e’”, significa que o campo nome
pode dar “match” com qualquer sequência de caracteres, seguida do caractere e. O % é um
caractere coringa e significa uma sequência qualquer de caractere. Outro exemplo seria “nome
like ‘%Oliveira’”. Esta condição indica que qualquer sequência de caracteres seguida de um
“Oliveira” vai resultar em verdadeiro.
Analisando a consulta inteira, vemos que ela irá atuar da seguinte forma: para cada idtipo de 1
até 5 (idtipo in (1, 5)), considerando somente os produtos que tenham o nome terminado pela
letra ‘e’ (nome like ‘%e’), serão somados todos os preços relativos a cada idtipo. A soma de cada
idtipo só aparecerá no resultado final caso ela seja maior do que 13 (having sum(preco) > 13).
Então o resultado será:
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 75 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Total
40,00
Portanto, item errado.
Observação da letra c):
O resultado parcial, antes de “having sum(preco) > 13” é:
40,00
11,50
O valor 40 vem da soma dos preços 14 (leite), 12,75 (carne) e 13,25 (azeite), todos do idtipo 1,
cujos nomes terminam com a letra ‘e’. O 11,50 vem do creme, que tem o idtipo igual a 3. Porém,
a linha relativa a 11,50 não entrará por causa do “having sum(preco) > 13”.
d) Errado. Primeiro temos que analisar a consulta interna “select min(preco) from tbproduto
where idtipo = 1”. Ela é uma consulta simples e procura pelo menor preço (min(preco)) de
todos os produtos cujo idtipo é igual 1. Este resultado é 12,75. A consulta então passa a ser:
SELECT nome FROM tbproduto WHERE idtipo not in (5) and preco > 12,75. A alternativa quer
o nome do produto, cujo idtipo não esteja no conjunto (5), isto é, que esteja dentro de (1, 2, 3 e
4) e cujo preço seja maior do que 12,75. O resultado da consulta terá dois registros, que são o
leite e o azeite. Item errado.
e) Errado. A consulta desta alternativa procura por todos os registros que têm o preço entre
10,00 e 12,00. De todos, o creme, cujo preço é 11,50, e o sabão, cujo preço é 11,00, são
retornados pela consulta.
Letra b.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 76 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
A cláusula SELECT relaciona as colunas que se quer presentes no resultado da consulta. Aqui
estamos interessados em obter a média salarial dos trabalhadores! Então, utilizaremos a fun-
ção AVG(coluna), que retorna a média aritmética da coluna dentro do grupo. Valores NULL são
ignorados. A coluna a ser utilizada é a de salario.
A cláusula FROM estará associada à tabela TRAB que será percorrida na execução da
expressão.
A cláusula WHERE é utilizada para filtrar um conjunto de linhas de uma tabela. Utilizaremos o
filtro SEXO=’FEMININO’.
SELECT e a cláusula FROM são necessárias em todas as consultas SQL. Devem aparecer an-
tes de qualquer outra cláusula na consulta.
O comando SELECT AVG(salario) FROM TRAB WHERE SEXO=’FEMININO’;
irá obter na tabela TRAB a média salarial dos trabalhadores do sexo FEMININO.
Letra c.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 77 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
E por último ela foi “(3) manipular dados nela”, o que significa que ela pode ter atualizado
(UPDATE), selecionado (SELECT) ou inserido dados na tabela (INSERT). A alternativa que
possui a combinação de linguagens utilizados é a letra E, CREATE, REVOKE e INSERT.
Os comandos CREATE, DROP e ALTER são comandos de definição de dados e objetos em
um banco de dados relacional, e eles são comumente chamados de (DDL – Data Definition
Language).
Na questão foram citados também comandos pertencentes ao conjunto de manipulação de
dados de um banco (comumente chamada de Instruções DML – Data Manipulation Language),
e os comandos mais comuns são INSERT, UPDATE, SELECT e DELETE.
E ainda temos as instruções que fazem parte da linguagem que permite o acesso ao banco de
dados (DCL – Data Control Language), garantindo a segurança dos dados que são apresentados
na questão como GRANT e o REVOKE.
Letra e.
O LIKE busca padrões entre caracteres e o “%” é utilizado para aceitar qualquer caractere em
seu lugar. Sendo assim, c%a retornará qualquer palavra que comece com c e termine com a.
Letra d.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 78 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
c) CHECK
d) ALIAS
e) RANGE
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 79 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
c) 6.
d) 29.
e) 5.
Durante a inserção dos valores na tabela Valores os seguintes comandos não são executados
devido a erro:
INSERT INTO VALORES VALUES (1,6); [erro]
INSERT INTO VALORES VALUES (NULL,7); [erro]
INSERT INTO VALORES VALUES (2,8); [erro]
INSERT INTO VALORES VALUES (NULL,10); [erro]
É emitido erro porque uma chave primária não pode ser nula, e porque não se pode inserir
valores em registros que já têm valor inserido (para modificar o conteúdo faz-se necessário o
uso do comando UPDATE).
A seguir é mostrada a tabela, após a execução dos comandos acima apresentados.
------------
|ID |VALOR|
|1|5|
|2|1|
|3|9|
------------
Como pode ser observado só existem dois registros na tabela Valores que possuem valores
maiores ou igual a 5, que são os de ID 1 e 3.
Letra a.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 80 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
A cláusula SELECT relaciona as colunas que se quer presentes no resultado da consulta. Essa
cláusula corresponde à operação de projeção da álgebra relacional.
A cláusula FROM corresponde à operação de produto cartesiano da álgebra relacional. Ela
associa a tabela ou tabelas que serão pesquisadas durante a avaliação de uma expressão.
A cláusula WHERE corresponde à seleção do predicado da álgebra relacional.
Letra c.
A sintaxe correta para remover uma determinada linha ou um conjunto de linhas de uma
determinada tabela é a seguinte:
DELETE FROM [TABELA] WHERE [CAMPO] [CONDICAO];
No caso do exemplo, a sintaxe correta seria a apresentada na letra d.
DELETE FROM PESSOA WHERE IDADE > 20;
Letra d.
Na questão, observe que pretendemos verificar quais valores fazem parte de um conjunto.
Logo, utiliza-se o IN.
Letra c.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 81 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
www.grancursosonline.com.br 82 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
E, finalmente, a quarta afirmativa define uma tabela. Lembre-se de que os dados armazenados
em uma tabela não precisam estar ordenados.
Letra a.
Linguagem de definição de dados (DDL, do Inglês Data Definition Language) é uma linguagem
de computador usada para a definição de estruturas de dados.
Uma vez compilados, os parâmetros DDL são armazenados num conjunto de arquivos
denominado dicionário de dados. O dicionário de dados contém os metadados (dados a
respeito das estruturas de armazenamento). O SGBD sempre consulta os metadados a cada
operação sobre o banco de dados. Por exemplo, um determinado programa precisa recuperar
alguns campos (nome, CPF) de um arquivo de clientes. O SGBD irá verificar se os campos
nome” e “CPF” estão definidos para este arquivo. O interpretador DDL processa os comandos
alimentados pelos DBAs na definição dos esquemas.
Os comandos básicos da DDL são poucos
• CREATE: cria um objeto (uma Tabela, por exemplo) dentro da base de dados;
• DROP: apaga um objeto do banco de dados.
Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usuário alterar um
objeto, por exemplo, adicionando uma coluna a uma tabela existente. Outros comandos DDL:
• ALTER TABLE
• CREATE INDEX
• ALTER INDEX
• DROP INDEX
• CREATE VIEW
• DROP VIEW
Letra e.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 83 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
A sintaxe correta para atualizar uma determinada linha ou um conjunto de linhas de uma
determinada tabela é a seguinte:
UPDATE [TABELA] SET [CAMPO] [OPERADOR] [NOVO_VALOR] WHERE [CONDICAO];
No caso do exemplo, a sintaxe correta seria a apresentada na letra A.
UPDATE PESSOA SET IDADE=23 WHERE IDADE > 20;
Letra a.
A sintaxe correta para selecionar uma determinada linha ou um conjunto de linhas de uma
determinada tabela é a seguinte:
SELECT [CAMPO(S)] FROM [TABELA] WHERE [CONDICAO];
No caso do exemplo, a sintaxe correta seria a apresentada na letra A.
SELECT * FROM PESSOA WHERE IDADE < 20;
Note bem: o caractere asterisco (*) é utilizado para representar todos os campos de uma tabe-
la ou um conjunto de tabelas em uma consulta, na sintaxe SQL.
Letra a.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 84 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
a) concorrentes.
b) comparadas.
c) segmentadas.
d) hierarquizadas.
e) aninhadas.
Consultas aninhadas é um dos recursos mais poderosos e úteis da linguagem SQL. Uma
consulta aninhada é uma consulta secundária embutida dentro de uma consulta principal.
Esta consulta embutida também é chamada de subconsulta. Uma subconsulta geralmente
aparece na cláusula WHERE da consulta principal, embora ela também possa fazer parte das
cláusulas FROM ou HAVING.
Em SQL, uma consulta é aninhada quando ela está dentro de outra consulta SQL.
Referência: http://www.ic.unicamp.br/~geovane/mo410-091/Ch05-Resumo.pdf.
Letra e.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 85 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 86 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Qual dos comandos Structured Query Language (SQL) pode ser utilizado para listar somente
os alunos que cursam História?
a) select aluno.Nome from aluno,curso where aluno.cod_curso = curso.cod_curso AND curso.
curso = ‘Historia’;
b) select aluno.Nome from aluno,curso where curso.curso = ‘Historia’;
c) select aluno.Nome from aluno,curso where aluno.cod_curso = ‘Historia’;
d) select curso.curso from aluno,curso where aluno.cod_curso = curso.cod_curso AND curso.
curso = ‘Historia’;
e) select aluno.Nome from aluno,curso where curso.curso = ‘Historia’ and aluno.cod_curso!=
curso.cod_curso;
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 87 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O atributo cod_curso é numérico e não do tipo caracter. Caso fosse o número 3 no lugar da
string história essa alternativa estaria correta.
d) Errado.
Essa consulta retorna o nome do curso e não o nome dos alunos.
e) Errado.
A alternativa E está completamente errada no uso do operador diferente de (!=) no lugar de
igual a (=), além disso com a adição da condição curso.curso = ‘Historia’ faz com que ele nunca
retorne nada uma vez que não existe tal relação na tabela.
Letra a.
SQL é a abreviatura de Structured Query Language. É uma linguagem para criação de bancos
de dados e para recuperação e manutenção dos dados armazenados nestes. A estrutura
básica de uma consulta em SQL, utilizada na questão, consiste em três cláusulas: SELECT,
FROM E WHERE.
• SELECT
A cláusula SELECT é usada para listar os atributos desejados como resultado de uma consulta.
Em outras palavras, relaciona as colunas que se quer presentes no resultado da consulta.
• FROM
A cláusula FROM relaciona a tabela ou tabelas que devem ser pesquisadas/varridas na
execução da expressão.
• WHERE
Especifica a condição ou condições que as linhas selecionadas devem satisfazer.
Uma cláusula WHERE pode conter mais de uma condição, sendo possível usar operadores
lógicos para indicar a união entre as condições:
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 88 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
• AND: exibe os registros em que todas as condições são verdadeiras. SELECT coluna1,
coluna2, coluna3... FROM nome_da_tabela WHERE condição1 AND condição2 AND
condição3 ...;
• OR: exibe os registros em que pelo menos uma condição é verdadeira. SELECT coluna1,
coluna2, coluna3... FROM nome_da_tabela WHERE condição1 OR condição2 OR
condição3 ...;
Na questão, observe a condição dada na cláusula WHERE, em que se pode obter o que está
especificado na letra B (selecionar os funcionários da Diretoria com salário maior que 5.000 e
todos os funcionários da Tecnologia, independente de salário).
WHERE depto.codigo = funcionário.depto_codigo AND
funcionário.salario > 5000 AND
depto.codigo = ‘Diretoria’ OR depto.codigo = ‘Tecnologia’
Exemplos de operadores que podem ser utilizados =, <>, >, <, IS NULL, IN, BETWEEN, NOT, LIKE.
Letra b.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 89 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
INSERT INTO compra (cod_cartao, cod_empresa, data, hora, valor) VALUES (null, ‘002’,
‘01/04/2008’, ‘14:00’, 15,00);
e) INSERT INTO Cartao (cod_cartao, nome_cartao) VALUES (‘001’, ‘credicard’);
INSERT INTO Empresa (cod_empresa, nome_empresa) VALUES (null, ‘Dom Juliano’);
INSERT INTO compra (cod_cartao, cod_empresa, data, hora, valor) VALUES (‘001’, null,
‘01/04/2008’, ‘14:00’, 15,00);
A sintaxe correta para adicionar uma determinada linha ou um conjunto de linhas em uma
determinada tabela é a seguinte:
INSERT INTO [TABELA] VALUES (ATRIBUTOS);
A sintaxe acima requer que seja lembrada a ordem das colunas da tabela que se deseja adicionar
linhas. A sintaxe abaixo pode ser utilizada como alternativa para quando não é lembrada a
ordem correta das colunas em uma dada tabela.
INSERT INTO [TABELA] (COLUNAS) VALUES (ATRIBUTOS);
No caso da questão, a sintaxe correta seria a apresentada na letra A.
INSERT INTO Cartao (cod_cartao, nome_cartao) VALUES (‘001’, ‘credicard’);
INSERT INTO Empresa (cod_empresa, nome_empresa) VALUES (‘002’, ‘Dom Juliano’);
INSERT INTO compra (cod_cartao, cod_empresa, data, hora, valor) VALUES (‘001’, ‘002’,
‘01/04/2008’, ‘14:00’, 15,00);
Ainda, observe algumas dicas:
1- Não se pode ter chave primária vazia (null).
2- Deve-se seguir a ordem lógica de inserção dos valores nas colunas das tabelas.
3-Para inserir valores na tabela compra, é imprescindível que as tabelas Cartão e Empresa
tenham sido populadas (cod_cartão e cod_empresa fazem parte da chave primária composta
da tabela Compra).
No caso, as tabelas Cartão e Empresa podem ser criadas em qualquer ordem, uma vez que as
mesmas não possuem nenhum tipo de dependência. Já a tabela Compra não pode ser criada
em uma ordem qualquer uma vez que é necessário que as tabelas Cartão e Empresa tenham
sido criadas a priori. Observe que para se realizar uma compra são necessários um Cartão e
uma Empresa, já que as chaves primárias simples de ambas fazem parte da chave primária
composta da tabela Compra, logo a tabela Compra possui uma relação de dependência com
as tabelas Cartão e Empresa.
Letra a.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 90 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 91 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Item I – O comando INNER JOIN realiza a junção e recupera a informação de intercessão entre
duas tabelas.
Item II – O operador UNION é usado para combinar o resultado de execução das duas queries
e então executa um SELECT DISTINCT com o objetivo de eliminar as linhas duplicadas.
Item III – O operador LIKE é utilizado para buscar por uma determinada string dentro de uma
coluna com valores textuais.
Assim, conforme visto, a alternativa correta é letra A (INNER JOIN, UNION, LIKE).
Letra a.
O comando capaz de remover todos os dados de uma tabela de forma rápida e eficiente é
o comando TRUNCATE. Porém, devemos ter muito cuidado ao usálo porque não há como
recuperar os dados excluídos.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 92 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Outro comando que também remove registros em uma tabela é o comando DELETE, porém, é
necessário usar a cláusula FROM e passar quais os registros passíveis de exclusão.
O comando DROP remove também os registros em uma tabela, entretanto, a estrutura (própria
tabela) da tabela também é removida.
Os demais comandos listados como alternativas na questão não estão ligados à remoção de
informações. Assim, a alternativa correta é letra E.
Letra e.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 93 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
existência de um banco de dados Oracle aberto e em condições ideais, que possui uma tabela
chamada Funcionario com os campos nome, cargo, salario e comissao, a instrução SQL que
deverá ser utilizada é
a) SELECT ALL nome, salario, comissao FROM funcionario WHERE comissao IS NOT EMPTY
ORDER BY salario DESCENDING; comissão organizando os dados por salário de forma
descendente. Considerando a existência de um banco de
b) SLECT nome, salario, comissao FROM funcionario WHERE comissao IS NOT NULL ORDER
BY salario DESC;
c) SELECT nome, salario, comissao FROM funcionario WHERE NOT_EMPTY(comissao) ORDER
BY salario DESC;
d) SELECT * FROM funcionario WHERE comissao IS NOT NULL ORDER BY salario DESC;
e) SELECT ONLY nome, salario, comissao FROM funcionario WHERE NOT_NULL(comissao)
ORDER BY salario DESC;
a) Errado. Há dois erros na instrução. O primeiro, não usamos ALL seguido dos campos da
tabela. O segundo, a forma correta para indicar que há informações (não esteja vazio) é IS NOT
NULL e não IS NOT EMPTY
b) Certo. Selecionamos os campos nome, salario, comissao corretamente, indicamos que
a comissao não deve conter valores vazios e a ordenação pelo campo salario de forma
decrescente (DESC)
c) Errado. o comando NOT_EMPTY(comissao) não é usado para identificar que o campo não
deve estar vazio.
d) Errado. O asterisco (*) indica o retorno de todos os campos na tabela e o campo CARGO não
é solicitado como retorno na consulta.
e) Errado. Há dois erros na instrução. O primeiro, não usamos ONLY após a cláusula SELECT
para indicar que somente tais campos serão selecionado. O segundo, a forma correta para
indicar que há informações (não esteja vazio) é IS NOT NULL e não NOT_NULL.
Letra b.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 94 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Para alterar o idPartido para PNC na tabela Filiado, apenas para filiados com data de filiação
entre 01/01/2017 e 30/06/2017, utiliza-se o comando
a) ALTER Filiado SET idPartido=’PNC’ WHERE dataFiliacao BETWEEN ‘2017-01-01’ AND
‘2017-06-30’;
b) UPDATE idPartido=’PNC’ FROM FILIADO WHERE dataFiliacao BETWEEN ‘2017-01-01’ AND
‘2017-06- 30’;
c) SELECT * FROM FILIADO WHERE dataFiliacao BETWEEN ‘2017-01-01’ AND ‘2017-06-30’ AND
ALTER idPartido TO ‘PNC’;
d) UPDATE Filiado SET idPartido=’PNC’ WHERE dataFiliacao BETWEEN ‘2017-01-01’ AND
‘2017-06- 30’;
e) UPDATE * FROM Filiado SET idPartido=’PNC’ WHERE dataFiliacao BETWEEN ‘2017-01-01’
AND ‘2017-06-30’;
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 95 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
a) Errado. O nome do campo que aparece na exibição (Nome, Partido) não é o mesmo da
tabela (nomeFiliado, idPartido). Se não for renomeado irá retornar o mesmo nome do campo
da tabela.
b) Errado. Para renomear o nome de exibição é necessário usar a cláusula “AS”.
c) Errado. A forma correta de verificar que não há dados em um campo da tabela (NULL) deve
ser usado como dataFiliacao is NULL e não dataFiliacao=NULL.
d) Errado. O comando AND é usado indicando que duas ou mais situações são verdadeiras.
Isso quer dizer que um filiado não pode se chamar ‘Murilo Coutinho’ AND ‘Juca Souza’
simultaneamente.
e) Certo. A forma correta de indicar que não há dados de dataFiliacao IS NULL;
Letra e.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 96 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
O operador LIKE é utilizado para buscar por uma determinada string dentro de um campo com
valores textuais.
O caracter “%” é usado como coringa no operador LIKE. Deste modo, a consulta irá retornar
qualquer “presidentePartido” cujo nome comece com qualquer coisa (quaisquer caracteres) e
termine com “tes”. No exemplo da questão irá retornar o registro “Paulo Prates”. A alternativa
correta é E (ends with “tes”).
Letra e.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 97 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
A exclusão de uma VIEW (tabela virtual) é similar a exclusão de uma tabela «real» em um
banco de dados relacional. Para isso usamos o comando DROP VIEW seguido pelo nome dado
à VIEW no momento de sua criação.
Como ela foi criada como Filiados_PRC, a forma correta é DROP VIEW Filiados_PRC, portanto,
alternativa correta é letra c.
Letra c.
A criação de uma tabela na base de dados é uma tarefa que deve ser bem pensada. O SGBD
trabalha pela integridade dos dados de forma automática. A integridade referencial é obtida
quando tentamos realizar alguma operação (alteração, exclusão, remoção) em uma tabela na
qual há registros de chave estrangeira que é a chave primária de outra tabela.
Para fazer o SGBD entender que queremos afetar também a tabela referenciada, usamos o
comando CASCADE (em cascata).
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 98 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
Como a questão pede que façamos a alteração na tabela referenciada, usamos após a cláusula
REFERENCES os comandos ON UPDATE CASCADE. Portanto, alternativa correta é c.
Letra c.
A letra a está errada pois na 1FN, todos devem conter valores atômicos.
A letra b está correta pois mais de uma chave pode ser candidata a chave primária.
A letra c está errada pois a chave primária deve conter valores que identifiquem unicamente
cada registro da tabela, não podendo ser nulos.
Na letra d, a chave primária deve ser única para a tabela.
Já a letra e, está errada pois uma tabela pode conter mais de uma chave externa.
Letra b.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
www.grancursosonline.com.br 99 de 127
TECNOLOGIA DA INFORMAÇÃO
Banco de Dados Relacionais – Parte V
Patrícia Lima Quintão
a) Errado. Uma tabela está na primeira formal normal quando todos os campos são atômicos.
Como nenhum campo dessa tabela é multivalorado, a tabela está na primeira forma normal.
b) Errado. O campo idMed é chave primária na tabela Medico.
c) Certo. A letra C está correta pois o atributo Especialidade depende somente de idMed que é
parte da chave. Logo a tabela não está na segunda forma normal.
d) Errado. A consulta deve depender dos identificadores do cliente e do médico.
e) Errado. A tabela Medico_has_cliente é necessária para registrar a consulta.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
3ª Forma Normal
Uma relação estará na 3ª FN, se e somente se, estiver na 2 a FN e todos os seus atributos não
chaves forem dependentes não transitivos da chave primária.
Letra c.
Esta é justamente a definição de Cursor. Trata-se de um recurso oferecido pelos SGBDs que
permite realizar uma varredura num conjunto de registros, oriundos de uma tabela ou de uma
consulta, executando-se um conjunto de operações em cada registro.
Pode-se imaginar um cursor como um comando de repetição. A utilização de cursores permite
a realização de um grupo de comando sobre registros de forma mais simples e sem retornar
uma grande quantidade de linhas.
Aproveitando a questão, vamos ver outros dois conceitos relevantes de SGBDs.
Stored Procedures são programas armazenados no banco de dados. A linguagem utilizada
para criação destes programas é dependente do SGBD utilizado, fornecendo extensões à SQL
padrão. Assim, é possível a criação e uso de variáveis, comentários, instruções de declaração,
testes de condições, looping, etc. Uma stored procedure possui total acesso às instruções
de manipulação SQL, mas geralmente não podem executar instruções DDL. Também pode
receber parâmetros de entrada e fornecer resultados para outras aplicações.
Entre as principais vantagens do uso de stored procedures estão:
• Projeto modular: aplicações que acessam o mesmo banco de dados podem compartilhar
stored procedures, eliminando código duplicado e diminuindo o tamanho das aplicações.
• Manutenção: quando um procedimento é atualizado, todas as mudanças se refletem
automaticamente nas aplicações que usam aquele procedimento.
• Performance: a stored procedure é executada na máquina servidor e não na máquina
cliente, reduzindo o tráfego na rede.
Um trigger é um programa armazenado dentro do banco de dados, que é executado
automaticamente quando certos tipos de eventos acontecem. Estes eventos são baseados
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
em tabelas e colunas. Por exemplo, um trigger pode ser executado quando uma linha é incluída
ou excluída de uma tabela.
Os triggers são fundamentais na manutenção da integridade do banco de dados. Podem ser
usados para verificar as restrições de integridade, criar valores automáticos para campos
e chaves primárias, notificar uma outra aplicação sobre mudanças ocorridas e guardar
informações em tabelas de histórico. Um trigger deve ser definido para disparar antes (BEFORE)
ou depois (AFTER) de uma operação baseada em linhas. As operações podem ser: INSERT,
UPDATE ou DELETE.
Letra d.
A assertiva a é a solução para o problema. Uma visão (view) pode ser considerada como uma
maneira alternativa de observação de dados de uma ou mais entidades (tabelas). Pode ser
considerada também como uma tabela virtual ou uma consulta armazenada. As vantagens de
se usar views são:
• permite economizar tempo, evitando retrabalho;
• aumenta a velocidade de acesso aos dados;
• esconde a complexidade do banco de dados;
• simplifica a gerência de permissão de usuários; e
• organiza os dados a serem exportados.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
Uma vez que a view é gerada, o seu conjunto de dados é armazenado em uma tabela tem-
porária (virtual), tornando o acesso às informações mais rápido. Deve-se ressaltar que uma
view não existe fisicamente, é uma tabela virtual. No entanto, os dados contidos em uma view
podem ser modificados normalmente.
Para criar uma visão, você seleciona apenas as colunas da tabela (ou tabelas) básica em que
está interessado, podendo omitir as colunas sigilosas. A sintaxe básica para se criar uma visão
é a seguinte:
CREATE VIEW nome_view AS
SELECT coluna(s)
FROM tabela
WHERE condição
Conforme visto, a letra a é a resposta da questão.
Letra a.
Para estar na FNBC (Forma Normal Boyce-Codd), além da 3FN, todo atributo não chave deve
depender funcionalmente diretamente da chave primária, ou seja, não pode haver dependências
entre atributos não chave.
Assim, ela também está normalizada na 3FN.
Letra c.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
A banca cita que não possui tabelas aninhadas, ou seja, não tem atributos compostos, e não
possui campos multivalorados. Então, até esse ponto já está pelo menos na 1FN.
Em seguida, destaca que a tabela não contém dependências parciais, ou seja, nenhum atributo
não chave depende funcionalmente de apenas uma parte da chave primária. Então, está
já na 2FN.
Em seguida, cita que a tabela possui dependências transitivas, o que contraria a 3FN. Ficamos
então na 2FN.
Letra b.
da Obra. Uma nova relação (Fornecedor) deve ser criada contendo os campos Código do
Fornecedor (como chave) e Nome do Fornecedor. Na relação original, ficariam os atributos
Código da Obra e o Código do Fornecedor, ambos formando a chave primária composta, e
o atributo Preço de Venda. Além disso, o atributo Código do Fornecedor também seria uma
chave estrangeira para a nova relação criada. Esta forma normal ajuda a diminuir redundâncias
de informações criadas indevidamente.
• 3ª Forma Normal (3FN): toda relação deve estar na 2FN e devem-se eliminar
dependências funcionais transitivas, ou seja, todo atributo não chave deve ser
mutuamente independente.
Como exemplo, uma relação que contenha os atributos Matrícula do Funcionário (atributo
chave), Nome do Funcionário, Código do Departamento e Nome do Departamento não está na
Terceira Forma Normal. O Nome do Departamento é dependente do Código do Departamento,
e não da Matrícula do Funcionário. Uma mudança no nome do departamento, por exemplo,
levaria a modificações em todos os funcionários daquele departamento.
Para eliminar este problema, cria-se uma nova relação (Departamento) contendo Código do
Departamento e Nome do Departamento. Na relação original, retira-se o Nome de Departamento,
mantendo-se o Código do Departamento, agora como chave estrangeira. Esta forma normal
também ajuda a diminuir redundâncias e aumentar a independência das relações.
Certo.
Quanto à questão, os itens I e II estão relacionados à 1FN. Deve-se garantir que todo atributo
contenha valores atômicos.
O item III está relacionado à 2FN, que destaca que todo atributo que não seja chave deve ser
totalmente dependente da chave primária.
Letra a.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
1ª Forma Normal (1FN): toda relação deve ter uma chave primária e devese garantir que todo
atributo seja atômico. Atributos compostos devem ser separados.
2ª Forma Normal (2FN): toda relação deve estar na 1FN e devem-se eliminar dependências
funcionais parciais, ou seja, todo atributo não chave deve ser totalmente dependente da
chave primária.
3ª Forma Normal (3FN): toda relação deve estar na 2FN e devem-se eliminar dependências
funcionais transitivas, ou seja, todo atributo não chave deve ser mutuamente independente.
Letra c.
a) F/ V/ V/ V
b) F/ V/ V/ F
c) V/ F/ F/ F
d) V/ V/ F/ V
e) V/ F/ F/ V
A normalização é um processo progressivo e hierárquico e deve ser feito na ordem: 1FN ⇒ 2FN ⇒
3NF etc. O objetivo é eliminar inconsistência, redundância, anomalias e melhorar a recuperação
da informação e um modelo só estará normalizado se passar por todas as formas normais.
Em um modelo de dados não se pode permitir a dependência transitiva entre atributos. Isso
quer dizer que um atributo deve depender exclusivamente da chave e não de outro atributo que
não seja a chave.
Um modelo pode estar na 1FN e na 2FN e ainda conter um atributo que depende de outro que
não seja a chave. Isso só seria verificado na 3FN que trata exatamente deste tema.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
A única alternativa incorreta, portanto, é a III, porque de acordo com a 3ª Forma Normal (3FN)
toda relação deve estar na 2FN e devem-se eliminar dependências funcionais transitivas, ou
seja, todo atributo não chave deve ser mutuamente independente.
Letra d.
Conforme vimos em nosso curso, quando existem várias tabelas em um banco de dados, e o
administrador de banco de dados não quer mostrar todas as informações, ele pode criar o que
chamamos de visão (ou view) para mostrar somente parte das informações da(s) tabela(s).
Ele pode fazer isso por questão de segurança, por questão de estruturação e/ou também por
questão de performance.
Quando digo “por questão de segurança”, quero dizer que pode existir alguns campos em
alguma(s) tabela(s) que não podem ser exibidos. Por isso, ao ter que mostrar os dados de uma
tabela, especificamente, temos que ocultar certos campos, tais como senha, salários etc.
Com relação à questão de estruturação, de vez em quando, acontece que certas informações
de uma tabela devem ser relacionadas com outras informações de outras tabelas. Neste
caso, facilitaria bastante se pudesse haver somente uma tabela com todas as informações
necessárias e já organizadas para, por exemplo, o programador.
Quanto à performance, uma view é montada de forma que ela não existe fisicamente dentro
do banco de dados. Ela é colocada em memória para que o acesso seja feito de forma mais
rápido. Além disso, todos os “JOIN”, que são pontos de ineficiência em junções de tabelas, são
feitos de forma que, ao acessar a view, eles não são mais necessários, dando mais eficiência
às consultas.
Com isso, o erro do item está em afirmar que os dados são armazenados em uma tabela física
no banco de dados.
Errado.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
Em banco de dados, uma visão, também conhecida pela palavra “view”, é uma tabela simples
que é derivada de outras tabelas, e que não existe necessariamente em sua forma física. A
intenção de uma view é unir algumas tabelas, montar uma só para facilitar as consultas. Uma
view pode, ou não, ser criada permitindo atualização dos dados nas tabelas originais.
Analisando a questão, temos: “Denomina-se visão uma tabela única derivada de uma ou mais
tabelas básicas do banco (correto). Essa tabela existe em forma física (não necessariamente)
e viabiliza operações ilimitadas de atualização (não necessariamente) e consulta (correto).”.
Portanto, item errado.
Quando se diz que a visão não existe em forma física, entenda que a tabela em si, derivada
de outras tabelas, não está presente no banco de dados, e sim, em memória. Já as tabelas
originais, a partir das quais será formada a visão, estão em suas formas físicas, isto é, presentes
no banco de dados.
Errado.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
Exemplo: um modelo que tenha uma tabela com o atributo Endereço: ( Rua, Número, Cidade
) deve ser decomposto. Neste caso, é necessário criar três atributos na tabela Rua, Número e
Cidade.
No exemplo da questão, a tabela NÃO está na primeira forma normal porque o atributo Fone
contém valores que podem ser divididos, mantendo ainda um significado (não atômicos).
• A 2FN define que os atributos de uma tabela que não forem chaves tenham DEPENDÊNCIA
FUNCIONAL COMPLETA da chave primária. Isso quer dizer que se a chave primária da
tabela for composta, todos demais atributos (não chave) deve depender de todos os
campos que formam a chave e não por parte dela.
Exemplo: imagine uma tabela de VENDA com seus atributos (cod_produto, num_pedido,
nome_produto, quantidade, valor_unitario, subtotal). Levando em conta que cod_produto e
num_pedido seja a chave primária composta, o atributo nome_produto não depende de toda
chave, mas sim de parte dela (somente o cod_produto). Portanto, não está na 2FN! Para
normalizar é necessário remover o atributo nome_produto para uma outra tabela (PRODUTO)
que se relacione com a tabela VENDA. TODOS OS ATRIBUTOS QUE NÃO SÃO CHAVE DEVE
DEPENDER DA CHAVE POR COMPLETO.
• A 3FN define que não deve haver DEPENDÊNCIA TRANSITIVA entre atributos não chave.
Isso quer dizer que todos os atributos que não são chave devem depender somente da
chave e não entre si.
Muito importante: há uma hierarquia na normalização! Só estará na 2FN se, e somente se,
estiver na 1FN e só estará na 3FN se, e somente se, estiver na 2FN.
Letra e.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
O resultado da execução dessa consulta será composto por registros da tabela Lista, exibindo
o campo Item, com a condição de que seus valores devem
a) ter em sua formação a sequência A%S e ter número de caracteres variando entre 3 e o nú-
mero máximo especificado para esse campo, quando da criação da tabela Lista.
b) ter pelo menos duas letras A e duas letras S e ter número de caracteres variando entre 5 e
o número máximo especificado para esse campo, quando da criação da tabela Lista.
c) ter ou uma letra A, ou uma letra S e ter número de caracteres variando entre 3 e o número
máximo especificado para esse campo, quando da criação da tabela Lista.
d) começar com a letra A, terminar com a letra S e ter número de caracteres variando entre 2
e o número máximo especificado para esse campo, quando da criação da tabela Lista.
e) começar com as letras A ou S e terminar também com uma dessas duas letras, além de
ter número de caracteres variando entre 5 e o número máximo especificado para esse campo,
quando da criação da tabela Lista.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
O operador LIKE é utilizado na cláusula WHERE para pesquisar um padrão específico em uma
coluna (faz a busca por uma determinada string dentro de um campo com valores textuais).
Existem dois curingas utilizados em conjunto com o operador LIKE:
A quarta forma normal (4FN) diz respeito à dependência multivalorada em uma relação e não
a restrições da efetivação de Joins como afirma o item na questão proposta.
A utilização de join permite a busca de um registro navegando pelas tabelas sem a necessidade
de replicar o campo em outra tabela. Quando um campo (atributo) está em outra tabela sem a
necessidade de estar na tabela pesquisada esta relação não está na 5FN.
Desde modo, ao referir-se o uso de join para recuperar informações a partir de outros registros
o item da questão refere-se à 5FN e não à 4FN.
Errado.
Oracle
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
a) Certo.
A estrutura física de banco de dados Oracle apresenta:
• Control Files: contêm dados sobre o próprio BD, também conhecidos como metadados,
que são informações sobre a estrutura física. Sua leitura é essencial para que o software
do banco de dados consiga abrir os arquivos de dados. Estes arquivos podem ser
multiplexados para dar mais segurança, mas somente um será utilizado como primário.
Os Control Files (arquivos de controle) também guardam informações utilizadas pelo
RMAN (Recovery Manager), solução de backup da Oracle.
• Data Files: arquivos de armazenamento final dos dados dos usuários ou das aplicações
no BD. Cabe destacar que um banco de dados pode ter múltiplos tablespaces e, cada
um, pode estar armazenado em um ou mais arquivos de dados. No entanto, um arquivo
é associado a um único tablespace.
• Redo Log Files (on line): se um banco de dados parar por qualquer motivo, desde que
não ocorra perda de arquivos de dados, a instância poderá voltar ao estado que estava
antes do travamento aplicando os Redo Log Files.
b) Errado. Backup Files: cópias de segurança utilizadas para a recuperação de banco de dados
quando o arquivo original é danificado. Este pertence à estrutura de Arquivos Adicionais.
c) Errado. Faltando o item Data Files.
d) Errado. Faltando o item Redo Log Files e Control Files. O item Backup Files não faz parte
do escopo.
e) Errado. O item Backup Files não faz parte do escopo.
Letra a.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
I – Errado. Uma área global de sistema é um local na memória em que o banco de dados Oracle
armazena informações pertinentes sobre si mesmo. Essa estrutura de memória é acessível a
todos os processos do usuário e os processos do servidor. Um conjunto de processos do
servidor do Oracle que tem sua própria área global do sistema e um conjunto de banco de
dados associados é chamado de instância Oracle.
II – Certo. Todas as vezes que o Oracle é inicializado, um grupo de buffers de memória
denominado Área Global de Sistema (SGA) é alocado e alguns processos que permanecem
em background são inicializados. A combinação desses buffers de memória e dos processos
em background forma uma instância Oracle. Para que o banco de dados não se confunda, cada
instância é identificada pelo que é conhecido como identificadores de sistema (SID – system
identifier). Na maioria dos computadores UNIX, ele é definido pela variável “ORACLE_SID”.
III – Errado. Durante um desligamento normal, o Oracle fecha todas as sessões, fecha o banco
de dados, desmonta os arquivos de dados e em seguida, encerra a instância em duas etapas: a
primeira de forma “livre”, em que o SGA é removido da memória e, finalmente, o encerramento
dos processos em background. O Oracle possui três modos de desligamento: normal, em que
se espera o término da execução de um trabalho, isto pode demorar horas; imediato, encerra-se
todas as sessões e não existe uma forma de restaurar as transações não confirmadas; abortar,
encerra todo o trabalho ativo. Com isso podemos verificar que nem sempre os processos em
background são desalocados, isso depende do modo como foi realizado o desligamento.
Letra c.
O LogMiner é uma ferramenta de auditoria de bancos de dados Oracle, que permite aos
administradores localizar facilmente as alterações no banco de dados, possibilitando análises
sofisticadas de dados, e fornecendo capacidades de realizar a reparação de danos lógicos
através de erros gerados por usuários.
Letra e.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
As organizações têm muitas tarefas, e lidar manualmente com cada uma delas pode ser
assustador. Para ajudar a simplificar as tarefas de gestão, bem como oferecer um rico conjunto
de funcionalidades para as necessidades complexas de programação, a Oracle fornece um
conjunto de funções e procedimentos no pacote DBMS_SCHEDULER. Essas funções são
chamadas de Scheduler, e elas podem ser executadas a partir de qualquer programa PL / SQL.
O Agendador permite que os administradores de banco de dados e desenvolvedores de
aplicativos possam controlar quando e onde irão realizar várias tarefas no ambiente de banco de
dados. Essas tarefas podem ser demoradas e complicadas, por isso a utilização do Agendador
ajuda a melhorar a gestão e o planejamento destas tarefas. Além disso, garante que muitas
tarefas de rotina de dados ocorram sem intervenção manual, reduzindo os custos operacionais,
implementando rotinas mais confiáveis, minimizando o erro humano, e diminuindo o tempo
necessário.
No Scheduler, a maioria dos componentes são objetos de banco de dados como uma tabela,
que permite a utilização normal de privilégios Oracle. Os elementos básicos do Scheduler são:
Programas, Jobs e Schedules.
Letra d.
As constraints são restrições estabelecidas para uma coluna no banco de dados, e podem ter
os seguintes tipos:
• Primary Key (PK): esta restrição cria um índice único para um conjunto de colunas ou
uma coluna para Chave Primária;
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
• Unique: esta constraint determina que uma coluna não poderá ter 2 linhas com o mesmo
valor;
• Foreign Key (FK ou Chave Estrangeira): determina uma coluna ou um conjunto de
colunas que possuem valores em outras tabelas, referente a uma referência ou um
relacionamento;
• Check: especifica a condição que a coluna precisa para salvar o registro;
• Not Null: determina que a coluna tem preenchimento obrigatório.
Letra c.
MySQL
Dentre as opções listadas na questão são SGBDs o MS Access (mais limitado) e o MySQL, que
utiliza a linguagem SQL como interface. Enquanto software livre, o MySQL teve seu crescimento
estimulado pelo pacote LAMP (Linux, Apache, MySQL e PHP).
Letra c.
Isso mesmo! Trata-se de um pacote de utilitários que são usados para manutenção e
administração de servidores MySQL.
Certo.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
No SQL, uma view é uma tabela virtual baseada no conjunto resultado de uma cláusula
SQL. Uma view contém linhas e colunas, como uma tabela real. Os campos de uma view são
provenientes de uma ou mais tabelas reais de um banco de dados. Você pode adicionar funções
SQL, cláusulas WHERE e JOIN, além de apresentar dados como se os dados estivessem vindo
de uma única tabela.
Para a criação de views é necessário saber que existem as seguintes restrições:
A cláusula SELECT não pode conter uma subquery na cláusula FROM.
A cláusula SELECT não pode fazer referência ao sistema ou a variáveis do usuário.
Certo.
No MySQL 5 existe um comando específico para mudar o nome de uma dada tabela, chamada
RENAME TABLE, cuja sintaxe é a seguinte:
RENAME TABLE Nome_Antigo TO Nome_Novo;
Vale lembrar que o comando RENAME TABLE renomeará automaticamente a tabela, deixando-a
travada durante a execução do comando. Também, cabe destacar que para renomear uma
tabela é necessário ter privilégio ALTER e DROP na tabela antiga e CREATE e INSERT na
tabela nova.
Errado.
SQL Server
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
O comando SELECT INTO somente seleciona dados de uma tabela e insere em uma nova
tabela, o que significa que este comando apenas cria uma tabela a partir dos resultados de
uma consulta.
Errado.
(...) o SQL Server Profiler pode ser usado para visualizar sessões ao vivo de atividades no SQL Server
do banco de dados atual. Podemos colher informações importantes como, por exemplo, quantas
consultas o banco de dados está executando, quanto tempo estão demandando estas consultas,
qual banco de dados está executando qual consulta e assim por diante.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
Item b. Item parcialmente correto!! O nome correto é profiler, e essa foi a assertiva considerada
correta pela banca.
Item a. Item errado. Essa assertiva é a única que contém o nome de uma ferramenta válida no
conjunto de tecnologias disponibilizadas junto com o SQL Server. Contudo, o Query Analyzer é
uma ferramenta utilizada para envio de instruções SQL e não para capturar um trace do banco
de dados. Com o Query Analyzer, podemos executar consultas e stored procedures e obter
uma exibição visual do plano de execução do SQL Server.
Letra
O conteúdo deste livrob.
eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
Letra d.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
O Report Builder (Construtor de Relatórios) 3.0 do SQL Server 2008 R2 permite uma série
de aprimoramentos, como os destacados em http://msdn.microsoft.com/pt-br/library/
ee633667(v=sql.105).aspx. Por exemplo, pode-se adicionar mapas, camadas de gráficos (Map
Layers), minigráficos e indicadores a seus relatórios, pode-se girar o texto em 270 graus, criar
expressões que calculam uma agregação de uma agregação (fazer cálculos agregados), criar
partes de relatório (report parts), etc.
Letra b.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
Modelo de
Descrição
recuperação
EnterpriseDB
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
GABARITO
1. b 37. a 73. a
2. c 38. a 74. e
3. c 39. c 75. a
4. d 40. d 76. c
5. e 41. c 77. d
6. a 42. a 78. E
7. b 43. e 79. E
8. c 44. a 80. e
9. b 45. a 81. c
10. C 46. e 82. d
11. b 47. d 83. E
12. a 48. C 84. a
13. c 49. E 85. c
14. E 50. E 86. e
15. C 51. a 87. d
16. C 52. b 88. c
17. b 53. a 89. c
18. e 54. c 90. C
19. C 55. E 91. C
20. C 56. a 92. E
21. C 57. e 93. E
22. E 58. E 94. b
23. c 59. b 95. d
24. b 60. d 96. b
25. d 61. e 97. c
26. c 62. b 98. b
27. a 63. e 99. C
28. b 64. c
29. b 65. c
30. E 66. b
31. C 67. c
32. C 68. d
33. b 69. a
34. c 70. c
35. e 71. b
36. d 72. C
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
REFERÊNCIAS BIBLIOGRÁFICAS
BRAGA, Regina. Notas de aula, UFJF, 2012.
CAMARGO, W. B. de. SQL Server 2005 – Operadores Like e Not Like. Disponível em: https://
www.devmedia.com.br/sql-server-2005-operadores-like-e-not-like/17292. Acesso em: fev. de
2020.
https://dev.mysql.com/tech-resources/articles/mysql-5.6.html
ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados. 6. ed. São Paulo: Pearson Addison
Wesley, 2011.
HEUSER, Carlos Alberto. Projeto de banco de dados. 4. ed. Porto Alegre: Sagra, 2001.
HERNANDEZ, Michael J. Aprenda a projetar seu próprio banco de dados. Tradução Patrizia
Tallia Parenti. São Paulo: Makron, 2000.
KORTH, Henry F.; SILBERSCHATZ, Abraham. Sistema de banco de dados. Tradução Mauricio
Heihachiro Galvan Abe. 6. ed. São Paulo: Makron, 2011.
MACHADO, Felipe Nery Rodrigues; ABREU, Maurício Pereira de. Projeto de banco de dados:
uma visão prática. 6. ed. São Paulo: Érica, 2000.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
<https://www.postgresql.org/files/documentation/pdf/12/postgresql-12-
<http://www.softblue.com.br/site/curso/id/3/CURSO+DE+SQL+COMPLETO+BASICO+AO+AV
ANCADO+ON+LINE+BD03+GRATIS>. Acesso em: 24 set.2020.
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
@coachpatriciaquintao /profapatriciaquintao
@plquintao t.me/coachpatriciaquintao
O conteúdo deste livro eletrônico é licenciado para EDSON LUCIANO DE OLIVEIRA VIGILATO - 03749324174, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.