Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
Oracle/PLSQL: declaración de actualización
Este tutorial de Oracle describe cómo usar Oracle declaración de actualización Viene con gramática, ejemplos y ejercicios.
describir
La instrucción UPDATE de Oracle se utiliza para actualizar registros existentes en una tabla en una base de datos de Oracle. Las consultas de actualización en Oracle tienen 2 sintaxis, dependiendo de si está realizando una actualización tradicional o actualizando una tabla con datos de otra tabla.
sintaxis
La sintaxis de la instrucción UPDATE al actualizar una tabla en Oracle/PLSQL es:
UPDATE table SET column1 = expression1, column2 = expression2, ... column_n = expression_n [WHERE conditions];
o
Al actualizar una tabla con datos de otra tabla, la sintaxis de la instrucción UPDATE de Oracle es:
UPDATE table1 SET column1 = (SELECT expression1 FROM table2 WHERE conditions) [WHERE conditions];
parámetro o parámetro
column1, column2, … column_n Las columnas a actualizar. expresión1, expresión2, … expresión_n Nuevos valores para asignar a columna1, columna2, … columna_n. Por lo tanto, a la columna1 se le asignará el valor de expresión1, a la columna2 se le asignará el valor de expresión2, y así sucesivamente. La condición WHERE es opcional. Condiciones que se deben cumplir para realizar una actualización. Si no se proporciona ninguna condición, se actualizan todos los registros de la tabla.
Ejemplo: actualizar una sola columna
Veamos un ejemplo de consulta de ACTUALIZACIÓN de Oracle muy simple.
UPDATE customers SET last_name="Anderson" WHERE customer_id = 5000;
Este ejemplo de ACTUALIZACIÓN de Oracle actualizará last_name a “Anderson” en la tabla de clientes con un customer_id de 5000.
Ejemplo: actualizar varias columnas
Veamos un ejemplo de ACTUALIZACIÓN de Oracle, es posible que desee actualizar varias columnas con una sola instrucción ACTUALIZAR.
UPDATE customers SET state="California", customer_rep = 32 WHERE customer_id > 100;
Cuando desee actualizar varias columnas, puede hacerlo separando los pares de columna/valor con comas.
Esta instrucción UPDATE de Oracle de muestra actualizaría el estado a “California” y actualizaría customer_rep a 32, donde customer_id es mayor que 100.
Ejemplo: actualizar una tabla con datos de otra tabla
Veamos un ejemplo de ACTUALIZACIÓN de Oracle que muestra cómo actualizar una tabla con datos de otra tabla.
UPDATE customers SET c_details = (SELECT contract_date FROM suppliers WHERE suppliers.supplier_name = customers.customer_name) WHERE customer_id < 1000;
Este ejemplo de ACTUALIZACIÓN solo actualizará la tabla de clientes para todos los registros con customer_id inferior a 1000. Cuando el nombre del proveedor en la tabla de proveedores coincide con el nombre del cliente en la tabla de clientes, la fecha del contrato en la tabla de proveedores se copiará en la tabla de clientes en el campo c_detalles en la tabla de proveedores.
Ejemplo: uso de la cláusula EXISTS
También puede realizar actualizaciones más complejas en Oracle.
Es posible que desee actualizar los registros de una tabla en función de los valores de otra tabla. Dado que no se pueden enumerar varias tablas en una instrucción UPDATE de Oracle, se puede utilizar la cláusula EXISTS de Oracle.
Por ejemplo:
UPDATE suppliers SET supplier_name = (SELECT customers.customer_name FROM customers WHERE customers.customer_id = suppliers.supplier_id) WHERE EXISTS (SELECT customers.customer_name FROM customers WHERE customers.customer_id = suppliers.supplier_id);
En este ejemplo de ACTUALIZACIÓN de Oracle, el nombre del proveedor se sobrescribe con el nombre del cliente en la tabla de clientes siempre que el ID del proveedor coincida con el valor del ID del cliente.
Ejercicio 1:
Actualice la ciudad a “San Francisco” para todos los registros con el nombre de proveedor “IBM” de la tabla de proveedores completada con los siguientes datos.
CREATE TABLE suppliers ( supplier_id number(10) not null, supplier_name varchar2(50) not null, city varchar2(50), CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id) ); INSERT INTO suppliers (supplier_id, supplier_name, city) VALUES (5001, 'Microsoft', 'Chicago'); INSERT INTO suppliers (supplier_id, supplier_name, city) VALUES (5002, 'IBM', 'Chicago'); INSERT INTO suppliers (supplier_id, supplier_name, city) VALUES (5003, 'Red Hat', 'Detroit'); INSERT INTO suppliers (supplier_id, supplier_name, city) VALUES (5004, 'NVIDIA', 'New York');
Solución al Ejercicio #1:
La siguiente instrucción UPDATE realizará esta actualización en Oracle.
UPDATE suppliers SET city = 'San Francisco' WHERE supplier_name="IBM";
La tabla de proveedores ahora se ve así:
Identificación del proveedor | Nombre del proveedor | Ciudad |
---|---|---|
5001 | microsoft | chicago |
5002 | IBM | San Francisco |
5003 | sombrero rojo | detroit |
5004 | nvidia | Nueva York |
Ejercicio de práctica #2:
Según las tablas de proveedores y clientes rellenadas con los siguientes datos, actualice la ciudad en la tabla de proveedores a la ciudad en la tabla de clientes cuando el nombre del proveedor en la tabla de proveedores coincida con el nombre del cliente en la tabla de clientes.
CREATE TABLE suppliers ( supplier_id number(10) not null, supplier_name varchar2(50) not null, city varchar2(50), CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id) ); INSERT INTO suppliers (supplier_id, supplier_name, city) VALUES (5001, 'Microsoft', 'New York'); INSERT INTO suppliers (supplier_id, supplier_name, city) VALUES (5002, 'IBM', 'Chicago'); INSERT INTO suppliers (supplier_id, supplier_name, city) VALUES (5003, 'Red Hat', 'Detroit'); INSERT INTO suppliers (supplier_id, supplier_name, city) VALUES (5005, 'NVIDIA', 'LA'); CREATE TABLE customers ( customer_id number(10) not null, customer_name varchar2(50) not null, city varchar2(50), CONSTRAINT customers_pk PRIMARY KEY (customer_id) ); INSERT INTO customers (customer_id, customer_name, city) VALUES (7001, 'Microsoft', 'San Francisco'); INSERT INTO customers (customer_id, customer_name, city) VALUES (7002, 'IBM', 'Toronto'); INSERT INTO customers (customer_id, customer_name, city) VALUES (7003, 'Red Hat', 'Newark');
Solución al ejercicio #2:
La siguiente instrucción UPDATE realizará esta actualización en Oracle.
UPDATE suppliers SET city = (SELECT customers.city FROM customers WHERE customers.customer_name = suppliers.supplier_name) WHERE EXISTS (SELECT customers.city FROM customers WHERE customers.customer_name = suppliers.supplier_name);
La tabla de proveedores ahora se ve así:
Identificación del proveedor | Nombre del proveedor | Ciudad |
---|---|---|
5001 | microsoft | San Francisco |
5002 | IBM | toronto |
5003 | sombrero rojo | Newark |
5004 | nvidia | los Angeles |