BD_L8_EXP_ROZIC_CAP9_SQL
Upcoming SlideShare
Loading in...5
×
 

BD_L8_EXP_ROZIC_CAP9_SQL

on

  • 1,690 views

 

Statistics

Views

Total Views
1,690
Views on SlideShare
1,553
Embed Views
137

Actions

Likes
0
Downloads
19
Comments
0

6 Embeds 137

http://bd2008eq92.blogspot.com 106
http://bd2008eq92.blogspot.mx 23
http://www.slideshare.net 3
http://bd2008eq9.blogspot.com 2
http://bd2008eq92.blogspot.com.es 2
http://bd2008eq92.blogspot.com.ar 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

BD_L8_EXP_ROZIC_CAP9_SQL BD_L8_EXP_ROZIC_CAP9_SQL Presentation Transcript

  • EQUIPO 9 FRAGOSO PEÑA FERNANDO HUERTA GÓMEZ DANIEL PÉREZ OCHOA VALERI PÉREZ SAN JUAN ALDO PAILLES RUBIÑOS FRANCISCO NICOLÁS SQL SERVER
  • INSTRUCCIONES DE CONTROL EN T-SQL IF, ELSE La estructura de control IF en T-SQL y SQL ANSI no utiliza la palabra THEN si no que queda contenida entre el primer par de BEGIN . . END que sucede a la instrucción IF y antecede a la instrucción ELSE . IF EXISTS (SELECT * FROM CATEGORIAS WHERE Cod_Categoria= “CA”) BEGIN UPDATE CATEGORIAS SET Desc_Categoria= “Capataz” FROM CATEGORIAS WHERE Cod_Categorias= “CA” END ELSE BEGIN INSERT INTO CATEGORIAS (Cod_Categoria, Desc_Categoria) VALUES (“CA”, “Capataz”) END
    • La instrucción IF modifica la gestión del proceso en función que satisfaga la condición de ella. Lo que hace esta instrucción es fijarse si existe en la tabla categorías alguna categoría con el código de categoría “ CA ”. Si el código existe (la condición de la instrucción IF fue valuada como TRUE) modifica su descripción a “Capataz” , pero si dicho código de categoría no existe ( la instrucción IF fue evaluada como FALSE) lo inserta en la tabla de categorías como la descripción en cuestión.
  • CASE . . WHEN . . ELSE La instrucción CASE se usa para evaluar un conjunto de condiciones, y en función de cual de ellas se cumpla, devolver un resultado entre muchos resultados posibles. SELECT “Categorías de los empleados de la Empresa” = CASE Cod_Categoria WHEN “AD” THEN “puede ser Administrativo” WHEN “CA” THEN “puede ser Capataz” WHEN “DI” THEN “puede ser Director” ELSE “ Pero no existe otra Categoría posible” END FROM CATEGORIAS
    • Permite abreviar la consulta de rango entre dos valores dados. Por ejemplo, si se desea saber cuantos empleados de la empresa poseen un número de Legajo mayor a 1000 y menor a 5000. O sea, si están en el rango de Legajos de 1000 y 5000, se puede hacer la consulta de 2 formas diferentes, una con la instrucción BETWEEN y otra sin ella.
    • Sin BETWEEN
    • SELECT *
    • FROM EMPLEADOS
    • WHERE (Legajo > = 1000) AND (Legajo < = 5000)
    • Con BETWEEN
    • SELECT *
    • FROM EMPLEADOS
    • WHERE Legajo BETWEEN 1000 AND 5000
    LA INSTRUCCIÓN BETWEEN
  • Uso de los cursores y la instrucción WHILE
    • La instrucción WHILE se usa como un ciclo de control repetitivo que permite la ejecución de un conjunto de instrucciones de T-SQL de forma repetida, mientras que la condición se evalúa con el ciclo WHILE sea verdadera (TRUE) y se interrumpa la repetición en el momento que dicha condición se evalúa como falsa (FALSE).
    • Dado que las consultas se realizan sobre la base de datos mediante una instrucción SELECT normalmente regresan un “conjunto de registros” que satisfacen la condición WHERE de dicha selección, se necesita una estructura que permita recuperar los registros de uno por uno a la vez.
    • Los CURSORES son las estructuras que nos permiten trabajar de a un registro por vez de las diferentes consultas que se realizan a la base de datos. Poseen ciertas características:
    • El uso de cursores amplia el procesamiento de los resultados.
    • Se pueden modificar los datos de la fila en la que se encuentra posicionado sin ningún tipo de inconveniente.
    • Permiten definir distintos niveles de visibilidad de las modificaciones que se están realizando en los datos en cuestión.
    • Se pueden utilizar en procedimientos almacenados, triggers o en secuencia de instrucciones de T-SQL.
    • Poseen el inconveniente de cómo serializan el acceso a la información.
    • SET NOCOUNT ON
    • //DECLARO LAS VARIABLES QUE VOY A USAR EN EL CURSOR
    • DECLARE $Lega int, $Ape varchar (20), $Nom varchar (30),
    • $CodCat char (2), Sueldo Money, $Fing datetime
    • // DECLARO EL CURSOR Cursor_Empleados
    • DECLARE Cursor_Empleados CURSOR DYNAMIC FOR
    • SELECT Legajo, Apellido, Nombre, Cod_Categoria, Fecha_Ingreso, Sueldo_Basico
    • FROM Empleados
    • WHERE Cod_Categoria = “AD”
    • ORDER BY Legajo
    • // ABRO EL CURSOR Cursor_Empleados
    • OPEN Cursor_Empleados
    • // ME POSICIONO EN EL 1ER REGISTRO Y ASIGNO VALORES A LAS VARIABLES
    • FETCH NEXT FROM Cursor_Empleados
    • INTO $Lega, $Ape, $Nom, $CodCat, $Fing, $Sueldo
    • //MIENTRAS EXISTAN FILAS REPITO EL WHILE
    • WHILE %%FETCH_STATUS = 0
    • BEGIN
    • //ACTUALIZO EL SUELDO EN LA TABLA EMPLEADOS PARA ESE LEGAJO EN CUESTION
    • //ESTO ACTUALIZA LA TABLA EMPLEADOS PUES EL CURSOR ES DINAMICO
    • IF (year ($Fing) < 1999)
    • BEGIN
    • SET $Sueldo = $Sueldo * 1.2
    • END
    • ELSE
    • BEGIN
    • SET $Sueldo = $Sueldo * 1.5
    • END
    • // ME POSICIONO EN LA PROXIMA FILA DEL CURSOR
    • FETCH NEXT FROM Cursor_Empleados
    • INTO $Lega, $Ape, $Nom, $CodCat, $Fing, $Sueldo
    • END
    • //FIN DEL WHILE Y CIERRO EL CURSOR
    • CLOSE Cursor_Empleados
    • //LIBERO MEMORIA QUE UTILIZABA EL CURSOR
    • DEALLOCATE Cursor_Empleados
  • COMBINACIONES DE TABLAS
    • Para combinar tablas, se deben comparar una o más columnas (campos) de una tabla con una o más columnas (campos) de otra tabla. Como resultado se obtendrá un conjunto de filas (registros) que poseen las columnas (campos) seleccionadas de cada una de las tablas combinadas que cumplen con la o las condiciones de combinación.
    • Al combinar tablas se puede utilizar la sintaxis del ANSI SQL definición de estándar de la sintaxis del lenguaje SQL básica, o la de SQL Server en cual es el lenguaje T-SQL.
  • COMBINACIONES INTERNAS
    • Las combinaciones conectan dos tablas al cumplir una condición de combinación que devuelve como resultado un conjunto de registros (filas) que cumplen con dicha condición. Estas combinaciones devuelven información cuando se encuentra en ambas tablas información equivalente. Los tipos de combinaciones internas son las equivalentes y las naturales.
  • Combinaciones Equivalentes
    • La sintaxis SQL Server es:
    • SELECT *
    • FROM Empleados, Categorías
    • WHERE Empleados.Cod_Categoria = Categorias.Cod_Categoria
    • La sintaxis ANSI SQL es:
    • SELECT *
    • FROM Empleados INNER JOIN Categorias ON
    • Empleados.Cod_Categoria = Categorias.Cod_Categoria
  • Combinaciones Naturales
    • La Sintaxis SQL Server es:
    • SELECT Empleados.*, Categorias.Desc_Categoria
    • FROM Empleados, Categorías
    • WHERE Empleados.Cod_Categoria= Categorias.Cod_Categoria
    • La Sintaxis ANSI SQL es:
    • SELECT Empleados.*, Categorias.Desc_Categoria
    • FROM Empleados INNER JOIN Categorías ON
    • Empleados.Cod_Categoria = Categorias.Cod_Categoria
  • COMBINACIONES CRUZADAS O SIN RESTRICCIÓN
    • En general este tipo de combinaciones no es de mucha utilidad, a no ser que se desee saber cuales son todas las combinaciones posibles para realizar algún tipo de análisis estadístico o matemático.
    • La Sintaxis SQL Server es:
    • SELECT Empleados.*, Categorias.*
    • FROM Empleados, Categorias
    • La Sintaxis ANSI SQL es:
    • SELECT Empleados.*, Cargos.*
    • FROM Empleados CROSS JOIN Cargos ON
  • COMBINACIONES EXTERNAS
    • Este tipo de combinaciones sirve para buscar filas huérfanas. En SQL Server se pueden utilizar diferentes operadores:
    • Incluye todas las filas de la primera tabla y solo las filas que coinciden de la segunda (es lo mismo utilizar un LEFT OUTER JOIN, combinación externa izquierda).
    • Incluye todas las filas de la segunda tabla y solo las filas que coinciden de la primera tabla (es lo mismo realizar un RIGHT OUTER JOIN , combinación externa derecha).
    • El inconveniente de estos operadores es que no se puede garantizar que siempre el conjunto de resultados sea correcto.
    • En ANSI SQL se utiliza la siguiente sintaxis:
    • LEFT OUTER JOIN: incluye todas las filas de la primera tabla (la de la izquierda) y solo las filas que coinciden de la segunda.
    • RIGHT OUTER JOIN: incluye todas las filas de la segunda tabla (la de la derecha) y solo las filas que coincidan de la primera tabla.
    • FULL OUTER JOIN: incluye todas las filas no coincidentes de ambas tablas.
  • AUTOCOMBINACIONES
    • Una autocombinación relaciona las filas de una tabla con otras filas de la misma tabla. Para la mayoría de autocombinaci0nes se emplean consultas de comparación.
    • Ejemplo:
    • Sintaxis SQL Server:
    • SELECT DISTINCT C1.NombreContacto, C1.CargoContacto
    • FROM Clientes C1, C2
    • WHERE C1.CargoContacto = C2.CargoContacto AND C1.IdCliente <
    • =C2.IdCliente
    • ORDER BY C1.CargoContacto
    • Sintaxis ANSI SQL
    • SELECT DISTINCT C1.NombreContacto, C1.CargoContacto
    • FROM Clientes C1 INNER JOIN Clientes C2 ON
    • C1.CargoContacto = C2.CargoContacto
    • WHERE C1.IdCliente < =C2.IdCliente
    • ORDER BY C1.CargoContacto
  • CONSULTAS DE AGRUPACIÓN
    • Este tipo de consultas permiten obtener información agrupada de una o más tablas. La información obtenida con este tipo de consultas es cuantitativa y no cualitativa.
    • Ejemplo:
    • SELECT CargoContacto as Cargo, Count (*) as Cantidad
    • FROM Clientes
    • GROUP BY CargoContacto
    • ORDER BY CargoContacto
    • Donde:
    • Count (*) que es una función incorporada en SQL y por ende también en T-SQL que cuenta cuantas filas satisfacen la selección.
    • avg (*) que calcula el promedio.
    • sum (*) que calcula la suma.
    • GROUP BY que agrupa por el campo o conjunto de campos que se describen después de ella.
    • ORDER BY , que ordena por el campo o conjunto de campos que aparecen luego de ella.