• Nenhum resultado encontrado

1.

(CESPE – CGE/CE – 2019) ALTER TABLE dbo.Ordens

ADD CONSTRAINT DFT_Ordens_ordemts DEFAULT(SYSDATETIME()) FOR ordemts;

O código precedente modifica a tabela Ordens (composta por ordens de venda e ordemts – data/hora do pedido), em um banco de dados MS-SQL Server.

Após essa modificação, sempre que for inserida uma nova ordem de venda,

a) se não for definido um valor para o campo ordemts, o sistema invocará a função SYSDATETIME.

b) será obrigatório o preenchimento manual do campo ordemts.

c) se não for definido um valor para o campo ordemts, este ficará Null.

d) se for definido um valor para o campo ordemts, o banco de dados retornará erro de dado não permitido.

e) se não for definido um valor Null para o campo ordemts, o banco de dados retornará erro de dado não permitido.

RESOLUÇÃO:

a) O comando em questão adiciona a restrição (constraint) DEFAULT para o campo ordemts na tabela Ordens.

Esse tipo de restrição serve para atribuir um valor padrão ao campo, caso não seja fornecido nenhum valor na hora da inserção do registro. No caso da questão, o valor DEFAULT é dado pela chamada da função SYSDATETIME, que no SQL Server retorna a data e a hora do computador no momento da execução. CERTA

b) O DEFAULT serve justamente para desobrigar o preenchimento manual do campo. Caso não seja definido nenhum valor, o valor padrão definido com o auxílio dessa criação de restrição será atribuído à coluna. ERRADA c, d, e) As três últimas alternativas estão incorretas pelo mesmo motivo! Como já vimos, se não for definido nenhum valor para o campo ordemts, o valor retornado pela função SYSDATETIME será retornado. Não será retornado um erro nem o campo ficará com valor null. ERRADAS

Gabarito: A

2.

(CESPE – FUB – 2018)

Julgue o item subsecutivo, a respeito de linguagem de definição e manipulação de dados.

O comando DROP TABLE permite excluir do banco de dados a definição de uma tabela e de todos os seus dados.

RESOLUÇÃO:

A assertiva está correta. O DROP é um comando utilizado para remover objetos do banco de dados, como tabelas, views, procedimentos, funções, restrições, dentre outros. O comando DROP TABLE remove não somente os

dados da tabela, mas também a própria definição do objeto. A tabela, seus dados e restrições deixam de existir no banco de dados.

Gabarito: C

3.

(CESPE – TCE/MG – 2018)

Julgue os próximos itens, no que diz respeito a comandos SQL de consulta.

I Subqueries de múltiplas colunas retornam várias colunas em uma mesma linha.

II A função UNION apresenta as linhas que existam simultaneamente em duas ou mais tabelas.

III A função EXISTS garante que o resultado de uma subquery somente seja mostrado se retornar uma ou mais linhas.

IV A função EXTRACT retorna uma das informações de um campo do tipo data (dia, mês, ano, hora, minuto ou segundo).

Assinale a opção correta.

a) Estão certos apenas os itens I e II.

b) Estão certos apenas os itens I e IV.

c) Estão certos apenas os itens II e III.

d) Estão certos apenas os itens III e IV.

e) Todos os itens estão certos.

RESOLUÇÃO:

I. Esse item é um pouco dúbio, mas julguei realmente incorreto. Uma subquery de múltiplas colunas pode existir, desde que esteja em alguma parte da consulta que suporte o retorno de múltiplas informações – como dentro de um JOIN ou de um comando EXISTS. De todo modo, nessas situações não é necessário que seja retornada somente uma linha. ERRADA

II. O UNION só retorna os registros únicos. Ou seja, mesmo que uma linha seja retornada simultaneamente pelas duas consultas que compõem um UNION, ela só será exibida uma vez. O comportamento descrito na alternativa é o de um UNION ALL. ERRADA

III. O EXISTS tem exatamente esse comportamento. Os registros da consulta principal só serão retornados se a subquery presente no EXISTS retornar uma ou mais linhas. CERTA

IV. A função EXTRACT no MySQL permite extrair alguma parte de uma data. Por exemplo, EXTRACT(MONTH FROM Data) é uma função que permite se obter o componente mês (month) do campo Data. Outros SGBDs possuem maneiras distintas de realizar essa extração, mas o MySQL fazia parte do edital desse concurso do TCE-MG. CERTA

Gabarito: D

Tendo como referência as informações apresentadas, julgue os próximos itens.

4.

(CESPE – PF – 2018)

Tendo como referência as informações apresentadas, julgue o próximo item.

A seguir, é apresentado o diagrama entidade-relacionamento correto para os comandos DDL em questão.

RESOLUÇÃO:

Há algumas falhas na assertiva. Julgo que o erro mais claro é a falta de representação do autorrelacionamento em organograma, através da chave estrangeira fk_organograma no atributo pai.

Além disso, há uma divergência mais conceitual em relação aos diagramas ER, que deveriam ser representações de alto nível do minimundo a ser implementado em um banco de dados relacional, sem descrições de tipos de dados ou restrições de chave estrangeira.

O caso acima fica em um meio termo meio esquisito: apresenta quais são os atributos das tabelas organograma e colaborador e seus tipos, mas omite a estrutura da tabela intermediária colaborador_organograma.

Gabarito: E

5.

(CESPE – PF – 2018)

Tendo como referência as informações apresentadas, julgue o próximo item.

O comando SQL a seguir permite apagar o conteúdo da tabela colaborador_organograma:

delete from colaborador_organograma;

RESOLUÇÃO:

O comando DELETE remove registros de uma tabela. Geralmente ele está acompanhado do comando WHERE, que contém cláusulas que restringem o conjunto de registros a serem removidos. Contudo, quando não há o WHERE na consulta, o DELETE FROM <tabela> remove todos os registros dessa tabela, o que torna a questão correta.

Gabarito: C

6.

(CESPE – TRT7 – 2017 – ADAPTADA)

SELECT SUM(quantidade_pessoas) FROM tbl_setores

WHERE EXISTS (SELECT * FROM tbl_local

WHERE regiao LIKE 'Nor%');

Considerando as tabelas tbl_setores e tbl_local, assinale a opção que apresenta o valor obtido como resultado da consulta precedente.

a) 0

b) 2200 c) 2450 d) 2750

RESOLUÇÃO:

Questão que pede conhecimento relativo à função EXISTS. A assertiva não é difícil, mas tem uma pegadinha.

Veja que a subconsulta dentro do EXISTS não tem nenhuma associação com a consulta externa. Isso quer dizer que, para todos os registros de tbl_setores, os registros retornados pela subconsulta dentro do EXISTS serão os mesmos! E veja que existem três registros em tbl_local cujo campo região começa com ‘Nor’, ou seja, o EXISTS irá sempre avaliar para verdadeiro.

Assim, podemos considerar todos os registros de tbl_setores e realizar a soma, o que resulta em 2750, fazendo da letra D a nossa resposta.

Caso colocássemos uma cláusula que ligasse tbl_setores a tbl_local, teríamos um resultado diferente. Veja:

SELECT SUM(quantidade_pessoas) FROM tbl_setores

WHERE EXISTS (SELECT * FROM tbl_local

WHERE regiao LIKE 'Nor%' AND cidade = tbl_setores.cidade) ;

Assim, a subconsulta não retornaria verdadeiro para a cidade de Goiania, pois o nome da região Centro-oeste não começa com ‘Nor’. O resultado da soma, então, seria 2450 e a resposta seria a letra c.

Tenho certeza que muita gente erraria a questão por culpa desse detalhe, caso ela não tivesse sido anulada por um erro de digitação (que corrigi antes de trazê-la para você).

Gabarito: D

7.

(CESPE – FUB – 2016)

A respeito das principais instruções da linguagem SQL, julgue o item subsecutivo.

Em uma consulta SQL que contém as cláusulas WHERE e HAVING, a cláusula WHERE é aplicada às linhas no conjunto de resultados.

RESOLUÇÃO:

Na verdade, quando fazemos um GROUP BY, as linhas que são retornadas são as linhas já agrupadas e com os valores que não fazem parte dos grupos encapsulados em funções de agregação. Para realizar filtros nesses grupos retornados, utilizamos a cláusula HAVING, não WHERE. A WHERE filtra os registros individuais das tabelas que fazem parte da consulta antes de haver o agrupamento.

Gabarito: E

8.

(CESPE – TCE/PA – 2016)

Julgue o item seguinte, acerca de comandos SQL.

O comando a seguir exclui da tabela pessoas o registro de pessoas cujo nome começa com as letras ca:

delete from pessoas where nome like 'ca%' RESOLUÇÃO:

É exatamente isso que irá acontecer. O trecho where nome like ‘ca%’ limita os registros de pessoas a serem excluídos àqueles que comecem com ca. A wildcard % indica que pode vir qualquer coisa em sequência, inclusive mais nada. Se houver uma pessoa chamada puramente ‘ca’, ela será removida também!

Gabarito: C

9.

(CESPE – TCE/PA – 2016)

Julgue o item seguinte, acerca de comandos SQL.

O comando seguinte altera a informação do salário dos funcionários do setor de vendas aumentando-o em 15%.

update tabela_salario set salario = salario*1.15 where setor='vendas' RESOLUÇÃO:

Questão tranquila de DML. O comando em questão realiza uma atualização (update) nos registros da tabela chamada tabela_salario, cujo setor tem o valor ‘vendas’ (cláusula where), alterando o valor de salario para o próprio valor do salario, multiplicado por 1.15 (cláusula set). Correto!

Gabarito: C

10.

(CESPE – Polícia Científica/PE – 2016)

Em SQL, para alterar a estrutura de uma tabela do banco de dados e incluir nela uma nova foreign key, é correto utilizar o comando

a) convert b) group by.

c) alter table.

d) update.

e) insert.

RESOLUÇÃO:

Para alterar a definição de uma tabela já existente, incluindo suas restrições, utilizamos o comando ALTER TABLE.

Mais especificamente, se quisermos adicionar uma chave estrangeira (foreign key), a estrutura do comando utilizado será a seguinte:

ALTER TABLE <tabela>

ADD CONSTRAINT <nome_fk> FOREIGN KEY (<campo da fk>) REFERENCES <tabela_referenciada>(<campos_referenciados>) Gabarito: C

11.

(CESPE – Polícia Científica/PE – 2016)

Na linguagem SQL, o comando create table é usado para criar uma tabela no banco de dados; enquanto o relacionamento entre duas tabelas pode ser criado pela declaração

a) null.

b) primary key.

c) constraint.

d) auto_increment.

e) not null.

RESOLUÇÃO:

Uma chave estrangeira é nada mais que uma restrição ou constraint de um banco de dados relacional. Assim, para criar uma chave desse tipo, utilizaremos a declaração CONSTRAINT, seja dentro da própria definição da tabela, seja através de um ALTER TABLE.

Gabarito: C

12.

(CESPE – TRE/PI – 2016 - Adaptada)

Considerando um SGBD que respeite os padrões SQL ANSI-99, assinale a opção que apresenta corretamente um comando SQL para apagar determinados registros de uma tabela pessoa (cpf, nome, sexo) que contém registros cujo campo sexo apresenta valores iguais a ‘M’.

a) DROP pessoa WHERE sexo=‘M’

b) UPDATE pessoa SET sexo=NULL WHERE sexo=‘M’

c) FROM pessoa WHERE sexo=‘M’ DELETE sexo d) DELETE sexo FROM pessoa WHERE sexo=‘M’

e) DELETE FROM pessoa WHERE sexo=‘M’

RESOLUÇÃO:

Para remover registros de uma tabela, devemos utilizar o comando SQL DELETE. A exemplo do SELECT, o DELETE comporta a especificação de condições que restringem os registros a serem removidos através da cláusula WHERE. A estrutura básica do comando é:

DELETE FROM <tabela> WHERE <condições>

Nesse caso, a única alternativa que possui a sintaxe correta é a letra E!

Gabarito: E

13.

(CESPE – TRE/PI – 2016)

No que se refere às linguagens de definição e manipulação de dados SQL, assinale a opção correta.

a) A cláusula WHERE não pode ser utilizada no comando DELETE, diferentemente do que ocorre com o comando INSERT.

b) O comando UPDATE permite utilizar mais de uma cláusula SET.

c) O comando ALTER modifica os dados de uma coluna ou colunas de uma tabela.

d) Os operadores LIKE e NOT LIKE agem somente sobre colunas que sejam do tipo caracter.

e) O comando DELETE pode ser utilizado para deletar o valor de uma coluna simples ou, ainda, um conjunto de colunas.

RESOLUÇÃO:

a) A cláusula WHERE pode sim ser utilizada no comando DELETE (inclusive DEVE ser usada na maioria dos casos, já que na maioria das vezes não queremos remover todos os registros). No comando INSERT, no entanto, não faz sentido a utilização do WHERE. Se invertêssemos INSERT e WHERE o item estaria correto. ERRADA

b) O UPDATE só tem uma cláusula SET, que por sua vez pode conter várias atribuições diferentes separadas por vírgula. Assim:

UPDATE <tabela>

SET atributo1 = valor1, atributo2 = valor2, atributo3 = valor3...

WHERE <condições>

ERRADA

c) O comando ALTER é um comando DDL e, por esse motivo, lida com a estrutura da tabela, não com seus dados.

Para modificar os dados de uma coluna, deve-se utilizar o comando UPDATE. ERRADA

d) Correto! Os operadores LIKE e NOT LIKE permitem realizar consultas que lidam com o casamento de padrões entre cadeias de caracteres. CERTA

e) O comando DELETE não remove valores individuais de colunas ou conjuntos de colunas. Ele serve para remover registros inteiros! ERRADA

Gabarito: D

14.

(CESPE – MEC – 2015) CREATE TABLE PESSOA (

ID INTEGER NOT NULL,

NOME CHAR(50) NOT NULL UNIQUE, CPF DECIMAL (11,0) NULL,

NACIONALIDADE INTEGER NOT NULL, PRIMARY KEY (ID),

FOREIGN KEY (NACIONALIDADE) REFERENCES TABELA_NACIONALIDADE(CODIGO_NACIONALIDADE) );

Com base no comando SQL apresentado, julgue o item subsequente.

A cláusula NULL na coluna CPF indica que o conteúdo dessa coluna pode ser zero, já que ela é do tipo DECIMAL (11,0).

RESOLUÇÃO:

O comando NULL indica que o conteúdo dessa coluna pode ser nulo, não zero. Fique bastante atento, pois nulo é diferente de cadeia de caracteres vazia ou de número zero. Além disso, o tipo DECIMAL(11,0) não tem nada a ver com o fato do atributo poder ser nulo ou não, então essa relação de causalidade (“já que...”) não se sustenta.

Gabarito: E

15.

(CESPE – MEC – 2015) CREATE TABLE PESSOA (

ID INTEGER NOT NULL,

NOME CHAR(50) NOT NULL UNIQUE, CPF DECIMAL (11,0) NULL,

NACIONALIDADE INTEGER NOT NULL, PRIMARY KEY (ID),

FOREIGN KEY (NACIONALIDADE) REFERENCES TABELA_NACIONALIDADE(CODIGO_NACIONALIDADE) );

Com base no comando SQL apresentado, julgue o item subsequente.

A tabela TABELA_NACIONALIDADE deve ter uma coluna de nome DESCRICAO_NACIONALIDADE para obter o texto equivalente a cada código.

RESOLUÇÃO:

A única restrição que existe aqui é que a tabela TABELA_NACIONALIDADE deve ter uma coluna CODIGO_NACIONALIDADE, pois este está sendo referenciado por uma chave estrangeira. Em teoria, tabelas cujos registros são identificados por códigos costumam ter descrições associadas a esses códigos, mas não existe nenhum elemento no comando que indique a existência da coluna DESCRICAO_NACIONALIDADE, muito menos a necessidade dela ter exatamente esse nome.

Gabarito: E

16.

(CESPE – MEC – 2015) CREATE TABLE PESSOA (

ID INTEGER NOT NULL,

NOME CHAR(50) NOT NULL UNIQUE, CPF DECIMAL (11,0) NULL,

NACIONALIDADE INTEGER NOT NULL, PRIMARY KEY (ID),

FOREIGN KEY (NACIONALIDADE) REFERENCES TABELA_NACIONALIDADE(CODIGO_NACIONALIDADE) );

Com base no comando SQL apresentado, julgue o item subsequente.

Na tabela TABELA_NACIONALIDADE , CODIGO_NACIONALIDADE deve ser PRIMARY KEY.

RESOLUÇÃO:

Deve aqui está sendo usada num sentido de probabilidade. Realmente, na maior parte das vezes as chaves estrangeiras estão ligadas à chave primária da tabela referenciada. No entanto, guarde que isso não é obrigatório.

Caso a questão tivesse dito “CODIGO_NACIONALIDADE deve necessariamente ser PRIMARY KEY” ela estaria incorreta.

Do jeito que está, não podemos afirmar que o item está incorreto, no máximo está ambíguo pelos múltiplos sentidos da palavra “deve”.

Gabarito: C

17.

(CESPE – MEC – 2015) CREATE TABLE PESSOA (

ID INTEGER NOT NULL,

NOME CHAR(50) NOT NULL UNIQUE, CPF DECIMAL (11,0) NULL,

NACIONALIDADE INTEGER NOT NULL, PRIMARY KEY (ID),

FOREIGN KEY (NACIONALIDADE) REFERENCES TABELA_NACIONALIDADE(CODIGO_NACIONALIDADE) );

Com base no comando SQL apresentado, julgue o item subsequente.

Mais de uma PESSOA pode ter o mesmo NOME e a mesma NACIONALIDADE.

RESOLUÇÃO:

Em relação à nacionalidade, tudo bem! Não há restrição em relação à repetição dos valores do atributo. No entanto, veja que o atributo nome tem uma restrição UNIQUE, o que o torna uma chave candidata, ou seja, um atributo cujos valores não se repetem.

Gabarito: E

18.

(CESPE – MEC – 2015) CREATE TABLE PESSOA (

ID INTEGER NOT NULL,

NOME CHAR(50) NOT NULL UNIQUE, CPF DECIMAL (11,0) NULL,

NACIONALIDADE INTEGER NOT NULL, PRIMARY KEY (ID),

FOREIGN KEY (NACIONALIDADE) REFERENCES TABELA_NACIONALIDADE(CODIGO_NACIONALIDADE) );

Com base no comando SQL apresentado, julgue o item subsequente.

A tabela criada terá quatro colunas.

RESOLUÇÃO:

Questão “de graça”. A tabela criada tem quatro colunas. Observe que os comandos “PRIMARY KEY (ID)” e

“FOREIGN KEY (NACIONALIDADE)...” apenas definem restrições para a tabela, não novas colunas. Item correto.

Gabarito: C

19.

(CESPE – MEC – 2015)

Com relação à linguagem de definição de dados (DDL) e à linguagem de manipulação de dados (DML), julgue o próximo item.

A DML utiliza o comando CREATE para inserir um novo registro na tabela de dados.

RESOLUÇÃO:

CREATE é um comando DDL que, por si só, cria uma tabela vazia. Como vimos durante a aula, há algumas maneiras de se criar tabelas já com um conjunto de registros inicial. No entanto, em via de regra, tome que o CREATE não insere registro algum em uma tabela.

O comando DML utilizado para inserir novos registros em uma tabela é o comando INSERT. É esse comando que deveria estar no enunciado da questão para torná-la correta.

Gabarito: E

20.

(CESPE – TJ/DFT – 2015)

Com base no diagrama de entidade e relacionamento (DER) apresentado, julgue o item que se segue a respeito de modelagem de dados e linguagem de definição dos dados.

A seguir é apresentado o comando SQL correto para gerar o esquema físico do DER.

CREATE TABLE Pessoa ( Nome VARCHAR(50), Sexo VARCHAR(1), CPF VARCHAR(11), Inheritance (aluno, pessoa) ) CREATE TABLE Aluno ( Curso VARCHAR(20), CPF VARCHAR(11) PRIMARY KEY ) CREATE TABLE Professor ( Departamento VARCHAR(30), CPF VARCHAR(11) PRIMARY KEY )

RESOLUÇÃO:

Vamos lá! Aqui temos um exemplo de diagrama de entidade e relacionamento estendido, contendo também os conceitos de generalização e especialização. Nesse caso, Professor e Aluno são subclasses de Pessoa, ou seja, cada Professor e cada Aluno também tem um registro na tabela Pessoa, ligados por uma chave estrangeira.

Nesse caso, temos que o trecho de código está incorreto, pois coloca incorretamente um comando “Inheritance”, no lugar de definir adequadamente as chaves estrangeiras em Professor e Aluno que deveriam referenciar a chave primária de Pessoa.

Gabarito: E

21.

(CESPE – TJ/DFT – 2015) Julgue o próximo item, relativo a SQL.

O comando SQL ilustrado a seguir atualiza os dados dos empregados do departamento (id_departamento) 50 que têm como função (id_funcao) VENDEDOR para o departamento 80 e gerente (id_gerente) 145.

UPDATE empregados SET id_departamento = 80, id_gerente = 145 WHERE id_departamento = 50 AND funcao = 'VENDEDOR';

RESOLUÇÃO:

Bom, ou se trata de um erro de digitação ou a banca deu um golpe baixo em quem prestou essa prova. Veja que o comando está com a sintaxe toda correta para realizar uma atualização através do comando UPDATE. O único problema da assertiva é no trecho AND funcao = 'VENDEDOR'; em que, de acordo com enunciado, o atributo deveria se chamar id_funcao. Só isso!

Gabarito: E

22.

(CESPE – MEC – 2015)

Considerando que, durante a implementação do Sistema Informatizado do FIES (SisFIES), foram utilizadas várias funções em um banco de dados relacional, julgue o seguinte item.

É possível executar uma função (function) como parte de uma instrução SELECT, porém não é possível passar como parâmetro para a função um valor de coluna retornado do SELECT.

RESOLUÇÃO:

O examinador, em outras palavras, pergunta se é possível utilizar uma subquery numa chamada de função na linguagem SQL. Questão um pouco específica! Isso é possível sim, desde que a subquery retorne um valor do tipo adequado para a função, claro. Veja um exemplo:

SELECT regiao , clima

, converter_celsius_fahrenheit((SELECT MAX(temperaturaCelsius) FROM temperaturas t WHERE l.regiao = t.regiao)) AS maximaTemperatura

FROM local l Gabarito: E

23.

(CESPE – MEC – 2015)

Julgue o item que se segue, com relação às definições e aos problemas de execução de comandos nas linguagens SQL.

Considere que, no projeto físico de um banco de dados de fornecedores, o seguinte esquema tenha sido criado:

CREATE TABLE FORNECEDOR ( CNPJ VARCHAR(14) NOT NULL, NOME VARCHAR(50) NOT NULL, PRIMARY KEY (CNPJ)

);

Nessa situação, o comando de inserção a seguir será executado sem erros quando submetido ao banco de dados citado, com os dois fornecedores sendo inseridos no esquema anteriormente apresentado.

INSERT INTO FORNECEDOR (CNPJ, NOME) VALUES ('12123123000112', 'FORNECEDOR 1'),

('12123123123000112', 'FORNECEDOR 2');

RESOLUÇÃO:

O item está incorreto, pois o CNPJ do segundo registro a ser inserido tem 17 caracteres, quando o campo foi definido como sendo uma cadeia de caracteres variável de tamanho máximo 14 (VARCHAR(14)). Assim, campos com cadeias de caracteres maiores do que 14 não podem ser inseridos nesta tabela.

Gabarito: E

24.

(CESPE – MEC – 2015)

Julgue o item que se segue, com relação às definições e aos problemas de execução de comandos nas linguagens SQL.

Uma operação DELETE do SQL não é realizada se sua chave primária for referida por chaves estrangeiras em registros de outras tabelas no banco de dados. Assim, a fim de garantir a existência de chaves primárias para cada chave estrangeira nos bancos de dados relacionais, o SQL não apresenta nenhuma cláusula ou opção adicional que permita tal operação ocorrer nessa situação.

RESOLUÇÃO:

A opção ON DELETE CASCADE, por exemplo, realiza a remoção automática também dos registros referenciados, propagando a operação de DELETE. O examinador afirma que a linguagem SQL não fornece esse tipo de opção e, portanto, incorre em erro.

Guarde que, por padrão, o comportamento é realmente restringir a operação de DELETE (RESTRICT), mas isso pode ser alterado pelo administrador.

Gabarito: E

25.

(CESPE – ANTAQ – 2014)

A respeito da linguagem SQL, julgue os itens subsequentes.

Em uma tabela de empregados, o comando SQL abaixo altera de Sousa para Souza, na coluna Sobrenome.

UPDATE Pessoas SET Sobrenome='Sousa' INTO Sobrenome='Souza' RESOLUÇÃO:

Temos um erro de sintaxe na consulta após o comando SET. O correto seria o seguinte:

UPDATE Pessoas SET Sobrenome='Souza' WHERE Sobrenome='Sousa'

Note que não fazemos referência ao valor antigo do atributo no SET, somente restringimos aqueles que queremos atualizar através do WHERE.

Gabarito: E

26.

(FCC – SEFAZ/BA – 2019)

Em um banco de dados aberto e em condições ideais há uma tabela chamada Contribuinte cuja chave primária é idContribuinte. Há também uma tabela chamada Imposto cuja chave primária é idimposto. Para criar uma tabela de associação chamada Contribuinte_imposto cuja chave primária é composta pelos campos idContribuinte e idImposto, que são chaves estrangeiras resultantes da relação dessa tabela com as tabelas Contribuinte e Imposto, utiliza-se a instrução SQL

a) CREATE TABLE Contribuinte_Imposto(idContribuinte INT, idImposto INT, PRIMARY KEY (idContribuinte), FOREIGN KEY (idContribuinte) REFERENCES Contribuinte (idContribuinte), PRIMARY KEY (idImposto), FOREIGN KEY (idContribuinte) REFERENCES Contribuinte (idContribuinte));

b) CREATE TABLE Contribuinte_Imposto(idContribuinte INT NOT NULL, idImposto INT NOT NULL, PRIMARY KEY (idContribuinte, idImposto), CONSTRAINT fk1 FOREIGN KEY (idContribuinte) REFERENCES Contribuinte (idContribuinte), CONSTRAINT fk2 FOREIGN KEY (idImposto) REFERENCES Imposto (idImposto));

c) CREATE TABLE Contribuinte_Imposto(idContribuinte INT NOT NULL, idImposto INT NOT NULL, PRIMARY KEY (idContribuinte, idImposto), FOREIGN KEY (idContribuinte) SOURCE Contribuinte (idContribuinte), FOREIGN KEY (idImposto) SOURCE Imposto (idImposto));

d) CREATE TABLE Contribuinte_Imposto(idContribuinte INT NOT NULL, idImposto INT NOT NULL, PRIMARY KEY (idContribuinte, idImposto), FOREIGN KEY (idContribuinte, idImposto) REFERENCES (Contribuinte!idContribuinte, Imposto!idImposto));

e) CREATE TABLE Contribuinte_Imposto(idContribuinte INT NOT NULL, idImposto INT NOT NULL, PRIMARY KEY (idContribuinte, idImposto), FOREIGN KEY (idContribuinte, idImposto) REFERENCES all parents);

RESOLUÇÃO:

Nos relacionamentos M:N (muitos para muitos) é necessária a criação de uma tabela de ligação entre as duas tabelas envolvidas no relacionamento. Essa tabela irá servir para “partir” o relacionamento em dois relacionamentos 1:N, permitindo que se implemente o muitos para muitos em uma modelagem relacional.

A tabela de ligação irá possuir as seguintes características:

- Chaves estrangeiras: duas – uma apontando para cada tabela do relacionamento.

- Chave primária: composição das chaves estrangeiras.

Veja, então, que no exemplo da questão iríamos utilizar as seguintes restrições para implementar este tipo de relacionamento entre Contribuinte e Imposto:

CONSTRAINT <nome> FOREIGN KEY (idContribuinte) REFERENCES Contribuinte (idContribuinte)

CONSTRAINT <nome> FOREIGN KEY (idImposto) REFERENCES Imposto (idImposto) E, por fim, criar a chave primária (que não necessariamente precisa ser nomeada).

PRIMARY KEY (idContribuinte, idImposto)

Observe que a alternativa B está de acordo com os comandos que apresentamos e com o enunciado da questão, sendo assim a nossa resposta. Um detalhe é que é desnecessária a definição de NOT NULL nos atributos idContribuinte e idImposto da tabela de ligação, já que eles compõem a chave primária. Se um atributo faz parte da chave primária, seus valores automaticamente deverão ser únicos e não nulos.

Gabarito: B

27.

(FCC – DPE/AM – 2018)

O comando SQL–ANSI para criar um procedimento chamado P1, que selecione os atributos A e B, de uma tabela T é:

a)

PROCEDURE P1 IS SELECT A, B FROM T;

b)

INSERT PROCEDURE P1 INTO DATABASE AS SELECT A, B

FROM T c)

CREATE PROCEDURE P1( ) SELECT A, B

FROM T;

d)

MAKE PROCEDURE P1 (SELECT A, B FROM T);

e)

PROCEDURE P1 AS

Documentos relacionados