Tema 6. Actualización de
datos (IV) |
|
|
Modificar el contenido de las
filas ( UPDATE )
|
|
La sentencia UPDATE
modifica los valores de una o más columnas
en las filas seleccionadas de una o varias tablas.
La sintaxis es la siguiente:
|
|
Origen puede ser un nombre de tabla,
un nombre de consulta o una composición de tablas, también
puede incluir la cláusula IN
si la tabla a modificar se encuentra en una base de datos externa.
|
|
La cláusula SET especifica
qué columnas van a modificarse
y qué valores asignar a esas columnas.
nbcolumna, es el nombre
de la columna a la cual queremos asignar un nuevo valor por
lo tanto debe ser una columna de la tabla origen. El SQL estándar
exige nombres sin cualificar pero algunas implementaciones (como por ejemplo
el SQL de Microsoft Jet que estamos estudiando) sí lo permiten.
La expresión en cada asignación
debe generar un valor del tipo de dato apropiado
para la columna indicada. La expresión debe
ser calculable a partir de los valores de la fila que se está actualizando.
Expresión no puede ser una subconsulta.
|
|
UPDATE oficinas INNER JOIN
empleados
ON oficinas.oficina = empleados.oficina
SET cuota=objetivo*0.01;
|
|
En este ejemplo queremos actualizar las cuotas de nuestros
empleados de tal forma que la cuota de un empleado sea el 1% del objetivo
de su oficina. La columna a actualizar es la cuota del empleado y el valor
a asignar es el 1% del objetivo de la oficina del empleado, luego la cláusula
SET será SET
cuota = objetivo*0.01 o SET cuota
= objetivo/100. El origen debe contener la cuota del empleado
y el objetivo de su oficina, luego el origen será el INNER
JOIN de empleados con oficinas.
|
|
La cláusula WHERE indica qué
filas van a ser modificadas. Si se
omite la cláusula WHERE
se actualizan todas las filas.
En la condición del WHERE se
puede incluir una subconsulta. En SQL standard la tabla que
aparece en la FROM de la subconsulta
no puede ser la misma que la tabla que aparece como origen, pero en el
SQL de Microsoft Jet sí se puede.
|
|
Ejemplo: Queremos poner a cero las ventas de los empleados
de la oficina 12
|
|
UPDATE empleados SET ventas
= 0 WHERE oficina = 12;
|
|
Ejemplo: Queremos poner a cero el limite de credito de
los clientes asignados a empleados de la oficina 12.
|
|
UPDATE clientes SET limitecredito
= 0
WHERE repclie IN (SELECT numemp FROM empleados WHERE oficina = 12);
|
|
Si para el cálculo de expresion se utiliza una columna que
también se modifica, el valor que se utiliza es el antes de la
modificación, lo mismo para la condición de búsqueda.
Cuando se ejecuta una sentencia UPDATE
primero se genera el origen y se seleccionan
las filas según la cláusula WHERE.
A continuación se coge una fila de la
selección y se le aplica la cláusula SET,
se actualizan todas las columnas
incluidas en la cláusula SET
a la vez por lo que los nombres de
columna pueden especificarse en cualquier orden. Después se coge
la siguiente fila de la selección y se le aplica del mismo modo
la cláusula SET, así
sucesivamente con todas las filas de la selección.
|
|
UPDATE oficinas SET ventas=0,
objetivo=ventas;
|
|
UPDATE oficinas SET objetivo=ventas,
ventas=0;
|
|
Los dos ejemplos anteriores son equivalentes ya que el
valor de ventas que se asigna a objetivo es el valor antes
de la actualización, se deja como objetivo las ventas que
ha tenido la oficina hasta el momento y se pone a cero la columna ventas.
|
|
Si actualizamos una columna definida como clave foránea,
esta columna se podrá actualizar o no siguiendo las reglas
de integridad referencial. El valor que se le asigna debe existir
en la tabla de referencia.
Si actualizamos una columna definida como columna principal de una relación
entre dos tablas, esta columna se podrá actualizar o
no siguiendo las reglas de integridad referencial.
Aquí puedes repasar las reglas de integridad referencial.
|
|
Aviso legal: este curso es gratuito
siempre que se visualice desde la página web de aulaClic. No está
permitido descargar el curso ni utilizarlo en academias o centros de enseñanza
privados sin estar conectado a Internet.
|
© aulaClic. Todos los derechos reservados.
Free Computer tutorials .
Prohibida la reproducción por cualquier medio.
Julio-2001.aulaClic.com
|
|
|