Tipos de JOIN



Los JOINS en SQL sirven para combinar filas de dos o más tablas basándose en un campo común entre ellas, devolviendo por tanto datos de diferentes tablas. Un JOIN se produce cuando dos o más tablas se juntan en una sentencia SQL.

Existen más tipos de JOINS en SQL que los que aquí se explican, como CROSS JOIN, O SELF JOIN, pero no todos ellos están soportados por todos los sistemas de bases de datos. Los más importantes son los siguientes:
INNER JOIN: Devuelve todas las filas cuando hay al menos una coincidencia en ambas tablas.
LEFT JOIN: Devuelve todas las filas de la tabla de la izquierda, y las filas coincidentes de la tabla de la derecha.
RIGHT JOIN: Devuelve todas las filas de la tabla de la derecha, y las filas coincidentes de la tabla de la izquierda.
OUTER JOIN: Devuelve todas las filas de las dos tablas, la izquierda y la derecha. También se llamaFULL OUTER JOIN.


Procedimientos Almacenados

Un procedimiento almacenado de SQL es un procedimiento almacenado en el que el código fuente forma parte de la sentencia CREATE PROCEDURE. La parte de la sentencia CREATE PROCEDURE que contiene el código se denomina cuerpo del procedimiento almacenado.
Las definiciones de procedimientos almacenados de SQL proporcionan la siguiente información:
El nombre del procedimiento almacenado
Atributos de parámetros
El lenguaje en que se ha escrito el procedimiento almacenado. Para un procedimiento almacenado de SQL, el lenguaje es SQL
Información acerca del procedimiento almacenado de SQL que se utiliza cuando se llama al procedimiento almacenado. Esta información puede incluir opciones en tiempo de ejecución y si el procedimiento almacenado devuelve conjuntos de resultados

A diferencia de la sentencia CREATE PROCEDURE para un procedimiento almacenado externo, la sentencia CREATE PROCEDURE para un procedimiento almacenado de SQL no especifica la cláusula EXTERNAL. En cambio, un procedimiento almacenado de SQL tiene un cuerpo de procedimiento almacenado, que contiene las sentencias fuente del procedimiento almacenado.



Disparadores (Trigger)



Todos estaremos de acuerdo en que una de las cosas más importantes en todo negocio son los datos, ¿verdad?. Pues bien, imagine una base de datos sobre la que interactuan concurrentemente muchos usuarios a través de distintas aplicaciones, web o de escritorio. ¿Qué sucedería si una de estas aplicaciones gestionase los datos incorrectamente?.




Por ejemplo, imagine una aplicación de escritorio que interactua directamente a través de JDBC con la BD y que dicha aplicación usa la hora de la máquina del usuario como hora en la que se realizan las operaciones, ¿terrible, verdad?.. pues bien, estos y otros problemas pueden ser solucionados con mecanismos como los triggers o disparadores de BD (como veremos en los ejemplos).

Los triggers o disparadores son objetos de la base de datos que ejecutan acciones cuando se producen ciertos eventos (tanto DML como DDL) (inserciones, modificaciones, borrados, creación de tablas, etc).

A continuación y a modo de consulta os voy a mostrar un ejemplo de un Trigger DML que realiza las siguientes tareas:
Dada una tabla con información sobre “expedientes”, vamos a crear un Trigger que controle las modificaciones del “estado del expediente” de la siguiente manera:
Anotará en el campo “stateChangedDate” la fecha/hora en la que se produjo un cambio de estado.
A modo de histórico, insertará un registro en tabla “expStatusHistory” con información sobre los cambios de estado de cada expediente.

Fácil ¿verdad?, pues bueno, manos a la obra.

Comentarios