SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Vistas
Una vista es una consulta, que refleja el contenido de una o más tablas, desde la que se
puede acceder a los datos como si fuera una tabla.
También es una consulta especial que se emplea para registrar selecciones complejas o
que se usan frecuentemente.
Una vez creada la vista se puede realizar una selección de los datos como si fuera esta una
tabla e incluso se puede utilizar para definir procedimientos almacenados.
Dos son las principales razones por las que podemos crear vistas.
 Seguridad, nos pueden interesar que los usuarios tengan acceso a una parte de la
información que hay en una tabla, pero no a toda la tabla.
 Comodidad, como hemos dicho el modelo relacional no es el más cómodo para
visualizar los datos, lo que nos puede llevar a tener que escribir complejas
sentencias SQL, tener una vista nos simplifica esta tarea.
Las vistas no tienes una copia física de los datos, son consultas a los datos que hay en las
tablas, por lo que si actualizamos los datos de una vista, estamos actualizando realmente
la tabla, y si actualizamos la tabla estos cambios serán visibles desde la vista.
Nota: No siempre podremos actualizar los datos de una vista, dependerá de la
complejidad de la misma (dependerá de si el conjunto de resultados tiene acceso a la
clave principal de la tabla o no), y del gestor de la base de datos. No todos los gestores de
bases de datos permiten actualizar vistas, ORACLE, por ejemplo, no lo permite, mientas
que SQL Server sí.
Creaciónde vistas.
Para crear una vista debemos utilizar la sentencia CREATE VIEW, debiendo proporcionar
un nombre a la vista y una sentencia SQL SELECT valida.
CREATE VIEW <nombre_vista>
AS
(<sentencia_select>);
Ejemplo: Crear una vista sobre nuestra tabla alquileres, en la que se nos muestra el
nombre y apellidos del cliente en lugar de su código.
CREATE VIEW vAlquileres
AS
(
SELECT nombre, apellidos, matricula
FROM tAlquileres, tClientes
WHERE (tAlquileres.codigo_cliente = tClientes.codigo)
)
Si quieres modificar la definición de nuestra vista podemos utilizar la sentencia ALTER
VIEW, de forma muy parecida a como lo hacíamos con las tablas. En este caso queremos
añadir los campos fx_alquiler y fx_devolucion a la vista.
ALTER VIEW vAlquileres
AS
(
SELECT nombre, apellidos, matricula, fx_alquiler, fx_devolucion
FROM tAlquileres, tClientes
WHERE ( tAlquileres.codigo_cliente = tClientes.codigo )
)
Por ultimo podemos eliminar la vista a través de la sentencia DROP VIEW. Para eliminar la
vista que hemos creado anteriormente se utilizaría:
DROP VIEW vAlquileres:
Una vista se consulta como si fuera una tabla.
EJEMPLOS DE VISTAS
USE NORTHWIND GO
--Creación De vista Proveedores y sus pedidos
CREATE VIEW VIEW_SUPPLIER_PRODUCS
AS
(
SELECT S.SUPPLIERD,S.COMPANYNAME,S.CONTACTNAME
,P.PRODUCTID, P.PRODUCTNAME, P.UNITPRICE FROM SUPPLIERS AS INNER JOIN
PRODUCTS AS P ON S.SUPPLIERID=P.SUPPLIERRID GO
--CREACION DE UNA VISTA CON INSTRUCCION GROUP
CREATE VIEW VIEW_SUBTOTALES(CODIGO_ORDEN, SUB_TOTAL)
AS
SELECT OD.ORDERID,SUM(CONVERT(MONEY,(OD.UNITPRICE* QUANTITY*(1-
DISCOUNT)/100))*100) FROM[ORDER DETAILS] OD GROUP BY OD.ORDERID
GO
--LLAMAR A LA CONSULTA ANTERIOR
SELECT* FROMVIEW_SUBTOTALES
--VER VISTAS
SELECT*FROMINFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='VIEW'
--BORRAR UNA VISTA
DROP VIEW VIEW_SUBTOTALES
--ALTERAR UNA VISTA
ALTER VIEW VIEW_SUPPLIER_PRODUCS AS
EJEMPLOS VARIOS DE VISTAS Y EJECUCION DE ESTAS:
1. Crear una vista que liste 3 campos de clientes
Créate view v_listaclientes
as
select IdCliente,NombreCompañia,Pais from Clientes
go
Nota: para ejecutar la vista se hace lo siguiente
select * from v_listaclientes
go
2. Crear una vista que muestre el subtotal de los pedidos
Créate view v_subtotal
as
select IdPedido, SUM(d.PrecioUnidad * Cantidad * (1-d.Descuento)) as Subtotal
from DetallesDepedidos d
inner join Productos p
on d.IdProducto=p.IdProducto
group by IdPedido
go
select*from v_subtotal
go
3. Crear una vista que liste NombreProducto, NombreCategoria, PrecioUnidad,
Suspendido
Créate view v_productos
As
Select NombreProducto,Nombrecategoria,PrecioUnidad,Suspendido from
Producto p inner join Categorias c on p.IdCategoria = c.IdCategoria
go
4. Utilizando la vista anterior, crear una vista que muestre el total de productos x
categoría
créate view total_prodxcateg
as
select NombreCategoria.COUNT(*)as Totalprodxcateg from v_productos
group by NombreCategoria
select * from total_prodxcateg
5. Crear un vista que nos devuelva la cantidad de pedidos que tiene cada empleado
en los años 94,95 y 96
create view v_cant_pedidos
as
select Nombre,(Select COUNT (*)from v_empleado e where e.Nombre=c.Nombre
and YEAR(FechaPedido)=1994) as Año_1994,
(select COUNT(*)from v_empleado e where e.Nombre=c.Nombre and
YEAR(FechaPedido)=1995)as Año_1995,
(select COUNT(*)from v_empleado e where e.Nombre=c.Nombre and
YEAR(FechaPedido)=1996)as Año_1996
from v_empleado c
group by Nombre
select * from v_cant_pedidos
6. Crear una vista que presente el total de pedidos que tiene cada compañía de
envió
create view v_totalpedidos
as
select NombreCompañia,COUNT(*)as Total _Pedidos from v_compañia
group by NombreCompañia
go
select * from v_totalpedido
Funciones
Una función es una rutina almacenada que recibe unos parámetros escalares de entrada,
luego los procesa según el cuerpo definido de la función y por ultimo retorna en un
resultado de un tipo específico que permitirá cumplir un objetivo.
Las funciones definidas por el usuario en SQL Server permiten retornar tablas en los
resultados. Esta característica brinda al programador facilitar a la hora de administrar sus
bases de datos.
Funciones Escalares en SQLServer
Las funciones escalares son aquellas que reciben parámetros de entrada para ser
procesados y al final retornar en un tipo de dato sencillo. Cuando hablo de sencillo me
refiero a tipos de datos elementales como INT, FLOAT, VARCHAR, etc.
SQL Server no permite que las funciones escalares retornen en los tipos text, ntext, image,
cursor y timestamp. Al igual que MySQL, usaremos la palabra reservada RETURNS para
indicar el tipo de datos en el cual retornara la función. El cuerpo de la función escalar está
contenido en un bloque de instrucciones como en los procedimientos.
Veamos la sintaxis de creación:
CREATE FUNCTION nombre_funcion ([parametro1, parametro2,…])
RETURNS tipo_de_datos
[WITH ENCRYPTION I WITH SCHEMABINDING]
[AS]
BEGIN<bloque_de_instrucciones>
RETURN valor_retornado
END
Ejemplo de una función escalar de una aerolínea
A continuación veremos un enunciado que debe ser solucionado con la creación de una
función escalar. El problema esta basado en una base de datos de una aerolinea. Observa:
Averigue cuantas veces ha viajado un pasajero en un lapso de tiempo. Use la identificación
de pasajero para consultar dicha información. En cuanto al lapso de tiempo, especifique
una fecha de inicio y una fecha final.
CREATE FUNCTION cuanto_ha_viajado(@idpasajero INT,@fecha_final DATE, @fecha_final
DATE)
RETURNS INT
AS
BEGIN
DECLARE @cantidad_ocaciones INT;
SELECT @cantidad_ocasiones=COUNT(a.idpasajero)
FROM Aerolinea.Boleto AS a
WHERE a.idpasajero=@idpasajero AND (fecha_compra BETWEEN @fecha_inicio AND
@fecha_final);
IF (@cantidad_ocasiones IS NULL)
SET @cantidad_ocasiones=0;
RETURN @cantidad_ocasiones;
END
Funciones con valores de tabla en línea
Este tipo de funciones tiene la misma sintaxis que una función escalar, la única diferencia
está en que retorna un tipo de dato TABLE, es decir, una tabla compuesta de registros.
Veamos la variación de la sintaxis:
CREATE FUNCTION nombre_funcion ([parametro1, parametro2,…])
RETURNS TABLE
[WITH ENCRYPTION I WITH SCHEMABINDING])
[AS]
RETURN (consulta_SELECT)
Las funciones que retornan tablas son muy útiles cuando tenemos consultas que tengan
JOINS debido a la reducción de complejidad
Ejemplo de funciones de tabla sobre tienda digital
Supongo que tenemos una base de datos comercial de una tienda digital que vende
Hardware. Esta basase de datos tiene la famosa relación entre clientes, pedidos y
artículos. El requerimiento dice así:
Consulte todas las compras realizadas de un producto específico. Use el código del
producto para generar los resultados y muestre el nombre del cliente que compro ese
producto, la fecha en que se compró, el precio que tiene en ese momento y la cantidad
comprada.
CREATE FUNCTION ventas_producto(@idproducto INT)
RETURNS TABLE
AS
RETURN(
SELECT C.NOMBRE, F.FECHA, DF.CANTIDAD, DF.PRECIO, P.IDPRODUCTO
FROM
CLIENTE AS C JOIN FACTURA AS F ON C.IDCLIENTE=F.IDCLIENTE
JOIN DETALLEFACTURA AS DF ON DF.IDFACTURA=F.IDFACTURA
JOIN PRODUCTO AS P ON P.IDPRODUCTO=DF.IDPRODUCTO
WHERE P.IDPRODUCTO=@idproducto)
La anterior función retorna en una tabla que representa todas las compras de un producto
realizadas hasta el momento por los clientes. Ahora podemos realizar consultas sobre esta
tabla, por ejemplo, si quisiéramos sumar el total de todas las ventas del artículo con
código 1003, podríamos hacer la siguiente consulta:
SELECT SUM(CANTIDAD*PRECIO) FROM ventas_producto(1003)
Con esa función la base de datos de nuestra tienda virtual de hardware ganara velocidad
de cálculo, además de ahorrar tiempo para los desarrolladores y administradores
FUNCIONES CON VALORES DE TABLA Y MULTIPLES INSTRUCCIONES
Este tipo de funciones son similares a las funciones de tabla en línea, solo que incluyen un
bloque de sentencias para manipular la información antes de retornar la tabla. Su sintaxis
de creación es la siguiente:
CREATE FUNCTION nombre_funcion([parametro1, parametro2,…])
RETURNS @variable_tabla TABLE(nombre_columna tipo,…)
[WITH ENCRYPTION I WITH SCHEMABINDING]
[AS]
BEGIN
<bloque de instruciones>
RETURN
END
La anterior definición parametriza la variable de tipo TABLE en que retornara la función. Es
decir, definiéremos cómo será su estructura antes de retornarla. Así que debemos
especificar cada parámetro y su tipo.
Ejemplo de funciones con múltiples instrucciones
ENUNCIADO
Muestre todos los registros de la tabla EMPLEADO que tenga un salario mayor o igual a un
valor establecido como parámetro. Además de ello conviene en un solo campo el nombre
y apellido del empleado y agregue un nuevo atributo que muestre la cantidad de días que
lleva el empleado desde su fecha de ingreso.
CREATE FUNCTION reporte1_empleados(@salarioemp INT)
RETURNS @tabla TABLE(
IDEMPLEADO INT PRIMARY KEY NOT NULL IDENTITY,
NOMBRE VARCHAR(200) NOT NULL,
SALARIO INT NOT NULL,
DIASLABORANDO INT NOT NULL)
AS
BEGIN
INSERT @tabla
SELECT E.NONBRE+''+E.APELLIDO, E.SALARIO,DATEDIFF(DAY,
E.FECHA_INGRESO,GETDATE())
FROM EMPLEADO AS E
WHERE E.SALARIO >=@salarioemp;
RETURN;
END
Con la anterior función retornamos en una ventana tabla personalizada como lo pedía el
enunciado. Nota que antes de escribir el bloque de instrucciones hemos definido una
variable tipo TABLE con una estructura de 4 columnas. Esta definición se parece mucho a
la sintaxis CREATE TABLE para crear tablas. Y al final insertamos los datos con el formato
que se pidió.
Si queremos ver que registros tiene la tabla retornada por la función, solo realizamos una
consulta de la siguiente forma.
SELECT*FROMreporte1_empleados(1000);
Modificar una función definida por el usuario en SQL Server:
Para modificar una función debes usar ALTER FUNCTION. Este comando te permite
cambiar absolutamente toda la sintaxis de la función. Veamos como modificamos una
función escalar que antes tomaba dos números para una suma y ahora deseamos que
tome tres parámetros. Además queremos que proteja el esquema de la base de datos.
ALTER FUNCTION suma (@a int, @b int, @c int)
RETURNS INT
WITH SCHEMABINDING
BEGIN
RETURN @a+@b+@c;
END;
Borrar Una Función Definida Por El Usuario En Sql Server
Elimina una función definida por el usuario con la famosa sentencia DROP. Mira como
borramos una función que pronostica la cantidad de huéspedes futuros de un hotel.
DROP FUNCTION pronostico_anual _huespedes;
Procedimientos
Los procedimientos almacenados son un conjunto de instrucciones SQL mas una serie de
estructuras de control que nos permite dotar de cierta lógica la procedimiento. Estos
procedimientos están guardados en el servidor y pueden ser accedidos a través de llamas,
como veremos más adelante.
Para crear un procedimento, MySQL nos ofrece la dirección CREATE PROCEDURE y para
funciones CREATE FUNCTION al crearlo este es ligado o relacionado con la base de datos
que se está usando, tal como cuando creamos una tabla, para llamar a un procedimiento
lo hacemos mediante la instrucción CALL. Desde un procedimiento podemos invocar a su
vez a otros procedimientos o funciones.
Algunas situaciones en que los procedimientos almacenados pueden ser particularmente
útiles:
 Cuando múltiples aplicaciones cliente en distintos lenguajes o funcionan en
distintas plataformas, pero necesitan realizar la misma operación en la base de
datos.
 Cuando la seguridad es muy importante. Los bancos por ejemplo usan
procedimientos almacenados para todas las operaciones comunes.
Los parámetros almacenados pueden mejorar el rendimiento ya que se necesita enviar
memos información entre el servidor y el cliente. El intercambio que hay es que aumenta
la carga del servidor de la base de datos ya que la mayoría del trabajo se realiza en la
parte del servidor y no en el cliente.
Este procedimiento tiene como objetivo listar la provisión de gratificación para cada
empleado según el periodo ingresado.
CRITERIOS A EVALUAR:
Calcular la gratificación en base al periodo ingresado y la fecha de ingreso del empleado.
CARACTERISTICAS:
NOMBRE: SP_ProvisionGratificacion
PARAMETRO: tiene dos parámetros de entrada y 5 parametros de salida
Entrada:
 AÑO de tipo varchar con tamaño 4
 MES de tipo varchar con tamaño
Salida:
 EMPLEADO es el nombre del empleado
 SUELDO es la importante de remuneración mensual del empleado
 GRATIFICACION es el importe equivalente a los días trabajados por
el empleado
 MES DE INGRESO es el número de mes en el que ingreso el
empleado
 AÑO INGRESO es el año en que ingreso el empleado
FUNCIONES Y CONDICIONES UTILIZADAS
 CONCAT
 FORMAT
 ROUND
 IF
Procedimiento
CREATE PROCEDURE SP_ProvisionGratificacion(IN anio VARCHAR (4), in mes VARCHAR(2))
SELECT
CONCAT(e.NomEmp,' ',e.ApeEmp)EMPLEADO, FORMAT(e.sueldo,2) SUELDO,
FORMAT(ROUND(IF(YEAR(e.FechaIngEmp)=anio,
IF(mes <6,if(MONTH(e.FechaIngEmp)<6,(e.sueldo/6)*(6-
MONTH(e.FechaIngEmo)),e.sueldo).
IF(MONTH(e.FechaIngEmp)>6,(e.sueldo/6)*(12-
MONTH(e.FechaIngEmp)),e.sueldo)),E.sueldo)2),2)GRATIFICACION,
MONTH(e.FechaIngEmp) 'MES INGRESO', YEAR(e.FechaIngEmp)'AÑO INGRESO'
FROM empleado e;
TRIGGERS
Los Triggers o Disparadores son objetos que se asocian con tablas y se almacenan en la
base de datos. Su nombre se deriva por el comportamiento que presentan en su
funcionamiento, ya que se ejecutan cuando sucede algún evento sobre las tablas a las que
se encuentra asociado. Los eventos que hacen que se ejecute un trigger son las
operaciones de inserción (INSERT), borrado (DELETE) o actualización (UPDATE), ya que
modifican los datos de una tabla.
La utilidad principal de un trigger es mejorar la administración de la base de datos, ya que
no requieren que un usuario los ejecute. Por lo tanto, son empleados para implementar
las REGLAS DE NEGOCIO (tipo especial de integridad) de una base de datos. Una Regla de
Negocio es cualquier restricción, requerimiento, necesidad o actividad especial que debe
ser verificada al momento de intentar agregar, borrar o actualizar la información de una
base de datos. Un trigger puede prevenir errores en los datos, modificar valores de una
vista, sincronizar tablas, entre otros. EJEMPLO:
Crear un Trigger para insertar un pedido de algún producto cuando la cantidad de éste, en
nuestro almacén, sea inferior a un valor dado.
CREATE TRIGGER TR_ARTICULO ON ARTICULOS AFTER UPDATE AS BEGIN INSERT INTO
HCO_ARTICULO (IDARTICULO, STOCK, FECHA) SELECT ID_ARTICULO, STOCK, GETDATE()
FROM INSERTED END
INSERT INTO ARTICULOS VALUES (1, 'MEMORIA', 12, '12/03/2014')
SELECT * FROM ARTICULOS
UPDATE ARTICULOS SET STOCK = STOCK - 20 WHERE ID_ARTICULO = 1
SELECT * FROM HCO_ARTICULO
Vistas (1)

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Consultas Resumen
Consultas ResumenConsultas Resumen
Consultas Resumen
 
7.1. procedimientos almacenados
7.1.  procedimientos almacenados7.1.  procedimientos almacenados
7.1. procedimientos almacenados
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)
 
Sql dml & tcl 2
Sql   dml & tcl 2Sql   dml & tcl 2
Sql dml & tcl 2
 
Indexes and Indexing in Oracle 12c
Indexes and Indexing in Oracle 12cIndexes and Indexing in Oracle 12c
Indexes and Indexing in Oracle 12c
 
8.ejercicios SQL access
8.ejercicios SQL access8.ejercicios SQL access
8.ejercicios SQL access
 
8. sql
8. sql8. sql
8. sql
 
oracle Sql constraint
oracle  Sql constraint oracle  Sql constraint
oracle Sql constraint
 
7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona
 
SQL - DML and DDL Commands
SQL - DML and DDL CommandsSQL - DML and DDL Commands
SQL - DML and DDL Commands
 
Database basics
Database basicsDatabase basics
Database basics
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Oracle Database Trigger
Oracle Database TriggerOracle Database Trigger
Oracle Database Trigger
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
 
SQL Queries
SQL QueriesSQL Queries
SQL Queries
 
Prolog
Prolog Prolog
Prolog
 
Seguridad sql server
Seguridad sql serverSeguridad sql server
Seguridad sql server
 
SQL : introduction
SQL : introductionSQL : introduction
SQL : introduction
 
Back Tracking
Back TrackingBack Tracking
Back Tracking
 
TRIGGERS
TRIGGERSTRIGGERS
TRIGGERS
 

Andere mochten auch

Makalah pernikahan dan walimatul usry
Makalah pernikahan dan walimatul usryMakalah pernikahan dan walimatul usry
Makalah pernikahan dan walimatul usryAhayiwinaningsih
 
Island identity project 2
Island identity project   2Island identity project   2
Island identity project 2Hassan Ishfaq
 
приказна во слики ловецот диме и лисицата
приказна во слики ловецот диме и лисицатаприказна во слики ловецот диме и лисицата
приказна во слики ловецот диме и лисицатаbrane71
 
ракописни букви ш ч
ракописни букви ш чракописни букви ш ч
ракописни букви ш чbrane71
 
едноцифрени и двоцифрени броеви 1
едноцифрени и двоцифрени броеви 1едноцифрени и двоцифрени броеви 1
едноцифрени и двоцифрени броеви 1brane71
 
велигденска песна
велигденска песнавелигденска песна
велигденска песнаbrane71
 
ликовно образование за Iv одд 2015 16
ликовно образование за Iv одд  2015 16ликовно образование за Iv одд  2015 16
ликовно образование за Iv одд 2015 16brane71
 
бајка за лебедот
бајка за лебедотбајка за лебедот
бајка за лебедотbrane71
 
одземање на броевите до 20 со премин 17 8
одземање на броевите до 20 со премин 17 8одземање на броевите до 20 со премин 17 8
одземање на броевите до 20 со премин 17 8brane71
 
Znaci na zivot 22
Znaci na zivot 22Znaci na zivot 22
Znaci na zivot 22brane71
 
BasavarajPatil_Java_Agile_PM
BasavarajPatil_Java_Agile_PMBasavarajPatil_Java_Agile_PM
BasavarajPatil_Java_Agile_PMBasavaraj Patil
 
одземање на броевите до 20 со премин 14 5
одземање на броевите до 20 со премин 14 5одземање на броевите до 20 со премин 14 5
одземање на броевите до 20 со премин 14 5brane71
 
одземање на броевите до 20 со премин 15 6
одземање на броевите до 20 со премин 15 6одземање на броевите до 20 со премин 15 6
одземање на броевите до 20 со премин 15 6brane71
 
Ley 1620 del 15 de marzo de 2013
Ley 1620 del 15 de marzo de 2013Ley 1620 del 15 de marzo de 2013
Ley 1620 del 15 de marzo de 2013aahumadas
 
бик и зајак
бик и зајакбик и зајак
бик и зајакbrane71
 
собирање и одземање 16+4 20 4
собирање и одземање 16+4 20 4собирање и одземање 16+4 20 4
собирање и одземање 16+4 20 4brane71
 

Andere mochten auch (20)

Makalah pernikahan dan walimatul usry
Makalah pernikahan dan walimatul usryMakalah pernikahan dan walimatul usry
Makalah pernikahan dan walimatul usry
 
Island identity project 2
Island identity project   2Island identity project   2
Island identity project 2
 
приказна во слики ловецот диме и лисицата
приказна во слики ловецот диме и лисицатаприказна во слики ловецот диме и лисицата
приказна во слики ловецот диме и лисицата
 
ракописни букви ш ч
ракописни букви ш чракописни букви ш ч
ракописни букви ш ч
 
едноцифрени и двоцифрени броеви 1
едноцифрени и двоцифрени броеви 1едноцифрени и двоцифрени броеви 1
едноцифрени и двоцифрени броеви 1
 
Al-Qur'an Hadits
Al-Qur'an HaditsAl-Qur'an Hadits
Al-Qur'an Hadits
 
Moje marzenie
Moje marzenieMoje marzenie
Moje marzenie
 
велигденска песна
велигденска песнавелигденска песна
велигденска песна
 
ликовно образование за Iv одд 2015 16
ликовно образование за Iv одд  2015 16ликовно образование за Iv одд  2015 16
ликовно образование за Iv одд 2015 16
 
бајка за лебедот
бајка за лебедотбајка за лебедот
бајка за лебедот
 
одземање на броевите до 20 со премин 17 8
одземање на броевите до 20 со премин 17 8одземање на броевите до 20 со премин 17 8
одземање на броевите до 20 со премин 17 8
 
Znaci na zivot 22
Znaci na zivot 22Znaci na zivot 22
Znaci na zivot 22
 
BasavarajPatil_Java_Agile_PM
BasavarajPatil_Java_Agile_PMBasavarajPatil_Java_Agile_PM
BasavarajPatil_Java_Agile_PM
 
одземање на броевите до 20 со премин 14 5
одземање на броевите до 20 со премин 14 5одземање на броевите до 20 со премин 14 5
одземање на броевите до 20 со премин 14 5
 
одземање на броевите до 20 со премин 15 6
одземање на броевите до 20 со премин 15 6одземање на броевите до 20 со премин 15 6
одземање на броевите до 20 со премин 15 6
 
Republica francesa
Republica francesaRepublica francesa
Republica francesa
 
Ley 1620 del 15 de marzo de 2013
Ley 1620 del 15 de marzo de 2013Ley 1620 del 15 de marzo de 2013
Ley 1620 del 15 de marzo de 2013
 
Anil PR -CV
Anil PR -CVAnil PR -CV
Anil PR -CV
 
бик и зајак
бик и зајакбик и зајак
бик и зајак
 
собирање и одземање 16+4 20 4
собирање и одземање 16+4 20 4собирање и одземање 16+4 20 4
собирање и одземање 16+4 20 4
 

Ähnlich wie Vistas (1)

Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Universidad Nacional de Piura
 
Base de-datos-ii
Base de-datos-iiBase de-datos-ii
Base de-datos-iiLuis Carmen
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005pabloesp
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenadosguesta403644
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenadosguesta403644
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos AlmacenadosRafa
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sqltec lerdo
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My SqlZiscko
 
Vistas en sql_y_my_sql
Vistas en sql_y_my_sqlVistas en sql_y_my_sql
Vistas en sql_y_my_sqlguest737e3012
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sqlitsl
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.SILVA19_PAMELA
 

Ähnlich wie Vistas (1) (20)

Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
 
Base de-datos-ii
Base de-datos-iiBase de-datos-ii
Base de-datos-ii
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005
 
Tarea bd
Tarea bdTarea bd
Tarea bd
 
Vistas base de datos
Vistas base de datosVistas base de datos
Vistas base de datos
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sql
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sql
 
Vistas en sql_y_my_sql
Vistas en sql_y_my_sqlVistas en sql_y_my_sql
Vistas en sql_y_my_sql
 
Vistas en sql_y_my_sql
Vistas en sql_y_my_sqlVistas en sql_y_my_sql
Vistas en sql_y_my_sql
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sql
 
Vistas
VistasVistas
Vistas
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Funciones+sql+server
Funciones+sql+serverFunciones+sql+server
Funciones+sql+server
 
Vistas
VistasVistas
Vistas
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.
 
OBJETO SQLCOMMAND.
OBJETO SQLCOMMAND.OBJETO SQLCOMMAND.
OBJETO SQLCOMMAND.
 

Kürzlich hochgeladen

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Kürzlich hochgeladen (10)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Vistas (1)

  • 1. Vistas Una vista es una consulta, que refleja el contenido de una o más tablas, desde la que se puede acceder a los datos como si fuera una tabla. También es una consulta especial que se emplea para registrar selecciones complejas o que se usan frecuentemente. Una vez creada la vista se puede realizar una selección de los datos como si fuera esta una tabla e incluso se puede utilizar para definir procedimientos almacenados. Dos son las principales razones por las que podemos crear vistas.  Seguridad, nos pueden interesar que los usuarios tengan acceso a una parte de la información que hay en una tabla, pero no a toda la tabla.  Comodidad, como hemos dicho el modelo relacional no es el más cómodo para visualizar los datos, lo que nos puede llevar a tener que escribir complejas sentencias SQL, tener una vista nos simplifica esta tarea. Las vistas no tienes una copia física de los datos, son consultas a los datos que hay en las tablas, por lo que si actualizamos los datos de una vista, estamos actualizando realmente la tabla, y si actualizamos la tabla estos cambios serán visibles desde la vista. Nota: No siempre podremos actualizar los datos de una vista, dependerá de la complejidad de la misma (dependerá de si el conjunto de resultados tiene acceso a la clave principal de la tabla o no), y del gestor de la base de datos. No todos los gestores de bases de datos permiten actualizar vistas, ORACLE, por ejemplo, no lo permite, mientas que SQL Server sí. Creaciónde vistas. Para crear una vista debemos utilizar la sentencia CREATE VIEW, debiendo proporcionar un nombre a la vista y una sentencia SQL SELECT valida. CREATE VIEW <nombre_vista> AS (<sentencia_select>); Ejemplo: Crear una vista sobre nuestra tabla alquileres, en la que se nos muestra el nombre y apellidos del cliente en lugar de su código. CREATE VIEW vAlquileres AS ( SELECT nombre, apellidos, matricula
  • 2. FROM tAlquileres, tClientes WHERE (tAlquileres.codigo_cliente = tClientes.codigo) ) Si quieres modificar la definición de nuestra vista podemos utilizar la sentencia ALTER VIEW, de forma muy parecida a como lo hacíamos con las tablas. En este caso queremos añadir los campos fx_alquiler y fx_devolucion a la vista. ALTER VIEW vAlquileres AS ( SELECT nombre, apellidos, matricula, fx_alquiler, fx_devolucion FROM tAlquileres, tClientes WHERE ( tAlquileres.codigo_cliente = tClientes.codigo ) ) Por ultimo podemos eliminar la vista a través de la sentencia DROP VIEW. Para eliminar la vista que hemos creado anteriormente se utilizaría: DROP VIEW vAlquileres: Una vista se consulta como si fuera una tabla. EJEMPLOS DE VISTAS USE NORTHWIND GO --Creación De vista Proveedores y sus pedidos CREATE VIEW VIEW_SUPPLIER_PRODUCS AS ( SELECT S.SUPPLIERD,S.COMPANYNAME,S.CONTACTNAME ,P.PRODUCTID, P.PRODUCTNAME, P.UNITPRICE FROM SUPPLIERS AS INNER JOIN PRODUCTS AS P ON S.SUPPLIERID=P.SUPPLIERRID GO --CREACION DE UNA VISTA CON INSTRUCCION GROUP CREATE VIEW VIEW_SUBTOTALES(CODIGO_ORDEN, SUB_TOTAL) AS
  • 3. SELECT OD.ORDERID,SUM(CONVERT(MONEY,(OD.UNITPRICE* QUANTITY*(1- DISCOUNT)/100))*100) FROM[ORDER DETAILS] OD GROUP BY OD.ORDERID GO --LLAMAR A LA CONSULTA ANTERIOR SELECT* FROMVIEW_SUBTOTALES --VER VISTAS SELECT*FROMINFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='VIEW' --BORRAR UNA VISTA DROP VIEW VIEW_SUBTOTALES --ALTERAR UNA VISTA ALTER VIEW VIEW_SUPPLIER_PRODUCS AS EJEMPLOS VARIOS DE VISTAS Y EJECUCION DE ESTAS: 1. Crear una vista que liste 3 campos de clientes Créate view v_listaclientes as select IdCliente,NombreCompañia,Pais from Clientes go Nota: para ejecutar la vista se hace lo siguiente select * from v_listaclientes go 2. Crear una vista que muestre el subtotal de los pedidos Créate view v_subtotal as select IdPedido, SUM(d.PrecioUnidad * Cantidad * (1-d.Descuento)) as Subtotal from DetallesDepedidos d inner join Productos p on d.IdProducto=p.IdProducto group by IdPedido go select*from v_subtotal go
  • 4. 3. Crear una vista que liste NombreProducto, NombreCategoria, PrecioUnidad, Suspendido Créate view v_productos As Select NombreProducto,Nombrecategoria,PrecioUnidad,Suspendido from Producto p inner join Categorias c on p.IdCategoria = c.IdCategoria go 4. Utilizando la vista anterior, crear una vista que muestre el total de productos x categoría créate view total_prodxcateg as select NombreCategoria.COUNT(*)as Totalprodxcateg from v_productos group by NombreCategoria select * from total_prodxcateg 5. Crear un vista que nos devuelva la cantidad de pedidos que tiene cada empleado en los años 94,95 y 96 create view v_cant_pedidos as select Nombre,(Select COUNT (*)from v_empleado e where e.Nombre=c.Nombre and YEAR(FechaPedido)=1994) as Año_1994, (select COUNT(*)from v_empleado e where e.Nombre=c.Nombre and YEAR(FechaPedido)=1995)as Año_1995, (select COUNT(*)from v_empleado e where e.Nombre=c.Nombre and YEAR(FechaPedido)=1996)as Año_1996 from v_empleado c group by Nombre select * from v_cant_pedidos 6. Crear una vista que presente el total de pedidos que tiene cada compañía de envió create view v_totalpedidos as select NombreCompañia,COUNT(*)as Total _Pedidos from v_compañia group by NombreCompañia go select * from v_totalpedido
  • 5. Funciones Una función es una rutina almacenada que recibe unos parámetros escalares de entrada, luego los procesa según el cuerpo definido de la función y por ultimo retorna en un resultado de un tipo específico que permitirá cumplir un objetivo. Las funciones definidas por el usuario en SQL Server permiten retornar tablas en los resultados. Esta característica brinda al programador facilitar a la hora de administrar sus bases de datos. Funciones Escalares en SQLServer Las funciones escalares son aquellas que reciben parámetros de entrada para ser procesados y al final retornar en un tipo de dato sencillo. Cuando hablo de sencillo me refiero a tipos de datos elementales como INT, FLOAT, VARCHAR, etc. SQL Server no permite que las funciones escalares retornen en los tipos text, ntext, image, cursor y timestamp. Al igual que MySQL, usaremos la palabra reservada RETURNS para indicar el tipo de datos en el cual retornara la función. El cuerpo de la función escalar está contenido en un bloque de instrucciones como en los procedimientos. Veamos la sintaxis de creación: CREATE FUNCTION nombre_funcion ([parametro1, parametro2,…]) RETURNS tipo_de_datos [WITH ENCRYPTION I WITH SCHEMABINDING] [AS] BEGIN<bloque_de_instrucciones> RETURN valor_retornado END Ejemplo de una función escalar de una aerolínea A continuación veremos un enunciado que debe ser solucionado con la creación de una función escalar. El problema esta basado en una base de datos de una aerolinea. Observa: Averigue cuantas veces ha viajado un pasajero en un lapso de tiempo. Use la identificación de pasajero para consultar dicha información. En cuanto al lapso de tiempo, especifique una fecha de inicio y una fecha final. CREATE FUNCTION cuanto_ha_viajado(@idpasajero INT,@fecha_final DATE, @fecha_final DATE) RETURNS INT
  • 6. AS BEGIN DECLARE @cantidad_ocaciones INT; SELECT @cantidad_ocasiones=COUNT(a.idpasajero) FROM Aerolinea.Boleto AS a WHERE a.idpasajero=@idpasajero AND (fecha_compra BETWEEN @fecha_inicio AND @fecha_final); IF (@cantidad_ocasiones IS NULL) SET @cantidad_ocasiones=0; RETURN @cantidad_ocasiones; END Funciones con valores de tabla en línea Este tipo de funciones tiene la misma sintaxis que una función escalar, la única diferencia está en que retorna un tipo de dato TABLE, es decir, una tabla compuesta de registros. Veamos la variación de la sintaxis: CREATE FUNCTION nombre_funcion ([parametro1, parametro2,…]) RETURNS TABLE [WITH ENCRYPTION I WITH SCHEMABINDING]) [AS] RETURN (consulta_SELECT) Las funciones que retornan tablas son muy útiles cuando tenemos consultas que tengan JOINS debido a la reducción de complejidad Ejemplo de funciones de tabla sobre tienda digital Supongo que tenemos una base de datos comercial de una tienda digital que vende Hardware. Esta basase de datos tiene la famosa relación entre clientes, pedidos y artículos. El requerimiento dice así: Consulte todas las compras realizadas de un producto específico. Use el código del producto para generar los resultados y muestre el nombre del cliente que compro ese producto, la fecha en que se compró, el precio que tiene en ese momento y la cantidad comprada.
  • 7. CREATE FUNCTION ventas_producto(@idproducto INT) RETURNS TABLE AS RETURN( SELECT C.NOMBRE, F.FECHA, DF.CANTIDAD, DF.PRECIO, P.IDPRODUCTO FROM CLIENTE AS C JOIN FACTURA AS F ON C.IDCLIENTE=F.IDCLIENTE JOIN DETALLEFACTURA AS DF ON DF.IDFACTURA=F.IDFACTURA JOIN PRODUCTO AS P ON P.IDPRODUCTO=DF.IDPRODUCTO WHERE P.IDPRODUCTO=@idproducto) La anterior función retorna en una tabla que representa todas las compras de un producto realizadas hasta el momento por los clientes. Ahora podemos realizar consultas sobre esta tabla, por ejemplo, si quisiéramos sumar el total de todas las ventas del artículo con código 1003, podríamos hacer la siguiente consulta: SELECT SUM(CANTIDAD*PRECIO) FROM ventas_producto(1003) Con esa función la base de datos de nuestra tienda virtual de hardware ganara velocidad de cálculo, además de ahorrar tiempo para los desarrolladores y administradores FUNCIONES CON VALORES DE TABLA Y MULTIPLES INSTRUCCIONES Este tipo de funciones son similares a las funciones de tabla en línea, solo que incluyen un bloque de sentencias para manipular la información antes de retornar la tabla. Su sintaxis de creación es la siguiente: CREATE FUNCTION nombre_funcion([parametro1, parametro2,…]) RETURNS @variable_tabla TABLE(nombre_columna tipo,…) [WITH ENCRYPTION I WITH SCHEMABINDING] [AS] BEGIN <bloque de instruciones> RETURN END La anterior definición parametriza la variable de tipo TABLE en que retornara la función. Es decir, definiéremos cómo será su estructura antes de retornarla. Así que debemos especificar cada parámetro y su tipo.
  • 8. Ejemplo de funciones con múltiples instrucciones ENUNCIADO Muestre todos los registros de la tabla EMPLEADO que tenga un salario mayor o igual a un valor establecido como parámetro. Además de ello conviene en un solo campo el nombre y apellido del empleado y agregue un nuevo atributo que muestre la cantidad de días que lleva el empleado desde su fecha de ingreso. CREATE FUNCTION reporte1_empleados(@salarioemp INT) RETURNS @tabla TABLE( IDEMPLEADO INT PRIMARY KEY NOT NULL IDENTITY, NOMBRE VARCHAR(200) NOT NULL, SALARIO INT NOT NULL, DIASLABORANDO INT NOT NULL) AS BEGIN INSERT @tabla SELECT E.NONBRE+''+E.APELLIDO, E.SALARIO,DATEDIFF(DAY, E.FECHA_INGRESO,GETDATE()) FROM EMPLEADO AS E WHERE E.SALARIO >=@salarioemp; RETURN; END Con la anterior función retornamos en una ventana tabla personalizada como lo pedía el enunciado. Nota que antes de escribir el bloque de instrucciones hemos definido una variable tipo TABLE con una estructura de 4 columnas. Esta definición se parece mucho a la sintaxis CREATE TABLE para crear tablas. Y al final insertamos los datos con el formato que se pidió. Si queremos ver que registros tiene la tabla retornada por la función, solo realizamos una consulta de la siguiente forma. SELECT*FROMreporte1_empleados(1000); Modificar una función definida por el usuario en SQL Server: Para modificar una función debes usar ALTER FUNCTION. Este comando te permite cambiar absolutamente toda la sintaxis de la función. Veamos como modificamos una
  • 9. función escalar que antes tomaba dos números para una suma y ahora deseamos que tome tres parámetros. Además queremos que proteja el esquema de la base de datos. ALTER FUNCTION suma (@a int, @b int, @c int) RETURNS INT WITH SCHEMABINDING BEGIN RETURN @a+@b+@c; END; Borrar Una Función Definida Por El Usuario En Sql Server Elimina una función definida por el usuario con la famosa sentencia DROP. Mira como borramos una función que pronostica la cantidad de huéspedes futuros de un hotel. DROP FUNCTION pronostico_anual _huespedes; Procedimientos Los procedimientos almacenados son un conjunto de instrucciones SQL mas una serie de estructuras de control que nos permite dotar de cierta lógica la procedimiento. Estos procedimientos están guardados en el servidor y pueden ser accedidos a través de llamas, como veremos más adelante. Para crear un procedimento, MySQL nos ofrece la dirección CREATE PROCEDURE y para funciones CREATE FUNCTION al crearlo este es ligado o relacionado con la base de datos que se está usando, tal como cuando creamos una tabla, para llamar a un procedimiento lo hacemos mediante la instrucción CALL. Desde un procedimiento podemos invocar a su vez a otros procedimientos o funciones. Algunas situaciones en que los procedimientos almacenados pueden ser particularmente útiles:  Cuando múltiples aplicaciones cliente en distintos lenguajes o funcionan en distintas plataformas, pero necesitan realizar la misma operación en la base de datos.  Cuando la seguridad es muy importante. Los bancos por ejemplo usan procedimientos almacenados para todas las operaciones comunes. Los parámetros almacenados pueden mejorar el rendimiento ya que se necesita enviar memos información entre el servidor y el cliente. El intercambio que hay es que aumenta
  • 10. la carga del servidor de la base de datos ya que la mayoría del trabajo se realiza en la parte del servidor y no en el cliente. Este procedimiento tiene como objetivo listar la provisión de gratificación para cada empleado según el periodo ingresado. CRITERIOS A EVALUAR: Calcular la gratificación en base al periodo ingresado y la fecha de ingreso del empleado. CARACTERISTICAS: NOMBRE: SP_ProvisionGratificacion PARAMETRO: tiene dos parámetros de entrada y 5 parametros de salida Entrada:  AÑO de tipo varchar con tamaño 4  MES de tipo varchar con tamaño Salida:  EMPLEADO es el nombre del empleado  SUELDO es la importante de remuneración mensual del empleado  GRATIFICACION es el importe equivalente a los días trabajados por el empleado  MES DE INGRESO es el número de mes en el que ingreso el empleado  AÑO INGRESO es el año en que ingreso el empleado FUNCIONES Y CONDICIONES UTILIZADAS  CONCAT  FORMAT  ROUND  IF Procedimiento CREATE PROCEDURE SP_ProvisionGratificacion(IN anio VARCHAR (4), in mes VARCHAR(2)) SELECT
  • 11. CONCAT(e.NomEmp,' ',e.ApeEmp)EMPLEADO, FORMAT(e.sueldo,2) SUELDO, FORMAT(ROUND(IF(YEAR(e.FechaIngEmp)=anio, IF(mes <6,if(MONTH(e.FechaIngEmp)<6,(e.sueldo/6)*(6- MONTH(e.FechaIngEmo)),e.sueldo). IF(MONTH(e.FechaIngEmp)>6,(e.sueldo/6)*(12- MONTH(e.FechaIngEmp)),e.sueldo)),E.sueldo)2),2)GRATIFICACION, MONTH(e.FechaIngEmp) 'MES INGRESO', YEAR(e.FechaIngEmp)'AÑO INGRESO' FROM empleado e; TRIGGERS Los Triggers o Disparadores son objetos que se asocian con tablas y se almacenan en la base de datos. Su nombre se deriva por el comportamiento que presentan en su funcionamiento, ya que se ejecutan cuando sucede algún evento sobre las tablas a las que se encuentra asociado. Los eventos que hacen que se ejecute un trigger son las operaciones de inserción (INSERT), borrado (DELETE) o actualización (UPDATE), ya que modifican los datos de una tabla. La utilidad principal de un trigger es mejorar la administración de la base de datos, ya que no requieren que un usuario los ejecute. Por lo tanto, son empleados para implementar las REGLAS DE NEGOCIO (tipo especial de integridad) de una base de datos. Una Regla de Negocio es cualquier restricción, requerimiento, necesidad o actividad especial que debe ser verificada al momento de intentar agregar, borrar o actualizar la información de una base de datos. Un trigger puede prevenir errores en los datos, modificar valores de una vista, sincronizar tablas, entre otros. EJEMPLO: Crear un Trigger para insertar un pedido de algún producto cuando la cantidad de éste, en nuestro almacén, sea inferior a un valor dado. CREATE TRIGGER TR_ARTICULO ON ARTICULOS AFTER UPDATE AS BEGIN INSERT INTO HCO_ARTICULO (IDARTICULO, STOCK, FECHA) SELECT ID_ARTICULO, STOCK, GETDATE() FROM INSERTED END INSERT INTO ARTICULOS VALUES (1, 'MEMORIA', 12, '12/03/2014') SELECT * FROM ARTICULOS UPDATE ARTICULOS SET STOCK = STOCK - 20 WHERE ID_ARTICULO = 1 SELECT * FROM HCO_ARTICULO