Saltar al contenido principal

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

ColumnaTipoDescripción
idSERIALIdentificador único (auto-incremental)
nombreVARCHAR(100)Nombre del producto
precioDECIMALPrecio del producto
stockINTUnidades 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 usuario postgres
  • -p: expone el puerto 5432 local
  • -d: ejecuta en segundo plano

Paso 2: Conectarse a PostgreSQL desde la terminal

  1. Instalar cliente PostgreSQL si no lo tienes:
sudo apt update
sudo apt install postgresql-client -y
  1. 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