Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Bases de Datos Unidad VIII Lenguaje SQL “ Lenguaje de Manipulación de Datos (DML) –  Consultas Avanzadas” Sergio Sánchez R...
Lenguaje de Manipulación de Datos (DML) Operadores Especiales   Concatenación Permite concatenar en una sola salida varios...
Lenguaje de Manipulación de Datos (DML) Operadores Especiales   Literales Es cualquier cosa que no sea ni alias ni nombre ...
Lenguaje de Manipulación de Datos (DML) Operadores Especiales   Between … AND …… Este operador se utiliza en la cláusula w...
Lenguaje de Manipulación de Datos (DML) Operadores Especiales   IN (Lista)  Este operador permite verificar si el campo se...
Lenguaje de Manipulación de Datos (DML) Operadores Especiales   Like Esta palabra clave indica el patrón de ajuste con una...
Lenguaje de Manipulación de Datos (DML) Operadores Especiales   Like Carácter comodín no en rango, coincide con cualquier ...
Lenguaje de Manipulación de Datos (DML) Operadores Especiales   Like Ejemplo 7: Encontrar todos los apellidos (LastName) e...
Lenguaje de Manipulación de Datos (DML) Operadores Especiales   Like Ejemplo 9: Usar Base de Datos  Pubs . Para recuperar ...
Lenguaje de Manipulación de Datos (DML) Operadores Especiales   IS NULL Realiza un testeo para valores que son Nulos. Reto...
Lenguaje de Manipulación de Datos (DML) Operadores de Agregado Las funciones de agregado son: SUM, AVG, COUNT, COUNT(*), M...
Lenguaje de Manipulación de Datos (DML) Operadores de Agregado Valor menor de la expresión. MIN ( expression ) Valor mayor...
Lenguaje de Manipulación de Datos (DML) Operadores de Agregado SUM, AVG, COUNT, MAX y MIN omiten los valores NULL; COUNT(*...
Lenguaje de Manipulación de Datos (DML) Operadores de Agregado SUM Retorna:  Total de los valores de la expresión numérica...
Lenguaje de Manipulación de Datos (DML) Operadores de Agregado AVG Retorna:  Promedio de los valores de la expresión numér...
Lenguaje de Manipulación de Datos (DML) Operadores de Agregado MAX Retorna:  Valor mayor de la expresión. NOMENCLATURA: MA...
Lenguaje de Manipulación de Datos (DML) Operadores de Agregado MIN Retorna:  Valor menor de la expresión. NOMENCLATURA: MI...
Lenguaje de Manipulación de Datos (DML) Operadores de Agregado COUNT Retorna:  Número de valores en la expresión. En el ca...
Lenguaje de Manipulación de Datos (DML) Operadores de Agregado COUNT Ejemplo: Usando la base de datos PUBS. Cuente los dat...
Lenguaje de Manipulación de Datos (DML) Sentencia GROUP BY Esta sentencia no permite dividir el resultado de una lista de ...
Lenguaje de Manipulación de Datos (DML) Sentencia GROUP BY Ejemplo: Utilizando la base de datos PUBS. Liste las suma de la...
Lenguaje de Manipulación de Datos (DML) Sentencia GROUP BY – CLAUSULA HAVING Esta cláusula se utiliza si se desea especifi...
Lenguaje de Manipulación de Datos (DML) TABLAS COMBINADAS Una tabla combinada es el resultado de una operación de combinac...
Lenguaje de Manipulación de Datos (DML) TABLAS COMBINADAS Combinación Interna (Inner Join) Ejemplo: De la base de datos PU...
Lenguaje de Manipulación de Datos (DML) TABLAS COMBINADAS Combinación externas Completas (full Outer Join) Especifica que ...
Lenguaje de Manipulación de Datos (DML) TABLAS COMBINADAS Combinación externa por la izquierda (Left Outer Join) Devuelve ...
Lenguaje de Manipulación de Datos (DML) TABLAS COMBINADAS Combinación externa por la derecha (Right Outer Join) Es lo cont...
Lenguaje de Manipulación de Datos (DML) SELECT ANIDADOS En algunas situaciones es necesario utilizar SELECT anidados para ...
Lenguaje de Manipulación de Datos (DML) SELECT ANIDADOS Ejemplo: Usando base de datos  Northwind . Muestre los Productos (...
Lenguaje de Manipulación de Datos (DML) Operador UNION Este operador mezcla los resultados de dos o más consultas en un so...
Lenguaje de Manipulación de Datos (DML) Operador UNION NOTA: Al usar el operador opcional ALL se listan como resultados to...
Lenguaje de Manipulación de Datos (DML) Operador UNION SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_U...
Lenguaje de Manipulación de Datos (DML) Ejercicio USE BASE DE DATOS PUBS Obtenga la suma de los Precios Unitarios, cuyos p...
Bibliografía <ul><li>“ Introducción a los Sistemas de Base de Datos”, C. J. Date, Prentice Hall – Séptima Edición, 2001. <...
Upcoming SlideShare
Loading in …5
×

Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)

13,679 views

Published on

Published in: Technology

Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)

  1. 1. Bases de Datos Unidad VIII Lenguaje SQL “ Lenguaje de Manipulación de Datos (DML) – Consultas Avanzadas” Sergio Sánchez Rios. Ingeniero en Informática – Licenciado en Informática Docente Jornada Parcial Universidad Viña del Mar
  2. 2. Lenguaje de Manipulación de Datos (DML) Operadores Especiales Concatenación Permite concatenar en una sola salida varios campos. Los campos deben ser String, sino lo son se pueden trasformar utilizando la operación convert (tipo dato, campo) Ejemplo 1: Utilizando la base de datos Northwind . Genere una lista de selección de la tabla Employees (Empleado) donde solo se genere una columna de salida y esta contenga los campos: EmployeeID, LastName y FirstName. Select convert(nvarchar(2),EmployeeID) + ‘’ + LastName + ‘’ + FirstName as Nombre from Employees
  3. 3. Lenguaje de Manipulación de Datos (DML) Operadores Especiales Literales Es cualquier cosa que no sea ni alias ni nombre de columna. Existen dos formas para colocar estos valores anexados a la Lista de Selección. Se puede colocar el mensaje entre comillas simples (‘’) o Colocar el nombre de la columna de salida entre corchetes [ ] = valor de salida. Ejemplo 2: Utilizando la tabla Employees liste las columnas EmployeeID, LastName, FirstName, además envié dos mensajes en conjunto con cada fila utilizando para cada uno una de las opciones de literales. Select EmployeeID, LastName as Apellido, FirstName as Nombre, 'ESTOS SON EMPLEADOS' as Literal, [Otra Forma] = 'Esta es otra forma' from Employees
  4. 4. Lenguaje de Manipulación de Datos (DML) Operadores Especiales Between … AND …… Este operador se utiliza en la cláusula where, para poder restringir una lista de selección según un rango de valores. NOMENCLATURA: WHERE Nombre_Columna BETWEEN parametro1 AND parametro2 NOTA: parametro1 (Mínimo) y parametro2 (Máximo) Ejemplo 4: Suponga que queremos ver aquellos productos (Tabla Products) cuyos valores se encuentran entre los 4 y 20 Dólares. Select * from Products where UnitPrice Between 5.0 and 20.0
  5. 5. Lenguaje de Manipulación de Datos (DML) Operadores Especiales IN (Lista) Este operador permite verificar si el campo se encuentra en una lista determinada o subconsulta. Retorna verdadero si el campos se encuentra en la lista. NOMENCLATURA: WHERE campo_tabla IN (Lista de datos o Subconsulta) Ejemplo 5: Liste los campos de la tabla productos que tengan exactamente un precio de 18, 19 y 10 dolares. Select * from Products where UnitPrice in (10.0,18.0,19.0)
  6. 6. Lenguaje de Manipulación de Datos (DML) Operadores Especiales Like Esta palabra clave indica el patrón de ajuste con una condición de búsqueda. La coincidencia de patrones significa analizar una coincidencia entre una expresión y el patrón especificado en la condición de búsqueda. NOMENCLATURA: Columna_Tabla LIKE Patron_de_Busqueda Si la expresión coincide con el patrón se devuelve un valor booleano TRUE. En caso contrario se devuelve FALSO. La expresión (COLUMNA_TABLA) debe ser de tipo carácter. Los patrones son realmente expresiones de cadena. Y van acompañados de caracteres de comodín, que colocados en a expresión toman un significado especial.
  7. 7. Lenguaje de Manipulación de Datos (DML) Operadores Especiales Like Carácter comodín no en rango, coincide con cualquier carácter distinto de m, n, o, p (según ejemplo anterior [ ^ mnop ]. [^ ] Carácter comodín en rango, coincide con cualquier carácter único en el rango o conjunto, tales como [m – p] o [ mnop ], significando que cualquiera de los caracteres puede ser m, n, o ,p. [ ] Subrayado, coincide con un único carácter. _ Símbolo de porcentaje, coincide con una cadena de cero o más caracteres. % Descripción Carácter Comodín
  8. 8. Lenguaje de Manipulación de Datos (DML) Operadores Especiales Like Ejemplo 7: Encontrar todos los apellidos (LastName) en la tabla Employees que comiencen con la letra <<S>>. Use el carácter comodín %. SELECT LastName FROM Employees WHERE LastName LIKE 'S%' – Acá se arma la frase con el comodín Ejemplo 8: Para recuperar el apellido de los Empleados cuya primera letra comienza entre <<A>> y <<M>>. Utilice el comodín [ ]. SELECT LastName FROM Employees WHERE LastName LIKE '[A-M ]%'
  9. 9. Lenguaje de Manipulación de Datos (DML) Operadores Especiales Like Ejemplo 9: Usar Base de Datos Pubs . Para recuperar la información de un autor cuyo ID comienza con el numero 724, sabiendo que cada ID tiene el formato de tres dígitos seguidos por un guión, seguido por dos dígitos, otro guión y finalmente cuatro dígitos. Utilizar el comodín _ . Select * from authors where au_id LIKE '724-__-____'
  10. 10. Lenguaje de Manipulación de Datos (DML) Operadores Especiales IS NULL Realiza un testeo para valores que son Nulos. Retorna True si la columna es NULL sino retorna FALSE. NOMENCLATURA: WHERE Columna IS NULL Ejemplo 10: Usar base de datos Northwind . Liste todos los campos de la tabla Suppliers cuya columna Región sea NULL. Select * from Suppliers where Region is null
  11. 11. Lenguaje de Manipulación de Datos (DML) Operadores de Agregado Las funciones de agregado son: SUM, AVG, COUNT, COUNT(*), MAX y MIN Estas funciones generan valores de resumen en los conjuntos de resultados de las consultas. Una función de agregado (con la excepción de COUNT(*)) procesa todos los valores seleccionados en una única columna para generar un único resultado. Las funciones de agregado se pueden aplicar a todas las filas de una tabla, a un subconjunto de la tabla especificado por una cláusula WHERE o a uno o varios grupos de filas de la tabla. Cuando se aplica una función de agregado, se genera un valor individual por cada conjunto de filas.
  12. 12. Lenguaje de Manipulación de Datos (DML) Operadores de Agregado Valor menor de la expresión. MIN ( expression ) Valor mayor de la expresión. MAX ( expression ) Número de filas seleccionadas. COUNT (*) Número de valores en la expresión. COUNT ( [ALL | DISTINCT] expression ) Promedio de los valores de la expresión numérica. AVG ( [ALL | DISTINCT] expression ) Total de los valores de la expresión numérica. SUM ( [ALL | DISTINCT] expression ) Resultado Función de agregado
  13. 13. Lenguaje de Manipulación de Datos (DML) Operadores de Agregado SUM, AVG, COUNT, MAX y MIN omiten los valores NULL; COUNT(*) no lo hace. La palabra clave opcional DISTINCT se puede usar con SUM, AVG y COUNT para eliminar los valores duplicados antes de que se establezca la función de agregado. SUM y AVG se pueden usar sólo con columnas numéricas, como, por ejemplo, las de los tipos de datos int , smallint , tinyint , decimal , numeric , float , real , money y smallmoney . MIN y MAX no se pueden usar con tipos de datos bit . El resto de las funciones de agregado que no sean COUNT(*) no se puede usar con los tipos de datos text e image .
  14. 14. Lenguaje de Manipulación de Datos (DML) Operadores de Agregado SUM Retorna: Total de los valores de la expresión numérica. NOMENCLATURA: SUM (Columna para la suma) Ejemplo: Usando la base de dato PUBS. Calcula la suma de las ventas del año hasta la fecha (ytd_sales) de todos los libros de la tabla titles . USE pubs SELECT SUM(ytd_sales) FROM titles
  15. 15. Lenguaje de Manipulación de Datos (DML) Operadores de Agregado AVG Retorna: Promedio de los valores de la expresión numérica. NOMENCLATURA: AVG (Columna a Promediar) Ejemplo: Usando la base de datos PUBS. Puede averiguar el precio promedio de todos los libros si se duplicaran los precios ( tabla titles ). SELECT avg (price * 2) FROM titles
  16. 16. Lenguaje de Manipulación de Datos (DML) Operadores de Agregado MAX Retorna: Valor mayor de la expresión. NOMENCLATURA: MAX (Columna a obtener el Máximo valor) Ejemplo: Usando la base de dato PUBS. Muestre el mayor valor de las las ventas del año (ytd_sales) de todos los libros de la tabla titles. USE pubs SELECT MAX(ytd_sales) FROM titles
  17. 17. Lenguaje de Manipulación de Datos (DML) Operadores de Agregado MIN Retorna: Valor menor de la expresión. NOMENCLATURA: MIN (Columna a obtener el Mínimo valor) Ejemplo: Usando la base de dato PUBS. Muestre el mínimo valor de las ventas del año (ytd_sales) de todos los libros de la tabla titles. USE pubs SELECT MIN (ytd_sales) FROM titles
  18. 18. Lenguaje de Manipulación de Datos (DML) Operadores de Agregado COUNT Retorna: Número de valores en la expresión. En el caso de utilizar (*) retorna el numero de filas. NOMENCLATURA: COUNT (expresión) o COUNT (*) Ejemplo: Usando la base de datos PUBS. Cuente las filas de la tabla titles. Use Pubs SELECT COUNT(*) FROM titles
  19. 19. Lenguaje de Manipulación de Datos (DML) Operadores de Agregado COUNT Ejemplo: Usando la base de datos PUBS. Cuente los datos de la tabla titles, cuyo tipo (TYPE) sea business . Use Pubs SELECT COUNT(TYPE) FROM titles WHERE TYPE = ‘business’
  20. 20. Lenguaje de Manipulación de Datos (DML) Sentencia GROUP BY Esta sentencia no permite dividir el resultado de una lista de selección en grupos más pequeños. Para poder listar otras columnas con las funciones de agregación se debe utilizar esta sentencia. NOMENCLATURA: SELECT lista _de_seleccion FROM Tablas [WHERE OPCIONAL] GROUP BY Nombre_columnas_de_grupo
  21. 21. Lenguaje de Manipulación de Datos (DML) Sentencia GROUP BY Ejemplo: Utilizando la base de datos PUBS. Liste las suma de las ventas por año ( ytd_sales ) hasta la fecha, clasificándolas por tipo (TYPE) de titulo (titles). Use Pubs SELECT TYPE,SUM(ytd_sales) FROM titles GROUP BY TYPE –Resultados mostrados por TYPE Ejemplo: (GRUPOS DENTRO DE GRUPOS). Liste las sumas de las ventas por año (ydt_sales) hasta la fecha, clasificándolas por tipo (TYPE) y pub_id. Use Pubs SELECT TYPE, pub_id,SUM(ytd_sales) from titles Group by TYPE, pub_id - - El orden de evaluación es TYPE, pub_id
  22. 22. Lenguaje de Manipulación de Datos (DML) Sentencia GROUP BY – CLAUSULA HAVING Esta cláusula se utiliza si se desea especificar cuales grupos van a ser desplegados, o sea, restringir los grupos que retornan. NOMENCLATURA: SELECT columnas FROM Tablas [WHERE OPCIONAL] GROUP BY columnas_para_grupos HAVING condiciones_para_grupos Ejemplo: Utilizando el ultimo ejemplo. Liste solamente los grupos cuyo pub_id sea igual a 0877. Utilice HAVING SELECT TYPE, pub_id,SUM(ytd_sales) from titles Group by TYPE,pub_id HAVING pub_id = '0877‘ --ACA SE HACE RESTRICCION PARA LOS GRUPOS
  23. 23. Lenguaje de Manipulación de Datos (DML) TABLAS COMBINADAS Una tabla combinada es el resultado de una operación de combinación realizada sobre dos o más tablas. Se pueden realizar varios tipos de combinaciones de tablas: combinaciones internas (inner), externa completa (full outer), externa por la izquierda (left outer), externa por la derecha (rigth outer) y cruzada (cross). Combinación Interna (Inner Join): Es el tipo de combinación predeterminado; especifica que solamente se han de incluir en el resultado filas de la tabla que satisfagan la condición ON. Para especificar una combinación hay que utilizar la palabra clave JOIN. Se utiliza la palabra clave ON para identificar la condición de búsqueda sobre la cual se basa la combinación. NOMENCLATURA: SELECT columnas_de_las_tablas FROM tabla1 JOIN tabla2 ON condiciones
  24. 24. Lenguaje de Manipulación de Datos (DML) TABLAS COMBINADAS Combinación Interna (Inner Join) Ejemplo: De la base de datos PUBS. Combine las tablas stores y discounts para mostrar que tienda (stor_id) ofrece un descuento y el tipo de descuento (discounttype). Use Pubs SELECT s.stor_id as ALMACEN, d.discounttype as DESCUENTO FROM stores s JOIN discounts d ON s.stor_id = d.stor_id  SELECT s.stor_id as ALMACEN, d.discounttype as DESCUENTO FROM stores as s,discounts as d WHERE s.stor_id = d.stor_id
  25. 25. Lenguaje de Manipulación de Datos (DML) TABLAS COMBINADAS Combinación externas Completas (full Outer Join) Especifica que se debería incluir en el resultado las filas no coincidentes (filas que no cumplen con la condición ON) así como las filas que coincidan (filas que cumplen la condición ON). En el campo donde no es coincidente la condición se coloca NULL. Ejemplo: Utilice el mismo ejemplo anterior solo utilice en el from la instrucción FULL OUTER JOIN. Use Pubs SELECT s.stor_id as ALMACEN, d.discounttype as DESCUENTO FROM stores s FULL OUTER JOIN discounts d ON s.stor_id = d.stor_id
  26. 26. Lenguaje de Manipulación de Datos (DML) TABLAS COMBINADAS Combinación externa por la izquierda (Left Outer Join) Devuelve las filas coincidentes más todas las filas de la tabla que se especifican a la izquierda de la palabra clave JOIN. Ejemplo: Utilice el mismo ejemplo anterior solo utilice en el from la instrucción LEFT OUTER JOIN. Use Pubs SELECT s.stor_id as ALMACEN, d.discounttype as DESCUENTO FROM stores s LEFT OUTER JOIN discounts d ON s.stor_id = d.stor_id
  27. 27. Lenguaje de Manipulación de Datos (DML) TABLAS COMBINADAS Combinación externa por la derecha (Right Outer Join) Es lo contrario a Left Outer Join Ejemplo: Utilice el mismo ejemplo anterior solo utilice en el from la instrucción RIGHT OUTER JOIN. Use Pubs SELECT s.stor_id as ALMACEN, d.discounttype as DESCUENTO FROM stores s RIGHT OUTER JOIN discounts d ON s.stor_id = d.stor_id
  28. 28. Lenguaje de Manipulación de Datos (DML) SELECT ANIDADOS En algunas situaciones es necesario utilizar SELECT anidados para resolver cierta necesidades de consultas que no pueden ser resueltas utilizando un único SELECT. Recordar que al realizar un SELECT se genera una tabla temporal de la lista de selección, esto es lo que realmente hace posible que se puedan generar consultas sobre consultas o condiciones sobre listas de selección. NOMENCLATURA: SELECT Lista_de_selección FROM Tablas o Otros Select. WHERE condiciones [JOIN | SUBCONSULTAS | etc. ]
  29. 29. Lenguaje de Manipulación de Datos (DML) SELECT ANIDADOS Ejemplo: Usando base de datos Northwind . Muestre los Productos (ID del Producto, Nombre y Precio Unitario) que tengan un precio unitario igual al Máximo. SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario FROM Products WHERE UnitPrice = (SELECT MAX (UnitPrice) FROM Products) Ejemplo: Usando base de datos Northwind . Muestre los Productos (ID del Producto, Nombre y Precio Unitario) que tengan un precio unitario igual al Mínimo. SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario FROM Products WHERE UNITPRICE = (SELECT MIN(UNITPRICE) FROM Products)
  30. 30. Lenguaje de Manipulación de Datos (DML) Operador UNION Este operador mezcla los resultados de dos o más consultas en un solo conjunto de resultados que contiene todas las filas que pertenecen a las consultas de la unión. Como restricción las columnas que se obtienen por la UNION en ambas consultas deben ser del mismo tipo de datos. NOMENCLATURA: SELECT * FROM TABLAS UNION [ ALL ] SELECT * FROM TABLAS
  31. 31. Lenguaje de Manipulación de Datos (DML) Operador UNION NOTA: Al usar el operador opcional ALL se listan como resultados todas las filas de ambas consultas. Sino no se utiliza ALL se lista la UNION es decir no se listan datos duplicados. Ejemplo: Realice una unión de las consultas anidadas vistas anteriormente. Usando ambas opciones de unión (Con y Sin ALL). SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario FROM Products WHERE UNITPRICE = (SELECT MIN(UNITPRICE) FROM Products) UNION SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario FROM Products WHERE UNITPRICE = (SELECT MIN(UNITPRICE) FROM Products)
  32. 32. Lenguaje de Manipulación de Datos (DML) Operador UNION SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario FROM Products WHERE UNITPRICE = (SELECT MIN(UNITPRICE) FROM Products) UNION ALL SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario FROM Products WHERE UNITPRICE = (SELECT MIN(UNITPRICE) FROM Products)
  33. 33. Lenguaje de Manipulación de Datos (DML) Ejercicio USE BASE DE DATOS PUBS Obtenga la suma de los Precios Unitarios, cuyos productos tengan un precio igual al Máximo precio unitario o al Mínimo precio unitario de la lista de productos.
  34. 34. Bibliografía <ul><li>“ Introducción a los Sistemas de Base de Datos”, C. J. Date, Prentice Hall – Séptima Edición, 2001. </li></ul><ul><li>“ Running SQL SERVER 2000”, Marci Frohock García & Jamie Reding & Edward Whalen & Steve Adrien Deluca, McGraw – Hill – 2001. </li></ul><ul><li>“ SQL SERVER 7.0 – Iniciación y Referencia”, José Antonio Ramalho, McGraw-Hill – 2000. </li></ul><ul><li>“ Bases de Datos Relacionales”, Matilde Celma Giménez & Juan Casamayor & Laura Mota, Prentice Hall, 2003. </li></ul><ul><li>Cátedra “Introducción a las bases de datos”, Profesor L. Marti, Universidad de Valparaíso, 2004. </li></ul>

×