Select y el orden Delete

Usualmente se tiene esa necesidad de ir actualizando varias áreas que necesitan de una revisión o consulta previa, para esos casos se puede hacer todo en una misma sentencia.

Para ejecutar la sentencia mencionada, se usará un update y dentro del where o el set se pondrá el select con la consulta que se requiera.

Se debe tomar en cuenta que en el momento que la consulta es parte del set se tiene que seleccionar una sola fila y el mismo número de columnas que existe entre los paréntesis al lado del set.

En el ejemplo mostrado a continuación:

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

Si se emplea el set, sería otra forma:

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

Y se lograría combinar los dos casos sin tener algún inconveniente.

Aquí les dejo un ejemplo para que observen como funciona:
Se debe de ajustar el salario a la mitad y también la comisión donde se pondrá a 0 a cada uno de los trabajadores que formen parte del 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 pueden ver, la sentencia puede que asuste un tanto pero es realmente fácil de entender. Se actualizan los datos que están pidiendo hacen en el where toda búsqueda de esos trabajadores que están cumpliendo con cada criterio.

Delete

Se trata de una orden la cual deja eliminar una o diversas filas de la tabla. En ese orden, la cláusula where es fundamental debido a que, si no la colocan de forma adecuada, corren el peligro de borrar los registros no deseados. Si no colocan un where en la sentencia, esa os eliminará todo y cada uno del registro de la tabla.

Se debe recordar que del mismo modo el update de esa sentencia asimismo logra llevar la subconsulta anexa.

A continuación, os dejo el cómo sería:

delete from nombretabla where condición;

Aquí les dejo dos ejemplos del manejo de la orden delete:

Borra los empleados del departamento 20

delete from empleado where departamento=20;

Eliminar los departamentos con menos de 4 empleados.

delete from depart where departamento in (select departamento from empleado group by departamento having count(*)<4);