5. Consultas
de Acción
Las consultas de acción son aquellas que no
devuelven ningún registro, son las encargadas de acciones como añadir
y borrar y modificar registros.
5.1 DELETE
Crea una consulta de eliminación que elimina
los registros de una o más de las tablas listadas en la cláusula
FROM que satisfagan la cláusula WHERE. Esta consulta elimina los
registros completos, no es posible eliminar el contenido de algún
campo en concreto. Su sintaxis es:
DELETE Tabla.* FROM Tabla WHERE
criterio
DELETE es especialmente útil cuando se
desea eliminar varios registros. En una instrucción DELETE con múltiples
tablas, debe incluir el nombre de tabla (Tabla.*). Si especifica más
de una tabla desde la que eliminar registros, todas deben ser tablas de
muchos a uno. Si desea eliminar todos los registros de una tabla, eliminar
la propia tabla es más eficiente que ejecutar una consulta de borrado.
Se puede utilizar DELETE para eliminar registros
de una única tabla o desde varios lados de una relación uno
a muchos. Las operaciones de eliminación en cascada en una consulta
únicamente eliminan desde varios lados de una relación. Por
ejemplo, en la relación entre las tablas Clientes y Pedidos, la
tabla Pedidos es la parte de muchos por lo que las operaciones en cascada
solo afectaran a la tabla Pedidos. Una consulta de borrado elimina los
registros completos, no únicamente los datos en campos específicos.
Si desea eliminar valores en un campo especificado, crear una consulta
de actualización que cambie los valores a Null.
Una vez que se han eliminado los registros utilizando
una consulta de borrado, no puede deshacer la operación. Si desea
saber qué registros se eliminarán, primero examine los resultados
de una consulta de selección que utilice el mismo criterio y después
ejecute la consulta de borrado. Mantenga copias de seguridad de sus datos
en todo momento. Si elimina los registros equivocados podrá recuperarlos
desde las copias de seguridad.
DELETE
* FROM Empleados
WHERE Cargo =
'Vendedor';
5.2 INSERT
INTO
Agrega un registro en una tabla. Se la conoce
como una consulta de datos añadidos. Esta consulta puede ser de
dos tipo: Insertar un único registro ó Insertar en una tabla
los registros contenidos en otra tabla.
5.2.1 Para insertar un único
Registro:
En este caso la sintaxis es la siguiente:
INSERT INTO Tabla (campo1,
campo2, .., campoN)
VALUES (valor1, valor2, ...,
valorN)
Esta consulta graba en el campo1 el valor1, en
el campo2 y valor2 y así sucesivamente. Hay que prestar especial
atención a acotar entre comillas simples (') los valores literales
(cadenas de caracteres) y las fechas indicarlas en formato mm-dd-aa y entre
caracteres de almohadillas (#).
5.2.2 Para insertar Registros
de otra Tabla:
En este caso la sintaxis es:
INSERT INTO Tabla [IN base_externa]
(campo1, campo2, ..., campoN)
SELECT TablaOrigen.campo1,
TablaOrigen.campo2, ..., TablaOrigen.campoN
FROM TablaOrigen
En este caso se seleccionarán los campos
1,2, ..., n dela tabla origen y se grabarán en los campos 1,2,..,
n de la Tabla. La condición SELECT puede incluir la cláusula
WHERE para filtrar los registros a copiar. Si Tabla y TablaOrigen poseen
la misma estrucutra podemos simplificar la sintaxis a:
INSERT INTO Tabla SELECT
TablaOrigen.* FROM TablaOrigen
De esta forma los campos de TablaOrigen se grabarán
en Tabla, para realizar esta operación es necesario que todos los
campos de TablaOrigen estén contenidos con igual nombre en Tabla.
Con otras palabras que Tabla posea todos los campos de TablaOrigen (igual
nombre e igual tipo).
En este tipo de consulta hay que tener especial
atención con los campos contadores o autonuméricos puesto
que al insertar un valor en un campo de este tipo se escribe el valor que
contenga su campo homólogo en la tabla origen, no incrementandose
como le corresponde.
Se puede utilizar la instrucción INSERT
INTO para agregar un registro único a una tabla, utilizando la sintaxis
de la consulta de adición de registro único tal y como se
mostró anteriormente. En este caso, su código específica
el nombre y el valor de cada campo del registro. Debe especificar cada
uno de los campos del registro al que se le va a asignar un valor así
como el valor para dicho campo. Cuando no se especifica dicho campo, se
inserta el valor predeterminado o Null. Los registros se agregan al final
de la tabla.
También se puede utilizar INSERT INTO para
agregar un conjunto de registros pertenecientes a otra tabla o consulta
utilizando la cláusula SELECT ... FROM como se mostró anteriormente
en la sintaxis de la consulta de adición de múltiples registros.
En este caso la cláusula SELECT especifica los campos que se van
a agregar en la tabla destino especificada.
La tabla destino u origen puede especificar una
tabla o una consulta.
Si la tabla destino contiene una clave principal,
hay que segurarse que es única, y con valores no-Null ; si no es
así, no se agregarán los registros. Si se agregan registros
a una tabla con un campo Contador , no se debe incluir el campo Contador
en la consulta. Se puede emplear la cláusula IN para agregar registros
a una tabla en otra base de datos.
Se pueden averiguar los registros que se agregarán
en la consulta ejecutando primero una consulta de selección que
utilice el mismo criterio de selección y ver el resultado. Una consulta
de adición copia los registros de una o más tablas en otra.
Las tablas que contienen los registros que se van a agregar no se verán
afectadas por la consulta de adición. En lugar de agregar registros
existentes en otra tabla, se puede especificar los valores de cada campo
en un nuevo registro utilizando la cláusula VALUES. Si se omite
la lista de campos, la cláusula VALUES debe incluir un valor para
cada campo de la tabla, de otra forma fallará INSERT.
INSERT
INTO Clientes SELECT
Clientes_Viejos.* FROM
Clientes_Nuevos;
INSERT
INTO Empleados (Nombre, Apellido, Cargo)
VALUES
('Luis', 'Sánchez', 'Becario');
INSERT
INTO Empleados SELECT
Vendedores.* FROM
Vendedores
WHERE
Fecha_Contratacion < Now() - 30;
5.3 UPDATE
Crea una consulta de actualización que cambia los valores de
los campos de una tabla especificada basándose en un criterio específico.
Su sintaxis es:
UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, ...
CampoN=ValorN
WHERE Criterio;
UPDATE es especialmente útil cuando se desea cambiar un gran
número de registros o cuando éstos se encuentran en múltiples
tablas. Puede cambiar varios campos a la vez. El ejemplo siguiente incrementa
los valores Cantidad pedidos en un 10 por ciento y los valores Transporte
en un 3 por ciento para aquellos que se hayan enviado al Reino Unido.:
UPDATE Pedidos SET
Pedido = Pedidos * 1.1, Transporte = Transporte * 1.03
WHERE PaisEnvío
= 'ES';
UPDATE no genera ningún resultado. Para saber qué registros
se van a cambiar, hay que examinar primero el resultado de una consulta
de selección que utilice el mismo criterio y después ejecutar
la consulta de actualización.
UPDATE Empleados SET
Grado = 5 WHERE Grado = 2;
UPDATE Productos SET
Precio = Precio * 1.1 WHERE Proveedor
= 8 AND Familia = 3;
Si en una consulta de actualización suprimimos la cláusula
WHERE todos los registros de la tabla señalada serán actualizados.
UPDATE Empleados SET
Salario = Salario * 1.1
|