Oracle/PLSQL: declaración de actualización

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