5
LA SENTENCIA JOIN La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno, externo, y cruzado. Todas las explicaciones que están a continuación utilizan las siguientes dos tablas para ilustrar el efecto de diferentes clases de uniones JOIN. Combinación interna (INNER JOIN): Con esta operación es calculado el producto cruzado de todos los registros; así cada registro en la tabla A es combinado con cada registro de la tabla B; pero sólo permanecen aquellos registros en la tabla combinada que satisfacen las condiciones que se especifiquen Las dos consultas siguientes son similares, y se realizan de manera explicita (A) e implícita (B). A. Ejemplo de la sentencia INNER JOIN explícita: SELECT * FROM empleado INNER JOIN departamento ON empleado.IDdepartamento = departamento.IDdepartamento B. Ejemplo de la sentencia INNER JOIN implícita: SELECT * FROM empleado, departamento WHERE empleado.IDdepartamento = departamento.IDDepartamento

Sql procedimientos-almacenados

Embed Size (px)

Citation preview

Page 1: Sql procedimientos-almacenados

LA SENTENCIA JOIN

La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno, externo, y cruzado.

Todas las explicaciones que están a continuación utilizan las siguientes dos tablas para ilustrar el efecto de diferentes clases de uniones JOIN.

Combinación interna (INNER JOIN):Con esta operación es calculado el producto cruzado de todos los registros; así cada registro en la tabla A es combinado con cada registro de la tabla B; pero sólo permanecen aquellos registros en la tabla combinada que satisfacen las condiciones que se especifiquenLas dos consultas siguientes son similares, y se realizan de manera explicita (A) e implícita (B).

A. Ejemplo de la sentencia INNER JOIN explícita:

SELECT * FROM empleado INNER JOIN departamento ON empleado.IDdepartamento = departamento.IDdepartamento

B. Ejemplo de la sentencia INNER JOIN implícita:

SELECT * FROM empleado, departamento WHERE empleado.IDdepartamento = departamento.IDDepartamento

Resultados:

Page 2: Sql procedimientos-almacenados

PROCEDIMIENTOS ALMACENADOS EN SQL SEVER 2000

Que Son Los Procedimientos Almacenados?

Un procedimiento almacenado (store procedure) es un programa (o procedimiento) el cual es almacenado físicamente en una base de datos. Generalmente son escritos en un lenguaje de bases de datos propietario como SQL.La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y solo necesita enviar sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes.

TIPOS DE PROCEDIMIENTOS ALMACENADOS

Procedimientos almacenados definidos por el usuario:o Los procedimientos almacenados son módulos o rutinas que encapsulan

código para su reutilización. Un procedimiento almacenado puede incluir parámetros de entrada, devolver resultados tabulares o escalares y mensajes para el cliente, invocar instrucciones de lenguaje de definición de datos (DDL) e instrucciones de lenguaje de manipulación de datos (DML), así como devolver parámetros de salida. En SQL Server 2008 existen dos tipos de procedimientos almacenados: Transact-SQL o CLR

Transact-SQLo Un procedimiento almacenado Transact-SQL es una colección guardada

de instrucciones Transact-SQL que puede tomar y devolver los parámetros proporcionados por el usuario. Por ejemplo, un procedimiento almacenado puede contener las instrucciones necesarias para insertar una nueva fila en una o más tablas según la información suministrada por la aplicación cliente o es posible que el procedimiento almacenado devuelva datos de la base de datos a la aplicación cliente. Por ejemplo, una aplicación Web de comercio electrónico puede utilizar un procedimiento almacenado para devolver información acerca de determinados productos en función de los criterios de búsqueda especificados por el usuario en línea.

CLR

o Un procedimiento almacenado CLR es una referencia a un método Common Language Runtime (CLR) de Microsoft .NET Framework que puede aceptar y devolver parámetros suministrados por el usuario. Se implementan como métodos públicos y estáticos en una clase de un ensamblado de .NET Framework.Para obtener más información, vea Procedimientos almacenados CLR (en inglés).

Page 3: Sql procedimientos-almacenados

Ejemplos: Procedimiento almacenado para guardar un nuevo cliente

Procedimiento almacenado para modificar un cliente

Procedimiento almacenado para eliminar un cliente

CREATE PROCEDURE spCliente_N@dniruc varchar(11),@compania varchar(20),@contacto varchar(30),@ciudad varchar(20),@direccion varchar(30),@telefono varchar(20),@email varchar(20),@usuario varchar(20),@clave varchar(20),@observacion varchar(50)as Insert into clientes values(@dniruc,@compania,@contacto,@ciudad,@direccion,@telefono,@email,@usuario,@clave,@observacion)GO

CREATE PROCEDURE spCliente_M@dniruc varchar(11),@compania varchar(20),@contacto varchar(30),@ciudad varchar(20),@direccion varchar(30),@telefono varchar(20),@email varchar(20),@usuario varchar(20),@clave varchar(20),@observacion varchar(50)as Update clientes set dniruc = @dniruc, compania = @compania, contacto = @contacto,ciudad = @ciudad, direccion = @direccion, telefono = @telefono, email = @email,usuario = @usuario, clave = @clave, observacion = @observacionwhere dniruc = @dnirucGO

CREATE PROCEDURE spCliente_E@dniruc char(11)as DELETE FROM clientes WHERE dniruc = @dnirucGO

Page 4: Sql procedimientos-almacenados

Procedimiento almacenado para buscar clientes

Procedimiento almacenado para buscar un producto ya sea por código y/o descripcion

EJECUTAR UN PROCEDIMIENTO ALMACENADO EN EL ANALIZADOR DE CONSULTAS DE SQL SERVER 2000

exec spCliente_N '12547854','flores srl',’arturo’,’pucallpa’,’sdsd’,’595959’, ‘[email protected]’,’sa’,’sa’,’xxx’

CREATE PROCEDURE spCliente_BCASSELECT * FROM clientes order by companiaGO

CREATE PROCEDURE spDInventario_CD@vcodprod char(10),@vdesP varchar(50)ASif @vcodprod ='' and @vdesP =''begin SELECT * from detalle_inv endif @vcodprod <>'' and @vdesP <>'' begin SELECT * from detalle_inv WHERE codprod= @vcodprod and des= @vdesP endif @vcodprod <>'' or @vdesP <>'' begin SELECT * from detalle_inv WHERE codprod= @vcodprod or des= @vdesP endGO