Acerca de las Sentencias de Lenguaje de Manipulación de Datos (DML)
Las sentencias de lenguaje de manipulación de Datos (DML) acceden y manipulan datos de tablas existentes.
En el entorno de SQL*Plus, puede introducir una sentencia DML después de la petición de datos SQL>.
En el entorno de SQL Developer, puede introducir una sentencia DML en la hoja de trabajo. Asimismo, puede utilizar el marco de conexiones de SQL Developer y sus herramientas para acceder y manipular los datos.
Para ver el efecto de una sentencia DML en SQL Developer, puede que tenga que seleccionar el tipo de objeto de esquema del objeto cambiado en el marco Conexiones y, a continuación, hacer clic sobre el icono Refrescar.
El efecto de una sentencia DML no es permanente hasta que confirma la transacción que la incluye. Una transacción es una secuencia de sentencias SQL que Oracle Database trata como una unidad (puede ser una única sentencia DML). Mientras no se confirme la transacción, se puede realizar rollback de la misma (deshacer). Para obtener más información sobre las transacciones, consulte "Acerca de la Sentencias de Control de Transacciones".
Consulte también: Referencia de lenguaje SQL de Oracle Database para obtener más información sobre las sentencias DML
Acerca de la Sentencia INSERT
La sentencia INSERT inserta filas en una tabla existente.
La forma más sencilla recomendada de la sentencia INSERT tiene esta sintaxis:
INSERT INTO table_name (list_of_columns)
VALUES (list_of_values);
Cada columna de list_of_columns debe tener un valor válido en la posición correspondiente en list_of_values. Por lo tanto, antes de insertar una fila en una tabla, debe saber qué columnas tiene la tabla y cuáles son sus valores válidos. To get this information using SQL Developer, see “Tutorial: Viewing EMPLOYEES Table Properties and Data with SQL Developer”. Para obtener esta información con SQL*Plus, utilice la sentencia DESCRIBE. Por ejemplo:
DESCRIBE EMPLOYEES;
Resultado:
Name Null? Type
----------------------------------------- -------- ------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
La sentencia INSERT del ejemplo 3-1 inserta una fila en la tabla EMPLOYEES para un empleado cuyas valores de columna se conocen.
No necesita saber todos los valores de columna para insertar una fila en una tabla, pero debe conocer los valores de todas las columnas NOT NULL. Si no sabe el valor de una columna que puede ser NULL, puede omitir dicha columna de list_of_columns. Su valor por defecto es NULL.
La sentencia INSERT del ejemplo 3-2 inserta una fila en la tabla EMPLOYEES para un empleado cuyo valores de columna se conocen todos excepto SALARY. Por ahora, SALARY puede tener el valor NULL. Cuando sepa el salario, puede cambiarlo con la sentencia UPDATE (consulte el Ejemplo 3-4).
La sentencia INSERT del Ejemplo 3-3 intenta insertar una fila en la tabla EMPLOYEES para un empleado cuyo nombre LAST_NAME no se conoce.
Ejemplo 3-1 Uso de la Sentencia INSERT cuando toda la información está disponible
INSERT INTO EMPLOYEES (
EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
EMAIL,
PHONE_NUMBER,
HIRE_DATE,
JOB_ID,
SALARY,
COMMISSION_PCT,
MANAGER_ID,
DEPARTMENT_ID
)
VALUES (
10, -- EMPLOYEE_ID
'George', -- FIRST_NAME
'Gordon', -- LAST_NAME
'GGORDON', -- EMAIL
'650.506.2222', -- PHONE_NUMBER
'01-JAN-07', -- HIRE_DATE
'SA_REP', -- JOB_ID
9000, -- SALARY
.1, -- COMMISSION_PCT
148, -- MANAGER_ID
80 -- DEPARTMENT_ID
);
Resultado:
1 row created.
Ejemplo 3-2 Uso de la Sentencia INSERT Cuando No Toda La Información Está Disponible
INSERT INTO EMPLOYEES (
EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
EMAIL,
PHONE_NUMBER,
HIRE_DATE,
JOB_ID, -- Omit SALARY; its value defaults to NULL.
COMMISSION_PCT,
MANAGER_ID,
DEPARTMENT_ID
)
VALUES (
20, -- EMPLOYEE_ID
'John', -- FIRST_NAME
'Keats', -- LAST_NAME
'JKEATS', -- EMAIL
'650.506.3333', -- PHONE_NUMBER
'01-JAN-07', -- HIRE_DATE
'SA_REP', -- JOB_ID
.1, -- COMMISSION_PCT
148, -- MANAGER_ID
80 -- DEPARTMENT_ID
);
Resultado:
1 row created.
Ejemplo 3-3 Uso Incorrecto de la Sentencia INSERT
INSERT INTO EMPLOYEES (
EMPLOYEE_ID,
FIRST_NAME, -- Omit LAST_NAME (error)
EMAIL,
PHONE_NUMBER,
HIRE_DATE,
JOB_ID,
COMMISSION_PCT,
MANAGER_ID,
DEPARTMENT_ID
)
VALUES (
20, -- EMPLOYEE_ID
'John', -- FIRST_NAME
'JOHN', -- EMAIL
'650.506.3333', -- PHONE_NUMBER
'01-JAN-07', -- HIRE_DATE
'SA_REP', -- JOB_ID
.1, -- COMMISSION_PCT
148, -- MANAGER_ID
80 -- DEPARTMENT_ID
);
Resultado:
ORA-01400: cannot insert NULL into ("HR"."EMPLOYEES"."LAST_NAME")
Consulte además:
-
Consulte Oracle Database SQL Language Reference para obtener información sobre la sentencia INSERT.
-
Referencia de lenguaje SQL de Oracle Database para obtener información sobre tipos de dato
-
"Tutorial: Adición de Filas a Tablas con la Herramienta Insertar Fila"
Acerca de la Sentencia UPDATE
La sentencia UPDATE actualiza (cambia los valores) un juego de filas existentes de la tabla.
Una forma sencilla de la sentencia UPDATE tiene esta sintaxis:
UPDATE table_name
SET column_name = value [, column_name = value]...
[ WHERE condition ];
Cada valor debe ser válido para su column_name. Si incluye la cláusula WHERE, la sentencia actualiza los valores que cumplen la condición de columna sólo en las filas que cumplen
La sentencia UPDATE en el ejemplo 3-4 actualiza el valor de la columna SALARY en la fila que se insertó en la tabla EMPLOYEES en el ejemplo 3-2, antes de que se conociera el salario del empleado.
La sentencia UPDATE del ejemplo 3-5 actualiza el porcentaje de comisión de todos los empleados de departamento 80.
Ejemplo 3-4 Uso de la Sentencia UPDATE para Agregar Datos
UPDATE EMPLOYEES
SET SALARY = 8500
WHERE LAST_NAME = 'Keats';
Resultado:
1 row updated.
Ejemplo 3-5 Uso de la Sentencia UPDATE para Actualizar Varias Filas
UPDATE EMPLOYEES
SET COMMISSION_PCT = COMMISSION_PCT + 0.05
WHERE DEPARTMENT_ID = 80;
Resultado:
34 rows updated.
Consulte además:
-
Consulte Oracle Database SQL Language Reference para obtener información sobre la sentencia UPDATE.
-
Referencia de lenguaje SQL de Oracle Database para obtener información sobre tipos de dato
Acerca de la Sentencia DELETE
La sentencia DELETE suprime filas de una tabla.
Una forma sencilla de la sentencia DELETE tiene esta sintaxis:
DELETE FROM table_name [ WHERE condition ];
Si incluye la cláusula WHERE, la sentencia suprime solo las filas que cumplen la condición. Si omite la cláusula WHERE, la sentencia suprime todas las filas de la tabla, pero la tabla vacía sigue existiendo. Para suprimir una tabla, utilice la sentencia DROP TABLE.
La sentencia DELETE del Ejemplo 3-6 suprime las filas insertadas en el Ejemplo 3-1 y el Ejemplo 3-2.
Ejemplo 3-6 Uso de la Sentencia DELETE
DELETE FROM EMPLOYEES
WHERE HIRE_DATE = TO_DATE('01-JAN-07', 'dd-mon-yy');
Resultado:
2 rows deleted.
Consulte además:
-
Consulte Oracle Database SQL Language Reference para obtener información sobre la sentencia DELETE.
-
Consulte Oracle Database SQL Language Reference para obtener información sobre la sentencia DROP TABLE.
-
"Tutorial: Supresión de Filas de Tablas con la Herramienta Suprimir Filas Seleccionadas"