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
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)?
Sin lista de columnas, los valores van en el orden de la tabla (código, descripción). INSERT INTO TABLE no es sintaxis válida.
2.(Solemne 2) ¿Cuál instrucción cambia a «Paldea» el nombre de la comuna de código 345?
Estructura: UPDATE tabla SET columna = valor WHERE condición. En la solemne original ninguna alternativa era correcta: ¡lee con cuidado qué columna se modifica y cuál se filtra!
3.(Solemne 2) ¿Cuál elimina el tipo de institución «Universidad de la Vida»?
DELETE FROM tabla WHERE condición. LIKE '%Vida' = termina en «Vida».
4. ¿Qué hace ROLLBACK?
ROLLBACK revierte la transacción; COMMIT la confirma.