Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — VUNESP 2023

Banco de DadosConsultas e Comandos em SQL
Código
vu195446
Banca
VUNESP
Órgão
UNICAMP
Ano
2023
Cargo
PTIC ( )

Considere a seguinte tabela de um banco de dados relacional.

 

Consultório (Sala, Bloco, Tipo, Proprietário)

 

O comando SQL para criar um índice baseado no atributo Proprietário, índice esse de nome First, é:

  1. ACREATE INDEX First ON Consutório (Proprietário);
  2. BCREATE INDEX Consultório (Proprietário) AT Consultório.First;
  3. CCREATE INDEX Consultório.First FOR Proprietário;
  4. DCREATE INDEX First IN Proprietário OF Consultório;
  5. ECREATE INDEX ON First. Consultório.Proprietário;
Revelar gabarito e comentário

GabaritoA — CREATE INDEX First ON Consutório (Proprietário);

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 índices com CREATE INDEX em SQL

Gabarito: letra A. O comando CREATE INDEX é um comando DDL (Data Definition Language) que segue a sintaxe padrão CREATE INDEX nome_do_indice ON nome_da_tabela (coluna1, coluna2, ...). A alternativa A é a única que respeita essa estrutura, criando o índice First sobre a coluna Proprietário da tabela Consultório.

O comando CREATE INDEX é utilizado para criar um índice em uma ou mais colunas de uma tabela, com o objetivo de acelerar as consultas que filtram ou ordenam por essas colunas. Ele é um comando da categoria DDL, pois define a estrutura do banco de dados, assim como CREATE TABLE, ALTER TABLE e DROP TABLE. A sintaxe básica e universalmente aceita é:

CREATE INDEX nome_do_indice
ON nome_da_tabela (coluna1, coluna2, ...);

O nome do índice vem logo após CREATE INDEX, seguido da cláusula ON que especifica a tabela e, entre parênteses, a(s) coluna(s) que compõem o índice. Essa é a forma padrão na maioria dos SGBDs relacionais, como MySQL, PostgreSQL, Oracle e SQL Server.

Na prática, se tivéssemos uma tabela Clientes com as colunas ID, Nome e Cidade, e quiséssemos acelerar buscas por Cidade, criaríamos o índice assim:

CREATE INDEX idx_cidade
ON Clientes (Cidade);

Esse comando cria um índice chamado idx_cidade sobre a coluna Cidade da tabela Clientes. A partir daí, consultas com WHERE Cidade = 'São Paulo' tendem a ser mais rápidas, pois o banco pode usar o índice para localizar diretamente as linhas relevantes, em vez de varrer a tabela inteira.

A pegadinha desta questão é que a banca mistura a sintaxe de CREATE INDEX com a de outros comandos, como CREATE TABLE (que usa CREATE TABLE nome_da_tabela (colunas)) e com a notação de qualificação de coluna (tabela.coluna). O candidato que não domina a sintaxe exata do CREATE INDEX pode se confundir e escolher uma alternativa que parece plausível, mas que não é válida em nenhum SGBD relacional padrão.

Guarde a estrutura CREATE INDEX nome ON tabela (coluna) como um padrão fixo: é exatamente nela que as alternativas se dividem — as incorretas ou invertem a ordem dos elementos, ou usam palavras-chave inexistentes, ou aplicam uma sintaxe de outro comando.

  1. 1CREATE INDEX nome
  2. 2ON tabela
  3. 3(coluna)
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

CREATE INDEX First
ON Consultório (Proprietário);

Esta alternativa segue exatamente a sintaxe padrão do comando CREATE INDEX: primeiro o nome do índice (First), depois a cláusula ON com o nome da tabela (Consultório) e, entre parênteses, a coluna que será indexada (Proprietário). É a forma correta e universalmente aceita para criar um índice em um banco de dados relacional.

Alternativa B — ❌ Incorreta

CREATE INDEX Consultório (Proprietário)
AT Consultório.First;

Esta alternativa usa a palavra AT, que não faz parte da sintaxe do CREATE INDEX. Além disso, coloca o nome da tabela (Consultório) logo após CREATE INDEX, como se fosse o nome do índice, e depois tenta qualificar o índice com Consultório.First, o que não é uma construção válida. A ordem correta é CREATE INDEX nome_do_indice ON nome_da_tabela (coluna).

Alternativa C — ❌ Incorreta

CREATE INDEX Consultório.First
FOR Proprietário;

Aqui, o nome do índice é dado como Consultório.First, o que não é permitido — o nome do índice não pode conter um ponto, pois isso é usado para qualificar colunas, não índices. Além disso, a cláusula FOR não existe na sintaxe do CREATE INDEX; o correto é usar ON nome_da_tabela (coluna).

Alternativa D — ❌ Incorreta

CREATE INDEX First
IN Proprietário OF Consultório;

Esta alternativa usa as palavras IN e OF, que não fazem parte da sintaxe do CREATE INDEX. A estrutura correta exige a cláusula ON para indicar a tabela e os parênteses para listar as colunas. A ordem e as palavras-chave estão completamente erradas.

Alternativa E — ❌ Incorreta

CREATE INDEX ON First.
Consultório.Proprietário;

Esta alternativa coloca ON logo após CREATE INDEX, sem especificar o nome do índice. Além disso, usa a notação First.Consultório.Proprietário, que mistura o nome do índice com a qualificação de tabela e coluna de forma inválida. A sintaxe correta exige o nome do índice antes de ON e a lista de colunas entre parênteses.

PEGA ESSA DICA!

Para questões de sintaxe SQL, decore a estrutura básica dos comandos DDL mais cobrados: CREATE TABLE nome (colunas), CREATE INDEX nome ON tabela (colunas), ALTER TABLE nome ADD/DROP ..., DROP TABLE nome. A banca frequentemente troca palavras-chave (ON por AT, IN, FOR) ou inverte a ordem dos elementos para confundir. Se você memorizar o padrão, consegue eliminar as alternativas erradas rapidamente.

Gabarito: letra A

Link permanente: /questoes/vu195446