Professional Documents
Culture Documents
Modificación y Eliminación de Datos
Modificación y Eliminación de Datos
update CURSO
set IDPROFE = 2
where IDCURSO = 5;
Update SQL
Todo lo expuesto sobre lógica booleana es valido para la clausula WHERE de la instrucción
UPDATE, en todo caso dicha cláusula se comporta igual que en una consulta, solo que ahora
en lugar de seleccionar registros para mostrarnos algunos o todos los campos, seleccionará
registros para modificar algunos o todos sus campos. Por lo tanto omitir la cláusula WHERE en
una instrucción UPDATE implica aplicar la actualización a todos los registros de la tabla.
La instrucción anterior asignará un 2 en el campo IDPROFE de la tabla CURSO en los registros
cuyo valor en el campo IDCURSO sea 5. Como sabemos que el campo IDCURSO es la clave
primaria de la tabla, tan solo se modificará un solo registro si es que existe. Obviamente en
este caso, dado que el campo que se pretende actualizar es clave foránea de la tabla
PROFESOR, si no existe un registro en dicha tabla con identificador 2 el SGBD devolverá un
error de clave no encontrada.
Update SQL
Veamos otro ejemplo, esta vez se modificarán varios campos y registros con una sola
instrucción. Recordemos la tabla EMPLEADO, en ella se guardan los datos de cada empleado,
el sueldo y supongamos que también se guarda en el campo PRECIO_HORA el precio de la
hora extra que cobra cada empleado en el caso que las trabaje.
Bien, con el cambio de ejercicio se deben subir los sueldos y el precio por hora extra
trabajada, digamos que un 2% el sueldo y un 1 % el precio de la hora extra. Sin embargo la
política de empresa congela el salario a directivos que cobran 3000 euros o más. ¿Qué
instrucción actualizaría estos importes según estas premisas? :
update EMPLEADO
set SALARIO = SALARIO * 1.02, PRECIO_HORA = PRECIO_HORA * 1.01
where SALARIO < 3000;
Update SQL
Por
lo tanto solo se está actualizando el salario y el precio de la hora extra de aquellos
empleados que su salario es inferior a 3000 euros.
En general la sintaxis de la instrucción UPDATE es la siguiente:
UPDATE nombre_tabla
SET campo1 = valor1, campo2 = valor2, ..., campoN = valorM
WHERE condiciones;
Delete SQL
La instrucción DELETE permite eliminar registros de una tabla, su sintaxis es simple,
puesto que solo debemos indicar que registros deseamos eliminar mediante la
cláusula WHERE. La siguiente consulta elimina todos los registros de la tabla mascotas
que están de baja:
delete
from VEHICULO;
Delete SQL
Al eliminar registros de una tabla estos no deben figurar como clave foránea en otra
tabla, de lo contrario el SGBD devolverá un error de violación de integridad
referencial, puesto que si se permitiese quedarían registros huérfanos.
En general la sintaxis de la instrucción DELETE es la siguiente:
DELETE
FROM nombre_tabla
WHERE condiciones;
Con las instrucciones DELETE y UPDATE el SGBD permite
eliminar o modificar registros.
Resumen La cláusula WHERE de las instrucciones DELETE y UPDATE
se comporta igual que en las consultas y permite
descartar o considerar registros mediante condiciones
por la instrucción de actualización o de borrado. Omitir
la cláusula WHERE implica aplicar la operación a todos
los registros de la tabla.
Al eliminar o actualizar datos, deben respetarse las
restricciones. Si éstas están montadas en la BD
(recomendable), podemos tener errores de tres tipos:
Clave primaria duplicada (Al modificar un registro).
Existe Violación de integridad referencial cuando se
pretende dejar huérfanos registros que apuntan al
registro padre al intentarlo eliminar o modificar.
Recibiremos el mensaje: “Clave padre no encontrada” al
actualizar una clave foránea que no existe en la tabla
Ejercicio Construya una instrucción para
1:
eliminar un curso cuyo identificador sea el 6.
Ejercicios
Solución 1:
update EMPLEADO
set SALARIO = 3000
where SALARIO < 3000
and SALARIO * 1.02 > 3000
FIN
• Gracias!