Diseño e Implementación de Bases de Datos



Documentos relacionados
Tema: Procedimientos almacenados y cursores. Facultad : Ingeniería Escuela : Computación Asignatura: SQL SERVER. GUÍA 2 Pág. 1

3ra. Parte. Bases de Datos Relacionales

6. PROGRAMACIÓN CON TRANSACT-SQL

Bases de Datos: Structured Query Language (SQL)

MANUALITO MS-SQL SERVER

Tema: PROCEDIMIENTOS ALMACENADOS.

Formato para prácticas de laboratorio

Bases de Datos Relacionales

Bases de Datos / Elementos de Bases de Datos 2015

Bases de Datos / Elementos de Bases de Datos Que es un Stored Procedure? Stored Procedures: Ventajas

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

CURSO TRANSACT SQL MANUAL TÉCNICO CURSO TRANSACT SQL MANUAL TÉCNICO 1

Manipulando Datos. y Transacciones

Formato para prácticas de laboratorio

BASE DE DATOS TIPOS DE DATOS, VARIABLES, OPERADORES Y CONTROLES EN SQL SERVER

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Programación SQL. Lucio Salgado Diciembre 2008

PL/SQL. DECLARE /* Parte Declarativa */ BEGIN /* Parte de Ejecución */ EXCEPTION /* Parte de Excepciones */ END;

ÍNDICE INTRODUCCIÓN...13

Programación con SQL Server

Tema 4. SQL. Juan Ignacio Rodríguez de León

8283: Administración y programación en Microsoft SQL Server 2012

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo:

Laboratorio Informix. Stored Procedures Triggers

Índice. iii. Objetivos... 24

GALA MODELO CLIENTE SERVIDOR SQL SERVER MANAGEMENT STUDIO SERVIDOR SQL BASES DE DATOS. Introducción. Describir SQL Server (L1)

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008

Programación con SQL Server

Implementación de funciones definidas por el usuario

Procedimientos, Funciones, Trigger y Cursores en ORACLE

Administradores de Bases de Datos Studio.NET 2005 Y SQL Server Barrios

El Lenguaje PL/SQL. Un lenguaje de propósito general orientado a la inclusión de sentencias SQL. Estructura del código PL/SQL.

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h

Recuperación del Sistema

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

SQL (Structured Query Language)

Cursores, Triggers, Indices, Transacciones, Vistas Gestión y Modelación de Datos

Implementación de funciones definidas por el usuario

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

Administración y programación de Bases de Datos con SQL Server 2005

Introducción al SQL embebido

Bases de Datos 2. Teórico

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

ADMINISTRACIÓN DE BASE DE DATOS

m046a Curso Consultando SQL Server 2005/2008 con Transact-SQL, 15 h

SQL Server SQL, Transact SQL Diseño y creación de una base de datos

DESCRIPCIÓN ESPECÍFICA NÚCLEO: Núcleo Sector Comercio y Servicios.

Base de datos Procedimientos Almacenados y Funciones

ÍNDICE PRIMERA PARTE... 17

Introducción a Transact-SQL

Desarrollo Cobol/DB2

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

SQL (Structured Query Language)- DML

ST31_Querying Microsoft SQL Server

Capítulo 8. Construcción de guiones

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Administración Base de Datos SQL

Tema: Disparadores Parte I.

SQL Server SQL, Transact SQL Diseño y creación de una base de datos (con ejercicios prácticos corregidos)

Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers

DESCRIPCIÓN ESPECÍFICA

ADMINISTRACION DE BASES DE DATOS EN ORACLE

Conceptos Avanzados de Bases de datos

SQL Los fundamentos del lenguaje

APÉNDICE SQL (Structures Query Language)

Diseño de bases de datos

PL/PGSQL. Extensión "procedural" de SQL

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

Curso SQL Nivel Avanzado 1. Miguel Jurado García

PROCEDIMIENTOS ALMACENADOS. CREATE PROCEDURE nombreprocedimiento tipodato [=valordefecto]][,...]

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS E INFORMÁTICA

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

Enlaces relacionados:

mysql Departamento de Lenguajes y Computación Universidad de Almería mysql Contenidos

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

SQL. Orígenes y Evolución

Base de datos relacional

Base de Datos Oracle: desarrollo de aplicaciones

Capítulo 1: Modelo conceptual

MS_20461 Querying Microsoft SQL Server

Temario. Índices simples Árboles B Hashing

Funciones y TriggersIntroducción, Ejemplos

DISPARADORES EN SQL DISPARADORES EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999

E16 - Diseño de Sistemas de Bases de Datos Boletín 3

UNIDAD DE TRABAJO 3: PROGRAMACIÓN DE BASES DE DATOS TEMA 8: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN

Restricciones de Integridad

SQL EMBEBIDO FELIPE GARCÍA GÓMEZ

SQL. (...la guía básica de supervivencia de dmi) Universidad de los Andes Demián Gutierrez Enero

FIREBIRD: SQL PROCEDIMENTAL (PSQL)

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

Transcripción:

Universidad Tecnológica Equinoccial Facultad de Ciencias de la Ingeniería Departamento de Informática Diseño e Implementación de Bases de Datos Segundo Semestre 2011-2012 Prof. Diego Ordóñez Camacho, Ph.D.

Implementación Avanzada T-SQL Transact SQL Lenguaje declarativo Definimos qué hacer, mas que cómo hacer Ej. lenguaje imperativo Una función que ordena una lista Ej. T-SQL...ORDER BY...

Subsets de (T-)SQL Query SELECT DML: Data Manipulation Language INSERT, UPDATE, DELETE, MERGE DDL: Data Definition Language CREATE, ALTER, DROP DCL: Data Control Language GRANT, REVOKE TCL: Transactional Control Language BEGIN TRANSACTION, COMMIT, ROLLBACK

Referencia Coles, Michael Pro T-SQL 2008 Programmer s Guide Capítulo 2 Páginas 26-34

MERGE Es una instrucción compuesta que puede efectuar INSERT, UPDATE, DELETE Dependiendo de la existencia de registros que cumplan un cierto criterio ( match ) Modifica registros en una tabla target Basado en los registros existentes en una tabla source Generalmente utilizado para diferenciar entre UPDATE e INSERT ( upsert ) Ej: sincronizar dos tablas

...MERGE MERGE table AS target USING table2 AS source ON condition/expression WHEN MATCHED THEN UPDATE SET expression DELETE -----------

...MERGE WHEN NOT MATCHED BY TARGET THEN INSERT(fields) VALUES(values) WHEN NOT MATCHED BY TARGET AND condition THEN INSERT(fields) VALUES(values)

...MERGE WHEN NOT MATCHED BY SOURCE THEN UPDATE SET expression DELETE WHEN NOT MATCHED BY SOURCE AND condition THEN UPDATE SET expression DELETE

Referencia Coles, Michael Pro T-SQL 2008 Programmer s Guide Capítulo 4 Páginas 81-113

Lógica de 3 valores (SQL 3VL) En lógica booleana 1 < 2 ==> true 1 = 2 ==> false X > 2???? unknown NULL representa unknown

Comparaciones con NULL @x = NULL ==> unknown Nombre = NULL ==> unknown Nombre <> NULL ==> unknown @x IS NULL ==> true false Nombre IS NOT NULL ==> true false

Control de flujo BEGIN... END IF... ELSE WHILE... GOTO...

BEGIN... END Bloque de instrucciones Ej: Equivale a {... } (en Java o C, por ej.) BEGIN DECLARE @j int = 10; END PRINT @j;

...BEGIN... END

IF... ELSE Condicional Ej: DECLARE @i int = NULL; IF @i = 10 PRINT 'TRUE.'; ELSE IF NOT (@i = 10) PRINT 'FALSE.'; ELSE PRINT 'UNKNOWN.';

WHILE Iteración Ej: DECLARE @i int = 1; WHILE @i <= 10 BEGIN PRINT @i; SET @i = @i + 1; END

CONTINUE Pasar a la siguiente iteración Ej: DECLARE @i int = 1; WHILE @i <= 10 BEGIN PRINT @i; SET @i = @i + 1; CONTINUE; -- Force the WHILE loop to restart PRINT 'The CONTINUE keyword ensures that this will never be printed.'; END

BREAK Terminar la iteración Ej: DECLARE @i int = 1; WHILE @i <= 10 BEGIN PRINT @i; SET @i = @i + 1; BREAK; -- Force the WHILE loop to terminate PRINT 'The BREAK keyword ensures that this will never be printed.'; END

GOTO Transferencia del control a un punto específico Ej: PRINT 'Step 1 Begin.'; GOTO Step3_Label; PRINT 'Step 2 will not be printed.'; Step3_Label: PRINT 'Step 3 End.';

WAITFOR Espera un período de tiempo Ej: DECLARE @time_to_pass nvarchar(8); SET @time_to_pass = N'00:00:03'; WAITFOR DELAY @time_to_pass; PRINT 'Step 2 completed three seconds later. '; DECLARE @time_absolute nvarchar(8); SET @time_absolute = N'12:30:00'; WAITFOR TIME @time_absolute; PRINT 'Step 2 completed at twelve thirty. ';

RETURN Finaliza un procedimiento o función inmediatamente Opcionalmente puede devolver un valor Entero 0 significa finalización normal (sin error) Si no se especifica, 0 se devuelve por default Cualquier valor diferente de cero se considera un error

TRY... CATCH Captura y maneja un error de manera estructurada Si cualquier instrucción dentro del bloque TRY genera un error El control pasa inmediatamente al bloque CATCH Solo un bloque CATCH es permitido Los bloques TRY... CATCH pueden estar anidados

Ej:... TRY... CATCH BEGIN TRY INSERT INTO Person.Contact( ContactID, FirstName, LastName ) VALUES (10, 'Joe', 'Louis'); END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS "@Number", ERROR_STATE() AS "@State", ERROR_SEVERITY() AS "@Severity", ERROR_MESSAGE() AS "Message", ERROR_LINE() AS "Procedure/@Line", ERROR_PROCEDURE() AS "Procedure" FOR XML PATH('Error'); END CATCH

... TRY... CATCH

... TRY... CATCH Mensajes/funciones de error ERROR_NUMBER() (@@ERROR) Código del error ERROR_SEVERITY() Número entre 0 y 25 que indica el tipo de error 0 10: mensajes de información 11 16: errores que pueden ser corregidos por el usuario 17 25: errores graves que requieren intervención del dba ERROR_STATE() Número entre 1 y 127 que indica la fuente del error

... TRY... CATCH Mensajes/funciones de error ERROR_PROCEDURE() Nombre del procedimiento o función donde ocurrió el error ERROR_LINE() Línea de código que generó el error ERROR_MESSAGE() Mensaje descriptivo sobre el error

CASE Permite procesar expresiones, condicionalmente, dentro de una query CASE Simple: compara solo la igualdad SELECT ProductNumber, Category = CASE ProductLine WHEN 'R' THEN 'Road' WHEN 'M' THEN 'Mountain' WHEN 'T' THEN 'Touring' WHEN 'S' THEN 'Other sale items' ELSE 'Not for sale' END, Name FROM Production.Product ORDER BY ProductNumber;

...CASE CASE con búsqueda: comparaciones complejas SELECT ProductNumber, Name, "Price Range" = CASE WHEN ListPrice = 0 THEN 'Mfg item - not for resale' WHEN ListPrice < 50 THEN 'Under $50' WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250' WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000' ELSE 'Over $1000' END FROM Production.Product ORDER BY ProductNumber ;

Cursores Permiten iterar un conjunto de datos, un registro a la vez Ej: DECLARE vend_cursor CURSOR FOR SELECT * FROM Purchasing.Vendor OPEN vend_cursor FETCH NEXT FROM vend_cursor;

... Cursores DECLARE @Entity nvarchar(128), @Job nvarchar(128); DECLARE Employee_Cursor CURSOR FOR SELECT BusinessEntityID, JobTitle FROM HumanResources.Employee; OPEN Employee_Cursor; FETCH NEXT FROM Employee_Cursor INTO @Entity, @Job; WHILE @@FETCH_STATUS = 0 BEGIN PRINT @Entity + ' ' + @Job; FETCH NEXT FROM Employee_Cursor INTO @Entity, @Job; END; CLOSE Employee_Cursor; DEALLOCATE Employee_Cursor;

Referencia Coles, Michael Pro T-SQL 2008 Programmer s Guide Capítulo 5 Páginas 117-146

UDF: User Defined Function Rutinas que pueden recibir parámetros, ejecutar acciones basadas en dichos parámetros, y devolver un resultado Las funciones no pueden modificar el estado del entorno Tipos Escalares (scalars) Embebidas (Inline Table-valued) De tabla (Multi-statement Table-valued)

Scalar UDF Devuelve un valor simple Número, string,... Ej: CREATE FUNCTION dbo.calculatecirclearea (@Radius float = 1.0) RETURNS float AS BEGIN RETURN PI() * POWER(@Radius, 2); END; SELECT dbo.calculatecirclearea(10);

Inline UDF Devuelve el resultado de una query (SELECT...) como una tabla Ej: Se las conoce como vistas parametrizadas CREATE FUNCTION Sales.ufn_SalesByStore (@storeid int) RETURNS TABLE AS RETURN ( SELECT * FROM Sales.Customer AS C WHERE C.StoreID = @storeid ); SELECT * FROM Sales.ufn_SalesByStore (934)

Multi-statement UDF Regresa una tabla construida por la función La estructura de la tabla se debe declarar correctamente La función puede ser mucho más compleja que en el caso anterior Ej:...

... Multi-statement UDF CREATE FUNCTION dbo.someunits (@First char(1), @Second char(1)) RETURNS @SomeUnits TABLE (Code nchar(3), Measure nvarchar(50)) AS BEGIN INSERT @SomeUnits(Code, Measure) SELECT UnitMeasureCode, Name FROM Production.UnitMeasure WHERE UnitMeasureCode LIKE('%' + @First + '%'); INSERT @SomeUnits(Code, Measure) SELECT UnitMeasureCode, Name FROM Production.UnitMeasure WHERE UnitMeasureCode LIKE('%' + @Second + '%'); RETURN END SELECT * FROM dbo.someunits('a', 'B')

Referencia Coles, Michael Pro T-SQL 2008 Programmer s Guide Capítulo 6 Páginas 151 162

SP: Stored Procedures Programas o unidades de código compuestas por instrucciones T-SQL Permiten especificar parámetros de salida Permiten especificar los parámeros por nombre o por posición Pueden modificar el estado del entorno RETURN solo puede devolver un entero Se usan tablas temporales, p.ej., para compartir valores

Stored Procedures Ej: CREATE PROCEDURE HumanResources.uspGetEmployeesTest2 @LastName nvarchar(50), @FirstName nvarchar(50) AS SELECT FirstName, LastName, Department FROM HumanResources.vEmployeeDepartmentHistory WHERE FirstName = @FirstName AND LastName = @LastName AND EndDate IS NULL; GO EXECUTE HumanResources.uspGetEmployeesTest2 N'Ackerman', N'Pilar';

... Stored Procedures Ej: CREATE PROCEDURE HumanResources.uspGetEmployeesTest3 @LastName nvarchar(50), @FirstName nvarchar(50), @Department nvarchar(50) OUTPUT AS SELECT @Department = Department FROM HumanResources.vEmployeeDepartmentHistory WHERE FirstName = @FirstName AND LastName = @LastName AND EndDate IS NULL; GO ===>>>

... Stored Procedures Ej: (ejecución) DECLARE @Depar nvarchar(50); EXECUTE HumanResources.uspGetEmployeesTest3 N'Ackerman', N'Pilar', @Depar OUTPUT; SELECT @Depar;

Referencia Coles, Michael Pro T-SQL 2008 Programmer s Guide Capítulo 7 Páginas 187 217

Triggers (desencadenadores) Es un tipo especial de SP que se ejecuta automáticamente cuando un cierto evento en la base ocurre Pueden desencadenarse luego de cualquier acción de DML Insert, Update, Delete DDL Create, Alter, Drop, Grant, Deny, Revoke,... Logon Entre la autenticación y el inicio de la sesión