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.
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 FROM Tabla WHERE criterio
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';
INSERT INTO
Agrega un registro en una
tabla. Se la conoce como una consulta de datos añadidos. Esta consulta puede
ser de dos tipos: Insertar un único registro ó Insertar en una tabla los
registros contenidos en otra tabla.
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 (#).
Para seleccionar registros e insertarlos en una tabla nueva
En este caso la sintaxis es la siguiente:
SELECT campo1, campo2, ..., campoN INTO nuevatabla
FROM tablaorigen [WHERE criterios]
Se pueden utilizar las consultas de creación de tabla para archivar registros, hacer copias
de seguridad de las tablas o hacer copias para exportar a otra base de datos o utilizar en informes
que muestren los datos de un periodo de tiempo concreto. Por ejemplo, se podría crear un informe
de Ventas mensuales por región ejecutando la misma consulta de creación de tabla cada mes.
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 de la 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;
SELECT Empleados.* INTO Programadores FROM Empleados
WHERE Categoria = 'Programador'
INSERT INTO Empleados (Nombre, Apellido, Cargo)
VALUES ('Luis', 'Sánchez', 'Becario');
INSERT INTO Empleados SELECT Vendedores.* FROM Vendedores
WHERE Fecha_Contratacion < Now() - 30;
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