PROGRAMA ACADÉMICO DE TECNOLOGÍAS DE LA INFORMACIÓN. Actividad Tutorial de comandos para transacciones



Documentos relacionados
Los DLL que permiten crear y definir nuevas bases de datos, campos e índices.

MANUAL BÁSICO DEL LENGUAJE SQL

Create Database ClaseAutos. Use ClaseAutos

La forma básica de la instrucción SELECT consta de tres cláusulas SELECT, FROM y WHERE (donde)

PROGRAMA ACADÉMICO DE TECNOLOGÍAS DE LA INFORMACIÓN. actividad Transacciones en MySQL. como requerimiento parcial para acreditar la asignatura de

Transacciones en SQL Server Autor: Cesar Manivesa (manivesa)

PROGRAMA ACADÉMICO DE TECNOLOGÍAS DE LA INFORMACIÓN. Actividad: Tutorial De Comandos De Transacciones. Bases De Datos.

Tema 4: Dinámica del Modelo Relacional. El lenguaje SQL

Consultas trabajadas en clase:

Sentencias complementarias + Disparadores

Modelamiento y Diseño de Base de Datos

Modulo I: Introducción Gestores de Bases De Datos

PROGRAMA ACADÉMICO DE TECNOLOGÍAS DE LA INFORMACIÓN MANUAL SINTAXIS DE LOS COMANDOS PARA UNA TRANSACCION BASES DE DATOS PARA APLICACIONES

Manual de Sentencias Básicas en SQL

SELECT listadecampos FROM nombredetablas WHERE condicionesdebúsqueda;

BASES DE DATOS AVANZADAS Transacciones en MYSQL

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

Características del lenguaje SQL

CONSULTAS BASICAS EN SQL SERVER

Recuperación del Sistema

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DML. Ing. Alfonso Vicente, PMP

BASES DE DATOS 2º CURSO E.U.I. / F.I. Práctica 4: Estudio del SGBD ORACLE8 1 Gestión de transacciones 22 DE MAYO DE 2000

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

Catedra de Base de Datos

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

Interacción con el Servidor Oracle8. Copyright Oracle Corporation, All rights reserved.

Bases de Datos Ejercicio Número 2 Bogotá, Diciembre 5 de 2013

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

Catedra de Base de Datos

GUÍA DE TRABAJO N 5 GRADO 11 Programación y Diseño de Articulación SENA Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

APÉNDICE D. INTRODUCCIÓN A SQL

Clase 4: SQL DDL DML Consultas Simples y Multitablas. BASE DE DATOS FAC.DE INGENIERIA - UNJu

Conceptos de Bases de Datos Relacionales Triggers

GUÍA DE TRABAJO N 7 GRADO 11. Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6 GUIA N 7 COMANDOS MYSQL II. CREAR UNA TABLA

PHP. Tipos de campo en MySql char(longitud): Cualquier carácter. El campo tendrá siempre la misma longitud. Máximo de 255 caracteres.

ESCUELA POLITÉCNICA SUPERIOR GRADO EN INGENIERÍA ELÉCTRICA INFORMÁTICA PRÁCTICA 11: BASES DE DATOS CON MS-ACCESS 2007

SQL SERVER SQL Server 2005 permite tres tipos de operaciones con conjuntos: UNION, disponible en todas las versiones de SQL Server.

LENGUAJE DE MANIPULACIÓN DE DATOS

Modelamiento y Gestión de Base de Datos

Uso de sentencias para el envió y extracción de datos

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

Diseña y Administra Bases de Datos Guía de Estudio

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

Modificación de datos

Oracle Database 11g: Conceptos Fundamentales de SQL y PL/SQL Nuevo

INSTITUTO POLITÉCNICO NACIONAL. ESCUELA SUPERIOR DE CÓMPUTO. WEB II. MySQL. Que el alumno aprenda a usar el servidor de base de datos MySql.

PROGRAMA ACADÉMICO DE TECNOLOGÍAS DE LA INFORMACIÓN. Actividad Tutorial de comandos de transacciones

Consideremos el siguiente ejemplo que crea y se inserta en las tablas que definen la identidad basada en la clave principal como un índice agrupado:

Capítulo 5. Edición de datos

Introducción al SQL de InterBase: DDL y DML

Insertar Datos en Tablas

SUBCONSULTAS SQL. Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta se ejecuta por cada fila de la consulta principal.

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

Introducción a Transact-SQL

Gestión de Transacciones: Concurrencia y Recuperación

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN

Oracle Database 10g: Conceptos Básicos de SQL y PL/SQL

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

Está basado en el álgebra y en el cálculo relacional.

Data source name: Nombre por el que se conocerá la conexión ODBC y que será usado en los distintos clientes del driver ODBC.

1. DML. Insertar datos

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

Práctica 4: Estudio del SGBD Oracle 10 Gestión de Transacciones

Transacciones en SQL. Lic. Gerardo Rossel

1. Se usará la Base de Datos llamada. 2. Borrar la tabla CtasBanc anterior y crearla: 5.1 Procedimientos y Funciones Almacenados SQL Server

departamento NUMBER(3) FK (DEPARTAMENTOS.CODIGO) salario NUMBER(3) NOT NULL fecha_alta DATE NOT NULL jefe NUMBER(5) FK (EMPLEADOS.

Transacciones en SQL. Bases de Datos

Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers

Bases de datos relacionales y SQL

Índice de contenido. Velneo ODBC Driver 20. Telf. (+34) velneo.es

Tema 1. Introducción a MySQL. José Muñoz Jimeno Octubre 2015

VISUALIZACIÓN DE DATOS A PARTIR DE VARIAS TABLAS

Bases de Datos 1. Teórico: Structured Query Language

Modificar estructura Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, etc.

Comandos DLL. Comandos DML

5.1 Procedimientos y Funciones Almacenados. 5.2 Disparadores (Triggers).

Examen de Bases de datos Grado de Ingeniería en Informática, Febrero, 2015

Disparadores (triggers)

ACTUALIZACIÓN DE DATOS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

PROCEDIMIENTOS ALMACENADOS

TRIGGER LEONEL CADOSO ROMERO 1

Tema 33. El lenguaje SQL

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

Motores de almacenamiento en MySQL 5.0 por Mario López y Juan A. Sánchez

Velneo ODBC Driver V7

Sistemas de Información II Tema 2. Sistemas gestores de bases de datos Bibliografía: Elmasri y Navathe: Fundamentos de Sistemas de Bases de Datos 3ª

Integridad referencial en MySQL

SQL (Structured Query Language)

INFORMÁTICA MÉDICA. Profesor: MsC. Liz Armenteros Chávez

Ambos conjuntos son completamente distintos: propósito, acciones,... L M D. datos

Oracle Database 12c SQL and PLSQL Fundamentals

Motores MySQL. José Manuel Gómez. Departamento de Lenguajes y Sistemas Informáticos

Manual Aprendiendo Practicando Oracle SQL (Spanish Edition) Click here if your download doesn"t start automatically

TEMA 4.. CONSULTA DE DATOS I.

Transcripción:

DEXCELENCIA UNIVERSITARIA, FORTALEZA E MEXICO I Z U C A R D E M ATA M O R O S PROGRAMA ACADÉMICO DE TECNOLOGÍAS DE LA INFORMACIÓN Actividad Tutorial de comandos para transacciones Como requerimiento parcial para Acreditar la asignatura de Base de Datos para Aplicaciones Que presentan: Alumno Marlizeth Caamaño Gutiérrez Juan Pablo Gamboa Pacheco Azucena Vivar Pallares Obdulia García Tecalero No. Control TI102931 TI102937 TI102916 TI102925 Asesor Lic. Gonzalo Rosas Cabrera Izúcar de Matamoros, Pué., 21 de febrero de 2011

1 RESUMEN Las transacciones aportan una fiabilidad superior a las bases de datos. Si disponemos de una serie de consultas SQL que deben ejecutarse en conjunto, con el uso de transacciones podemos tener la certeza de que nunca nos quedaremos a medio camino de su ejecución. De hecho, podríamos decir que las transacciones aportan una característica de "deshacer" a las aplicaciones de bases de datos.

2 DESARROLLO Definición El concepto transacción proporciona un mecanismo para describir las unidades lógicas del procesamiento de una base de datos. Los sistemas de procesamiento de transacciones son sistemas con grandes base de datos y cientos de usuarios concurrentes que están ejecutando transacciones de crédito, mercado de valores, cajas de supermercados y otros sistemas similares. Estos sistemas requieren una alta disponibilidad y buen tiempo de repuesta para cientos de usuarios concurrentes. Estados de transacciones y operaciones Una transacción es una unidad atómica de trabajo que se realiza por completo o bien no se efectúa en absoluto. Para fines de recuperación el sistema necesita mantenerse al tanto de cuando la transacción se inicia, termina y se confirma o aborta. Así pues, el gestor de recuperación se mantiene al tanto de las siguientes operaciones: BEGIN_TRANSACTION (Inicio_de_transacción): Esta marca el principio de la ejecución de la transacción. READ (leer) o WRITE (escribir): Éstas especifican operaciones de lectura o escritura de elementos de la base de datos que se ejecutan como parte de la transacción. END_TRANSACTION (fin_de_transacción): Ésta especifica que las operaciones de LEER o ESCRIBIR de la transacción han terminado y marca el fin de la ejecución de la transacción. COMMIT_TRANSACTION (confirmar_transacción): Ésta señala que la transacción terminó con éxito y que cualquier cambio (actualizaciones) ejecutado por ella se puede confirmar sin peligro en la base de datos y que no se deshará.

ROLLBACK (restaurar) o ABORT (abortar): Éstas señales indican que la transacción termino sin éxito y que cualquier cambio o efecto que pueda haberse aplicado a la base de datos se debe deshacer. Iniciar transacciones Puede iniciar las transacciones del Database Engine (Motor de base de datos) de SQL Server como explícita o de confirmación automática. Transacciones explícitas Inicie explícitamente una transacción ejecutando una instrucción BEGIN TRANSACTION. Transacciones auto confirmadas Se trata del modo predeterminado en SQL Server Compact Edition. Una transacción auto confirmado se inicia cuando se inicia la instrucción de la operación y se confirma cuando finaliza la instrucción. Finalizar transacciones Puede finalizar las transacciones con una instrucción COMMIT o ROLLBACK. COMMIT Una instrucción COMMIT garantiza que todas las modificaciones de la transacción se convierten en una parte permanente de la base de datos. Una instrucción COMMITtambién libera recursos utilizados por la transacción, por ejemplo bloqueos. ROLLBACK Si se produce un error en una transacción, o bien si el usuario decide cancelar la transacción, una instrucción ROLLBACK deshace la transacción. Una instrucción ROLLBACK deshace todas las modificaciones realizadas en la transacción devolviendo los datos al estado en el que se encontraban al iniciar la transacción. Una instrucción ROLLBACKtambién libera algunos recursos retenidos por la transacción.

Ordenar los registros Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la claúsula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. Ejemplo: SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre; Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre. Se pueden ordenar los registros por mas de un campo, como por ejemplo: SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal, Nombre; Incluso se puede especificar el orden de los registros: ascendente mediante la claúsula (ASC -se toma este valor por defecto) ó descendente (DESC) SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC, Nombre ASC; Consultas con Predicado El predicado se incluye entre la cláusula y el primer nombre del campo a recuperar, los posibles predicados son: Predicado ALL TOP DISTINCT DISTINCTROW Descripción Devuelve todos los campos de la tabla Devuelve un determinado número de registros de la tabla Omite los registros cuyos campos seleccionados coincidan totalmente Omite los registros duplicados basándose en la totalidad del registro y no sólo en los campos seleccionados.

ALL Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos selecciona todos los registros que cumplen las condiciones de la instrucción SQL. No se conveniente abusar de este predicado ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho más rápido indicar el listado de campos deseados. SELECT ALL FROM Empleados; SELECT * FROM Empleados; TOP Devuelve un cierto número de registros que entran entre al principio o al final de un rango especificado por una cláusula ORDER BY. Supongamos que queremos recuperar los nombres de los 25 primeros estudiantes del curso 1994: SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC; Si no se incluye la cláusula ORDER BY, la consulta devolverá un conjunto arbitrario de 25 registros de la tabla Estudiantes.El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media número 25 y la 26 son iguales, la consulta devolverá 26 registros. Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final de un rango especificado por la cláusula ORDER BY. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso: SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC; El valor que va a continuación de TOP debe ser un Integer sin signo.top no afecta a la posible actualización de la consulta. DISTINCT Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instrucción SELECT se incluyan en la consulta deben ser únicos. Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el mismo apellido. Si dos registros contienen López en el campo Apellido, la siguiente instrucción SQL devuelve un único registro: SELECT DISTINCT Apellido FROM Empleados; Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la cláusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por otros usuarios.

DISTINCTROW Devuelve los registros diferentes de una tabla; a diferencia del predicado anterior que sólo se fijaba en el contenido de los campos seleccionados, éste lo hace en el contenido del registro completo independientemente del campo indicado en la cláusula SELECT. SELECT DISTINCTROW Apellido FROM Empleados; Si la tabla empleados contiene dos registros: Antonio López y Marta López el ejemplo del predicado DISTINCT devuleve un único registro con el valor López en el campo Apellido ya que busca no duplicados en dicho campo. Este último ejemplo devuelve dos registros con el valor López en el apellido ya que se buscan no duplicados en el registro completo. Alias En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederíamos de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados; Recuperar Información de una base de Datos Externa Para concluir este capítulo se debe hacer referencia a la recuperación de registros de bases de datos externa. Es ocasiones es necesario la recuperación de información que se encuentra contenida en una tabla que no se encuentra en la base de datos que ejecutará la consulta o que en ese momento no se encuentra abierta, esta situación la podemos salvar con la palabra reservada IN de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados IN 'c:\databases\gestion.mdb'; En donde c:\databases\gestion.mdb es la base de datos que contiene la tabla Empleados. Ejemplo 1 Veremos un ejemplo completo, extraído del articulo fuente de esta publicación, donde utilizaremos START TRANSACTION (no es necesario AUTOCOMMIT en 0) CREATE TABLE `departamentos` ( `CODIGO` INTEGER (11) NOT NULL DEFAULT 0,

`NOMBRE` VARCHAR (100), `PRESUPUESTO` INTEGER (11) DEFAULT NULL, PRIMARY KEY (`CODIGO`) ) ENGINE=InnoDB Ahora, insertaremos registros de la tabla departamentos_externos a departamentos mediante una transacción: START TRANSACTION; SELECT @A:= presupuesto FROM departamentos_externos WHERE codigo =11; INSERT INTO departamentos(codigo, nombre, presupuesto) VALUES ( 11, Department test, @A ); COMMIT; Ejemplo 2 mysql> create table tabla (name char(20), unique(name)) engine = InnoDB; Query OK, 0 rows affected (0.01 sec) mysql> insert into tabla set name = 'primero'; Query OK, 1 row affected (0.01 sec) mysql> insert into tabla set name = 'segundo'; Query OK, 1 row affected (0.01 sec) mysql> start transaction; Query OK, 0 rows affected (0.00 sec)

mysql> insert into tabla set name = 'tercero'; Query OK, 1 row affected (0.00 sec) mysql> select * from tabla; +---------+ name +---------+ primero segundo tercero +---------+ 3 rows in set (0.00 sec) mysql> insert into tabla set name = 'segundo'; ERROR 1062 (23000): Duplicate entry 'segundo' for key 1 mysql> rollback; Query OK, 0 rows affected (0.01 sec) mysql> select * from tabla; +---------+ name +---------+ primero segundo +---------+ 2 rows in set (0.00 sec)

Ejemplo 3 UPDATE tablename SET pay_back=pay_back+125; UPDATE customer SET customer_date='current_date', address='new address', phone='new phone', money_owed_to_us=money_owed_to_us-125 WHERE customer_id=id AND address='old address' AND phone='old phone';

3 CONCLUSIONES Y RECOMENDACIONES La transacción más simple en SQL Server es una única sentencia SQL. Por ejemplo una sentencia como esta: UPDATE Products SET UnitPrice=20 WHERE ProductName ='Chai' Es una transacción. (Como siempre ejemplos de Northwind) Esta es una transacción 'autocommit', una transacción autocompletada. Cuando enviamos esta sentencia al SQL Server se escribe en el fichero de transacciones lo que va a ocurrir y a continuación realiza los cambios necesarios en la base de datos. Si hay algún tipo de problema al hacer esta operación el SQL Server puede leer en el fichero de transacciones lo que se estaba haciendo y si es necesario puede devolver la base de datos al estado en el que se encontraba antes de recibir la sentencia. Por supuesto este tipo de transacciones no requieren de nuestra intervención puesto que el sistema se encarga de todo. Sin embargo si hay que realizar varias operaciones y queremos que sean tratadas como una unidad tenemos que crear esas transacciones de manera explícita. Una transacción es un conjunto de operaciones tratadas como una sola. Este conjunto de operaciones debe marcarse como transacción para que todas las operaciones que la conforman tengan éxito o todas fracasen.

ERROR! NO SE ENCUENTRA EL ORIGEN DE LA REFERENCIA. Corporation, M. (2009). Libros en pantalla de SQL Server 2008. Microsoft. Elmasri, R. (2004). Fundamentos de Sistemas de Base de Datos. Madrid: Person Addison Wesley. ELMASRI, R. (2004). FUNDAMENTOS DE SISTEMAS DE BASE DE DATOS. MADRID: PERSON ADDISON WESLEY.