> Manuales > Iniciación a las bases de datos

Pasamos a explicar cómo hacer una actualización a partir de un select y cómo podemos borrar registros de nuestra base de datos.

Update con select

Muy a menudo tenemos la necesidad de actualizar ciertos campos que requieren de una consulta previa, para estos casos podemos realizar todo en una misma sentencia.

Para realizar dicha sentencia utilizaremos un update y dentro del where o el set colocaremos el select con la consulta que necesitemos.

Tenemos que tener en cuenta que cuando la consulta forma parte del set debemos seleccionar una única fila y el mismo número de columnas que hay entre paréntesis al lado del set.

La sintaxis es la siguiente:

update <nombre tabla>
set columna1=valor1, columna1=valor2, ..
where columna3=(select ...);


Si utilizamos el set seria esta otra:

update <nombre tabla>
set (columna1,columna2, ?)=(select col1, col2,..)
where condición;


Y podríamos mezclar los dos casos sin ningún tipo de problema.

Os dejo un ejemplo para que veáis como funciona:

Tenemos que cambiar el salario a la mitad y la comisión ponerla a 0 a todos los empleados que pertenezcan al departamento con mayor número de empleados.

Update empleado set salario=salario/2, comision=0 where departamento=(select departamento from empleado group by departamento having count(*)=(select max(count(*)) from empleado group by departamento));

Como veis la sentencia puede asustar un poco es sencilla de comprender. Actualizamos los datos que nos piden y hacemos en el where la búsqueda de aquellos empleados que cumplen esos criterios.

Delete

Esta orden nos permite borrar una o varias filas de una tabla. En esta orden la cláusula where es esencial ya que si no la ponemos adecuadamente corremos el riesgo de eliminar registros no deseados. Si no ponemos un where en la sentencia, esta nos borrará todos los registros de la tabla.

Hay que recordar que al igual que el update esta sentencia también puede llevar una subconsulta añadida.

La sintaxis general es bastante sencilla:

delete from nombretabla where condición;

Os pongo dos ejemplos de utilización de la orden delete:

Borra los empleados del departamento 20

delete from empleado where departamento=20;

Borra los departamentos con menos de cuatro empleados

delete from depart where departamento in (select departamento from empleado group by departamento having count(*)<4);
Referencia: Tenemos un tutorial de SQL para aprender a utilizar el estándar utilizado para la consulta de bases de datos.

Sara Alvarez

Equipo DesarrolloWeb.com

Manual