Programacion con SQL Server 2005

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Notes on slide 1

    DDL – Data Definition Languaje

    De dominio controlado por el tipo de datos y los valores que puede aceptar

    Ver Diferencia cuando le quitamos el PRINT @TOTAL

    Lo de la TABLA CONTROL es para los TRIGGERS tambien, para crear una vitacora

    IMPORTANTE: El esquema de propietario de la tablas deben estar definidas en la funcion. SINO da error.

    Asociación a una tabla Los desencadenadores se definen para una tabla específica, denominada tabla del desencadenador. Invocación automática Cuando se intenta insertar, actualizar o eliminar datos de una tabla en la que se ha definido un desencadenador para esa acción específica, el desencadenador se ejecuta automáticamente. No es posible evitar su ejecución. Imposibilidad de llamada directa A diferencia de los procedimientos almacenados del sistema normales, no es posible invocar directamente los desencadenadores, que tampoco pasan ni aceptan parámetros.

    Favorites, Groups & Events

    Programacion con SQL Server 2005 - Presentation Transcript

    1. Desarrollo Aplicaciones con SQL Server 2005
    2. Introducción a: Email: bernardo.robelo@gmail.com Ing. Bernardo Robelo
    3. Ing. BARJ - 2008 PROCEDIMIENTOS FUNCIONES DE USUARIO VISTAS INTEGRIDAD DE DATOS TRIGGERS CURSORES AGENDA TRANSACT - SQL INDICES
    4. Ing. BARJ – 2008 Transact-SQL ¿Que es?
    5. Transact-SQL Ing. BARJ – 2008 Lenguaje de Definición De Datos
    6. Tipos de datos del sistema
      • Numérico
        • Entero
        • Numérico exacto
        • Numérico aproximado
        • Moneda
      • Fecha y hora
      • Carácter y caracteres Unicode
      • Binario
      • Otros
      Ing. BARJ – IST – UPOLI - 2008
      • ¿Qué son ?
      • ¿Pará que se utilizan?
      Tipos de datos definidos por el usuario Ing. BARJ – IST – UPOLI - 2008
    7. Tipos de datos definidos por el usuario
        • Los tipos de datos definidos por el usuario están basados en los tipos de datos disponibles a través de SQL Server 2005.
        • Los tipos de datos definidos por el usuario se pueden emplear para asegurar que un dato tenga las mismas características sobre múltiples tablas.
      Ing. BARJ – IST – UPOLI - 2008
    8. Implementación de la integridad de datos Ing. BARJ – IST – UPOLI - 2008
    9. ¿Que es la integridad de datos? Ing. BARJ – IST – UPOLI - 2008
    10. Tipos de integridad de datos Ing. BARJ – IST – UPOLI - 2008 Integridad de dominio ( columnas ) Integridad de entidad (filas) Integridad referencial ( entre tablas )
    11. Exigir integridad de los datos
      • Integridad de datos declarativa
        • Los criterios se definen en la definición del objeto
        • Asegurada automáticamente por SQL Server
        • Implementada mediante restricciones, valores predeterminados y reglas
      • Integridad de datos procedimental
        • Los criterios se definen en una secuencia de comandos
        • Asegurada mediante secuencia de comandos
        • Implementada mediante desencadenadores y procedimientos almacenados
      Ing. BARJ – IST – UPOLI - 2008
    12. Integridad de datos Ing. BARJ – IST – UPOLI - 2008
    13. Determinación del tipo de restricción que se va a utilizar Ing. BARJ – IST – UPOLI - 2008 Tipo de integridad Tipo de restricción Dominio DEFAULT CHECK REFERENTIAL Entidad PRIMARY KEY UNIQUE Referencial FOREIGN KEY CHECK
    14. Tipos de restricciones
      • Restricciones DEFAULT
      • Restricciones CHECK
      • Restricciones PRIMARY KEY
      • Restricciones UNIQUE
      • Restricciones FOREIGN KEY
      • Integridad referencial en cascada
    15. ¿Qué es un Indice Ing. BARJ – IST – UPOLI - 2008
    16. Tipos de Indice
      • CLUSTERED INDEX
          • Por Defecto se crean indices con las Llaves Primarias
          • Son como capitulos en el Libro
          • Indice como la guia telefonica
          • Mantiene juntas los numeros de Lineas
      • NON-CLUSTERED INDEX
          • Son como guiones para acceder a los datos
          • Utilizado en llaves de varios campos
          • Es el Indice o Glosario
          • Son Atajos para acceder a los Datos
      Ing. BARJ – IST – UPOLI - 2008
    17. ¿Qué es una Vista? Ing. BARJ – IST – UPOLI - 2008
    18. Introducción a las vistas Ing. BARJ – IST – UPOLI - 2008 EmployeeView Lastname Firstname Davolio Fuller Leverling Nancy Andrew Janet Employees EmployeeID LastName Firstname Title 1 2 3 Davolio Fuller Leverling Nancy Andrew Janet ~~~ ~~~ ~~~ Vista del usuario USE Northwind GO CREATE VIEW dbo. Employee View AS SELECT LastName , Firstname FROM Employees
    19. Ventajas de las vistas
      • Centrar el interés en los datos de los usuarios
        • Centrarse sólo en los datos importantes o adecuados
        • Limitar el acceso a los datos confidenciales
      • Enmascarar la complejidad de la base de datos
        • Ocultar el diseño de la base de datos compleja
        • Simplificar las consultas complejas, incluyendo las consultas distribuidas a datos heterogéneos
      • Simplificar la administración de los permisos de usuario
      • Mejorar el rendimiento
      • Organizar los datos para exportarse a otras aplicaciones
      Ing. BARJ – IST – UPOLI - 2008
    20. Ejemplo: Vista de tablas combinadas Ing. BARJ – IST – UPOLI - 2008 OrderID 10663 10827 10427 10451 10515 CustomerID BONAP BONAP PICCO QUICK QUICK ~~~ ~~~ ~~~ ~~~ ~~~ RequiredDate 1997-09-24 1998-01-26 1997-02-24 1997-03-05 1997-05-07 ShippedDate 1997-10-03 1998-02-06 1997-03-03 1997-03-12 1997-05-23 Orders Customers ShipStatusView USE Northwind GO CREATE VIEW dbo.ShipStatusView AS SELECT OrderID, ShippedDate, ContactName FROM Customers c INNER JOIN Orders o ON c.CustomerID = O.CustomerID WHERE RequiredDate < ShippedDate CustomerID BONAP PICCO QUICK CompanyName Bon app' Piccolo und mehr QUICK-Stop ContactName Laurence Lebihan Georg Pipps Horst Kloss OrderID 10264 10271 10280 1996-08-21 1996-08-29 1996-09-11 ShippedDate 1996-08-23 1996-08-30 1996-09-12 ContactName Laurence Lebihan Georg Pipps Horst Kloss
    21. Uso de vistas para dividir datos
      • Puede utilizar las vistas para dividir los datos en varios servidores o instancias de SQL Server
      • Cómo utiliza SQL Server las vistas para dividir datos
      • Cómo las vistas divididas mejoran el rendimiento
      • NO SE PUEDE
        • No se puede incluir la cláusula ORDER BY
        • No se puede incluir la palabra clave INTO
      Ing. BARJ – IST – UPOLI - 2008
    22. Ing. BARJ – IST – UPOLI - 2008 Práctica: Implementación de vistas
    23. Práctica: Implementación de vistas Ing. BARJ – IST – UPOLI - 2008
    24. ¿Qué es un procedimiento almacenado? Ing. BARJ – IST – UPOLI - 2008
    25. Definición de procedimientos almacenados
      • Colecciones con nombre de instrucciones Transact-SQL
      • Encapsulado de tareas repetitivas
      • Aceptar parámetros de entrada y devolver valores
      Ing. BARJ – IST – UPOLI - 2008
    26. Ventajas de los procedimientos almacenados
      • Compartir la lógica de la aplicación
      • Exposición de los detalles de las tablas de la base de datos
      • Proporcionar mecanismos de seguridad
      • Mejorar el rendimiento
      • Reducir el tráfico de red
      Ing. BARJ – IST – UPOLI - 2008
    27. Creación de procedimientos almacenados
      • Utilice la instrucción CREATE PROCEDURE para crearlos en la base de datos activa
      • Puede anidar hasta 32 niveles
      • Use sp_help para mostrar información
      Ing. BARJ – IST – UPOLI - 2008 USE Northwind GO CREATE PROC dbo.OverdueOrders AS SELECT * FROM dbo.Orders WHERE RequiredDate < GETDATE() AND ShippedDate IS Null GO
    28. Ejecución de procedimientos almacenados
      • Ejecución de un procedimiento almacenado por separado
      • Ejecución de un procedimiento almacenado en una instrucción INSERT
      Ing. BARJ – IST – UPOLI - 2008 EXEC OverdueOrders INSERT INTO Customers EXEC EmployeeCustomer
    29. Ejecución de procedimientos
      • Paso de valores por el nombre del parámetro
      • Paso de valores por posición
      Ing. BARJ – IST – UPOLI - 2008 EXEC AddCustomer 'ALFKI2', 'Alfreds Futterkiste', 'Maria Anders', 'Sales Representative', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany', '030-0074321' EXEC AddCustomer @CustomerID = 'ALFKI', @ContactName = 'Maria Anders', @CompanyName = 'Alfreds Futterkiste', @ContactTitle = 'Sales Representative', @Address = 'Obere Str. 57', @City = 'Berlin', @PostalCode = '12209', @Country = 'Germany', @Phone = '030-0074321'
    30. Devolución de valores mediante parámetros de salida Ing. BARJ – IST – UPOLI - 2008
      • CREATE PROCEDURE dbo.mathtutor
          • @m1 smallint,
        • @m2 smallint,
        • @result smallint OUTPUT
      • AS
      • SET @result = @m1* @m2
      • GO
      • DECLARE @answer smallint
      • EXECUTE mathtutor 5, 6, @answer OUTPUT
      • SELECT 'The result is: ' , @answer
      • The result is: 30
      Resultados del procedimiento almacenado Ejecución del procedimiento almacenado Creación del procedimiento almacenado
    31. Control de mensajes de error
      • La instrucción RETURN sale incondicionalmente de una consulta o procedimiento
      Ing. BARJ – IST – UPOLI - 2008
    32. Ing. BARJ – IST – UPOLI - 2008 Práctica Procedimientos Almacenados
    33. PROCEDIMIENTOS CON PARÁMETROS Ing. BARJ – IST – UPOLI - 2008
    34. PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
    35. PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
    36. PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
    37. Ing. BARJ – IST – UPOLI - 2008
    38. VARIABLES DE SALIDA EN PROCEDIMIENTOS ALMACENADOS Ing. BARJ – IST – UPOLI - 2008
    39. VARIABLES DE SALIDA EN PROCEDIMIENTOS ALMACENADOS Ing. BARJ – IST – UPOLI - 2008
    40. Ejemplos Ing. BARJ – IST – UPOLI - 2008
    41. Ejemplos Ing. BARJ – IST – UPOLI - 2008
    42. ¿Qué es una función definida por el usuario? Ing. BARJ – IST – UPOLI - 2008
    43. ¿Qué es una función definida por el usuario?
      • Una función de usuario, se crea con el fin de automatizar una consulta que se realiza a menudo.
      • Funciones escalares
        • Similar a una función integrada
      • Funciones con valores de tabla de varias instrucciones
        • Contenido como un procedimiento almacenado
        • Se hace referencia como una vista
      • Funciones con valores de tabla en línea
        • Similar a una vista con parámetros
        • Devuelve una tabla como el resultado de una instrucción SELECT única
      Ing. BARJ – IST – UPOLI - 2008
    44. Uso de una función escalar definida por el usuario
      • La cláusula RETURNS especifica el tipo de datos
      • La función se define en un bloque BEGIN y END
      • El tipo de devolución puede ser cualquier tipo de datos, excepto text, ntext, image, cursor o timestamp
      Ing. BARJ – IST – UPOLI - 2008
    45. Ing. BARJ – IST – UPOLI - 2008 Demostracion: Creación de funciones definidas por el usuario
    46. FUNCIONES DEFINIDAS POR EL USUARIO Ing. BARJ – IST – UPOLI - 2008 Declare Table
    47. Funciones Escalares
      • Veamos en el Enteprise Manager, la funcion creada, consultamos el apartado “Funciones definidas por el usuario”
      Ing. BARJ – IST – UPOLI - 2008
    48. Funciones de Tablas en Linea Ing. BARJ – IST – UPOLI - 2008
    49. Funciones de Tablas Con Instrucciones Ing. BARJ – IST – UPOLI - 2008
    50. Funciones con Definicion de Esquema Ing. BARJ – IST – UPOLI - 2008
    51. Ing. BARJ – IST – UPOLI - 2008 Práctica: Creación de funciones definidas por el usuario
    52. Ejercicios Ing. BARJ – IST – UPOLI - 2008 Ver Solución
    53. Ejercicios Ing. BARJ – IST – UPOLI - 2008 Solución
    54. Ejercicios Ing. BARJ – IST – UPOLI - 2008
    55. Ejercicios Ing. BARJ – IST – UPOLI - 2008
    56. ¿Que es un TRIGGER? (DESENCADENADORES, DISPARADORES) Ing. BARJ – IST – UPOLI - 2008
    57. ¿Qué es un desencadenador?
      • Un desencadenador es una clase especial de procedimiento almacenado que se ejecuta siempre que se intenta modificar los datos de una tabla que el desencadenador protege.
      • Asociación a una tabla
      • Invocación automática
      • Imposibilidad de llamada directa
      • Identificación con una transacción
      Ing. BARJ – IST – UPOLI - 2008
    58. Consideraciones acerca del uso de desencadenadores
      • Los desencadenadores son reactivos, mientras que las restricciones son proactivas
      • Las restricciones se comprueban antes
      • Las tablas pueden tener varios desencadenadores para cualquier acción
      • Comparación del estado de los datos antes y después de su modificación
      Ing. BARJ – IST – UPOLI - 2008
    59. Funcionamiento de los desencadenadores anidados Ing. BARJ – IST – UPOLI - 2008 2 15 UnitsInStock + UnitsOnOrder es < ReorderLevel para ProductID 2 OrDe_Update La realización de un pedido provoca la ejecución del desencadenador OrDe_Update Se ejecuta la instrucción UPDATE en la tabla Products InStock_Update Products ProductID UnitsInStock … … 1 3 4 15 15 65 20 Se ejecuta el desencadenador InStock_Update Envía un mensaje Order_Details OrderID 10522 10523 10524 ProductID 10 41 7 UnitPrice 31.00 9.65 30.00 Quantity 7 9 24 Discount 0.2 0.15 0.0 10525 19.00 2 0.2 5 2 15
    60. Desencadenadores recursivos
      • Activación recursiva de un desencadenador
      • Tipos de desencadenadores recursivos
        • Recursividad directa , que se da cuando un desencadenador se ejecuta y realiza una acción que lo activa de nuevo
        • Recursividad indirecta , que se da cuando un desencadenador se activa y realiza una acción que activa un desencadenador de otra tabla
      • Conveniencia del uso de los desencadenadores recursivos
      Ing. BARJ – IST – UPOLI - 2008
    61. Exigir reglas de empresa Ing. BARJ – IST – UPOLI - 2008 L os productos con pedidos pendientes no se pueden elimina r IF (Select Count (*) FROM [Order Details] INNER JOIN deleted ON [Order Details].ProductID = deleted.ProductID ) > 0 ROLLBACK TRANSACTION La instrucción DELETE se ejecuta en la tabla Product El código del desencadenador comprueba la tabla Order Details ' No puede procesarse la transacción ' ' Este producto tiene historial de pedidos ' Se deshace la transacción Products ProductID UnitsInStock … … 1 2 3 4 15 10 65 20 Order Details OrderID 10522 10523 10524 10525 ProductID 10 2 41 7 UnitPrice 31.00 19.00 9.65 30.00 Quantity 7 9 24 Discount 0.2 0.15 0.0 9 Products ProductID UnitsInStock … … 1 3 4 15 10 65 20 2 0
    62. Consideraciones acerca del rendimiento
      • Los desencadenadores trabajan rápidamente porque las tablas insertadas y eliminadas están en la caché
      • El tiempo de ejecución está determinado por:
        • Número de tablas a las que se hace referencia
        • Número de filas afectadas
      • Las acciones contenidas en un desencadenador forman parte de una transacción
      Ing. BARJ – IST – UPOLI - 2008
    63. Ing. BARJ – IST – UPOLI - 2008 Demostracion: TRIGGERS (DESENCADENADORES, DISPARADORES)
    64. TRIGGERS Ing. BARJ – IST – UPOLI - 2008
    65. TRIGGERS Ing. BARJ – IST – UPOLI - 2008
    66. TRIGGERS Ing. BARJ – IST – UPOLI - 2008
    67. Ing. BARJ – IST – UPOLI - 2008
    68. TRIGGERS Ing. BARJ – IST – UPOLI - 2008
    69. TRIGGERS Ing. BARJ – IST – UPOLI - 2008
    70. Ing. BARJ – IST – UPOLI - 2008
    71. Ing. BARJ – IST – UPOLI - 2008 CONCLUSIONES GENERALES
    72. Ing. BARJ – IST – UPOLI - 2008 MUCHAS GRACIAS! [email_address] Ing. Bernardo Robelo http://bernardorobelo.blogspot.com
    73. Ing. BARJ – IST – UPOLI - 2008
    74. Ing. BARJ – IST – UPOLI - 2008
    75. Ing. BARJ – IST – UPOLI - 2008

    + brobelobrobelo, 4 months ago

    custom

    1138 views, 0 favs, 2 embeds more stats

    Tablas
    Vistas
    Store Procedures
    Triggers
    Constraint

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1138
      • 1119 on SlideShare
      • 19 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 57
    Most viewed embeds
    • 17 views on http://bernardorobelo.blogspot.com
    • 2 views on http://www.bernardorobelo.blogspot.com

    more

    All embeds
    • 17 views on http://bernardorobelo.blogspot.com
    • 2 views on http://www.bernardorobelo.blogspot.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Tags