O setor de TI de um hospital precisa gerar relatórios diários com o nome dos pacientes e suas respectivas datas de internação. Esses dados estão armazenados em uma tabela chamada pacientes, com as colunas id_paciente, nome, data_internacao e diagnostico.Com base nessa situação hipotética, assinale a opção que apresenta a instrução SQL que retorna corretamente apenas o nome e a data de internação de todos os pacientes internados no hospital.
ASELECT nome AND data_internacao FROM pacientes;
BSELECT nome, data_internacao FROM pacientes;
CSELECT nome FROM pacientes AND data_ internacao;
DSELECT nome FROM pacientes WHERE data_ internacao;
ESELECT nome OR data_internacao FROM pacientes;
Revelar gabarito e comentário▾
GabaritoB — SELECT nome, data_internacao FROM pacientes;
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”.
Sintaxe do comando SELECT no SQL
Gabarito: letra B. A instrução SELECT nome, data_internacao FROM pacientes; é a única que segue corretamente a sintaxe do comando SELECT, listando as colunas desejadas separadas por vírgula após a palavra-chave SELECT e indicando a tabela de origem com a cláusula FROM. As demais alternativas empregam operadores lógicos (AND, OR) ou cláusulas de forma incorreta, gerando erro de sintaxe ou não retornando os dados esperados.
O comando SELECT é a instrução fundamental da linguagem SQL para consultar dados em um banco de dados relacional. Sua sintaxe básica é: SELECT coluna1, coluna2, ... FROM nome_da_tabela;. As colunas a serem retornadas são listadas após SELECT, separadas por vírgula, e a tabela de onde os dados serão lidos é indicada após FROM. Essa estrutura é universal nos principais SGBDs (MySQL, PostgreSQL, SQL Server, Oracle etc.).
A confusão mais comum nesse tipo de questão é misturar a sintaxe do SELECT com a dos operadores lógicos AND e OR, que são usados apenas na cláusula WHERE para combinar condições de filtro. Por exemplo, para selecionar pacientes internados em uma data específica, usaríamos WHERE data_internacao = '2025-01-01'; o AND e o OR apareceriam para combinar múltiplas condições, como WHERE diagnostico = 'COVID' AND data_internacao > '2025-01-01'. Mas, quando o objetivo é apenas listar colunas, não há espaço para esses operadores na lista de seleção.
Outra pegadinha recorrente é confundir a cláusula WHERE com a lista de colunas. O WHERE é usado para filtrar linhas com base em condições, e não para selecionar colunas. Na alternativa D, por exemplo, SELECT nome FROM pacientes WHERE data_internacao; está incorreto porque data_internacao é uma coluna, não uma condição válida — faltaria um operador de comparação (como =, >, BETWEEN).
Para fixar: a estrutura do SELECT é sempre SELECT <colunas> FROM <tabela> [WHERE <condição>]. As colunas são separadas por vírgula, e os operadores lógicos (AND, OR, NOT) só aparecem dentro do WHERE, nunca na lista de seleção. É exatamente esse critério que separa a alternativa correta das demais.
SELECT (sintaxe): Lista de colunas (Separadas por vírgula, ⛔ Sem AND/OR); FROM (Nome da tabela); WHERE (opcional) (Condição de filtro, Usa AND/OR, Exige operador de comparação)
Alternativa A — ❌ Incorreta
A instrução SELECT nome AND data_internacao FROM pacientes; usa o operador lógico AND entre as colunas, o que é inválido. O AND é um operador booleano usado para combinar condições na cláusula WHERE, não para separar colunas na lista de seleção. A sintaxe correta exige vírgula entre os nomes das colunas.
Alternativa B — ✅ Correta ⟵ GABARITO
A instrução SELECT nome, data_internacao FROM pacientes; segue exatamente a sintaxe padrão do SELECT: lista as colunas desejadas (nome e data_internacao) separadas por vírgula e indica a tabela de origem (pacientes) com a cláusula FROM. Como não há condição de filtro, não é necessário WHERE. Essa consulta retorna apenas o nome e a data de internação de todos os pacientes, conforme solicitado.
Alternativa C — ❌ Incorreta
A instrução SELECT nome FROM pacientes AND data_internacao; está incorreta por dois motivos: primeiro, a cláusula FROM deve ser seguida apenas do nome da tabela, e não de uma coluna; segundo, o operador AND não pode ser usado para conectar a tabela a uma coluna. O correto seria listar as colunas após SELECT, separadas por vírgula, e indicar a tabela após FROM.
Alternativa D — ❌ Incorreta
A instrução SELECT nome FROM pacientes WHERE data_internacao; está incorreta porque a cláusula WHERE exige uma condição válida, como data_internacao = '2025-01-01' ou data_internacao IS NOT NULL. Usar apenas o nome da coluna sem operador de comparação não constitui uma condição booleana, gerando erro de sintaxe. Além disso, a consulta não retornaria a coluna data_internacao, pois ela não está na lista de seleção.
Alternativa E — ❌ Incorreta
A instrução SELECT nome OR data_internacao FROM pacientes; usa o operador lógico OR entre as colunas, o que é inválido. O OR é um operador booleano usado para combinar condições na cláusula WHERE, não para separar colunas na lista de seleção. A sintaxe correta exige vírgula entre os nomes das colunas.
NÃO CAIA NESSA!
A banca explora a confusão entre a lista de colunas do SELECT e os operadores lógicos AND/OR, que só aparecem no WHERE. Lembre-se: vírgula separa colunas; AND/OR combinam condições. Com treino, você identifica essa troca de imediato.
PEGA ESSA DICA!
Na prova, ao ver uma consulta SQL, verifique primeiro se as colunas estão separadas por vírgula e se o WHERE (quando presente) contém uma condição válida. Se aparecer AND/OR fora do WHERE, a alternativa está errada.