2.6 Gestión de datos
2.6.1 Operaciones CRUD
2.6.1.1 Inserción de tuplas
El número de valores debe coincidir con el número de columnas especificadas
Si alguna columna de la tabla no se indica, su valor será el indicado por defecto o NULL
- Por ejemplo, AUTOINCREMENT
Si no se especifica alguna columna con restricción NOT NULL, la inserción producirá un error
Igualmente, dará error si no se cumple cualquier otra restricción
Es posible insertar datos a partir de otra consulta:
2.6.1.2 Modificación de datos
Si no se incluye WHERE, se actualiza toda la tabla. Lo más habitual es utilizar la clave primaria en el WHERE.
Se puede actualizar una columna a partir de un cálculo:
- Se puede actualizar a partir de una consulta
UPDATE Album
SET artista_id = (
SELECT id FROM Artista WHERE nombre = 'Queen'
)
WHERE titulo = 'A Night at the Opera';Si la actualización afecta una columna usada en la condición, la comprobación se hace sobre el valor original, no el nuevo.
Al actualizar también se verifican las restricciones
Buenas prácticas:
- Realizar copias de seguridad antes de actualizaciones masivas.
- Usar transacciones si se actualizan varias tablas relacionadas.
- No modificar claves primarias salvo necesidad justificada.
- Revisar restricciones de integridad antes de ejecutar.
2.6.1.3 Eliminación de datos
- Antes de borrar, se comprueban las restricciones de la Base de Datos.
- Al usar DELETE, los valores de una columna AUTOINCREMENT no se modifican: el siguiente INSERT seguirá con el siguiente número disponible.
- Buenas prácticas:
- Siempre incluir WHERE salvo que se quiera vaciar la tabla.
- Comprobar cuántas filas se afectarán con SELECT COUNT(*) … antes.
- Usar transacciones para borrados masivos o dependientes.
- Revisar reglas ON DELETE en claves foráneas (para evitar borrados en cascada inesperados).
- Realizar copia de seguridad antes de operaciones grandes.
2.6.1.4 Gestión de transacciones
- Ejemplo: si alguna operación falla, no se realiza ninguna
BEGIN;
INSERT INTO Pedido VALUES (1, '2025-11-04', 100);
UPDATE Cliente SET saldo = saldo - 100 WHERE id = 1;
COMMIT;- Las transacciones cumplen las propiedades ACID
| Propiedad | Significado |
|---|---|
| Atomicidad | Todas las operaciones se ejecutan como una sola — o todas, o ninguna. |
| Consistencia | Los datos pasan de un estado válido a otro estado válido. |
| Aislamiento (Isolation) | Cada transacción se ejecuta como si fuera la única. |
| Durabilidad | Una vez hecho COMMIT, los cambios se hacen persistentes. |
Los cambios realizados no son visibles para otras conexiones hasta que se hace COMMIT
Inserciones/actualizaciones en bloque son mucho más rápidas dentro de una transacción