SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Autor: Nicola Strappazzon C.
                 e-mail: nicola51980@gmail.com




                                                                         8
                 Blog: http://www.swapbytes.com/
                 Revisión: 17/11/11




 Lección
          Manipulando Datos
           y Transacciones

Este material se encuentra basado en el curso de Fundamentos a SQL de ORACLE, el cual es adaptado para
el producto PostgreSQL, todos los ejemplos, códigos fuentes y la Base de Datos HR es propiedad de ORACLE.
Objetivos
    Al completar esta lección usted podrá entender los
    siguientes puntos:
    • Describir cada uno de los lenguajes de manipulación de
      datos (DML, Data Manipulation Lenguage).
    • Introducir nuevos registros dentro de una tabla.
    • Actualizar registros dentro de una tabla.
    • Eliminar registros dentro de una tabla.
    • Control de transacciones.




L- 2 -
   L
Lenguaje de Manipulación de Datos
   • Las sentencias DML son ejecutadas cuando:
      – Introducir nuevos registros dentro de una tabla.
      – Actualizar registros dentro de una tabla.
      – Eliminar registros dentro de una tabla.
   • El control de transacciones consiste en una colección de
     sentencias DML que permiten manejar el flujo de los
     datos cuando son manipulados.




L- 3-
   L
Agregando un nuevo registro
 DEPARTMENTS
   department_id |    department_name   | manager_id | location_id
  ---------------+----------------------+------------+-------------
              10 | Administration       |        200 |        1700
              20 | Marketing            |        201 |        1800
              30 | Purchasing           |        114 |        1700
              40 | Human Resources      |        203 |        2400
              50 | Shipping             |        121 |        1500
              60 | IT                   |        103 |        1400
              80 | Sales                |        145 |        2500
              90 | Executive            |        100 |        1700
             100 | Finance              |        108 |        1700
  ▪ ▪ ▪
  (27 rows)


   Nuevo Registro                  70 | Public Relations     |        204 |       2700


                                              DEPARTMENTS
                                                department_id |    department_name   | manager_id | location_id
                                               ---------------+----------------------+------------+-------------
                                                           10 | Administration       |        200 |        1700
                                                           20 | Marketing            |        201 |        1800
                                                           30 | Purchasing           |        114 |        1700
                                                           40 | Human Resources      |        203 |        2400
                                                           50 | Shipping             |        121 |        1500
                                                           60 | IT                   |        103 |        1400
                                                           70 | Public Relations     |        204 |        2700
                                                           80 | Sales                |        145 |        2500
                                                           90 | Executive            |        100 |        1700
                                                          100 | Finance              |        108 |        1700
                                               ▪ ▪ ▪
                                               (27 rows)


L- 4 -
   L
Usando la sentencia INSERT


   • Agrega un nuevo registro dentro de una tabla utilizando
     la sentencia INSERT.
   • Con esta sentencia, solo podrá insertar un registro a la
     vez.

   INSERT INTO table [ ( column [, ...] ) ]
   VALUES      ( expression [, ...]);




L- 5-
   L
Consideraciones al insertar
   • Insertar nuevos registros que contengan datos por cada
     columna.
   • La lista de valores debe estar ordenada por el orden de
     las columnas de la tabla.
   • Es opcional listar las columnas en la sentencia INSERT.
   • Encerrar dentro de comillas simples los caracteres y las
     fechas.
   • En caso de que se omite un valor o se agrega la palabra
     null, se agregara por defecto un valor que se encuentra
     especificado en la tabla.




L- 6-
   L
Insertando un nuevo registro

   • No se puede definir un Alias a las tablas.
   • Puede deshacer los cambios de esta sentencia mediante
     el uso de transacciones.

   INSERT INTO departments (department_id, department_name,
                            manager_id,    location_id)
   VALUES      (70, 'Public Relations', 100, 1700);
   INSERT 0 1




L- 7-
   L
Insertando un registro con valores NULL

   •Método implícito: Omite el nombre de la columna en la
   lista.
   INSERT INTO departments (department_id, department_name)
   VALUES      (70, 'Public Relations');
   INSERT 0 1


   •Método explícito: Se indica la palabra NULL en la lista de
   valores.
  INSERT INTO departments
  VALUES      (70, 'Public Relations', NULL, NULL);
  INSERT 0 1




L- 8-
   L
Insertando valores especiales

   La función current_date obtiene la fecha del sistema.


   INSERT INTO employees (employee_id, first_name, last_name,
                          email, phone_number, hire_date,
                          job_id, salary, commission_pct,
                          manager_id, department_id)
   VALUES                (113, 'Louis', 'Popp', 'LPOPP',
                          '515.123.4567', current_date,
                          'AC_ACCOUNT', 6900, NULL, 205, 100);
   INSERT 0 1




L- 9-
   L
Insertando valores en específicos

     Agregando un nuevo empleado.


     INSERT INTO employees
     VALUES      (113,
                 'Louis',
                 'Popp',
                 'LPOPP',
                 '515.123.4567',
                 TO_DATE('FEB 3, 1999', 'MON, MM YYYY'),
                 'AC_ACCOUNT',
                 6900,
                 NULL,
                 205,
                 100);
     INSERT 0 1



L - 10 -
     L
Copiando registros desde otra tabla


     • Escribir la sentencia INSERT con una subconsulta.
     • No requiere el uso de la cláusula VALUES.
     • Debe coincidir el número de columnas de la tabla que se
       encuentra definida en la sentencia INSERT con las que
       retorna la subconsulta.

     INSERT INTO sales_reps (id, name, salary, commission_pct)
       SELECT employee_id, last_name, salary, commission_pct
       FROM   employees
       WHERE job_id LIKE '%REP%';

     INSERT 0 4



L - 11 -
     L
Entendiendo la salida

   Al ejecutar sentencias DML se retorna información
   sobre los registros.
   INSERT INTO departments
   VALUES      (70, 'Public Relations', NULL, NULL);
   INSERT 0 1


   INSERT oid count

    • oid: Es el Object ID (oid) que hace referencia al objeto
      que es afectado, por defecto es 0 y solo se aplica en el
      sentencia INSERT.
    • count: Hace referencia a la cantidad de registros que
      son afectados dependiendo de la sentencia utilizada.
L - 12 -
     L
Modificando valores
           EMPLOYEES
            employee_id | last_name | hire_date |      job_id   | salary | department_id
           -------------+-------------+------------+------------+--------+---------------
                    145 | Russell     | 1996-10-01 | SA_MAN     | 14000 |             80
                    146 | Partners    | 1997-01-05 | SA_MAN     | 13500 |             80
           ▪ ▪ ▪
                    103   |   Hunold      |   1990-01-03   |   IT_PROG   |   9000   |   60
                    104   |   Ernst       |   1991-05-21   |   IT_PROG   |   6000   |   60
                    105   |   Austin      |   1997-06-25   |   IT_PROG   |   4800   |   60
                    106   |   Pataballa   |   1998-02-05   |   IT_PROG   |   4800   |   60
                    107   |   Lorentz     |   1999-02-07   |   IT_PROG   |   4200   |   60

           ▪ ▪ ▪
           (107 rows)



           Se actualizaron los siguientes registros:
            employee_id | last_name | hire_date |      job_id   | salary | department_id
           -------------+-------------+------------+------------+--------+---------------
                    145 | Russell     | 1996-10-01 | SA_MAN     | 14000 |             80
                    146 | Partners    | 1997-01-05 | SA_MAN     | 13500 |             80
           ▪ ▪ ▪
                    103   |   Hunold      |   1990-01-03   |   IT_PROG   |   9000   |   30
                    104   |   Ernst       |   1991-05-21   |   IT_PROG   |   6000   |   30
                    105   |   Austin      |   1997-06-25   |   IT_PROG   |   4800   |   30
                    106   |   Pataballa   |   1998-02-05   |   IT_PROG   |   4800   |   30
                    107   |   Lorentz     |   1999-02-07   |   IT_PROG   |   4200   |   30

           ▪ ▪ ▪
           (107 rows)




L - 13 -
     L
Usando la sentencia UPDATE

     • Modifica un registro existente utilizando la sentencia
       UPDATE.
     • Puede modificar mas de un registro al mismo tiempo.
     • Puede especificar cuales son las columnas que serán
       modificadas.
     • Puede deshacer los cambios de esta sentencia mediante
       el uso de transacciones. No se puede definir un Alias a
       las tablas.

     UPDATE   table
        SET   column = expression [,...]
     [WHERE   condition];



L - 14 -
     L
Modificando un registro

     •Modificando uno o varios registros mediante una condición
     establecida en la cláusula WHERE.
    UPDATE   employees
       SET   department_id = 70
    WHERE    employee_id   = 113;
    UPDATE   1

     •Todos los registros son modificados en una tabla si se
     omite el uso de la cláusula WHERE.
    UPDATE employees
       SET department_id = 110;
    UPDATE 107




L - 15 -
     L
Modificando con subconsultas

     Modificando los datos del job_id y el salary del
     empleado cuyo código es 114, obteniendo los datos a
     modificar del empleado cuyo código es 205.


     UPDATE employees
        SET job_id = (SELECT job_id
                      FROM   employees
                      WHERE employee_id = 205),
            salary = (SELECT salary
                      FROM   employees
                      WHERE employee_id = 205)
     WHERE employee_id = 114;
     UPDATE 1




L - 16 -
     L
Modificando con subconsultas

     Use una subconsultas para determinar una serie de
     valores que permitan modificar el registro dentro de
     una tabla mediante la la sentencia UPDATE.


     UPDATE copy_employees
        SET job_id = (SELECT job_id
                      FROM   employees
                      WHERE employee_id = 205),
            salary = (SELECT salary
                      FROM   employees
                      WHERE employee_id = 205)
     WHERE employee_id = 114;
     UPDATE 1




L - 17 -
     L
Eliminando un registro
           EMPLOYEES
            department_id |    department_name   | manager_id | location_id
           ---------------+----------------------+------------+-------------
                       10 | Administration       |        200 |        1700
                       20 | Marketing            |        201 |        1800
                       30 | Purchasing           |        114 |        1700
                       40 | Human Resources      |        203 |        2400
                       50 | Shipping             |        121 |        1500
                       60 | IT                   |        103 |        1400
                       70 | Public Relations     |        204 |        2700
                       80 | Sales                |        145 |        2500
                       90 | Executive            |        100 |        1700
                      100 | Finance              |        108 |        1700
           ▪ ▪ ▪
           (107 rows)


           Se elimino un registro de la tabla:
            department_id |    department_name   | manager_id | location_id
           ---------------+----------------------+------------+-------------
                       10 | Administration       |        200 |        1700
                       20 | Marketing            |        201 |        1800
                       30 | Purchasing           |        114 |        1700
                       40 | Human Resources      |        203 |        2400
                       50 | Shipping             |        121 |        1500
                       60 | IT                   |        103 |        1400
                       70 | Public Relations     |        204 |        2700
                       80 | Sales                |        145 |        2500
                       90 | Executive            |        100 |        1700
                      110 | Accounting           |        205 |        1700
           ▪ ▪ ▪
           (106 rows)



L - 18 -
     L
Usando la sentencia DELETE

     • Eliminar un registro existente utilizando la sentencia
       DELETE.
     • Puede eliminar mas de un registro al mismo tiempo.
     • No se puede definir un Alias a las tablas.
     • Puede deshacer los cambios de esta sentencia mediante
       el uso de transacciones.
     DELETE FROM table
     WHERE condition;




L - 19 -
     L
Eliminando un registro

     •Especifique el registro a eliminar mediante un criterio
     establecido en la cláusula WHERE.
    DELETE FROM departments
    WHERE       department_name = 'Finance';
    DELETE 1


     •Eliminar todos los registros de una tabla sin usar la
     cláusula WHERE.

    DELETE FROM copy_employees;
    DELETE 68;




L - 20 -
     L
Eliminando con subconsultas

     Use una subconsulta para determinar una serie de
     valores que permitan eliminar registros dentro de una
     tabla mediante la sentencia DELETE.

     DELETE FROM employees
     WHERE       department_id = (SELECT department_id
                                  FROM   departments
                                  WHERE department_name
                                         ILIKE '%Public%');
     DELETE 1




L - 21 -
     L
Sentencia TRUNCATE
     • Elimina todos los registros dentro de una tabla.
     • Es mas eficiente para las tablas con gran cantidad de
       registros que la cláusula DELETE.
     • Solamente puede ser ejecutada por el usuario dueño
       (owner) de la tabla.
     • Puede deshacer los cambios de esta sentencia mediante
       el uso de transacciones.
           Sintaxis:
     TRUNCATE [TABLE] name [,...];


           Ejemplo:
     TRUNCATE copy_employees;

L - 22 -
     L
Transacciones

     Todo sistema gestor de Bases de Datos maneja los
     siguientes conceptos sobre las transacciones:
     • Son un conjunto de acciones que altera el estado original
       de los datos y forman una sola unidad.
     • Todo lenguaje que manipula los datos (DML) son
       administrador por las transacciones.
     • Las transacciones pueden interrumpir un conjunto de
       acciones o hacerlas permanentes.
     • Mantiene la integridad de los datos cuando alguna
       acción falla.




L - 23 -
     L
Comandos utilizados

     Los siguientes comandos son utilizados para tener
     control de las transacciones:
     •     BEGIN
     •     COMMIT
     •     ROLLBACK
     •     SAVEPOINT
     •     ROLLBACK TO
     •     RELEASE SAVEPOINT




L - 24 -
     L
Usando el comando BEGIN y COMMIT
 Linea de tiempo
                                    •Se inicia un conjunto de
                   BEGIN;           transacciones mediante el
                                    comando BEGIN;
                   INSERT INTO...
                                    •L u e g o s e p r o c e d e a
                   UPDATE...
                                    utilizar cualquier comando
                                    de tipo DML (INSERT,
                                    UPDATE y/o DELETE) para
                   UPDATE...
                                    manipular los datos.
                   DELETE...
                                    •Por ultimo, se finaliza las
                                    transacciones haciendo los
                   COMMIT;          cambios permanentes con
                                    el comando COMMIT;.
L - 25 -
     L
Ejemplo del comando BEGIN y COMMIT
     HR=# BEGIN;
     BEGIN
     HR=# SELECT * FROM departments WHERE department_id = 270;
      department_id | department_name | manager_id | location_id
     ---------------+-----------------+------------+-------------
                 270 | Payroll        |            |        1700
     (1 row)

     HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 270;
     UPDATE 1
     HR=# SELECT * FROM departments WHERE department_id = 270;
      department_id | department_name | manager_id | location_id
     ---------------+-----------------+------------+-------------
                270 | Payroll         |            |        2500
     (1 row)

     HR=# COMMIT;
     COMMIT
     HR=# SELECT * FROM departments WHERE department_id = 270;
     department_id | department_name | manager_id | location_id
     ---------------+-----------------+------------+-------------
                270 | Payroll         |            |        2500
     (1 row)

     HR=#

L - 26 -
     L
Usando el comando ROLLBACK
 Linea de tiempo

                   BEGIN;

                               La ultima actualización que se
                   UPDATE...
                               realizo a generado un error
                               inesperado o un resultado no
                   UPDATE...
                               deseado, para deshacer
                               todos los cambios se utiliza el
                   UPDATE...
                               comando ROLLBACK.

                   ERROR...


                   ROLLBACK;


L - 27 -
     L
Ejemplo del comando ROLLBACK
     HR=# BEGIN;
     BEGIN
     HR=# SELECT * FROM departments WHERE department_id = 270;
      department_id | department_name | manager_id | location_id
     ---------------+-----------------+------------+-------------
                 270 | Payroll        |            |        1700
     (1 row)

     HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 270;
     UPDATE 1
     HR=# SELECT * FROM departments WHERE department_id = 270;
      department_id | department_name | manager_id | location_id
     ---------------+-----------------+------------+-------------
                270 | Payroll         |            |        2500
     (1 row)

     HR=# ROLLBACK;
     ROLLBACK
     HR=# SELECT * FROM departments WHERE department_id = 270;
     department_id | department_name | manager_id | location_id
     ---------------+-----------------+------------+-------------
                270 | Payroll         |            |        1700
     (1 row)

     HR=# COMMIT;

L - 28 -
     L
Usando el comando SAVEPOINT
 Linea de tiempo

                   BEGIN;
                                    La ultima actualización que se
                   UPDATE...        realizo a generado un error
                                    inesperado o un resultado no
                   SAVEPOINT A;     deseado, para deshacer
                                    todos los cambios hasta el
                   UPDATE...        punto de control A se utiliza el
                                    comando ROLLBACK TO.
                   ERROR...


                   ROLLBACK TO A;


L - 29 -
     L
Ejemplo del comando SAVEPOINT
     HR=# BEGIN;
     BEGIN
     HR=# SELECT * FROM departments WHERE department_id = 270;
      department_id | department_name | manager_id | location_id
     ---------------+-----------------+------------+-------------
                 270 | Payroll        |            |        1700
     (1 row)

     HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 270;
     UPDATE 1
     HR=# SAVEPOINT A;
     SAVEPOINT
     HR=# SELECT * FROM departments WHERE department_id = 270;
     department_id | department_name | manager_id | location_id
     ---------------+-----------------+------------+-------------
                270 | Payroll         |            |        2500
     (1 row)
     HR=# UPDATE departments SET location_id = 1000 WHERE department_id = 270;
     UPDATE 1
     HR=# ROLLBACK TO A;
     ROLLBACK
     HR=# COMMIT;
     COMMIT



L - 30 -
     L
Usando el comando RELEASE SAVEPOINT
 Linea de tiempo
                   BEGIN;

                   UPDATE...
                                          Se determino que el
                                          punto de control B ya no
                   SAVEPOINT A;           es utilizado, todos los
                                          datos afectados de dicho
                   UPDATE...              punto pasaran a ser del
                                          punto de control A, para
                   SAVEPOINT B;
                                          realizar este cambio se
                   UPDATE...
                                          utiliza el comando
                                          RELEASE SAVEPOINT.
                   RELEASE SAVEPOINT B;

                   COMMIT;

L - 31 -
     L
Ejemplo del comando SAVEPOINT
     HR=# BEGIN;
     BEGIN
     HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 270;
     UPDATE 1
     HR=# SAVEPOINT A;
     SAVEPOINT
     HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 260;
     UPDATE 1
     HR=# SAVEPOINT B;
     SAVEPOINT
     HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 250;
     UPDATE 1
     HR=# SELECT * FROM departments WHERE department_id IN (270, 260, 250);
      department_id | department_name | manager_id | location_id
     ---------------+-----------------+------------+-------------
                 270 | Payroll        |            |        2500
                 260 | Recruiting     |            |        2500
                 250 | Retail Sales   |            |        2500
     (3 rows)
     HR=# RELEASE SAVEPOINT B;
     RELEASE
     HR=# ROLLBACK TO A;
     ROLLBACK
     department_id | department_name | manager_id | location_id
     ---------------+-----------------+------------+-------------
                 270 | Payroll        |            |        2500
                 260 | Recruiting     |            |        1700
                 250 | Retail Sales   |            |        1700
     (3 rows)
     HR=# COMMIT;
     COMMIT

L - 32 -
     L
Resumen

     En esta lección, usted debió entender como:
     • Utilizar los comandos DML que permiten insertar o
       alterar los datos.
     • Eliminar el contenido de una tabla.
     • Manejo de las transacciones.




L - 33 -
     L

Contenu connexe

Tendances

PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
Nicola Strappazzon C.
 
Diferencias entre los SGBD´s
Diferencias entre los SGBD´sDiferencias entre los SGBD´s
Diferencias entre los SGBD´s
Diego Silva Viera
 
Algebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datosAlgebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datos
JosepSalvadorSotoObregon
 

Tendances (20)

Consultas básicas en sql server
Consultas básicas en sql serverConsultas básicas en sql server
Consultas básicas en sql server
 
Introducción a Sql
Introducción a SqlIntroducción a Sql
Introducción a Sql
 
Modelo de entidad relación extendido
Modelo de entidad relación extendidoModelo de entidad relación extendido
Modelo de entidad relación extendido
 
MySQL Views
MySQL ViewsMySQL Views
MySQL Views
 
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
 
Fundamentos de BD - Unidad 5 algebra relacional
Fundamentos de BD - Unidad 5 algebra relacionalFundamentos de BD - Unidad 5 algebra relacional
Fundamentos de BD - Unidad 5 algebra relacional
 
Oracle Database Sequence
Oracle Database SequenceOracle Database Sequence
Oracle Database Sequence
 
Diferencias entre los SGBD´s
Diferencias entre los SGBD´sDiferencias entre los SGBD´s
Diferencias entre los SGBD´s
 
Oracle
OracleOracle
Oracle
 
Modelo de datos.
Modelo de datos.Modelo de datos.
Modelo de datos.
 
Oracle
OracleOracle
Oracle
 
Sql Consultas MáS Complejas
Sql Consultas MáS ComplejasSql Consultas MáS Complejas
Sql Consultas MáS Complejas
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Sql oracle
Sql oracleSql oracle
Sql oracle
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Sql presentacion
Sql presentacionSql presentacion
Sql presentacion
 
Sql Constraints
Sql ConstraintsSql Constraints
Sql Constraints
 
Algebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datosAlgebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datos
 
Window functions with SQL Server 2016
Window functions with SQL Server 2016Window functions with SQL Server 2016
Window functions with SQL Server 2016
 
8. sql
8. sql8. sql
8. sql
 

En vedette

PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablas
PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablasPostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablas
PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablas
Nicola Strappazzon C.
 
PostgreSQL - Lección 7 - Usando los operadores de conjunto
PostgreSQL - Lección 7 - Usando los operadores de conjuntoPostgreSQL - Lección 7 - Usando los operadores de conjunto
PostgreSQL - Lección 7 - Usando los operadores de conjunto
Nicola Strappazzon C.
 
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
Nicola Strappazzon C.
 
0 to 2,500 Customers with No Cold Calls
0 to 2,500 Customers with No Cold Calls0 to 2,500 Customers with No Cold Calls
0 to 2,500 Customers with No Cold Calls
HubSpot
 
Strip your charts
Strip your chartsStrip your charts
Strip your charts
uwseidl
 
Resultado Final do Concurso de Bom Sucesso
Resultado Final do Concurso de Bom Sucesso Resultado Final do Concurso de Bom Sucesso
Resultado Final do Concurso de Bom Sucesso
Joao Rivonaldo Silva
 

En vedette (20)

PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablas
PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablasPostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablas
PostgreSQL - Lección 5 - Recibiendo datos desde múltiples tablas
 
PostgreSQL - Lección 7 - Usando los operadores de conjunto
PostgreSQL - Lección 7 - Usando los operadores de conjuntoPostgreSQL - Lección 7 - Usando los operadores de conjunto
PostgreSQL - Lección 7 - Usando los operadores de conjunto
 
PostgreSQL - Lección 10 - Vistas
PostgreSQL - Lección 10 - VistasPostgreSQL - Lección 10 - Vistas
PostgreSQL - Lección 10 - Vistas
 
PostgreSQL - Lección 9 - Tablas
PostgreSQL - Lección 9 - TablasPostgreSQL - Lección 9 - Tablas
PostgreSQL - Lección 9 - Tablas
 
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
 
Flexible budget
Flexible budgetFlexible budget
Flexible budget
 
Historiacompd
HistoriacompdHistoriacompd
Historiacompd
 
17006 linea-de-tiempo-de-la-computacion
17006 linea-de-tiempo-de-la-computacion17006 linea-de-tiempo-de-la-computacion
17006 linea-de-tiempo-de-la-computacion
 
Development Applications 2008 05 26
Development Applications 2008 05 26Development Applications 2008 05 26
Development Applications 2008 05 26
 
Shortening the Feedback Loop: How Spotify’s Big Data Ecosystem has evolved to...
Shortening the Feedback Loop: How Spotify’s Big Data Ecosystem has evolved to...Shortening the Feedback Loop: How Spotify’s Big Data Ecosystem has evolved to...
Shortening the Feedback Loop: How Spotify’s Big Data Ecosystem has evolved to...
 
Electrical Engineering Basics - What Design Engineers Need to Know
Electrical Engineering Basics - What Design Engineers Need to KnowElectrical Engineering Basics - What Design Engineers Need to Know
Electrical Engineering Basics - What Design Engineers Need to Know
 
0 to 2,500 Customers with No Cold Calls
0 to 2,500 Customers with No Cold Calls0 to 2,500 Customers with No Cold Calls
0 to 2,500 Customers with No Cold Calls
 
MasterPlus - Sistema Binário
MasterPlus - Sistema BinárioMasterPlus - Sistema Binário
MasterPlus - Sistema Binário
 
Strip your charts
Strip your chartsStrip your charts
Strip your charts
 
Apresentacao
ApresentacaoApresentacao
Apresentacao
 
Resultado Final do Concurso de Bom Sucesso
Resultado Final do Concurso de Bom Sucesso Resultado Final do Concurso de Bom Sucesso
Resultado Final do Concurso de Bom Sucesso
 
Exames médicos valores - União Sindical
Exames médicos   valores - União SindicalExames médicos   valores - União Sindical
Exames médicos valores - União Sindical
 
Option Strategies
Option StrategiesOption Strategies
Option Strategies
 
2500 years of learning theory: The good, the bad & the ugly - Donald Clark
2500 years of learning theory: The good, the bad & the ugly - Donald Clark2500 years of learning theory: The good, the bad & the ugly - Donald Clark
2500 years of learning theory: The good, the bad & the ugly - Donald Clark
 
Acoples rapidos
Acoples rapidosAcoples rapidos
Acoples rapidos
 

Similaire à PostgreSQL - Lección 8 - Manipulando Datos y Transacciones (14)

Postgre S Q L 4
Postgre S Q L 4Postgre S Q L 4
Postgre S Q L 4
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 
Ejercicios sql access.
Ejercicios sql access.Ejercicios sql access.
Ejercicios sql access.
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 
333
333333
333
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 

Dernier

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Dernier (11)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

PostgreSQL - Lección 8 - Manipulando Datos y Transacciones

  • 1. Autor: Nicola Strappazzon C. e-mail: nicola51980@gmail.com 8 Blog: http://www.swapbytes.com/ Revisión: 17/11/11 Lección Manipulando Datos y Transacciones Este material se encuentra basado en el curso de Fundamentos a SQL de ORACLE, el cual es adaptado para el producto PostgreSQL, todos los ejemplos, códigos fuentes y la Base de Datos HR es propiedad de ORACLE.
  • 2. Objetivos Al completar esta lección usted podrá entender los siguientes puntos: • Describir cada uno de los lenguajes de manipulación de datos (DML, Data Manipulation Lenguage). • Introducir nuevos registros dentro de una tabla. • Actualizar registros dentro de una tabla. • Eliminar registros dentro de una tabla. • Control de transacciones. L- 2 - L
  • 3. Lenguaje de Manipulación de Datos • Las sentencias DML son ejecutadas cuando: – Introducir nuevos registros dentro de una tabla. – Actualizar registros dentro de una tabla. – Eliminar registros dentro de una tabla. • El control de transacciones consiste en una colección de sentencias DML que permiten manejar el flujo de los datos cuando son manipulados. L- 3- L
  • 4. Agregando un nuevo registro DEPARTMENTS department_id | department_name | manager_id | location_id ---------------+----------------------+------------+------------- 10 | Administration | 200 | 1700 20 | Marketing | 201 | 1800 30 | Purchasing | 114 | 1700 40 | Human Resources | 203 | 2400 50 | Shipping | 121 | 1500 60 | IT | 103 | 1400 80 | Sales | 145 | 2500 90 | Executive | 100 | 1700 100 | Finance | 108 | 1700 ▪ ▪ ▪ (27 rows) Nuevo Registro 70 | Public Relations | 204 | 2700 DEPARTMENTS department_id | department_name | manager_id | location_id ---------------+----------------------+------------+------------- 10 | Administration | 200 | 1700 20 | Marketing | 201 | 1800 30 | Purchasing | 114 | 1700 40 | Human Resources | 203 | 2400 50 | Shipping | 121 | 1500 60 | IT | 103 | 1400 70 | Public Relations | 204 | 2700 80 | Sales | 145 | 2500 90 | Executive | 100 | 1700 100 | Finance | 108 | 1700 ▪ ▪ ▪ (27 rows) L- 4 - L
  • 5. Usando la sentencia INSERT • Agrega un nuevo registro dentro de una tabla utilizando la sentencia INSERT. • Con esta sentencia, solo podrá insertar un registro a la vez. INSERT INTO table [ ( column [, ...] ) ] VALUES ( expression [, ...]); L- 5- L
  • 6. Consideraciones al insertar • Insertar nuevos registros que contengan datos por cada columna. • La lista de valores debe estar ordenada por el orden de las columnas de la tabla. • Es opcional listar las columnas en la sentencia INSERT. • Encerrar dentro de comillas simples los caracteres y las fechas. • En caso de que se omite un valor o se agrega la palabra null, se agregara por defecto un valor que se encuentra especificado en la tabla. L- 6- L
  • 7. Insertando un nuevo registro • No se puede definir un Alias a las tablas. • Puede deshacer los cambios de esta sentencia mediante el uso de transacciones. INSERT INTO departments (department_id, department_name, manager_id, location_id) VALUES (70, 'Public Relations', 100, 1700); INSERT 0 1 L- 7- L
  • 8. Insertando un registro con valores NULL •Método implícito: Omite el nombre de la columna en la lista. INSERT INTO departments (department_id, department_name) VALUES (70, 'Public Relations'); INSERT 0 1 •Método explícito: Se indica la palabra NULL en la lista de valores. INSERT INTO departments VALUES (70, 'Public Relations', NULL, NULL); INSERT 0 1 L- 8- L
  • 9. Insertando valores especiales La función current_date obtiene la fecha del sistema. INSERT INTO employees (employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id) VALUES (113, 'Louis', 'Popp', 'LPOPP', '515.123.4567', current_date, 'AC_ACCOUNT', 6900, NULL, 205, 100); INSERT 0 1 L- 9- L
  • 10. Insertando valores en específicos Agregando un nuevo empleado. INSERT INTO employees VALUES (113, 'Louis', 'Popp', 'LPOPP', '515.123.4567', TO_DATE('FEB 3, 1999', 'MON, MM YYYY'), 'AC_ACCOUNT', 6900, NULL, 205, 100); INSERT 0 1 L - 10 - L
  • 11. Copiando registros desde otra tabla • Escribir la sentencia INSERT con una subconsulta. • No requiere el uso de la cláusula VALUES. • Debe coincidir el número de columnas de la tabla que se encuentra definida en la sentencia INSERT con las que retorna la subconsulta. INSERT INTO sales_reps (id, name, salary, commission_pct) SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE job_id LIKE '%REP%'; INSERT 0 4 L - 11 - L
  • 12. Entendiendo la salida Al ejecutar sentencias DML se retorna información sobre los registros. INSERT INTO departments VALUES (70, 'Public Relations', NULL, NULL); INSERT 0 1 INSERT oid count • oid: Es el Object ID (oid) que hace referencia al objeto que es afectado, por defecto es 0 y solo se aplica en el sentencia INSERT. • count: Hace referencia a la cantidad de registros que son afectados dependiendo de la sentencia utilizada. L - 12 - L
  • 13. Modificando valores EMPLOYEES employee_id | last_name | hire_date | job_id | salary | department_id -------------+-------------+------------+------------+--------+--------------- 145 | Russell | 1996-10-01 | SA_MAN | 14000 | 80 146 | Partners | 1997-01-05 | SA_MAN | 13500 | 80 ▪ ▪ ▪ 103 | Hunold | 1990-01-03 | IT_PROG | 9000 | 60 104 | Ernst | 1991-05-21 | IT_PROG | 6000 | 60 105 | Austin | 1997-06-25 | IT_PROG | 4800 | 60 106 | Pataballa | 1998-02-05 | IT_PROG | 4800 | 60 107 | Lorentz | 1999-02-07 | IT_PROG | 4200 | 60 ▪ ▪ ▪ (107 rows) Se actualizaron los siguientes registros: employee_id | last_name | hire_date | job_id | salary | department_id -------------+-------------+------------+------------+--------+--------------- 145 | Russell | 1996-10-01 | SA_MAN | 14000 | 80 146 | Partners | 1997-01-05 | SA_MAN | 13500 | 80 ▪ ▪ ▪ 103 | Hunold | 1990-01-03 | IT_PROG | 9000 | 30 104 | Ernst | 1991-05-21 | IT_PROG | 6000 | 30 105 | Austin | 1997-06-25 | IT_PROG | 4800 | 30 106 | Pataballa | 1998-02-05 | IT_PROG | 4800 | 30 107 | Lorentz | 1999-02-07 | IT_PROG | 4200 | 30 ▪ ▪ ▪ (107 rows) L - 13 - L
  • 14. Usando la sentencia UPDATE • Modifica un registro existente utilizando la sentencia UPDATE. • Puede modificar mas de un registro al mismo tiempo. • Puede especificar cuales son las columnas que serán modificadas. • Puede deshacer los cambios de esta sentencia mediante el uso de transacciones. No se puede definir un Alias a las tablas. UPDATE table SET column = expression [,...] [WHERE condition]; L - 14 - L
  • 15. Modificando un registro •Modificando uno o varios registros mediante una condición establecida en la cláusula WHERE. UPDATE employees SET department_id = 70 WHERE employee_id = 113; UPDATE 1 •Todos los registros son modificados en una tabla si se omite el uso de la cláusula WHERE. UPDATE employees SET department_id = 110; UPDATE 107 L - 15 - L
  • 16. Modificando con subconsultas Modificando los datos del job_id y el salary del empleado cuyo código es 114, obteniendo los datos a modificar del empleado cuyo código es 205. UPDATE employees SET job_id = (SELECT job_id FROM employees WHERE employee_id = 205), salary = (SELECT salary FROM employees WHERE employee_id = 205) WHERE employee_id = 114; UPDATE 1 L - 16 - L
  • 17. Modificando con subconsultas Use una subconsultas para determinar una serie de valores que permitan modificar el registro dentro de una tabla mediante la la sentencia UPDATE. UPDATE copy_employees SET job_id = (SELECT job_id FROM employees WHERE employee_id = 205), salary = (SELECT salary FROM employees WHERE employee_id = 205) WHERE employee_id = 114; UPDATE 1 L - 17 - L
  • 18. Eliminando un registro EMPLOYEES department_id | department_name | manager_id | location_id ---------------+----------------------+------------+------------- 10 | Administration | 200 | 1700 20 | Marketing | 201 | 1800 30 | Purchasing | 114 | 1700 40 | Human Resources | 203 | 2400 50 | Shipping | 121 | 1500 60 | IT | 103 | 1400 70 | Public Relations | 204 | 2700 80 | Sales | 145 | 2500 90 | Executive | 100 | 1700 100 | Finance | 108 | 1700 ▪ ▪ ▪ (107 rows) Se elimino un registro de la tabla: department_id | department_name | manager_id | location_id ---------------+----------------------+------------+------------- 10 | Administration | 200 | 1700 20 | Marketing | 201 | 1800 30 | Purchasing | 114 | 1700 40 | Human Resources | 203 | 2400 50 | Shipping | 121 | 1500 60 | IT | 103 | 1400 70 | Public Relations | 204 | 2700 80 | Sales | 145 | 2500 90 | Executive | 100 | 1700 110 | Accounting | 205 | 1700 ▪ ▪ ▪ (106 rows) L - 18 - L
  • 19. Usando la sentencia DELETE • Eliminar un registro existente utilizando la sentencia DELETE. • Puede eliminar mas de un registro al mismo tiempo. • No se puede definir un Alias a las tablas. • Puede deshacer los cambios de esta sentencia mediante el uso de transacciones. DELETE FROM table WHERE condition; L - 19 - L
  • 20. Eliminando un registro •Especifique el registro a eliminar mediante un criterio establecido en la cláusula WHERE. DELETE FROM departments WHERE department_name = 'Finance'; DELETE 1 •Eliminar todos los registros de una tabla sin usar la cláusula WHERE. DELETE FROM copy_employees; DELETE 68; L - 20 - L
  • 21. Eliminando con subconsultas Use una subconsulta para determinar una serie de valores que permitan eliminar registros dentro de una tabla mediante la sentencia DELETE. DELETE FROM employees WHERE department_id = (SELECT department_id FROM departments WHERE department_name ILIKE '%Public%'); DELETE 1 L - 21 - L
  • 22. Sentencia TRUNCATE • Elimina todos los registros dentro de una tabla. • Es mas eficiente para las tablas con gran cantidad de registros que la cláusula DELETE. • Solamente puede ser ejecutada por el usuario dueño (owner) de la tabla. • Puede deshacer los cambios de esta sentencia mediante el uso de transacciones. Sintaxis: TRUNCATE [TABLE] name [,...]; Ejemplo: TRUNCATE copy_employees; L - 22 - L
  • 23. Transacciones Todo sistema gestor de Bases de Datos maneja los siguientes conceptos sobre las transacciones: • Son un conjunto de acciones que altera el estado original de los datos y forman una sola unidad. • Todo lenguaje que manipula los datos (DML) son administrador por las transacciones. • Las transacciones pueden interrumpir un conjunto de acciones o hacerlas permanentes. • Mantiene la integridad de los datos cuando alguna acción falla. L - 23 - L
  • 24. Comandos utilizados Los siguientes comandos son utilizados para tener control de las transacciones: • BEGIN • COMMIT • ROLLBACK • SAVEPOINT • ROLLBACK TO • RELEASE SAVEPOINT L - 24 - L
  • 25. Usando el comando BEGIN y COMMIT Linea de tiempo •Se inicia un conjunto de BEGIN; transacciones mediante el comando BEGIN; INSERT INTO... •L u e g o s e p r o c e d e a UPDATE... utilizar cualquier comando de tipo DML (INSERT, UPDATE y/o DELETE) para UPDATE... manipular los datos. DELETE... •Por ultimo, se finaliza las transacciones haciendo los COMMIT; cambios permanentes con el comando COMMIT;. L - 25 - L
  • 26. Ejemplo del comando BEGIN y COMMIT HR=# BEGIN; BEGIN HR=# SELECT * FROM departments WHERE department_id = 270; department_id | department_name | manager_id | location_id ---------------+-----------------+------------+------------- 270 | Payroll | | 1700 (1 row) HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 270; UPDATE 1 HR=# SELECT * FROM departments WHERE department_id = 270; department_id | department_name | manager_id | location_id ---------------+-----------------+------------+------------- 270 | Payroll | | 2500 (1 row) HR=# COMMIT; COMMIT HR=# SELECT * FROM departments WHERE department_id = 270; department_id | department_name | manager_id | location_id ---------------+-----------------+------------+------------- 270 | Payroll | | 2500 (1 row) HR=# L - 26 - L
  • 27. Usando el comando ROLLBACK Linea de tiempo BEGIN; La ultima actualización que se UPDATE... realizo a generado un error inesperado o un resultado no UPDATE... deseado, para deshacer todos los cambios se utiliza el UPDATE... comando ROLLBACK. ERROR... ROLLBACK; L - 27 - L
  • 28. Ejemplo del comando ROLLBACK HR=# BEGIN; BEGIN HR=# SELECT * FROM departments WHERE department_id = 270; department_id | department_name | manager_id | location_id ---------------+-----------------+------------+------------- 270 | Payroll | | 1700 (1 row) HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 270; UPDATE 1 HR=# SELECT * FROM departments WHERE department_id = 270; department_id | department_name | manager_id | location_id ---------------+-----------------+------------+------------- 270 | Payroll | | 2500 (1 row) HR=# ROLLBACK; ROLLBACK HR=# SELECT * FROM departments WHERE department_id = 270; department_id | department_name | manager_id | location_id ---------------+-----------------+------------+------------- 270 | Payroll | | 1700 (1 row) HR=# COMMIT; L - 28 - L
  • 29. Usando el comando SAVEPOINT Linea de tiempo BEGIN; La ultima actualización que se UPDATE... realizo a generado un error inesperado o un resultado no SAVEPOINT A; deseado, para deshacer todos los cambios hasta el UPDATE... punto de control A se utiliza el comando ROLLBACK TO. ERROR... ROLLBACK TO A; L - 29 - L
  • 30. Ejemplo del comando SAVEPOINT HR=# BEGIN; BEGIN HR=# SELECT * FROM departments WHERE department_id = 270; department_id | department_name | manager_id | location_id ---------------+-----------------+------------+------------- 270 | Payroll | | 1700 (1 row) HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 270; UPDATE 1 HR=# SAVEPOINT A; SAVEPOINT HR=# SELECT * FROM departments WHERE department_id = 270; department_id | department_name | manager_id | location_id ---------------+-----------------+------------+------------- 270 | Payroll | | 2500 (1 row) HR=# UPDATE departments SET location_id = 1000 WHERE department_id = 270; UPDATE 1 HR=# ROLLBACK TO A; ROLLBACK HR=# COMMIT; COMMIT L - 30 - L
  • 31. Usando el comando RELEASE SAVEPOINT Linea de tiempo BEGIN; UPDATE... Se determino que el punto de control B ya no SAVEPOINT A; es utilizado, todos los datos afectados de dicho UPDATE... punto pasaran a ser del punto de control A, para SAVEPOINT B; realizar este cambio se UPDATE... utiliza el comando RELEASE SAVEPOINT. RELEASE SAVEPOINT B; COMMIT; L - 31 - L
  • 32. Ejemplo del comando SAVEPOINT HR=# BEGIN; BEGIN HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 270; UPDATE 1 HR=# SAVEPOINT A; SAVEPOINT HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 260; UPDATE 1 HR=# SAVEPOINT B; SAVEPOINT HR=# UPDATE departments SET location_id = 2500 WHERE department_id = 250; UPDATE 1 HR=# SELECT * FROM departments WHERE department_id IN (270, 260, 250); department_id | department_name | manager_id | location_id ---------------+-----------------+------------+------------- 270 | Payroll | | 2500 260 | Recruiting | | 2500 250 | Retail Sales | | 2500 (3 rows) HR=# RELEASE SAVEPOINT B; RELEASE HR=# ROLLBACK TO A; ROLLBACK department_id | department_name | manager_id | location_id ---------------+-----------------+------------+------------- 270 | Payroll | | 2500 260 | Recruiting | | 1700 250 | Retail Sales | | 1700 (3 rows) HR=# COMMIT; COMMIT L - 32 - L
  • 33. Resumen En esta lección, usted debió entender como: • Utilizar los comandos DML que permiten insertar o alterar los datos. • Eliminar el contenido de una tabla. • Manejo de las transacciones. L - 33 - L