Consultas de Acción
Bases de datos-SQL-Sentencias SQL-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. Tanto las sentencias de actualización
como las de borrado desencaderán (según el motor de
datos) las actualizaciones en cascada, borrados en cascada, restricciones
y valores por defecto definidos para los diferentes campos o tablas
afectadas por la consulta.
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 tipo: Insertar
un único registro ó Insertar en una tabla los registros
contenidos en otra tabla.
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.
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.
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 Tabla Origen
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 Tabla Origen
poseen la misma estructura podemos simplificar la sintaxis a:
INSERT INTO Tabla SELECT Tabla Origen.* FROM Tabla
Origen
De esta forma los campos de Tabla Origen se grabarán en Tabla,
para realizar esta operación es necesario que todos los campos
de Tabla Origen estén contenidos con igual nombre en Tabla.
Con otras palabras que Tabla posea todos los campos de Tabla Origen
(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 incrementándose
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
especifica 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 asegurarse que es única, y con valores no nulos;
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.
Ejemplos
INSERT INTO
Clientes
SELECT
ClientesViejos.*
FROM
ClientesNuevos
SELECT
Empleados.*
INTO Programadores
FROM
Empleados
WHERE
Categoria = 'Programador'
Esta consulta crea una tabla nueva llamada programadores con igual
estructura que la tabla empleado y copia aquellos registros cuyo
campo categoria se programador
INSERT INTO
Empleados (Nombre, Apellido, Cargo)
VALUES
(
'Luis', 'Sánchez', 'Becario'
)
INSERT INTO
Empleados
SELECT
Vendedores.*
FROM
Vendedores
WHERE
Provincia = 'Madrid'
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