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 eliminación
Este tutorial de Oracle describe cómo usar Oracle eliminar declaración Viene con gramática, ejemplos y ejercicios.
describir
La instrucción DELETE de Oracle se utiliza para eliminar uno o más registros de una tabla de Oracle.
sintaxis
La sintaxis de la instrucción DELETE en Oracle/PLSQL es:
DELETE FROM table [WHERE conditions];
parámetro o parámetro
tabla La tabla de la que desea eliminar registros. La condición WHERE es opcional. La condición que debe cumplir el registro a borrar. Si no se proporciona ninguna condición, se eliminarán todos los registros de la tabla.
notas
- No necesita enumerar los campos en la declaración DELETE de Oracle porque está eliminando la fila completa de la tabla.
Ejemplo: usar una condición
Veamos un ejemplo simple de consulta DELETE de Oracle con solo una condición en la declaración DELETE.
Por ejemplo:
DELETE FROM customers WHERE last_name="Smith";
Este ejemplo de Oracle DELETE eliminará todos los registros con last_name Smith de la tabla de clientes.
Es posible que desee verificar la cantidad de filas que se eliminarán.Puede determinar la cantidad de filas que se eliminarán ejecutando la siguiente instrucción Oracle SELECT adelante Ejecutar borrar.
SELECT count(*) FROM customers WHERE last_name="Smith";
Ejemplo – usando dos condiciones
Veamos un ejemplo de Oracle DELETE donde solo hay dos condiciones en la instrucción DELETE.
Por ejemplo:
DELETE FROM customers WHERE last_name="Anderson" AND customer_id > 25;
Este ejemplo de Oracle DELETE eliminará todos los registros con un last_name de “Anderson” y un customer_id mayor que 25 de la tabla de clientes.
Es posible que desee verificar la cantidad de filas que se eliminarán.Puede determinar la cantidad de filas que se eliminarán ejecutando la siguiente instrucción Oracle SELECT adelante Ejecutar borrar.
SELECT count(*) FROM customers WHERE last_name="Anderson" AND customer_id > 25;
Ejemplo: uso de la cláusula EXISTS
También puede realizar eliminaciones más complejas.
Es posible que desee eliminar registros en una tabla en función de los valores en otra tabla. Dado que no se pueden enumerar varias tablas en la cláusula Oracle FROM al realizar una eliminación, se puede utilizar la cláusula Oracle EXISTS.
Por ejemplo:
DELETE FROM suppliers WHERE EXISTS ( SELECT customers.customer_name FROM customers WHERE customers.customer_id = suppliers.supplier_id AND customer_id > 25 );
Este ejemplo de Oracle DELETE elimina todos los registros en la tabla de proveedores donde hay un registro en la tabla de clientes con un id_cliente mayor que 25 y el id_cliente coincide con el id_proveedor.
Si desea determinar la cantidad de filas que se eliminarán, puede ejecutar la siguiente instrucción Oracle SELECT adelante Ejecutar borrar.
SELECT COUNT(*) FROM suppliers WHERE EXISTS ( SELECT customers.customer_name FROM customers WHERE customers.customer_id = suppliers.supplier_id AND customer_id > 25 );
Preguntas frecuentes
Pregunta: ¿Cómo puedo escribir una declaración DELETE de Oracle para eliminar todos los registros en TableA donde los datos en field1 y field2 no coinciden con los datos en fieldx y fieldz de tableB?
Respuesta: puede probar algo como esto para su declaración DELETE de Oracle:
DELETE FROM TableA WHERE NOT EXISTS ( SELECT * FROM TableB WHERE TableA.field1 = TableB.fieldx AND TableA.field2 = TableB.fieldz );
Ejercicio 1:
De la tabla de Contactos, elimine todos los registros con el nombre “Jane” que residen en la ciudad de “Las Vegas” de la tabla de Contactos.
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(2), zip_code varchar2(10), CONSTRAINT contacts_pk PRIMARY KEY (contact_id) );
Solución al Ejercicio #1:
La siguiente instrucción DELETE de Oracle eliminará estos registros de la tabla de contactos:
DELETE FROM contacts WHERE city = 'Las Vegas' AND first_name="Jane";
Ejercicio de práctica #2:
De acuerdo con la tabla de contactos, elimine todos los registros cuyo contact_id sea mayor o igual a 5000 y menor a 6000 en la tabla de contactos.
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(2), zip_code varchar2(10), CONSTRAINT contacts_pk PRIMARY KEY (contact_id) );
Solución al ejercicio #2:
La siguiente instrucción DELETE de Oracle eliminará estos registros de la tabla de contactos:
DELETE FROM contacts WHERE contact_id >= 5000 AND contact_id < 6000.
O puede escribir su solución usando la cláusula BETWEEN de esta manera:
DELETE FROM contacts WHERE contact_id BETWEEN 5000 AND 5999;