Professional Documents
Culture Documents
Modificación y Elimininación de Datos
Modificación y Elimininació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.
delete from CURSO
where IDCURSO = 6;
En esta lección se puso como ejemplo la actualización del
Ejercicio 2:
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 no
Ejercicios 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!