Pular para o conteúdo principal

Questão de Banco de Dados — Sublinguagens SQL (DDL, DML, DQL, DCL e DTL) — FGV 2025

Banco de DadosSublinguagens SQL (DDL, DML, DQL, DCL e DTL)
Código
fg169075
Banca
FGV
Órgão
TCE PE
Ano
2025
Cargo
AUCE (TCE-PE)
Considere o script SQL a seguir, desenvolvido para o controle de estoque de estoque de uma loja.   • (Comando 1) Criação de tabela de produtos CREATE TABLE Produto ( id_produto INT PRIMARY KEY, nome VARCHAR(120) NOT NULL, preco NUMERIC(10,2) NOT NULL, quantidade INT NOT NULL ); • (Comando 2) Inserção de dado inicial INSERT INTO Produto (id_produto, nome, preco, quantidade) VALUES (1, 'Mouse Óptico', 49.90, 100); • (Comando 3) View para produtos sem estoque CREATE VIEW vw_produtos_em_falta AS SELECT id_produto, nome FROM Produto WHERE quantidade = 0; • (Comando 4) Procedure para atualizar preço CREATE PROCEDURE atualizar_preco(p_id INT, p_preco NUMERIC(10,2)) BEGIN UPDATE Produto SET preco = p_preco WHERE id_produto = p_id; END; • (Comando 5) Trigger para log de mudanças de preço CREATE TRIGGER trg_log_preco AFTER UPDATE OF preco ON Produto FOR EACH ROW BEGIN INSERT INTO LogAlteracoes(id_produto, campo, valor_antigo, valor_novo, dt_evento) VALUES (OLD.id_produto, 'preco', OLD.preco, NEW.preco, CURRENT_TIMESTAMP); END; • (Comando 6) Atualização de quantidade UPDATE Produto SET quantidade = quantidade - 1 WHERE id_produto = 1; • (Comando 7) Remoção de produtos sem estoque DELETE FROM Produto WHERE quantidade = 0; • (Comando 8) Concessão de permissão de leitura GRANT SELECT ON Produto TO analista; • (Comando 9) Alteração de esquema da tabela ALTER TABLE Produto ADD COLUMN ativo BOOLEAN DEFAULT TRUE; • (Comando 10) Revogação de permissão de inserção REVOKE INSERT ON Produto FROM analista;   As instruções do tipo DML são executadas nos comandos:
  1. A1 – 3 – 4.
  2. B2 – 6 – 7.
  3. C2 – 8 – 10.
  4. D3 – 5 – 9.
  5. E1 – 7 – 10.
Revelar gabarito e comentário

GabaritoB — 2 – 6 – 7.

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”.

Sublinguagens SQL: DML, DDL, DCL e DTL

Gabarito: letra B. As instruções do tipo DML (Data Manipulation Language) são aquelas que manipulam os dados diretamente, e não a estrutura do banco. No script, os comandos 2 (INSERT), 6 (UPDATE) e 7 (DELETE) são DML, pois inserem, alteram e removem registros da tabela Produto. Os demais comandos pertencem a outras sublinguagens: CREATE, ALTER e CREATE VIEW são DDL; GRANT e REVOKE são DCL; CREATE PROCEDURE e CREATE TRIGGER são comandos de definição de objetos (DDL).

A linguagem SQL é dividida em subconjuntos, cada um com uma função específica. A DML (Data Manipulation Language) é o subconjunto responsável por manipular os dados contidos nas tabelas, ou seja, realizar inclusões, alterações, exclusões e consultas de registros. Os comandos clássicos da DML são INSERT, UPDATE e DELETE. Alguns autores também incluem o SELECT na DML, mas a banca FGV, nesta questão, adota a divisão que separa o SELECT em uma sublinguagem própria, a DQL (Data Query Language). Por isso, o comando 3 (CREATE VIEW) não é DML, pois ele cria um objeto (a view), e não manipula dados diretamente.

A DDL (Data Definition Language) é o subconjunto que interage com os objetos do banco de dados, como tabelas, índices, visões e procedures. Seus comandos principais são CREATE, ALTER, DROP e TRUNCATE. No script, os comandos 1 (CREATE TABLE), 3 (CREATE VIEW), 4 (CREATE PROCEDURE), 5 (CREATE TRIGGER) e 9 (ALTER TABLE) são todos DDL, pois criam ou alteram a estrutura de objetos. A DCL (Data Control Language) controla as permissões de acesso dos usuários, com os comandos GRANT e REVOKE — no script, os comandos 8 e 10. Já a DTL (Data Transaction Language) gerencia transações, com comandos como BEGIN, COMMIT e ROLLBACK, que não aparecem no script.

A pegadinha desta questão está em classificar corretamente o comando 3 (CREATE VIEW) e o comando 4 (CREATE PROCEDURE). Muitos candidatos confundem e acham que, por criarem algo que será usado para manipular dados, eles seriam DML. Mas a regra é clara: qualquer comando CREATE é DDL, pois define um objeto no banco. O mesmo vale para o comando 5 (CREATE TRIGGER). A banca também explora a confusão entre DML e DCL: GRANT e REVOKE (comandos 8 e 10) não manipulam dados, apenas controlam quem pode acessá-los.

Para resolver a questão, basta identificar a função de cada comando e agrupá-los pela sublinguagem correspondente. O critério decisivo é: DML manipula dados; DDL define objetos; DCL controla acesso; DTL gerencia transações. Com isso, a única alternativa que reúne exclusivamente comandos DML é a letra B.

Comando

Sublinguagem

Classificação

1 – CREATE TABLE

DDL

Define estrutura (objeto)

2 – INSERT

DML

Manipula dados (insere registro)

3 – CREATE VIEW

DDL

Define estrutura (objeto)

4 – CREATE PROCEDURE

DDL

Define estrutura (objeto)

5 – CREATE TRIGGER

DDL

Define estrutura (objeto)

6 – UPDATE

DML

Manipula dados (altera registro)

7 – DELETE

DML

Manipula dados (remove registro)

8 – GRANT

DCL

Controla permissões de acesso

9 – ALTER TABLE

DDL

Define estrutura (objeto)

10 – REVOKE

DCL

Controla permissões de acesso

1DML (manipula dados)
INSERT
UPDATE
DELETE
2DDL (define objetos)
CREATE
ALTER
DROP
TRUNCATE
3DCL (controla acesso)
GRANT
REVOKE
4DTL (gerencia transações)
BEGIN
COMMIT
ROLLBACK
Sublinguagens SQL
LEVELsoulevel.com.br
Sublinguagens SQL: DML (manipula dados) (INSERT, UPDATE, DELETE); DDL (define objetos) (CREATE, ALTER, DROP, TRUNCATE); DCL (controla acesso) (GRANT, REVOKE); DTL (gerencia transações) (BEGIN, COMMIT, ROLLBACK)

Alternativa A — ❌ Incorreta

Os comandos 1 (CREATE TABLE), 3 (CREATE VIEW) e 4 (CREATE PROCEDURE) são todos DDL, pois criam objetos no banco de dados. Nenhum deles manipula dados diretamente. A alternativa erra ao classificar comandos de definição de estrutura como DML.

Alternativa B — ✅ Correta ⟵ GABARITO

Os comandos 2 (INSERT), 6 (UPDATE) e 7 (DELETE) são exatamente os três comandos clássicos da DML: inserem, atualizam e excluem registros da tabela Produto. Eles manipulam os dados contidos na tabela, e não a estrutura do banco. Esta é a única alternativa que reúne exclusivamente comandos de manipulação de dados.

Alternativa C — ❌ Incorreta

Os comandos 2 (INSERT) e 8 (GRANT) e 10 (REVOKE) misturam sublinguagens. O comando 2 é DML, mas os comandos 8 e 10 são DCL (Data Control Language), pois controlam permissões de acesso de usuários, e não manipulam dados. A alternativa erra ao classificar comandos de controle de acesso como DML.

Alternativa D — ❌ Incorreta

Os comandos 3 (CREATE VIEW), 5 (CREATE TRIGGER) e 9 (ALTER TABLE) são todos DDL, pois criam ou alteram objetos do banco de dados. Nenhum deles manipula dados diretamente. A alternativa erra ao classificar comandos de definição de estrutura como DML.

Alternativa E — ❌ Incorreta

Os comandos 1 (CREATE TABLE) e 10 (REVOKE) não são DML. O comando 1 é DDL (cria a tabela) e o comando 10 é DCL (revoga permissão). Apenas o comando 7 (DELETE) é DML. A alternativa erra ao misturar comandos de definição de estrutura e de controle de acesso com manipulação de dados.

NÃO CAIA NESSA!

A banca explora a confusão entre criar um objeto e manipular dados. Comandos como CREATE VIEW e CREATE PROCEDURE criam objetos que podem ser usados para acessar ou modificar dados, mas isso não os torna DML — eles são DDL. O candidato que se deixa levar pela função "prática" do comando acaba marcando a alternativa A ou D. A regra de ouro: se o comando começa com CREATE, ALTER, DROP ou TRUNCATE, é DDL, independentemente do que ele cria.

PEGA ESSA DICA!

Para acertar questões de classificação de comandos SQL, monte um mapa mental rápido: DML = INSERT, UPDATE, DELETE (e SELECT, dependendo da banca); DDL = CREATE, ALTER, DROP, TRUNCATE; DCL = GRANT, REVOKE, DENY; DTL = BEGIN, COMMIT, ROLLBACK, SAVEPOINT. Na dúvida, pergunte-se: "o comando mexe nos dados ou na estrutura?" Se mexe nos dados, é DML; se mexe na estrutura, é DDL.

Gabarito: letra B

Link permanente: /questoes/fg169075