martes, 20 de noviembre de 2012

Procedimientos Almacenados y Disparadores(Trigger)

Procedimiento Almacenados


Un procedimiento es un subprograma que ejecuta una acción específica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.


   CREATE 

   PROCEDURE <nombre_procedure> [(<param1> [IN|OUT|IN OUT]     
                                 <type>, <param2> [IN|OUT|IN OUT]      
                                 <type>, ...)] 

   BEGIN 

             -- Sentencias
   END;



La lista de parámetros entre paréntesis debe estar siempre presente. Si no hay parámetros, se debe usar una lista de parámetros vacía ( ) . Cada parámetro es un parámetro IN por defecto. Para especificar otro tipo de parámetro, use la palabra clave OUT o INOUT antes del nombre del parámetro. Especificando IN, OUT, o INOUTsólo es valido para una PROCEDURE.

Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo.

Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.

Disparadores (Trigger)


Un disparador (o trigger) es un tipo especial de procedimiento almacenado asociado a una tabla que se ejecuta al realizar una operación “básica” (INSERT, un DELETE o un UPDATE) sobre ésta. La operación básica que despierta al trigger es conocida como sentencia disparadora.

La ejecución del disparador puede ser antes (before) o después (after) de llevar a cabo la sentencia disparadora. Es posible especificar condiciones adicionales para la ejecución del disparador (restrictores).

Los disparadores sea activan al crearlos.

     Eliminar un disparador:      DROP TRIGGER nombre_disparador;

     Activar/ Desactivar dispadores: Existen dos opciones.

      ALTER TRIGGER nombre_disparador {DISABLE | ENABLE};

      ALTER TABLE nombre_tabla {ENABLE | DISABLE} ALL TRIGGERS;



   Temporalidad del Evento:    AFTER / BEFORE

         BEFORE: Ejecutan la acción asociada antes de que la sentencia sea ejecutada

          CREATE TRIGGER NombreTrigger
          BEFORE Insert ON NombreTabla ….

          AFTER: Ejecutan la acción asociada después de que se haya ejecutado la sentencia

          CREATE TRIGGER NombreTrigger
          AFTER Insert ON NombreTabla


La sintaxis de un disparador es

       CREATE [OR REPLACE] TRIGGER nombre
         {BEFORE | AFTER } // Temporalidad del Evento
         {INSERT | DELETE | UPDATE} ON <tabla>
         [FOR EACH ROW] //Granularidad
       BEGIN
         cuerpo del trigger
       END

Cursores

¿Cuando Debemos Usar Un Cursor?


Los cursores se utilizan para manejar las sentencias SELECT. Un cursor esta formado por un conjunto de registros devueltos por una instrucción SQL del tipo SELECT. Desde un punto de visto interno a la base de datos, los cursores son segmentos de memoria utilizados para realizar operaciones con los registros devueltos tras ejecutar una sentencia SELECT.

¿Como Crear Y Llamar Un Proceso En Mysql?


Un procedimiento es un subprograma que ejecuta una acción específica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.


   CREATE 

   PROCEDURE <nombre_procedure> [(<param1> [IN|OUT|IN OUT]     
                                 <type>, <param2> [IN|OUT|IN OUT]      
                                 <type>, ...)] 

   BEGIN 

             -- Sentencias
   END;



La lista de parámetros entre paréntesis debe estar siempre presente. Si no hay parámetros, se debe usar una lista de parámetros vacía ( ) . Cada parámetro es un parámetro IN por defecto. Para especificar otro tipo de parámetro, use la palabra clave OUT o INOUT antes del nombre del parámetro. Especificando IN, OUT, o INOUTsólo es valido para una PROCEDURE.

Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo.

Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.

¿Como Crear Una Función?

Las variables en las funciones se declaran con la sentencia DECLARE, y se asignan valores con la sentencia SET. Esta variable es de ámbito local, y será destruida una vez finalice la función. Si se desea asignar un valor por defecto a la variable en el momento de declararla se puede utilizar la sentencia DEFAULT junto con la sentencia DECLARE. Aquí teneis el ejemplo:
       CREATE FUNCTION HolaMundo() RETURNS VARCHAR(30)
       BEGIN
         DECLARE salida1 VARCHAR(30) DEFAULT 'Hola';
         DECLARE salida2 VARCHAR(30);


         SET salida2 = ' mundo';
         RETURN CONCAT(salida1,salida2);
       END
;


Para crear función con parámetros:

      CREATE FUNCTION HolaMundo(entrada VARCHAR(30)) RETURNS             
      VARCHAR(30)

      BEGIN

        DECLARE salida VARCHAR(30);
        SET salida = entrada;
        RETURN salida;

     END;

Para llamar a esta función:

     SELECT HolaMundo('Hola Mundo');




miércoles, 31 de octubre de 2012

Unidad V Transacciones

¿Qué es una transacción? 


Se llama Transacción a una colección de operaciones que forman una unidad lógica de trabajo en una BD realizada por una o más sentencias SQL estrechamente relacionadas.

Una transacción es una unidad de la ejecución de un programa que lee y escribe datos a y desde la Base de Datos. Puede consistir en varias operaciones de acceso a la base de datos. Una Transacción está delimitada por instrucciones de inicio transacción y fin transacción.


¿Qué significa ACID? Y defina cada una de las palabras que forman las siglas

Una unidad lógica de trabajo debe exhibir cuatro propiedades, conocidas como propiedades ACID (atomicidad, coherencia, aislamiento y durabilidad), para ser calificada como transacción.


  • Atomicity: Una Transacción (Tx) se ejecuta completamente ó de otra manera se eliminan los cambios parciales realizados.
  • Coherencia: Asegura que los datos que observamos no cambian (por otros usuarios) hasta que acabemos la Transacción.
  • Aislamiento: Los efectos de una Tx no son visibles a otros usuarios mientras no se confirmen.
  • Durabilidad: Si el sistema falla no debe permitir que se pierdan las operaciones realizadas por Tx ya confirmadas.

¿Qué significa Tx?

Transacción

¿Para qué nos sirve el Rollback?

Señala el final sin éxito de una transacción, elimina todas las modificaciones de datos realizadas desde el inicio de la transacción y también libera los recursos que retiene la transacción. Su sintaxis es la siguiente: 

ROLLBACK [WORK] [TO SAVEPOINT nombrePuntoRestauración | FORCE 'texto']; 

Defina Integridad de datos

Es importante, al diseñar una base de datos y las tablas que contiene, tener en cuenta la integridad de los datos, esto significa que la información almacenada en las tablas debe ser válida, coherente y exacta. 

Defina concurrencia

El objetivo fundamental del control de concurrencia de base de datos es garantizar que la ejecución concurrente de transacciones no resulta en una pérdida de consistencia de la base de datos. 

La concurrencia se da cuando dos transacciones están interconectadas, lo que es común en un entorno multiusuario. Así pues en un entorno de multiprogramación es posible ejecutar varias transacciones de manera concurrente. 

Defina Grado de consistencia

Consistencia es un término más amplio que el de integridad. Podría definirse como la coherencia entre todos los datos de la base de datos. Cuando se pierde la integridad también se pierde la consistencia. Pero la consistencia también puede perderse por razones de funcionamiento. 

Mencione aspectos relacionados al procesamiento de transacciones

Los siguientes son los aspectos más importantes relacionados con el procesamiento de transacciones:

  • Modelo de estructura de transacciones. Es importante considerar si las transacciones son planas o pueden estar anidadas. 
  • Consistencia de la base de datos interna. Los algoritmos de control de datos semántico tienen que satisfacer siempre las restricciones de integridad cuando una transacción pretende hacer un commit. 
  • Protocolos de confiabilidad. En transacciones distribuidas es necesario introducir medios de comunicación entre los diferentes nodos de una red para garantizar la atomicidad y durabilidad de las transacciones. Así también, se requieren protocolos para la recuperación local y para efectuar los compromisos (commit) globales. 
  • Algoritmos de control de concurrencia. Los algoritmos de control de concurrencia deben sincronizar la ejecución de transacciones concurrentes bajo el criterio de correctitud. La consistencia entre transacciones se garantiza mediante el aislamiento de las mismas. 
  • Protocolos de control de réplicas. El control de réplicas se refiere a cómo garantizar la consistencia mutua de datos replicados. Por ejemplo se puede seguir la estrategia read-one-write-all (ROWA). 


Defina los estados de una transacción:


Activa (Active): el estado inicial; la transacción permanece en este estado durante su ejecución.

Parcialmente comprometida (Uncommited): Después de ejecutarse la última transacción.

Fallida (Failed): tras descubrir que no se puede continuar la ejecución normal.

Abortada (Rolled Back): después de haber retrocedido la transacción y restablecido la base de datos a su estado anterior al comienzo de la transacción.

Comprometida (Commited): tras completarse con éxito.

El estándar ANSI/ISO SQL define cuatro niveles de aislamiento transaccional en función de tres eventos que son permitidos o no dependiendo del nivel de aislamiento. Estos eventos son:

  • Lectura sucia. Las sentencias SELECT son ejecutadas sin realizar bloqueos, pero podría usarse una versión anterior de un registro. Por lo tanto, las lecturas no son consistentes al usar este nivel de aislamiento. 
  • Lectura no repetible. Una transacción vuelve a leer datos que previamente había leído y encuentra que han sido modificados o eliminados por una transacción cursada. 
  • Lectura fantasma. Una transacción vuelve a ejecutar una consulta, devolviendo un conjunto de registros que satisfacen una condición de búsqueda y encuentra que otros registro que satisfacen la condición han sido insertadas por otra transacción cursada.

miércoles, 24 de octubre de 2012

miércoles, 26 de septiembre de 2012

jueves, 20 de septiembre de 2012

domingo, 9 de septiembre de 2012

DROP Y ALTER

Drop

Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.

DROP TABLE 'NOMBRE_TABLA';



Alter

Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc.

ALTER TABLE 'NOMBRE_TABLA' ADD NUEVO_CAMPO INT UNSIGNED;

martes, 4 de septiembre de 2012

Tarea De Investigacion


Motor de Base de Datos 

El SQL Server Database Engine (Motor de base de datos de SQL Server) es el servicio principal para almacenar, procesar y proteger datos. El Motor de base de datos proporciona acceso controlado y procesamiento de transacciones rápido para cumplir con los requisitos de las aplicaciones consumidoras de datos más exigentes de su empresa.
El orden de los temas de la documentación del Motor de base de datos se corresponde con la secuencia principal de las tareas utilizadas para implementar un sistema que utiliza el Motor de base de datos para el almacenamiento de datos:
Diseñar y crear una base de datos que contenga las tablas relacionales o los documentos XML que el sistema necesita.
Implementar sistemas para obtener acceso y cambiar los datos almacenados en la base de datos, lo que incluye implementar los sitios Web o las aplicaciones que funcionan con los datos, así como crear procedimientos que utilicen las herramientas y utilidades de SQL Server para trabajar con los datos.
Aplicar los sistemas implementados en la organización o en los clientes.
Proporcionar soporte técnico administrativo diario para optimizar el rendimiento de la base de datos.


MyISAM

MyISAM es el motor de almacenamiento por defecto. Se basa en el código ISAM pero tiene muchas extensiones útiles.
Cada tabla MyISAM se almacena en disco en tres ficheros. Los ficheros tienen nombres que comienzan con el nombre de tabla y tienen una extensión para indicar el tipo de fichero. Un fichero .frm almacena la definición de tabla. El fichero de datos tiene una extensión .MYD (MYData). El fichero índice tiene una extensión .MYI(MYIndex) .

Las siguientes son algunas características del motor de almacenamiento MyISAM :


  • Todos los datos se almacenan con el byte menor primero.
  • Ficheros grandes (hasta longitud de 63 bits) se soportan en sistemas de ficheros y sistemas operativos que soportan ficheros grandes.
  • Registros de tamaño dinámico se fragmentan mucho menos cuando se mezclan borrados con actualizaciones e inserciones.
  • La longitud máxima de clave es 1000 bytes. Esto puede cambiarse recompilando. En caso de clave mayor a 250 bytes, se usa un tamaño de bloque mayor, de 1024 bytes.
  • Las columnas BLOB y TEXT pueden indexarse.
  • Valores NULL se permiten en columnas indexadas.

InnoDB
Es una tecnología de almacenamiento de datos de código abierto para la base de datos MySQL, incluido como formato de tabla estándar en todas las distribuciones deMySQL AB a partir de las versiones 4.0. Su característica principal es que soporta transacciones de tipo ACID y bloqueo de registros e integridad referencial. InnoDB ofrece una fiabilidad y consistencia muy superior a MyISAM, la anterior tecnología de tablas de MySQL, si bien el mejor rendimiento de uno u otro formato dependerán de la aplicación específica.



Transacciones tipo ACID

En bases de datos se denomina ACID a un conjunto de características necesarias para que una serie de instrucciones puedan ser consideradas como una transacción. Así pues, si un sistema de gestión de bases de datos es ACID compliant quiere decir que el mismo cuenta con las funcionalidades necesarias para que sus transacciones tengan las características ACID.
En concreto ACID es un acrónimo de Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en español.


  • Atomicidad: es la propiedad que asegura que la operación se ha realizado o no, y por lo tanto ante un fallo del sistema no puede quedar a medias.
  • Consistencia: Integridad. Es la propiedad que asegura que sólo se empieza aquello que se puede acabar. Por lo tanto se ejecutan aquellas operaciones que no van a romper las reglas y directrices de integridad de la base de datos. La propiedad de consistencia sostiene que cualquier transacción llevará a la base de datos desde un estado válido a otro también válido.
  • Aislamiento: es la propiedad que asegura que una operación no puede afectar a otras. Esto asegura que la realización de dos transacciones sobre la misma información sea independiente y no generen ningún tipo de error.
  • Durabilidad: es la propiedad que asegura que una vez realizada la operación, ésta persistirá y no se podrá deshacer aunque falle el sistema.
  • Cumpliendo estos 4 requisitos un sistema gestor de bases de datos puede ser considerado ACID Compliant.
 

 Diferencia Entre Innodb y Myisam


Ventajas de Innodb:
  • Soporte de transacciones
  • Bloqueo de registros
  • Nos permite tener las características ACID, garantizando la integridad de nuestras tablas.
  • Es probable que si nuestra aplicación hace un uso elevado de INSERT y UPDATE notemos un aumento de rendimiento con respecto a MyISAM.

Ventajas de Myisam
  • Mayor velocidad en general a la hora de recuperar datos.
  • Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT / UPDATE.
  • Ausencia de características de atomicidad ya que no tiene que hacer comprobaciones de la integridad referencial, ni bloquear las tablas para realizar las operaciones, esto nos lleva como los anteriores puntos a una mayor velocidad. 
 
 Como habilitar MyISAM e InnoDB en Mysql

Aquí se pueden habilitar en muchas plataformas como en un paquete todo en uno (xampp, wamp) o en tu instalacion personalizada de MySQL, o en HOSTING por medio de un FTP, bueno, dentro de MySQL, debemos dirigirnos a la carpeta MySQL y luego a la que dice bin. Normalmente aparece un icono en forma de computador llamado "My", lo debemos abrir con un bloc de notas, note pad o cualquier editor de texto, el que sea de nuestro gusto, y debemos buscar la línea que diga: skip-innodb, luego veremos en esa línea un";", se lo quitamos y guardamos la modificación. Es lo mismo con MyISAM. De esta forma lo habremos habilitado. Para mayor información pongo los links de referencia por si pasa algún suceso imprevisto: http://cambrico.net/mysql/habilitar-innodb-en-mysql