Questão de Banco de Dados — Sublinguagens SQL (DDL, DML, DQL, DCL e DTL) — FGV 2025
- Código
- fg169075
- Banca
- FGV
- Órgão
- TCE PE
- Ano
- 2025
- Cargo
- AUCE (TCE-PE)
- A1 – 3 – 4.
- B2 – 6 – 7.
- C2 – 8 – 10.
- D3 – 5 – 9.
- E1 – 7 – 10.
GabaritoB — 2 – 6 – 7.
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 |
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.
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.
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.
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.
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.
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.
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