queryLab · software_de_entrenamiento en espera
Nivel 3 · Gestión de datos · SQL · DML · TCL

[SQL 10] Modificar datos y transacciones

INSERT, INSERT…SELECT, UPDATE, DELETE, integridad referencial, COMMIT y ROLLBACK.
0 / 8 retos resueltos 📘 Clases 9 y 10 · operadores INSERT, UPDATE, DELETE · CRUD
Al terminar esta práctica podrás…
  • Insertar una o varias filas, con y sin lista de columnas, y copiar datos con INSERT … SELECT.
  • Actualizar con cálculos, con CASE y con subconsultas, siempre acotando con WHERE.
  • Eliminar respetando las claves foráneas (primero los hijos, después el padre).
  • Agrupar cambios en una transacción y deshacerlos con ROLLBACK.

El DML (Data Manipulation Language) modifica el contenido: INSERT agrega, UPDATE cambia y DELETE elimina filas. Junto con SELECT forman el famoso CRUD (Create, Read, Update, Delete).

Regla de oro: antes de un UPDATE o DELETE, ejecuta un SELECT con el mismo WHERE para ver exactamente qué filas vas a tocar. Un UPDATE sin WHERE cambia toda la tabla.

Nuestra base tiene activadas las claves foráneas: no puedes borrar un departamento que tiene empleados, ni un empleado que figura en job_history. Es la integridad referencial protegiendo los datos.

Una transacción agrupa varias operaciones en una unidad «todo o nada» (propiedades ACID): BEGIN la inicia, COMMIT confirma y ROLLBACK deshace todo lo hecho desde el BEGIN.

Estás sobre tu propia copia en memoria: practica sin miedo y usa reiniciar BD cuando quieras volver al estado original.

Sintaxis
INSERT INTO tabla (col1, col2) VALUES (v1, v2), (v3, v4);
INSERT INTO destino (cols) SELECT … FROM origen WHERE …;
UPDATE tabla SET col = expresión WHERE condición;
DELETE FROM tabla WHERE condición;
BEGIN;  …  COMMIT;   -- o ROLLBACK;
INSERT … VALUES
Una o varias filas. Nombra las columnas: es más seguro.
INSERT … SELECT
Copia el resultado de una consulta a otra tabla.
UPDATE … SET … WHERE
Cambia valores. Sin WHERE afecta todas las filas.
DELETE … WHERE
Elimina filas. Sin WHERE vacía la tabla.
Integridad referencial
Una FK impide dejar hijos huérfanos: borra primero los hijos.
BEGIN / COMMIT / ROLLBACK
Transacción: confirmar o deshacer un bloque de cambios.
SQLite
BEGIN; … COMMIT; · INSERT OR IGNORE / INSERT OR REPLACE
MySQL
START TRANSACTION; … COMMIT; · INSERT IGNORE / ON DUPLICATE KEY UPDATE
Oracle
Transacción implícita: … COMMIT; · MERGE INTO …

1 · Ejemplos guiados · ejecuta y modifica cada bloque

01Insertar una fila
Agregamos un departamento y lo verificamos. Si ejecutas dos veces verás un error de clave primaria repetida: usa «reiniciar BD».
sql-dml.sql
Presiona «ejecutar» para ver el resultado.
02Insertar varias filas a la vez
Una sola sentencia con varias tuplas en VALUES.
sql-dml.sql
Presiona «ejecutar» para ver el resultado.
03Copiar datos con INSERT … SELECT
Creamos una tabla de respaldo y la llenamos con los empleados de TI (técnica de la clase 9: «insertar datos desde otra tabla»).
sql-dml.sql
Presiona «ejecutar» para ver el resultado.
04UPDATE con cálculo
Subimos 10% el salario del departamento 60. Primero mira con un SELECT, luego actualiza.
sql-dml.sql
Presiona «ejecutar» para ver el resultado.
05UPDATE con CASE y con subconsulta
Un reajuste distinto por cargo en una sola sentencia; los cargos no mencionados quedan igual gracias al ELSE.
sql-dml.sql
Presiona «ejecutar» para ver el resultado.
06La integridad referencial en acción
Intentar borrar el departamento 60 falla: tiene empleados que lo referencian. Este error es esperado: la base se protege sola.
sql-dml.sql
Presiona «ejecutar» para ver el resultado.
07Borrar en el orden correcto
Para eliminar a Alexis (176), que tiene historial, primero se borran sus filas hijas en job_history y después la fila padre (guía de ejercicios: «borrar dependencias primero»).
sql-dml.sql
Presiona «ejecutar» para ver el resultado.
08Transacción con ROLLBACK
Borramos todo el historial dentro de una transacción y nos arrepentimos: ROLLBACK lo restaura.
sql-dml.sql
Presiona «ejecutar» para ver el resultado.

⚠ Errores frecuentes

  • UPDATE employees SET salary = 0; sin WHERE: cambia a los 102 empleados. Prueba antes con un SELECT.
  • INSERT INTO t VALUES (…) sin lista de columnas: se rompe si la tabla cambia o si el orden no es el que crees.
  • Borrar un padre con hijos: error de clave foránea. Borra primero los hijos (o usa ON DELETE CASCADE en el diseño).
  • Comillas dobles para textos en VALUES ("Sales"): en el estándar SQL los textos van entre comillas simples.
  • Olvidar el COMMIT en Oracle: al cerrar la sesión, los cambios no confirmados se pierden.

2 · Retos con corrección automática

Escribe tu solución y pulsa comprobar (Ctrl + Enter). Tu consulta y la solución se ejecutan en bases limpias y se comparan los resultados: no importan los nombres de las columnas, sí los datos (y el orden, cuando el reto lo pide). Si te atascas, usa la pista o mira el resultado esperado.

3 · Preguntas tipo solemne

1. (Solemne 2) ¿Cuál instrucción agrega la jornada «Bajo la luz de las velas» con código 5 a la tabla jornada(jor_codigo, jor_descripcion)?
2. (Solemne 2) ¿Cuál instrucción cambia a «Paldea» el nombre de la comuna de código 345?
3. (Solemne 2) ¿Cuál elimina el tipo de institución «Universidad de la Vida»?
4. ¿Qué hace ROLLBACK?