DML (Data Manipulation Language)
¿Qué es DML?
DML (Data Manipulation Language) es un subconjunto del lenguaje SQL (Structured Query Language) que se utiliza para manejar los datos dentro de las tablas de una base de datos.
- Permite: insertar, consultar, actualizar y eliminar datos.
- Uso diario: redes sociales, tiendas en línea, bancos, entre otros, usan comandos DML constantemente.
- Esencial: sin DML, las bases de datos serían estructuras vacías.
¿Qué es SQL?
SQL (Structured Query Language) es un lenguaje de programación diseñado para almacenar, procesar y recuperar información en bases de datos relacionales.
- Almacena datos en tablas (filas y columnas).
- Permite realizar operaciones como:
- Insertar datos
- Consultar registros
- Actualizar información
- Eliminar registros
- También sirve para optimizar y mantener el rendimiento de las bases de datos.
Comandos DML Principales
A continuación, veremos los comandos principales con ejemplos usando una tabla productos.
Tabla de ejemplo: productos
| Columna | Tipo | Descripción |
|---|---|---|
| id | SERIAL | Identificador único (auto-incremental) |
| nombre | VARCHAR(100) | Nombre del producto |
| precio | DECIMAL | Precio del producto |
| stock | INT | Unidades disponibles |
1. INSERT - Agregar nuevos registros
Sintaxis:
INSERT INTO nombre_tabla (columna1, columna2, ...) VALUES (valor1, valor2, ...);
Ejemplo:
INSERT INTO productos (nombre, precio, stock) VALUES ('Camiseta', 25.99, 100);
INSERT INTO productos (nombre, precio, stock) VALUES ('Pantalón', 45.00, 50);
INSERT INTO productos (nombre, precio, stock) VALUES ('Zapatos', 70.50, 30);
2. SELECT - Consultar datos
Sintaxis:
SELECT columna1, columna2 FROM nombre_tabla WHERE condicion;
-- SELECT * selecciona todas las columnas
Ejemplos:
-- Todos los productos
SELECT * FROM productos;
-- Solo nombre y precio
SELECT nombre, precio FROM productos;
-- Productos con precio mayor a 50
SELECT * FROM productos WHERE precio > 50;
-- Productos con stock menor a 60
SELECT nombre, stock FROM productos WHERE stock < 60;
3. UPDATE - Actualizar datos existentes
Sintaxis:
UPDATE nombre_tabla SET columna1 = valor1 WHERE condicion;
¡Importante!: Siempre usar WHERE para evitar modificar todas las filas.
Ejemplos:
-- Cambiar precio de la camiseta
UPDATE productos SET precio = 29.99 WHERE nombre = 'Camiseta';
-- Aumentar stock de zapatos en 5
UPDATE productos SET stock = stock + 5 WHERE nombre = 'Zapatos';
4. DELETE - Eliminar registros
Sintaxis:
DELETE FROM nombre_tabla WHERE condicion;
¡Precaución!: Si omites WHERE, se borrarán todos los registros.
Ejemplos:
-- Eliminar producto por id
DELETE FROM productos WHERE id = 1;
-- Eliminar productos sin stock
DELETE FROM productos WHERE stock = 0;
Pruebas de DML con Docker y PostgreSQL
Requisitos
- Docker instalado
- Terminal Linux (Ubuntu)
- Cliente PostgreSQL (
psql)
Paso 1: Crear contenedor PostgreSQL
docker run --name mi-postgres-db \
-e POSTGRES_PASSWORD=mysecretpassword \
-p 5432:5432 \
-d postgres
Parámetros explicados:
--name: nombre del contenedor-e POSTGRES_PASSWORD: contraseña del usuariopostgres-p: expone el puerto 5432 local-d: ejecuta en segundo plano
Paso 2: Conectarse a PostgreSQL desde la terminal
- Instalar cliente PostgreSQL si no lo tienes:
sudo apt update
sudo apt install postgresql-client -y
- Conectarte al contenedor:
psql -h localhost -p 5432 -U postgres
Te pedirá la contraseña:
mysecretpassword.
Paso 3: Crear tabla y probar DML
Crear la tabla (DDL):
CREATE TABLE productos (
id SERIAL PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
precio DECIMAL(10, 2) NOT NULL,
stock INT NOT NULL
);
Insertar productos (INSERT):
INSERT INTO productos (nombre, precio, stock) VALUES ('Camiseta', 25.99, 100);
INSERT INTO productos (nombre, precio, stock) VALUES ('Pantalón', 45.00, 50);
INSERT INTO productos (nombre, precio, stock) VALUES ('Zapatos', 70.50, 30);
Consultar productos (SELECT):
-- Todos
SELECT * FROM productos;
-- Precio mayor a 40
SELECT nombre, precio FROM productos WHERE precio > 40;
Actualizar datos (UPDATE):
-- Cambiar precio camiseta
UPDATE productos SET precio = 29.99 WHERE nombre = 'Camiseta';
-- Verificar cambio
SELECT * FROM productos WHERE nombre = 'Camiseta';
Eliminar producto (DELETE):
-- Obtener ID primero
SELECT id FROM productos WHERE nombre = 'Pantalón';
-- Supón que es 2
DELETE FROM productos WHERE id = 2;
-- Verificar
SELECT * FROM productos;
Paso 4: Salir y limpiar
Salir de psql:
\q
Detener y eliminar el contenedor:
docker stop mi-postgres-db
docker rm mi-postgres-db