TIPOS DE CONSULTAS EN SQL: LAS 5 CATEGORÍAS PRINCIPALES EN MYSQL

SQL, Structured Query Language, es el lenguaje estándar para gestionar bases de datos relacionales. En MySQL, al igual que en la mayoría de los sistemas de gestión de bases de datos, las sentencias SQL se clasifican en cinco categorías principales según su propósito:
  • DDL: Data Definition Language
  • DML: Data Manipulation Language
  • DQL: Data Query Language
  • DCL: Data Control Language
  • TCL: Transaction Control Language

DDL, Data Definition Language

Permite definir, modificar o eliminar la estructura de la base de datos, como tablas, vistas, índices, etc..

Comandos principales

  • "CREATE"
  • "ALTER"
  • "DROP"
  • "TRUNCATE"
  • "RENAME"

Ejemplos

-- Crear una tabla
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
telefono VARCHAR(20),
fecha_registro DATE DEFAULT CURRENT_DATE
);

-- Modificar tabla
ALTER TABLE clientes ADD COLUMN direccion VARCHAR(255);
ALTER TABLE clientes MODIFY COLUMN telefono VARCHAR(30);

-- Eliminar tabla
DROP TABLE clientes;

-- Vaciar tabla (más rápido que DELETE)
TRUNCATE TABLE clientes;

DML, Data Manipulation Language

Permite insertar, actualizar, eliminar y fusionar los datos almacenados en las tablas.

Comandos principales

  • "INSERT"
  • "UPDATE"
  • "DELETE"
  • "MERGE",disponible desde MySQL 8.0

Ejemplos

-- Insertar datos
INSERT INTO clientes (nombre, email) 
VALUES ('Juan Pérez', 'juan@email.com');

-- Actualizar datos
UPDATE clientes 
SET nombre = 'Juan Pérez García' 
WHERE id = 1;

-- Eliminar datos
DELETE FROM clientes WHERE id = 5;

-- Insertar o actualizar (UPSERT)
INSERT INTO clientes (id, nombre, email)
VALUES (1, 'Ana López', 'ana@email.com')
ON DUPLICATE KEY UPDATE nombre = VALUES(nombre);

DQL, Data Query Language

Es la categoría más utilizada. Permite consultar y recuperar información de la base de datos.

Comando principal

  • "SELECT"

Ejemplos

SELECT nombre, email 
FROM clientes 
WHERE ciudad = 'Posadas' 
ORDER BY nombre ASC
LIMIT 10;

-- Consultas más avanzadas
SELECT c.nombre, COUNT(p.id) as total_pedidos
FROM clientes c
LEFT JOIN pedidos p ON c.id = p.cliente_id
GROUP BY c.id
HAVING COUNT(p.id) > 5;
Cláusulas importantes que acompañan al "SELECT":
  • "WHERE"
  • "ORDER BY"
  • "GROUP BY"
  • "HAVING"
  • "JOIN"
  • "LIMIT"
  • "OFFSET"
  • "DISTINCT"
  • etc.

DCL, Data Control Language

Gestiona los permisos y el acceso a los datos (seguridad).

Comandos principales

  • "GRANT"
  • "REVOKE"

Ejemplos

-- Conceder permisos
GRANT SELECT, INSERT, UPDATE ON tienda.* TO 'usuario1'@'localhost';

-- Revocar permisos
REVOKE INSERT ON tienda.clientes FROM 'usuario1'@'localhost';

-- Ver permisos
SHOW GRANTS FOR 'usuario1'@'localhost';

TCL, Transaction Control Language

Controla las transacciones para garantizar la integridad de los datos.

Comandos principales

  • "COMMIT"
  • "ROLLBACK"
  • "SAVEPOINT"

Ejemplos

START TRANSACTION;

UPDATE cuentas SET saldo = saldo - 100 WHERE id = 1;
UPDATE cuentas SET saldo = saldo + 100 WHERE id = 2;

-- Si todo salió bien
COMMIT;

-- Si hubo un error
ROLLBACK;

-- Puntos de guardado
SAVEPOINT punto1;
-- ... operaciones ...
ROLLBACK TO punto1;