Questão de Banco de Dados — Consultas e Comandos em SQL — VUNESP 2023
Banco de Dados›Consultas 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, é:
ACREATE INDEX First ON Consutório (Proprietário);
BCREATE INDEX Consultório (Proprietário) AT Consultório.First;
CCREATE INDEX Consultório.First FOR Proprietário;
DCREATE INDEX First IN Proprietário OF Consultório;
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.
1CREATE INDEX nome
2ON tabela
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.