0% encontró este documento útil (0 votos)
22 vistas26 páginas

Sesion 08

El documento detalla las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en bases de datos SQL, incluyendo ejemplos de sintaxis para cada operación. Se abordan las sentencias INSERT, UPDATE y DELETE, así como el manejo de transacciones y sus propiedades ACID. Además, se discuten buenas prácticas y casos de uso en un sistema de inventario y en el sector financiero.

Cargado por

Mauricio Salazar
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas26 páginas

Sesion 08

El documento detalla las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en bases de datos SQL, incluyendo ejemplos de sintaxis para cada operación. Se abordan las sentencias INSERT, UPDATE y DELETE, así como el manejo de transacciones y sus propiedades ACID. Además, se discuten buenas prácticas y casos de uso en un sistema de inventario y en el sector financiero.

Cargado por

Mauricio Salazar
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Arquitecto de Datos SQL

(AsQ)
SESIÓN 08: Laboratorio - Inserción,
Actualización y Eliminación de Datos

Objetivo de Aprendizaje

Realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en


una base de datos.
Introducción a las Operaciones CRUD
Estas son las cuatro operaciones fundamentales en la gestión de datos persistentes:

Create (Crear) Read (Leer) Update Delete (Eliminar)


Añadir nuevos registros Consultar información (Actualizar) Eliminar información de
o entradas a la base de existente en la base de Modificar registros la base de datos
datos mediante datos usando comandos existentes en la base de mediante comandos
comandos INSERT. SELECT. datos con comandos DELETE.
UPDATE.
Sentencia INSERT
Permite añadir nuevos registros a una tabla.

Sintaxis básica:

INSERT INTO nombre_tabla (columna1, columna2, ...)


VALUES (valor1, valor2, ...);

Ejemplo:

INSERT INTO clientes (nombre, apellido, email)


VALUES ('Ana', 'García', '[Link]@[Link]');
Variantes de INSERT
Insertar múltiples registros:

INSERT INTO productos (nombre, precio, stock) VALUES


('Producto A', 19.99, 100),
('Producto B', 29.99, 50),
('Producto C', 39.99, 75);

Insertar desde otra tabla (INSERT INTO SELECT):

INSERT INTO clientes_vip (id_cliente, nombre, email)


SELECT id_cliente, nombre, email
FROM clientes
WHERE total_compras > 10000;
Manejo de columnas en INSERT
Con columnas autoincrement:

INSERT INTO categorias (nombre, descripcion)


VALUES ('Electrónicos', 'Gadgets y dispositivos electrónicos');
-- id_categoria se genera automáticamente

Con valores por defecto:

INSERT INTO usuarios (nombre, fecha_registro)


VALUES ('Carlos', DEFAULT);
-- fecha_registro usará el valor predeterminado (ej. CURRENT_TIMESTAMP)

Omitiendo columnas con valores por defecto:

INSERT INTO productos (nombre, precio)


VALUES ('Nuevo producto', 29.99);
-- stock y otras columnas usarán sus valores por defecto
Sentencia UPDATE
Permite modificar registros existentes en una tabla.

Sintaxis básica:

UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2, ...
WHERE condicion;

¡IMPORTANTE!
Siempre incluir una cláusula WHERE en las sentencias UPDATE, a menos que realmente se desee actualizar
todos los registros.
Ejemplos de UPDATE
Actualizar un solo registro:

UPDATE clientes
SET telefono = '555-1234', direccion = 'Nueva Dirección 123'
WHERE id_cliente = 101;

Actualizar múltiples registros:

UPDATE productos
SET precio = precio * 1.05
WHERE id_categoria = 3;
-- Aumenta en 5% el precio de todos los productos de la categoría 3
UPDATE con subconsultas
Actualizar basado en datos de otra tabla:

UPDATE empleados
SET salario = salario * 1.10
WHERE departamento IN (
SELECT id_departamento
FROM departamentos
WHERE nombre = 'Ventas' OR nombre = 'Marketing'
);
Operaciones aritméticas en UPDATE

-- Incrementar un contador
UPDATE articulos
SET vistas = vistas + 1
WHERE id_articulo = 502;

-- Calcular impuestos
UPDATE facturas
SET total_con_impuestos = subtotal * 1.16
WHERE fecha >= '2024-01-01';
UPDATE con CASE

UPDATE productos
SET estado = CASE
WHEN stock = 0 THEN 'Agotado'
WHEN stock < 10 THEN 'Bajo stock'
WHEN stock >= 10 AND stock < 50 THEN 'Disponible'
ELSE 'Abundante'
END;
Sentencia DELETE
Permite eliminar registros de una tabla.

Sintaxis básica:

DELETE FROM nombre_tabla


WHERE condicion;

¡IMPORTANTE!

Al igual que con UPDATE, siempre usar WHERE en DELETE, a menos que realmente se desee eliminar
todos los registros.
Ejemplos de DELETE
Eliminar un solo registro:

DELETE FROM clientes


WHERE id_cliente = 205;

Eliminar múltiples registros:

DELETE FROM pedidos


WHERE fecha < '2023-01-01' AND estado = 'Completado';

DELETE con subconsultas


DELETE FROM carritos_abandonados
WHERE id_usuario IN (
SELECT id_usuario
FROM usuarios
WHERE ultima_actividad < DATE_SUB(NOW(), INTERVAL 90 DAY)
);
TRUNCATE TABLE
Alternativa a DELETE cuando se desean eliminar todos los registros.

Comparación con DELETE:


Más rápido que DELETE
Reinicia los contadores de autoincrement
No se puede usar WHERE
No se registra en el log de transacciones (en algunos motores)

TRUNCATE TABLE registros_temporales;


Break
Tomemos 10 minutos para descansar y refrescar la mente.
¡Regresamos pronto!
Transacciones en SQL
Definición y Concepto
Una transacción es una secuencia de operaciones realizadas como
una única unidad lógica de trabajo.

START TRANSACTION;
-- Operaciones SQL
COMMIT; -- o ROLLBACK;
Propiedades ACID
Las transacciones en bases de datos garantizan las siguientes propiedades fundamentales:

Atomicidad Consistencia Aislamiento Durabilidad


Una transacción es "todo La transacción lleva la Las transacciones se Una vez completada
o nada". Si una parte base de datos de un ejecutan de manera (commit), los cambios
falla, toda la transacción estado válido a otro aislada entre sí, sin son permanentes y
falla y se revierte estado válido, interferencias, como si sobreviven incluso a
(rollback). manteniendo la cada una fuera la única fallos del sistema.
integridad de los datos. en el sistema.
Ejemplo: Transferencia Bancaria
Las transacciones garantizan que las operaciones bancarias se completen correctamente:

Sin transacciones Con transacciones


Si la segunda operación falla, el dinero podría La operación completa se confirma o se cancela:
desaparecer:
START TRANSACTION;
-- ¿Qué pasa si la segunda operación falla? UPDATE cuentas SET saldo = saldo - 1000 WHERE
UPDATE cuentas SET saldo = saldo - 1000 WHERE id_cuenta = 1;
id_cuenta = 1; UPDATE cuentas SET saldo = saldo + 1000 WHERE
UPDATE cuentas SET saldo = saldo + 1000 WHERE id_cuenta = 2;
id_cuenta = 2; COMMIT; -- Confirmar si todo va bien
-- ROLLBACK; -- Deshacer en caso de error
Comandos Principales

1 START 2 COMMIT
TRANSACTION / Guarda los cambios
BEGIN permanentemente
Inicia una transacción

3 ROLLBACK 4 SAVEPOINT
Deshace todos los Crea un punto de
cambios desde el inicio de guardado dentro de la
la transacción transacción

5 ROLLBACK TO SAVEPOINT
Deshace cambios hasta un punto específico
Niveles de Aislamiento
Los niveles de aislamiento controlan cómo interactúan las transacciones:

Nivel Descripción Problemas resueltos

READ UNCOMMITTED Menor aislamiento Ninguno

READ COMMITTED Lecturas solo de datos Lecturas sucias


confirmados

REPEATABLE READ Las mismas consultas siempre Lecturas no repetibles


dan los mismos resultados

SERIALIZABLE Mayor aislamiento, Todos los problemas


transacciones ejecutadas
secuencialmente

Buenas Prácticas
Mantener las transacciones lo más cortas posible
Evitar operaciones de usuario (interacciones) dentro de una transacción
Gestionar correctamente los errores

Considerar el nivel de aislamiento adecuado según el caso de uso


Caso de Uso: Sistema de Inventario
START TRANSACTION; -- 1. Registrar el pedido INSERT INTO pedidos (cliente_id, fecha, total) VALUES (101, NOW(),
1299.99); SET @pedido_id = LAST_INSERT_ID();

-- 2. Registrar los detalles del pedido


INSERT INTO detalles_pedido (pedido_id, producto_id, cantidad, precio)
VALUES (@pedido_id, 15, 1, 1299.99);

-- 3. Actualizar el inventario
UPDATE inventario SET stock = stock - 1 WHERE producto_id = 15;

-- 4. Verificar que haya suficiente stock


IF (SELECT stock FROM inventario WHERE producto_id = 15) < 0 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
Laboratorio Práctico
Uso de Transacciones
Las transacciones permiten agrupar operaciones SQL para que se ejecuten como una unidad atómica.

START TRANSACTION;

UPDATE cuentas SET saldo = saldo - 1000 WHERE id_cuenta = 1; UPDATE cuentas SET saldo = saldo + 1000
WHERE id_cuenta = 2;

-- Si todo va bien COMMIT;

-- Si hay un problema -- ROLLBACK;


Ventajas de las Transacciones
Atomicidad: Todas las operaciones se completan o ninguna
Consistencia: La base de datos pasa de un estado válido a otro
Aislamiento: Las operaciones no son visibles para otras transacciones hasta que se complete
Durabilidad: Una vez confirmada, la transacción persiste

REPLACE
En MySQL, REPLACE funciona como un INSERT, pero si hay un registro existente con la misma clave primaria
o índice único, lo reemplaza.

REPLACE INTO productos (id_producto, nombre, precio)


VALUES (101, 'Producto Actualizado', 25.99);
Aplicación en el Sector Financiero
Registro de transacciones:

sql

INSERT INTO transacciones


(cuenta_origen, cuenta_destino, monto, tipo, fecha)
VALUES
(10245, 10798, 500.00, 'Transferencia', NOW());

Actualización de saldos:

sql

UPDATE cuentas
SET saldo = saldo - 500.00
WHERE numero_cuenta = 10245;

UPDATE cuentas
SET saldo = saldo + 500.00
WHERE numero_cuenta = 10798;
Evaluación Sesión 08
Objetivo de aprendizaje
¿Consideras que el objetivo de aprendizaje fue alcanzado?

También podría gustarte