Manipulando Datos. y Transacciones



Documentos relacionados
Lenguaje de manipulación de datos

Creación y Gestión de Tablas. Copyright Oracle Corporation, All rights reserved.

Sub consultas avanzadas

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Nombre: 1. Selecciona todos los registros de la tabla EMPLOYEES. Anota el nº de filas obtenidas.

CONSULTAS BASICAS EN SQL SERVER

BASES DE DATOS AVANZADAS Transacciones en MYSQL

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

8 SQL SERVER 2008 RA-MA

SQL (Structured Query Language)

Tema 4. Manipulación de datos con SQL

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

Base de datos relacional

ÍNDICE PRIMERA PARTE... 17

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO IBEROTEC SEMESTRE ACADÉMICO: 2014-II SÍLABO

ADMINISTRACIÓN DE BASE DE DATOS

2071 Querying Microsoft SQL Server 2000 with Transact- SQL

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

Manipulación de Datos. Copyright Oracle Corporation, All rights reserved.

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.

5- Uso de sentencias avanzadas

CONCEPTOS DE PROCESAMIENTO DE TRANSACCIONES

Ataques a Aplicaciones de Bases de Datos

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

TEMA 4: El lenguaje SQL II: Introducción, modificación y borrado de datos.

Ing. Santiago C. Pérez Laura Noussan Lettry Carlos Campos

SQL Server FEMEPA SQL Server 2000

A.1. Definiciones de datos en SQL

Sintaxis: CURSOR nombre_cursor[(param1 [IN] tipo1,... )] IS consulta ;

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

SQL Los fundamentos del lenguaje

ÍNDICE INTRODUCCIÓN...13

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

LABORATORIO 10. Concurrencia y bloqueos en el SMBD Oracle

CURSO DE SQL SERVER 2005

Tema: Uso de sentencias SQL

Bases de Datos: Structured Query Language (SQL)

Bases de Datos 3º Informática de Sistemas

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

Descriptor del curso. Nombre del curso: Haciendo consultas en SQL Server Descripción:

INSTITUCIÓN EDUCATIVA GABRIEL GARCIA MÁRQUEZ BASE DE DATOS. DESARROLLO DE SOFTWARE Página 1 de 28 SQL SQL

Formato para prácticas de laboratorio

Referencia SQL en la versión de HUGOSQL White Paper por: HUGOSQL 2012

MANUALITO MS-SQL SERVER

Desarrollo Cobol/DB2

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

Software de Comunicaciones (2) Manual de Usuario Consola

Son objetos cuya función es el tratamiento de varios registros exclusivamente durante la ejecución de un programa.

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

Microsoft SQL Server 2005

Base de datos Lenguaje SQL

Oracle 12c DISEÑO Y PROGRAMACIÓN

MANUAL BÁSICO DEL LENGUAJE SQL

3 Consultas y subconsultas

1. DML. Las subconsultas

Consultas con combinaciones

UNIVERSIDAD NACIONAL FEDERICO VILLARREAL FACULTAD DE INGENIERÍA ELECTRÓNICA E INFORMÁTICA SÍLABO ASIGNATURA: TALLER DE BASE DE DATOS

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Procedimientos, Funciones, Trigger y Cursores en ORACLE

Modificación de datos

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

Herramientas de Gestión de Base de Datos Oracle. Lamine Delgado / NOSi Departamento de Base de Dados Lamine.delgado@nosi.cv

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

T12 Vistas y tablas temporales

SQL (Structured Query Language)- DML

Cómo abrir las bases de datos en Aspel-COI 6.0?

3. El catálogo 26. Laboratorio de Bases de Datos

Tema: Auditoria de Base de datos. Parte I

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS LABORATORIO DE BASES DE DATOS 1

TEMA 2.- EL SISTEMA GESTOR DE BASES DE DATOS.

Modificación de datos

SQL (DML) Carlos A. Olarte Gestión y Modelación de SQL Datos (DML)

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

DICCIONARIO DE DATOS

CREATE USER ADMINISTRADOR IDENTIFIED BY ADMIN DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 500K ON USERS;

Tema: Disparadores Parte I.

Nociones de performance

Administradores de Bases de Datos Studio.NET 2005 Y SQL Server Barrios

1

Bases de Datos Relacionales

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 6: Iniciación a SQL

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Sistemas de Datos Curso: Ernesto Chinkes. SQL Básico Algebra Relacional

Asignatura: Administración de Bases de Datos. Pedro P. Alarcón Cavero

Select table data Insert table data Update table data Delete table data Create table

Lenguaje de manipulación de datos

Tema: SUBCONSULTAS Y CREACION DE VISTAS.

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas

Tema: Auditoria de Base de datos. Objetivo Especifico

Bases de Datos 2. Teórico

Formatos para prácticas de laboratorio

OBJETIVOS METODOLOGÍA PROCEDIMIENTO 1.- Trabajo con el servidor de bases de datos Sybase

Principales rutinas de mantenimiento

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

Número de Práctica: 1 Nombre de la Práctica: Comunicación Cliente Servidor Vía Sockets Java con Sistema Manejador de Bases de Datos

ADMINISTRACION DE ORACLE 9i Guía de estudio (OCA) TEMA 1

Transcripción:

Autor: Nicola Strappazzon C. e-mail: nicola51980@gmail.com Blog: http://www.swapbytes.com/ Revisión: 17/11/11 8 Manipulando Datos Lección 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. 2L -

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. 3L -

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) 4L -

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 [,...]); 5L -

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. 6L -

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 7

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 8L -

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 9L -

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 10

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 11

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. 12

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) 13

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]; 14

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 15

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 16

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 17

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) 18

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; 19

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; 20

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 21

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; 22

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. 23

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

Usando el comando BEGIN y COMMIT Linea de tiempo BEGIN; INSERT INTO... UPDATE... UPDATE... DELETE... COMMIT; Se inicia un conjunto de transacciones mediante el comando BEGIN; Luego se procede a utilizar cualquier comando de tipo DML (INSERT, UPDATE y/o DELETE) para manipular los datos. Por ultimo, se finaliza las transacciones haciendo los cambios permanentes con el comando COMMIT;. 25

Ejemplo del comando BEGIN y COMMIT 26 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=#

Linea de tiempo Usando el comando ROLLBACK BEGIN; UPDATE... UPDATE... UPDATE... La ultima actualización que se realizo a generado un error inesperado o un resultado no deseado, para deshacer todos los cambios se utiliza el comando ROLLBACK. ERROR... ROLLBACK; 27

Ejemplo del comando ROLLBACK 28 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;

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

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 30

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

Ejemplo del comando SAVEPOINT 32 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

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. 33