Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2024

Banco de DadosConsultas e Comandos em SQL
Código
qa630734
Banca
Quadrix
Órgão
CRQ 12 (GO, TO e DF)
Ano
2024
Cargo
Ana (CRQ 12)

1. CREATE TABLE Empresa (
2.     Cod_Empresa INT PRIMARY KEY,
3.     Nome VARCHAR(100) NOT NULL,
4.     Endereco VARCHAR(200),
5.     Telefone INT NOT NULL
6. );
7.
8. CREATE TABLE Produto_Quimico (
9.     Cod_Produto_Quimico INT PRIMARY KEY,
10.    Nome VARCHAR(100) NOT NULL,
11.    Composicao VARCHAR(300)
12. );
13.
14. CREATE TABLE Empresa_Produto_Quimico (
15.     Cod_Empresa INT,
16.     Cod_Produto_Quimico INT,
17.     PRIMARY KEY (Cod_Empresa, Cod_Produto_Quimico),
18.     FOREIGN KEY (Cod_Empresa) REFERENCES Empresa(Cod_Empresa),
19.     FOREIGN KEY (Cod_Produto_Quimico) REFERENCES Produto_Quimico(Cod_Produto_Quimico)
    );

 

Com referência ao código SQL (Structured Query Language) acima, julgue o item.

 

Ao executar a primeira parte do código, a criação da tabela Empresa, ocorrerá um erro na linha 4, pois o referido campo não foi definido como NOT NULL.

  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Criação de tabelas com CREATE TABLE e a restrição NOT NULL

Gabarito: ERRADO (letra E). A criação da tabela Empresa não gera erro na linha 4, pois a coluna Endereco foi definida sem a restrição NOT NULL, o que é perfeitamente válido em SQL — a ausência dessa restrição significa que a coluna aceita valores nulos (NULL). O erro apontado no enunciado não existe, pois a sintaxe do comando CREATE TABLE está correta.

O comando CREATE TABLE é um comando da sublinguagem DDL (Data Definition Language), responsável pela definição da estrutura do banco de dados. Ao criar uma tabela, cada coluna pode ser declarada com ou sem a restrição NOT NULL. Quando a restrição NOT NULL é omitida, a coluna passa a aceitar valores nulos por padrão — essa é a regra geral do padrão SQL. Portanto, a linha 4 do código, que define a coluna Endereco VARCHAR(200) sem NOT NULL, está sintaticamente correta e não causa erro na execução.

A confusão que a banca explora aqui é achar que toda coluna precisa ser NOT NULL para ser válida. Na verdade, a restrição NOT NULL é opcional e serve para garantir que um valor obrigatoriamente seja informado naquela coluna. No caso da tabela Empresa, apenas as colunas Cod_Empresa (que é chave primária) e Nome e Telefone foram definidas como NOT NULL; a coluna Endereco ficou opcional, podendo receber valores nulos.

Para entender melhor, veja a estrutura da tabela Empresa:

Coluna

Tipo

Restrição

Aceita NULL?

Cod_Empresa

INT

PRIMARY KEY (implicitamente NOT NULL)

Não

Nome

VARCHAR(100)

NOT NULL

Não

Endereco

VARCHAR(200)

(nenhuma)

Sim

Telefone

INT

NOT NULL

Não

A chave primária (PRIMARY KEY) já garante a não nulidade da coluna Cod_Empresa, mesmo sem a declaração explícita de NOT NULL. As demais colunas seguem a regra padrão: sem a restrição, aceitam NULL.

NÃO CAIA NESSA!

A banca tenta induzir o candidato a acreditar que a ausência de NOT NULL é um erro de sintaxe. Na verdade, a ausência dessa restrição é perfeitamente válida e torna a coluna opcional (aceita NULL). O erro seria se a coluna fosse declarada com NOT NULL e depois recebesse um valor nulo — mas isso é um erro de inserção de dados, não de criação da tabela.

Alternativa E — ✅ Correta (gabarito)

A afirmação de que "ocorrerá um erro na linha 4, pois o referido campo não foi definido como NOT NULL" está errada. A coluna Endereco foi definida como VARCHAR(200) sem a restrição NOT NULL, o que é perfeitamente válido em SQL. A ausência dessa restrição significa que a coluna aceita valores nulos, e isso não gera erro na criação da tabela. O comando CREATE TABLE Empresa é executado com sucesso, criando a tabela com as quatro colunas especificadas.

Gabarito: ERRADO (letra E).

Link permanente: /questoes/qa630734