FC ConcursosFC Concursos

Questão FC295893

Qual comando INSERT irá falhar, na tentativa de incluir uma nova linha em uma das tabelas desse banco de dados?

Linguagem SQL

CESGRANRIO · 2022

As tabelas a seguir fazem parte do banco de dados da área de recursos humanos de uma empresa. Elas registram os dados referentes aos empregados e aos seus dependentes.

CREATE TABLE EMPREGADO (
    MATRICULA INTEGER NOT NULL,
     NOME TEXT NOT NULL,
     DATA_NASC TEXT NOT NULL,
     CERT_RESRV INTEGER UNIQUE NULL,
     PRIMARY KEY (MATRICULA));


CREATE TABLE DEPENDENTE (
     MAT_EMP INTEGER NOT NULL,
     NUM_SEQ INTEGER NOT NULL,
     NOME TEXT NOT NULL,
     DATA_NASC TEXT NOT NULL,
     PRIMARY KEY (MAT_EMP, NUM_SEQ)
     FOREIGN KEY (MAT_EMP)
REFERENCES EMPREGADO (MATRICULA));

 

O estado corrente desse banco de dados é exibido nas figuras abaixo.

 

EMPREGADO

MATRICULA NOME DATA_NASC CERT_RESRV
11111 Paulo Menezes 24/05/1991 00:00 234811
22222 Ana Maria Carvalho 25/07/1983 00:00 null
33333 Alexandre Cardoso 11/08/1989 00:00 101678
 

DEPENDENTE

MAT_EMP NUM_SEQ NOME DATA_NASC
22222 1 Valéria 31/12/2017 00:00
22222 2 Pedro 09/06/2015 00:00
33333 1 Joana 22/03/2019 00:00
33333 2 Mariana 25/07/2020 00:00
 

Qual comando INSERT irá falhar, na tentativa de incluir uma nova linha em uma das tabelas desse banco de dados?

  1. INSERT INTO DEPENDENTE(NUM_SEQ,MAT_EMP,DATA_NASC,NOME)

         VALUES(00,11111,datetime(‘2015-01-06‘),‘Luiz Paulo‘);

  2. INSERT INTO DEPENDENTE(NOME,DATA_NASC,NUM_SEQ,MAT_EMP)

         VALUES(‘Maria Paula‘,datetime(‘2017-08-11‘),3,11111);

  3. INSERT INTO EMPREGADO VALUES(55555,‘Antônia Pinto‘,datetime(‘1994-04-01‘),NULL);
  4. INSERT INTO EMPREGADO VALUES(66666,‘Adriana Andrade‘,datetime(‘1985-06-04‘));
  5. INSERT INTO EMPREGADO VALUES(44444,‘Nilce Peçanha‘,datetime(‘1999-09-06‘),‘‘);
Mostrar resposta e comentário

Gabarito

D

Comentário do professor

A instrução INSERT apresentada falha porque não informa valor para todas as colunas da tabela EMPREGADO e não lista explicitamente as colunas a serem preenchidas. Quando o comando usa apenas VALUES sem especificar colunas, o SGBD espera um valor para cada coluna na ordem da definição da tabela.

No caso, EMPREGADO tem quatro colunas (MATRICULA, NOME, DATA_NASC, CERT_RESRV) e o comando fornece apenas três valores, gerando erro do tipo "table has 4 columns but 3 values were supplied".

Observação: mesmo que CERT_RESRV aceite NULL, é preciso indicar esse valor explicitamente ou usar a lista de colunas, por exemplo: INSERT INTO EMPREGADO (MATRICULA,NOME,DATA_NASC) VALUES(...), para que o SGBD atribua NULL a CERT_RESRV.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo