Oracle/PLSQL: instrucción INSERTAR

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: instrucción INSERTAR

Este tutorial de Oracle describe cómo usar Oracle insertar declaración Con sintaxis y ejemplos. También hemos agregado algunos ejercicios que puede probar usted mismo.

describir

La instrucción Oracle INSERT se utiliza para insertar uno o más registros en una tabla de Oracle.

sintaxis

Al insertar un solo registro utilizando la palabra clave VALUES, la sintaxis de la declaración INSERT de Oracle es:

INSERT INTO table
(column1, column2, ... column_n )
VALUES
(expression1, expression2, ... expression_n );

Alternativamente, cuando se usa la instrucción SELECT para insertar múltiples registros, la sintaxis de la instrucción INSERT de Oracle es:

INSERT INTO table
(column1, column2, ... column_n )
SELECT expression1, expression2, ... expression_n
FROM source_table
[WHERE conditions];

parámetro o parámetro

tabla La tabla en la que se van a insertar los registros. column1, column2, … column_n Las columnas de la tabla para insertar valores. expresión1, expresión2, … expresión_n Valores a asignar a las columnas de la tabla. 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. source_table La tabla de origen cuando se insertan datos de otra tabla. La condición WHERE es opcional. Condiciones que se deben cumplir para insertar un registro.

notas

  • Al insertar registros en una tabla mediante la declaración INSERT de Oracle, debe proporcionar un valor para cada columna NOT NULL.
  • Se puede omitir una columna de una declaración INSERT de Oracle si permite valores NULL.

Ejemplo: uso de la palabra clave VALUES

La forma más fácil de crear una consulta Oracle INSERT para listar valores usando la palabra clave VALUES.

Por ejemplo:

INSERT INTO suppliers
(supplier_id, supplier_name)
VALUES
(5000, 'Apple');

Esta declaración INSERT de Oracle hará que se inserte un registro en la tabla Proveedores. Este nuevo registro tiene un ID de proveedor de 5000 y un nombre de proveedor de “Apple”.

Ejemplo: uso de la instrucción SELECT

También puede crear sentencias INSERT de Oracle más complejas utilizando la sentencia SELECT.

Por ejemplo:

INSERT INTO suppliers
(supplier_id, supplier_name)
SELECT account_no, name
FROM customers
WHERE customer_id > 5000;

Al colocar una instrucción SELECT dentro de una instrucción INSERT, puede realizar múltiples inserciones rápidamente.

Con este tipo de inserción, es posible que desee comprobar el número de filas insertadas.Puede determinar el número de filas que se insertarán ejecutando la siguiente instrucción Oracle SELECT adelante Ejecutar insertar.

SELECT count(*)
FROM customers
WHERE customer_id > 5000;

Preguntas frecuentes

Pregunta: Estoy construyendo una base de datos con un cliente. Sé que usa una declaración INSERT de Oracle para insertar información en la base de datos, pero ¿cómo se asegura de que no se vuelva a ingresar la misma información del cliente?

R: Puede usar la condición EXISTE para asegurarse de que no se inserte información duplicada.

Por ejemplo, si tiene una tabla llamada clients con una clave principal de client_id, puede usar la siguiente declaración INSERT de Oracle:

INSERT INTO clients
(client_id, client_name, client_type)
SELECT supplier_id, supplier_name, 'advertising'
FROM suppliers
WHERE NOT EXISTS (SELECT *
                  FROM clients
                  WHERE clients.client_id = suppliers.supplier_id);

Esta declaración INSERT de Oracle inserta múltiples registros usando subselecciones.

Si desea insertar un solo registro, puede utilizar la siguiente declaración INSERT de Oracle:

INSERT INTO clients
(client_id, client_name, client_type)
SELECT 10345, 'IBM', 'advertising'
FROM dual
WHERE NOT EXISTS (SELECT *
                  FROM clients
                  WHERE clients.client_id = 10345);

uso de Doble table le permite ingresar valores en una declaración de selección incluso si esos valores no están actualmente almacenados en la tabla.

Pregunta: ¿Cómo insertar varias filas de datos explícitos en un comando INSERT en Oracle?

Respuesta: Este es un ejemplo de cómo insertar 3 filas en una tabla de proveedores en Oracle usando una declaración INSERT de Oracle:

INSERT ALL
  INTO suppliers (supplier_id, supplier_name) VALUES (1000, 'IBM')
  INTO suppliers (supplier_id, supplier_name) VALUES (2000, 'Microsoft')
  INTO suppliers (supplier_id, supplier_name) VALUES (3000, 'Google')
SELECT * FROM dual;

Ejercicio 1:

Desde la tabla de contactos, inserte un registro de contacto con una contact_id de 1000, un last_name de Smith, un first_name de Jane y una dirección de 10 Somewhere St.:

CREATE TABLE contacts
( contact_id number(10) not null,
  last_name varchar2(50) not null,
  first_name varchar2(50) not null,
  address varchar2(50),
  city varchar2(50),
  state varchar2(20),
  zip_code varchar2(10),
  CONSTRAINT contacts_pk PRIMARY KEY (contact_id)
);

Solución al Ejercicio #1:

La siguiente sentencia INSERT de Oracle inserta este registro en la tabla de empleados:

INSERT INTO contacts
(contact_id, last_name, first_name, address)
VALUES
(1000, 'Smith', 'Jane', '10 Somewhere St.');

Ejercicio de práctica #2:

Desde la tabla de Contactos y Cuentas, inserte en la tabla de Contactos todos los clientes que viven en el estado de “Florida”.

CREATE TABLE contacts
( contact_id number(10) not null,
  last_name varchar2(50) not null,
  first_name varchar2(50) not null,
  address varchar2(50),
  city varchar2(50),
  state varchar2(20),
  zip_code varchar2(10),
  CONSTRAINT contacts_pk PRIMARY KEY (contact_id)
);

CREATE TABLE customers
( customer_id number(10) not null,
  last_name varchar2(50) not null,
  first_name varchar2(50) not null,
  address varchar2(50),
  city varchar2(50),
  state varchar2(20),
  zip_code varchar2(10),
  CONSTRAINT customers_pk PRIMARY KEY (customer_id)
);

Solución al ejercicio #2:

La siguiente sentencia INSERT de Oracle inserta este registro en la tabla de proveedores:

INSERT INTO contacts
(contact_id, last_name, first_name, address, city, state, zip_code)
SELECT customer_id, last_name, first_name, address, city, state, zip_code
FROM customers
WHERE state="Florida";

Dado que las tablas de contactos y clientes tienen la misma cantidad de campos, y los campos se enumeran en el mismo orden, podría escribir una solución como esta (aunque si la definición de la tabla cambia, generalmente es mejor enumerar los nombres de las columnas):

INSERT INTO contacts
SELECT *
FROM customers
WHERE state="Florida";
(Visited 8 times, 1 visits today)