Consultas de Actualizació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. Consultas de Actualización

Las consultas de actualizació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 tipos: 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 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
estructura 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 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 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 asegurarse 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

Siguiente capítulo: Tipos
de Datos

banner

  1. Introducción
  2. Consultas
    de Selección
  3. Criterios
    de Selección
  4. Agrupamiento
    de Registros y Funciones Agregadas
  5. Consultas
    de Actualización
  6. Tipos
    de Datos
  7. SubConsultas
  8. Consultas
    y Referencias Cruzadas
  9. Consultas
    de Unión Interna
  10. Consultas
    de Unión Externas
  11. Estructuras
    de las Tablas
  12. Consultas
    con Parámetros
  13. Acceso
    a las Bases de Datos Externas
  14. Omitir los permisos de ejecución
  15. La
    Cláusula Procedure
  16. Anexos
Claudio Casares
Redactor del tutorial de SQL
Jose M bohorquez
14/01/2007

quisiera saber como resto valores de un un mismo campo y ese valor me coloque en otro campo

paula johana jimenez hernandez
27/08/2007

yo pienso que esta muy completa la informacion

Carmela
9/10/2007

Pues es muy buena información lo que tienen aquie este es mi página preferida para buscar lo que dejan tareas de la materia de base de datos…
…gracias son muy buenos

ADRY
8/11/2007

LA INFORAMCION Q NOS OFRECE ES MUY BUENA…..Y DE VERDAD ME HA SERVIDO MUCHO PARA REALIZAR MI CONSULTA—

Lore
4/12/2007

hola tengo un problema tengo el siguiente modelo donde:

producto esta relacionado con detalle de ventas y este tambien relacionado con ventas .
producto—>detalleVenta<–Venta pero yo necesito recuperar los datos para registrar una venta

Juan Miguel Lopez
3/05/2008

Exelente trabajo de verdad gracias, soy nuevo en sql y no he podido encontrar informacion de los campos logicos (bit) y como usar el update con ellos, gracias

Marianis
19/05/2008

hola quisiera que me expliques como hago eso de actualizar un campo en varias tablasa la vez como dice en el update.necesito actualizar un campo clave en varias tablas asociadas al mismo.
gracias

Andres Mendez M.
29/07/2008

creo marianis que esto se hacer asi:

UPDATE EMPLEADOS, CLIENTE, PRODUCTO SET COD_CLIE=’1515′ WHERE CLIENTE.NOM_CLIE
pruebalo ok y cualquier cosa me avisa.

Andres Mendez M.
29/07/2008

creo marianis que esto se hacer asi:

UPDATE EMPLEADOS, CLIENTE, PRODUCTO SET COD_CLIE=’1515′ WHERE CLIENTE.NOM_CLIE=’Davic monte santo’
pruebalo ok y cualquier cosa me avisa.
o tal ves tenga que usar inner join con cada una de las tablas.

gabriela
31/03/2009

Hola,
Por favor, quisiera saber como actualizar un campo de una tabla con los registros de otra, pero que reemplace sólo los que figuran en la segunda (que son los nuevos), y que deje los otros registros(todos están numerados y son clave principal). Gracias.

Jose Antonio
22/02/2010

Hola.
Necesito hacer lo siguiente, a ver si alguien me puede echar una mano:
Insertar todos los registros de la tabla “calles_origen” en una base de datos destino “calles_destino” en la cual uno de los campos (Ej..”tipo”) tira de un dominio.
¿Alquien sabe como hacerlo?
Saludos y gracias.

Alex
30/09/2010

Me gustaria saber si a la hora de hacer un update, es posible que si la clausula no esta bien definida se creen registros nuevos, por ejemplo, tengo un libro asociado a un genero y quise actualizar el genero pero al definir el criterio me traia 2 generos diferentes, digamos accion y novela… Es posible que me actualizara uno con genero accion y me insertara uno nuevo con el genero novela?..

Libro Genero
Harry Potter ND

al hacer el Update

Libro Genero
Harry Potter Accion
Harry Potter Novela

CarlixU
30/10/2010

BUenas Noches.

Quisiera que me ayudaran para realizar la actualizaciòn de un campo de una tabla que se encuentra en otra base de datos. por ejemplo:

Tengo la tabla A en la base datos UNO
Tengo la tabla B en la Base de datos DOS.

Cabe destacar que estas tablas tiene la misma informacion por codigo .

Ahora quiero actualizar el campo de STOCK_ACT de la tabla B apartir de la Tabla A.

259