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
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
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;