You are on page 1of 12

Bases de Datos II

Modificación y Eliminación de Datos


Introducción
 En esta lección vamos a ver como modificar y eliminar datos:

 Modificarlos (Update SQL).


 Eliminarlos (Delete SQL).
Update SQL
 La instrucción UPDATE permite actualizar registros de una tabla. Debemos por lo tanto indicar
que registros se quiere actualizar mediante la cláusula WHERE, y que campos mediante la
cláusula SET, además se deberá indicar qué nuevo dato va a guardar cada campo.
 Así por ejemplo supongamos que para el curso que carecía de profesor finalmente ya se ha
decidido quien lo va a impartir, la sintaxis que permite actualizar el profesor que va a impartir
un curso sería la siguiente:

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 MASCOTA


where ESTADO = 'B‘;
 Al igual que lo que ocurría con la instrucción UPDATE, para la instrucción DELETE es
válido todo lo expuesto sobre la cláusula WHERE para consultas.
 La siguiente instrucción elimina todos los registros de la tabla VEHICULO:

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:

delete from CURSO


where IDCURSO = 6;
 Ejercicio 2: En
esta lección se puso como ejemplo la actualización del
salario de los empleados donde este se incrementaba un 2% para
empleados con un sueldo inferior a 3000 euros. Sin embargo no
parece muy justo que un empleado con un sueldo de 3000 Euros
Ejercicios no reciba incremento alguno, y otros que rozan los 3000 euros
pero no llegan reciban el incremento superando el importe de
corte una vez aplicado dicho incremento. Construya una
instrucción de actualización, que se debería ejecutar previamente,
de modo que evite que para estos empleados el resultado del
incremento sea superior a 3000 euros. Para ello esta instrucción
debe actualizar el salario de los empleados afectados a 3000
euros, para que cuando se realice el incremento no se les aplique
la subida puesto que su sueldo será entones de 3000 euros justos.
 Solución 2:

update EMPLEADO
set SALARIO = 3000
where SALARIO < 3000
and SALARIO * 1.02 > 3000
FIN

• Gracias!

You might also like