Questão 32 · Informática: Banco de dados
Com referência ao MySQL 5.0, o comando que será corretamente executado é:
- A) CREATE TABLE teste ( artigo INT(4) UNSIGNED ZEROFILL NOT NULL, vendedor CHAR(20) NOT NULL, preco DOUBLE(16,2) NOT NULL, PRIMARY KEY(artigo, vendedor)); INSERT INTO teste VALUES (1,'A',3.45),(1,'B',3.99),(1,'A',10.99), (3,'B',1.45),(3,'C',1.69),(3,'D',1.25);
- B) CREATE TABLE teste ( artigo INT(4) UNSIGNED ZEROFILL NOT NULL, vendedor CHAR(20) NOT NULL, preco DOUBLE(16,2) NOT NULL, PRIMARY KEY(artigo, vendedor)); INSERT INTO teste VALUES (1,'A',3.45),(1,'B',3.99),(2,'A',10.99), (3,'B',1.45),(3,'C',1.69),(3,'D',1.25);
- C) CREATE TABLE teste ( artigo INT(4) UNSIGNED ZEROFILL NOT NULL, vendedor CHAR(20) NOT NULL, preco DOUBLE(16,2) NOT NULL, PRIMARY KEY(artigo, vendedor)); INSERT (1,'A',3.45),(1,'B',3.99),(2,'A',10.99), (3,'B',1.45),(3,'C',1.69),(3,'D',1.25);
- D) CREATE TABLE teste ( artigo INT(4) UNSIGNED ZEROFILL NOT NULL, vendedor CHAR(20) NOT NULL, preco DOUBLE(16,2) NOT NULL, PRIMARY KEY(artigo, vendedor)); INSERT VALUES (1,'A',3.45),(1,'B',3.99),(1,'A',10.99), (3,'B',1.45),(3,'C',1.69),(3,'D',1.25);
- E) CREATE TABLE teste ( artigo INT(4) UNSIGNED ZEROFILL NOT NULL, vendedor CHAR(20) NOT NULL, preco DOUBLE(16,2) NOT NULL, PRIMARY KEY(artigo, vendedor), VALUES (1,'A',3.45),(1,'B',3.99),(2,'A',10.99), (3,'B',1.45),(3,'C',1.69),(3,'D',1.25));
Marque a alternativa correta:
Gabarito: B
Gabarito definitivo divulgado pela banca FGV (DPE/RO 2015).
Comentário
Gabarito: B.
Para o comando ser executado sem erro, o CREATE TABLE e o INSERT precisam ter sintaxe correta e não violar a chave primária. A tabela teste é criada com artigo INT(4) UNSIGNED ZEROFILL, vendedor CHAR(20), preco DOUBLE(16,2) e PRIMARY KEY(artigo, vendedor), que é uma chave composta. O INSERT INTO teste VALUES traz seis linhas com pares (artigo, vendedor) distintos: (1, A), (1, B), (2, A), (3, B), (3, C) e (3, D). Como não há repetição da chave, a execução é bem-sucedida. Logo, a alternativa correta é a B.
As demais estão erradas:
- (A) repete o par (1, A) na chave primária, o que viola a unicidade e gera erro.
- (C) o INSERT não traz o nome da tabela nem a palavra VALUES: erro de sintaxe.
- (D) o INSERT não traz o nome da tabela: erro de sintaxe.
- (E) coloca VALUES dentro da definição da tabela, no CREATE TABLE: erro de sintaxe.
Dica: em questões de SQL com alternativas parecidas, confira primeiro a sintaxe e depois as restrições, como a chave primária. Comparando A e B, a diferença está na terceira linha: (1, A) repetida em A e (2, A) em B.
Fundamentos: Sintaxe de CREATE TABLE e INSERT no MySQL · Chave primária composta e violação de unicidade · Tipos numéricos e de texto no MySQL 5.0
Comentário gerado pela Cravei IA a partir do enunciado e do gabarito definitivo divulgado pela banca, e conferido por uma verificação automática. A IA pode errar: o gabarito oficial sempre prevalece.
Fonte: prova FGV DPE/RO 2015 (Analista Programador), questão 32, com o gabarito definitivo da banca. Comentário: Equipe Cravei · como fazemos e revisamos.