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:

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:

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: