Your SlideShare is downloading. ×
0
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Bases de Datos Cap-V SQL: Manipulación de datos

3,112

Published on

SQL: Manipulación de datos …

SQL: Manipulación de datos
Ponente: Juan Carlos Morocho

Published in: Education, Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,112
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
301
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • utpl
  • Chapter Name September 98
  • Transcript

    • 1. ESCUELA : NOMBRES: BASE DE DATOS I CICLO Ciencias de la Computación Ing. Juan Carlos Morocho OCTUBRE 2009 – FEBRERO 2010 BIMESTRE: I BIMESTRE
    • 2. Capítulo 5 SQL: Manipulación de datos © Pearson Education Limited 1995, 2005
    • 3. Capítulo 5 - Objetivos
      • El propósito y la importancia del lenguaje SQL ( Structured Query Languaje , Lenguaje estructurado de consulta).
      • Cómo extraer datos de una base de datos usando la instrucción SELECT y construir instrucciones que:
        • utilicen la cláusula WHERE para extraer filas que satisfagan diversas condiciones.
        • ordenen los resultados de las consultas mediante ORDER BY.
        • utilicen las funciones de agregación de SQL
        • agrupen los datos mediante GROUP BY y HAVING.
    • 4. Capítulo 5 - Objetivos
        • Utilicen subconsultas
        • Combinen tablas.
        • Realicen operaciones de conjunto (UNION, INTERSECT, EXCEPT).
      • Cómo realizar actualizaciones en la base de datos mediante INSERT, UPDATE, y DELETE.
      © Pearson Education Limited 1995, 2005
    • 5. Comando SELECT
        • SELECT [DISTINCT | ALL]
        • {* | [expresiónColumna [AS nuevoNombre]] [,...] }
        • FROM NombreTabla [alias] [, ...]
        • [WHERE condición]
        • [GROUP BY listaColumnas] [HAVING condición]
        • [ORDER BY listaColumnas]
      © Pearson Education Limited 1995, 2005
    • 6. Comando SELECT
      • FROM Especifica la tabla o tablas que hay que usar.
      • WHERE Filtra las filas de acuerdo con alguna condición
      • GROUP BY Forma grupos de filas que tengan el mismo valor de columna.
      • HAVING Filtra los grupos de acuerdo con alguna condición.
      • SELECT Especifica qué columnas deben aparecer en la salida.
      • ORDER BY Especifica el orden de la salida.
      © Pearson Education Limited 1995, 2005
    • 7. Comando SELECT
      • El orden de las cláusulas no puede cambiarse.
      • La únicas cláusulas obligatorias son SELECT y FROM.
      © Pearson Education Limited 1995, 2005
    • 8. Ejemplo 5.1 Extraer todas las columnas de todas las filas.
      • Generar un listado con todos los detalles de todo el personal.
      • SELECT staffNo, fName, lName, address,
        • position, sex, DOB, salary, branchNo
        • FROM Staff;
      • Se puede utilizar un asterisco(*) como abreviatura de «todas las columnas»:
        • SELECT *
        • FROM Staff;
      © Pearson Education Limited 1995, 2005
    • 9. Ejemplo 5.1 Extraer todas las columnas de todas las filas © Pearson Education Limited 1995, 2005 Tabla 5.1 Tabla de resultados para el ejemplo 5.1
    • 10. Ejemplo 5.2 Extraer toda una serie de columnas específicas de todas las filas
      • Generar una lista con los salarios de todos los empleados en la que sólo se muestre el número de empleado, el nombre, el apellido y los datos salariales.
        • SELECT staffNo, fName, lName, salary
        • FROM Staff;
      © Pearson Education Limited 1995, 2005
    • 11. Ejemplo 5.2 Extraer toda una serie de columnas específicas de todas las filas © Pearson Education Limited 1995, 2005 Tabla 5.2 Tabla de resultados para el ejemplo 5.2
    • 12. Ejemplo 5.3 Uso de DISTINCT
      • Generar un listado con los números de inmueble de todos los inmuebles que hayan sido visitados.
      • SELECT propertyNo
        • FROM Viewing;
      © Pearson Education Limited 1995, 2005
    • 13. Ejemplo 5.3 Uso de DISTINCT
      • Uso de DISTINCT para eliminar duplicados:
      • SELECT DISTINCT propertyNo
        • FROM Viewing;
      © Pearson Education Limited 1995, 2005
    • 14. Ejemplo 5.4 Campos calculados
      • Generar una lista con el salario mensual de todos los empleados que muestre número de empleado, nombre, apellido y la información salarial.
      • SELECT staffNo, fName, lName, salary/12
        • FROM Staff;
      © Pearson Education Limited 1995, 2005 Tabla 5.4 Tabla de resultados para el ejemplo 5.4
    • 15. Ejemplo 5.4 Campos calculados
      • Se puede dar un nombre a la columna mediante la cláusula AS:
      • SELECT staffNo, fName, lName, salary/12
        • AS monthlySalary
        • FROM Staff;
      © Pearson Education Limited 1995, 2005
    • 16. Ejemplo 5.5 Condición de búsqueda basada en comparación
      • Generar una lista de todos los empleados con salario superior a 10.000 euros.
      • SELECT staffNo, fName, lName, position, salary
        • FROM Staff
        • WHERE salary > 10000;
      © Pearson Education Limited 1995, 2005 Tabla 5.5 Tabla de resultados para el ejemplo 5.5
    • 17. Ejemplo 5.6 Condición de búsqueda basada en una comparación compuesta
      • Genere una lista con la dirección de todas las sucursales de Londres y Glasgow
      • SELECT *
        • FROM Branch
        • WHERE city = ‘London’ OR city = ‘Glasgow’;
      © Pearson Education Limited 1995, 2005 Tabla 5.6 Tabla de resultados para el ejemplo 5.6
    • 18. Ejemplo 5.7 Condición de búsqueda basada en rango
      • Generar un listado con todos los empleados cuyo salario esté comprendido entre 20.000 y 30.000 euros.
      • SELECT staffNo, fName, lName, position, salary
        • FROM Staff
        • WHERE salary BETWEEN 20000 y 30000;
      • BETWEEN indica los puntos extremos del rango.
      © Pearson Education Limited 1995, 2005
    • 19. Ejemplo 5.7 Condición de búsqueda basada en rango © Pearson Education Limited 1995, 2005 Tabla de resultados para el ejemplo 5.7 Tabla 5.7
    • 20. Ejemplo 5.7 Condición de búsqueda basada en rango
      • También existe una versión negada NOT BETWEEN.
      • BETWEEN no añade mucha potencia expresiva a SQL. También se puede escribir:
      • SELECT staffNo, fName, lName, position, salary
        • FROM Staff
        • WHERE salary>=20000 y salary <= 30000;
      • Sin embargo, es la forma más sencilla de expresar una condición de búsqueda cuando lo que estemos considerando sea un rango de valores.
      © Pearson Education Limited 1995, 2005
    • 21. Ejemplo 5.8 Pertenencia a un conjunto
      • Generar una lista de todos los gerentes y supervisores.
        • SELECT staffNo, fName, lName, position
        • FROM Staff
        • WHERE position IN (‘Manager’, ‘Supervisor’);
      © Pearson Education Limited 1995, 2005 Tabla de resultados para el ejemplo 5.8 Tabla 5.8
    • 22. Ejemplo 5.9 Correspondencia de patrones
      • Localizar todos los propietarios en cuya dirección aparezca la cadena de caracteres «Glasgow».
      • SELECT ownerNo, fName, lName, address, telNo
        • FROM PrivateOwner
        • WHERE address LIKE ‘%Glasgow%’;
      © Pearson Education Limited 1995, 2005 Tabla de resultados para el ejemplo 5.9 Tabla 5.9
    • 23. Ejemplo 5.10 Condición de búsqueda NULL
      • Generar un listado con los detalles de todas las visitas al inmueble PG4 para las que no se haya introducido ningún comentario.
      • Se han producido dos visitas al inmueble PG4, una con comentario y otra sin el.
      • Tenemos que comprobar explícitamente la existencia de valores nulos, utilizando la palabra clave especial IS NULL:
      • SELECT clientNo, viewDate
        • FROM Viewing
        • WHERE propertyNo = ‘PG4’ y
        • comment IS NULL;
    • 24. Ejemplo 5.10 Condición de búsqueda NULL
      • También puede emplearse la versión negada (IS NOT NULL) para buscar valores que no sean nulos.
      © Pearson Education Limited 1995, 2005
    • 25. Ejemplo 5.11 Ordenación de los resultado en una sola columna
      • Generar una lista con el salario de todos los empleados, en orden descendente.
      • SELECT staffNo, fName, lName, salary
        • FROM Staff
        • ORDER BY salary DESC;
      © Pearson Education Limited 1995, 2005
    • 26. Ejemplo 5.11 Ordenación de resultado en una sola columna © Pearson Education Limited 1995, 2005 Tabla de resultados para el ejemplo 5.11 Tabla 5.11
    • 27. Ejemplo 5.12 Ordenación multicolumna
      • Generar una lista abreviada de inmuebles ordenada según el tipo de inmueble.
      • SELECT propertyNo, type, rooms, rent
        • FROM PropertyForRent
        • ORDER BY type;
      © Pearson Education Limited 1995, 2005
    • 28. Ejemplo 5.12 Ordenación multicolumna © Pearson Education Limited 1995, 2005 Tabla 5.12(a) Tabla de resultados para el ejemplo 5.12 con una clave de ordenación
    • 29. Ejemplo 5.12 Ordenación multicolumna
      • Hay cuatro pisos en esta lista. Como no hemos especificado ninguna clave secundaria de ordenación, el sistema ordena estas filas de cualquier manera.
      • Para ordenar lo resultados según el importe del alquiler, podemos especificar un orden secundario:
      • SELECT propertyNo, type, rooms, rent
        • FROM PropertyForRent
        • ORDER BY type, rent DESC;
      © Pearson Education Limited 1995, 2005
    • 30. Ejemplo 5.12 Ordenación multicolumna © Pearson Education Limited 1995, 2005 Tabla 5.12 (b) Tabla de resultados para el ejemplo 5.12 con dos claves de ordenación
    • 31. Comando SELECT – Funciones de agregación
      • El estándar ISO define cinco funciones de agregación:
      • COUNT devuelve el número de valores en una columna especificada.
      • SUM devuelve la suma de los valores contenidos en una columna especificada.
      • AVG devuelve la media de los valores contenidos en una columna especificada.
      • MIN devuelve el valor más pequeño contenido en una columna especificada.
      • MAX devuelve al valor más alto contenido en una columna especificada.
    • 32. Comando SELECT - Funciones de agregación
      • Cada una opera sobre una única columna de una tabla y devuelve un único valor.
      • COUNT, MIN, y MAX se aplican a campos tanto numéricos como no numéricos, pero SUM y AVG sólo pueden emplearse con campos numéricos.
      • Dejando aparte COUNT(*), todas las funciones eliminan en primer lugar los valores nulos y utilizan para sus operaciones únicamente los restantes valores no nulos.
      © Pearson Education Limited 1995, 2005
    • 33. Comando SELECT – Funciones de agregación
      • COUNT(*) se emplea para contar todas las filas de una tabla, independientemente de si existen valores nulos o valores duplicados.
      • Se emplea DISTINCT antes de la columna a la que se aplica la función para eliminar los duplicados.
      • DISTINCT no tiene ningún efecto con las funciones MIN/MAX, pero sí que puede influir sobre el resultado de SUM/AVG.
      © Pearson Education Limited 1995, 2005
    • 34. Comando SELECT – Funciones de agregación
      • Las funciones de agregación sólo pueden duplicarse en la lista SELECT y en la cláusula HAVING.
      • Si la lista SELECT incluye una función de agregación y no se está empleando ninguna cláusula GROUP BY, entonces ningún elemento de la lista SELECT puede incluir ninguna referencia a una columna a menos que dicha columna sea el argumento de una función de agregación. Por ejemplo la siguiente consulta sería ilegal:
      • SELECT staffNo, COUNT(salary)
        • FROM Staff;
      © Pearson Education Limited 1995, 2005
    • 35. Ejemplo 5.13 Utilización de COUNT(*)
      • ¿Cuántos inmuebles tienen un alquiler superior a 350 euros por mes?
      • SELECT COUNT(*) AS myCount
        • FROM PropertyForRent
        • WHERE rent > 350;
      © Pearson Education Limited 1995, 2005
    • 36. Ejemplo 5.14 Utilización de COUNT (DISTINCT)
      • ¿Cuántos inmuebles distintos fueron visitados en mayo de 2004?
      • SELECT COUNT(DISTINCT propertyNo) AS myCount
        • FROM Viewing
        • WHERE viewDate BETWEEN ‘1-May-04’
        • y ‘31-May-04’;
      © Pearson Education Limited 1995, 2005
    • 37. Ejemplo 5.15 Utilización de COUNT y SUM
      • Hallar el número total de gerentes y la suma de sus salarios.
      • SELECT COUNT(staffNo) AS myCount,
        • SUM(salary) AS mySum
        • FROM Staff
        • WHERE position = ‘Manager’;
    • 38. Ejemplo 5.16 Utilización de MIN, MAX, AVG
      • Calcular el salario mínimo, máximo y medio de los empleados.
      • SELECT MIN(salary) AS myMin,
        • MAX(salary) AS myMax,
        • AVG(salary) AS myAvg
        • FROM Staff;
    • 39. Comando SELECT – Agrupación de resultados
      • Se utiliza GROUP BY para agrupar los datos de las tablas.
      • SELECT y GROUP BY están estrechamente integradas: cada elemento de la lista SELECT debe tener un único valor para cada grupo , y la cláusula SELECT sólo puede contener:
        • Nombres de columnas
        • Funciones de agregación
        • Constantes
        • Expresiones en las que se combinen algunos de los elementos anteriores.
    • 40. Comando SELECT - Agrupación
      • Todos los nombres de columna contenidos en la lista SELECT deben aparecer obligatoriamente en la cláusula GROUP BY, a menos que el nombre se esté usando únicamente dentro de una función de agregación.
      • Si la cláusula WHERE se emplea con GROUP BY, se aplica primero la cláusula WHERE y luego se forman los grupos a partir de las filas restantes que satisfacen la condición de búsqueda.
      • El estándar ISO considera que dos valores nulos son iguales en lo que respecta a la cláusula GROUP BY.
      © Pearson Education Limited 1995, 2005
    • 41. Ejemplo 5.17 Utilización de GROUP BY
      • Calcular el número de empleados que trabajan en cada sucursal y la suma de sus salarios.
        • SELECT branchNo,
        • COUNT(staffNo) AS myCount,
          • SUM(salary) AS mySum
          • FROM Staff
          • GROUP BY branchNo
          • ORDER BY branchNo;
      © Pearson Education Limited 1995, 2005
    • 42. Ejemplo 5.17 Utilización de GROUP BY © Pearson Education Limited 1995, 2005
    • 43. Restricción de los agrupamientos – Cláusula HAVING
      • La cláusula HAVING está diseñada para ser utilizada con la cláusula GROUP BY con el fin de restringir los grupos que aparecen en la tabla final de resultados.
      • Parecida a WHERE, pero WHERE filtra las filas individuales que se encuentran en la tabla final de resultados, mientras que HAVING filtra los grupos.
      • Los nombres de las columnas utilizados en la cláusula HAVING tienen que aparecer también en la vista GROUP BY o estar contenidos dentro de una función de agregación.
    • 44. Ejemplo 5.18 Utilización de HAVING
      • Para cada sucursal que tenga más de un empleado, averiguar el número de empleados que trabajan en cada sucursal y la suma de sus salarios.
        • SELECT branchNo,
        • COUNT(staffNo) AS myCount,
          • SUM(salary) AS mySum
          • FROM Staff
          • GROUP BY branchNo
          • HAVING COUNT(staffNo) > 1
          • ORDER BY branchNo;
    • 45. Ejemplo 5.18 Utilización de HAVING © Pearson Education Limited 1995, 2005
    • 46. Suconsultas
      • Algunas instrucciones SQL pueden incluir una instrucción SELECT.
      • Puede utilizarse una subselección en las cláusulas WHERE y HAVING de una instrucción SELECT, en cuyo caso se denomina a esa instrucción subconsulta o consulta anidada.
      • Las subselecciones pueden aparecer también dentro de las instrucciones INSERT, UPDATE, y DELETE.
      © Pearson Education Limited 1995, 2005
    • 47. Ejemplo 5.19 Utilización de una subconsulta con el operador de igualdad
      • Generar un listado con todos los empleados de ka sucursal ubicada en «163 Main St».
      • SELECT staffNo, fName, lName, position
        • FROM Staff
        • WHERE branchNo =
        • (SELECT branchNo
        • FROM Branch
        • WHERE street = ‘163 Main St’);
      © Pearson Education Limited 1995, 2005
    • 48. Ejemplo 5.19 Subconsulta con el operador de igualdad
      • La instrucción SELECT interna extrae el número de sucursal correspondiente a la sucursal situada en la calle «163 Main St» (‘B003’).
      • La instrucción SELECT externa extrae los detalles de todos los empleados que trabajan en esta sucursal.
      • La instrucción SELECT externa se convierte en:
        • SELECT staffNo, fName, lName, position
          • FROM Staff
          • WHERE branchNo = ‘B003’;
      © Pearson Education Limited 1995, 2005
    • 49. Ejemplo 5.19 Subconsulta con el operador de igualdad © Pearson Education Limited 1995, 2005 Tabla 5.19 Tabla de resultados para el ejemplo 5.19
    • 50. Ejemplo 5.20 Subconsulta con una función de agregación
      • Generar un listado de todos los empleados cuyo salario sea superior al salario medio, indicando cuál es la diferencia en cada caso con respecto al salario medio.
        • SELECT staffNo, fName, lName, position,
        • salary – (SELECT AVG(salary) FROM Staff) As SalDiff
        • FROM Staff
        • WHERE salary >
          • (SELECT AVG(salary)
          • FROM Staff);
    • 51. Ejemplo 5.20 Subconsulta con función de agregación
      • No podemos escribir «WHERE salary > AVG(salary)»
      • Sin embargo, utilizamos una subconsulta para hallar el salario medio y luego empleamos la instrucción SELECT externa para extraer los empleados que tengan un salario superior al salario medio calculado:
        • SELECT staffNo, fName, lName, position,
        • salary – 17000 As salDiff
        • FROM Staff
        • WHERE salary > 17000;
    • 52. Ejemplo 5.20 Subconsulta con función de agregación © Pearson Education Limited 1995, 2005 Tabla de resultados para el ejemplo 5.20 Tabla 5.20
    • 53. Consultas multitabla
      • Hasta ahora hemos podido utilizar las subconsulta siempre y cuando los resultados provinieran de la misma tabla.
      • Para combinar columnas de diversas tablas debemos utilizar una operación de combinación.
      • Para esta operación de combinación debemos incluir más de un nombre de tabla en la cláusula FROM.
      • Se utiliza una coma como separador, incluyendo una cláusula WHERE para especificar la columna o columnas con las que hay que realizar la combinación.
    • 54. Consultas multitabla
      • También se puede utilizar un alias para las tablas incluidas en la cláusula FROM.
      • El alias se separa del nombre de la tabla mediante un espacio.
      • El alias puede emplearse para cualificar los nombres de columna en aquellos casos donde exista ambigüedad.
    • 55. Ejemplo 5.24 Combinación simple
      • Generar un listado con los nombres de todos los clientes que hayan visitado un inmueble, incluyendo en el los comentarios realizados.
      • SELECT c.clientNo, fName, lName,
        • propertyNo, comment
        • FROM Client c, Viewing v
        • WHERE c.clientNo = v.clientNo;
      © Pearson Education Limited 1995, 2005
    • 56. Ejemplo 5.24 Combinación simple
      • Sólo se incluirán en el resultado aquellas columnas de ambas tablas que tengas valores idénticos en la columna del clientNo, utilizando la condición de búsqueda (c.clientNo = v.clientNo).
      • Equivalente a la operación de equicombinación del álgebra relacional.
      Tabla de resultados para el ejemplo 5.24 Tabla 5.24
    • 57. Construcciones alternativas de combinación
      • En SQL existen formas alternativas de especificar esta combinación:
      • FROM Client c JOIN Viewing v ON c.clientNo = v.clientNo
      • FROM Client JOIN Viewing USING clientNo
      • FROM Client NATURAL JOIN Viewing
      • En cada uno de los casos , la cláusula FROM sustituye a las cláusulas FROM y WHERE originales. Sin embargo, la primer alternativa produce una tabla con dos columnas clientNo idénticas.
      © Pearson Education Limited 1995, 2005
    • 58. Ejemplo 5.25 Ordenación de una combinación
      • Para cada sucursal, indicar los números y los nombres de los empledos que gestionan inmuebles, así como los inmuebles que gestionan.
      • SELECT s.branchNo, s.staffNo, fName, lName,
        • propertyNo
        • FROM Staff s, PropertyForRent p
        • WHERE s.staffNo = p.staffNo
        • ORDER BY s.branchNo, s.staffNo, propertyNo;
    • 59. Ejemplo 5.25 Ordenación de una combinación © Pearson Education Limited 1995, 2005 Tabla de resultados para el ejemplo 5.25 Tabla 5.25
    • 60. Ejemplo 5.26 Combinación de tres tablas
      • Para cada sucursal, indicar los números y los nombres de los empleados que gestionan inmuebles, así como los inmuebles que gestionan.
      • SELECT b.branchNo, b.city, s.staffNo, fName, lName,
        • propertyNo
        • FROM Branch b, Staff s, PropertyForRent p
        • WHERE b.branchNo = s.branchNo y
        • s.staffNo = p.staffNo
        • ORDER BY b.branchNo, s.staffNo, propertyNo;
    • 61. Ejemplo 5.26 Combinación de tres tablas
      • El estándar SQL proporciona formulaciones alternativas para las cláusulas FROM y WHERE:
        • FROM (Branch b JOIN Staff s USING branchNo) AS bs JOIN PropertyForRent p USING staffNo
      © Pearson Education Limited 1995, 2005 Tabla de resultados para el ejemplo 5.26 Tabla 5.26
    • 62. Ejemplo 5.27 Múltiples columnas de agrupamiento
      • Determinar el número de inmuebles gestionados por cada empleado.
      • SELECT s.branchNo, s.staffNo, COUNT(*) AS myCount
        • FROM Staff s, PropertyForRent p
        • WHERE s.staffNo = p.staffNo
        • GROUP BY s.branchNo, s.staffNo
        • ORDER BY s.branchNo, s.staffNo;
      © Pearson Education Limited 1995, 2005
    • 63. Ejemplo 5.27 Múltiples columnas de agrupamiento © Pearson Education Limited 1995, 2005
    • 64. Combinaciones externas
      • Si una fila de una tabla no tiene ninguna correspondencia en la otra, se omite dicha fila de la tabla de resultados.
      • La combinación externa retiene aquellas filas que no satisfagan la condición de combinación.
      • Consideremos las siguientes tablas:
      © Pearson Education Limited 1995, 2005
    • 65. Combinaciones externas
      • La combinación (interna) de estas dos tablas:
        • SELECT b.*, p.*
          • FROM Branch1 b, PropertyForRent1 p
          • WHERE b.bCity = p.pCity;
      Tabla 27(b). Tabla de resultados para la combinación interna de las tablas Branch1 y PropertyForRent1.
    • 66. Combinaciones externas
      • La tabla de resultados tiene dos filas en las que las ciudades son iguales.
      • No hay ninguna fila correspondiente a las sucursales de Bristol y Aberdeen.
      • Para incluir aquellas filas que no satisfagan la condición de la combinación.
      © Pearson Education Limited 1995, 2005
    • 67. Ejemplo 5.28 Combinación externa izquierda
      • Generar un listado con todas las sucursales y los inmuebles que estén en la misma ciudad que alguna sucursal.
      • SELECT b.*, p.*
        • FROM Branch1 b LEFT JOIN
        • PropertyForRent1 p ON b.bCity = p.pCity;
      © Pearson Education Limited 1995, 2005
    • 68. Ejemplo 5.28 Combinación externa izquierda
      • Incluye aquellas filas de la primera tabla (la de la izquierda) que no tienen ninguna fila correspondiente en la segunda tabla (la de la derecha).
      • Las columnas correspondientes a la segunda tabla se rellenan con valores NULL.
      © Pearson Education Limited 1995, 2005 Tabla 5.28 Tabla de resultados para el ejemplo 5.28
    • 69. Ejemplo 5.29 Combinación externa derecha
      • Generar un listado de todos los inmuebles y de las sucursales que estén en la misma ciudad.
      • SELECT b.*, p.*
        • FROM Branch1 b RIGHT JOIN
        • PropertyForRent1 p ON b.bCity = p.pCity;
      © Pearson Education Limited 1995, 2005
    • 70. Ejemplo 5.29 Combinación exterior derecha
      • Incluye aquellas filas de la segunda tabla (la de la derecha) que ni tienen ninguna fila correspondiente a la primera tabla (la de la izquierda).
      • Las columnas correspondientes a la primera tabla se rellenan con valores NULL.
      © Pearson Education Limited 1995, 2005 Tabla 5.29 Tabla de resultados para el ejemplo 5.29
    • 71. Ejemplo 5.30 Combinación externa completa
      • Generar un listado con las sucursales e inmuebles que estén en la misma ciudad, sino también aquellas tablas que no tienen ninguna correspondencia.
      • SELECT b.*, p.*
        • FROM Branch1 b FULL JOIN
        • PropertyForRent1 p ON b.bCity = p.pCity;
      © Pearson Education Limited 1995, 2005
    • 72. Ejemplo 5.30 Combinación externa completa
      • Incluye aquellas filas de ambas tablas que no tienen ninguna fila correspondiente.
      • En las columnas sin correspondencia aparece NULL.
      © Pearson Education Limited 1995, 2005 Tabla 5.30 Tabla de resultados para el ejemplo 5.30
    • 73. Unión, intersección y diferencia
      • Se pueden emplear las operaciones normales de conjuntos, unión, intersección y diferencia para combinar los resultados de dos o más consultas en una única tabla de resultados.
      • La unión de dos tablas, A y B,es una tabla que contiene todas las filas que están incluidas en la primera tabla A o en la segunda tabla B o en ambas.
      • Las intersección es una tabla que contiene todas las filas que son comunes a A y B.
      • La diferencia es una tabla que contiene todas filas que están contenidas en la taba A pero no en B.
      • Las dos tablas deben ser compatibles con respecto a la unión .
    • 74. Unión, Intersección, y diferencia (Except)
      • El formato de la cláusula del operador de conjuntos es, en todos los casos:
        • op [ALL] [CORRESPONDING [BY {columna1 [, ...]}]]
      • Si se especifica CORRESPONDING BY, la operación de conjuntos se realizará sobre las columnas designadas.
      • Si se especifica CORRESPONDING pero no la cláusula BY, la operación de conjuntos se realiza sobre todas las columnas que sean comunes a ambas tablas.
      • Si se especifica ALL el resultado puede incluir filas duplicadas.
    • 75. Unión, Intersección, y diferencia(Except) © Pearson Education Limited 1995, 2005 Unión Intersección Diferencia
    • 76. Ejemplo 5.32 Utilización de UNIóN
      • Construir una lista de todas las ciudades en las que exista una sucursal o un inmueble.
      • (SELECT city
        • FROM Branch
        • WHERE city IS NOT NULL) UNION
        • (SELECT city
        • FROM PropertyForRent
        • WHERE city IS NOT NULL);
      © Pearson Education Limited 1995, 2005
    • 77. Ejemplo 5.32 Utilización de UNIóN
      • O bien
        • (SELECT * FROM Branch WHERE city IS NOT NULL) UNION CORRESPONDING BY city (SELECT * FROM PropertyForRent WHERE city IS NOT NULL);
      © Pearson Education Limited 1995, 2005
    • 78. Ejemplo 5.32 Utilización de UNIóN
      • Genera una tabla de resultados a partir de la primera consulta y otra tabla de resultados a partir de la segunda y junta las dos tablas eliminando las filas duplicadas.
      © Pearson Education Limited 1995, 2005 Tabla 5.32 Tabla de resultados para el ejemplo 5.32
    • 79. INSERT
      • INSERT INTO NombreTabla [ (listaColumnas) ]
        • VALUES (listaValoresDatos)
      • La ListaColumnas es opcional; si se omite, SQL utilizará de forma predeterminada una lista de todas las columnas en su orden original especificado en CREATE TABLE.
      • Cualquier columna omitida debe haber sido declarada como NULL cuando se creo la tabla, a menos que se haya utilizado la opción DEFAULT al crear la columna.
    • 80. INSERT
      • La ListaValoresDatos debe corresponderse con la ListaColumnas de la siguiente forma:
        • el número de elementos de cada lista debe ser el mismo;
        • Debe haber una correspondencia directa entre las posiciones de los elementos de ambas listas;
        • El tipo de datos de cada elemento de ListaValoresDatos debe ser compatible con el tipo de datos de la correspondiente columna.
    • 81. Ejemplo 5.35 INSERT … VALUES
      • Insertar una nueva fila en la tabla Staff y suministrarle los datos para todas las columnas.
      • INSERT INTO Staff
        • VALUES (‘SG16’, ‘Alan’, ‘Brown’, ‘Assistant’, ‘M’, Date‘1957-05-25’, 8300, ‘B003’);
      © Pearson Education Limited 1995, 2005
    • 82. Ejemplo 5.36 INSERT utilizando valores predeterminados
      • Insertar una nueva fila en la tabla Staff y suministrarle datos para todas las columnas obligatorias.
      • INSERT INTO Staff (staffNo, fName, lName,
        • position, salary, branchNo)
        • VALUES (‘SG44’, ‘Anne’, ‘Jones’,
        • ‘ Assistant’, 8100, ‘B003’);
      • O
        • INSERT INTO Staff
        • VALUES (‘SG44’, ‘Anne’, ‘Jones’, ‘Assistant’, NULL,
        • NULL, 8100, ‘B003’);
    • 83. INSERT … SELECT
      • La segunda forma de la instrucción INSERT permite copiar múltiples filas de una o más tablas en otra tabla:
      • INSERT INTO NombreTabla [ (ListaColumnas) ]
        • SELECT ...
      © Pearson Education Limited 1995, 2005
    • 84. Ejemplo 5.37 INSERT … SELECT
      • Suponga que hay una tabla StaffPropCount que contiene los nombres de los empleados y el número de inmuebles que gestionan.
        • StaffPropCount( staffNo , fName, lName, propCnt)
      • Populate StaffPropCount using Staff y PropertyForRent tables.
    • 85. Ejemplo 5.37 INSERT … SELECT
        • INSERT INTO StaffPropCount
        • (SELECT s.staffNo, fName, lName, COUNT(*)
        • FROM Staff s, PropertyForRent p
        • WHERE s.staffNo = p.staffNo
        • GROUP BY s.staffNo, fName, lName)
        • UNION
        • (SELECT staffNo, fName, lName, 0
        • FROM Staff
        • WHERE staffNo NOT IN
        • (SELECT DISTINCT staffNo
        • FROM PropertyForRent));
    • 86. Ejemplo 5.37 INSERT … SELECT
      • Si omitimos la segunda parte de la operación UNION, excluye a aquellos empleados que no gestionan ningún inmueble en la actualidad.
    • 87. UPDATE
        • UPDATE NombreTabla
        • SET NombreColumna1 = valorDatos1
        • [, NombreColumna2 = valorDatos2...]
        • [WHERE condiciónBúsqueda]
      • NombreTabla puede ser el nombre de una tabla base o de una vista actualizable.
      • La cláusula SET especifica los nombres de una o más columnas que hay que actualizar.
    • 88. UPDATE
      • La cláusula WHERE es opcional:
        • Si se omite, las columnas especificadas se actualizarán para todas las filas de la tabla;
        • Si se especifica sólo se actualizarán aquellas filas que satisfagan la condiciónBúsqueda .
      • Los nuevos valores valorDatos deben ser compatibles con ,os tipos de datos de las columnas correspondientes.
    • 89. Ejemplo 5.38/39 Actualización de todas las filas mediante UPDATE
      • Incrementar en un 3% el salario de todos los empleados.
      • UPDATE Staff
        • SET salary = salary*1.03;
      • Incrementar un 5% el salario de todos los gerentes.
      • UPDATE Staff
        • SET salary = salary*1.05
        • WHERE position = ‘Manager’;
    • 90. Ejemplo 5.40 Actualización de múltiples columnas mediante UPDATE
      • Ascender a David Ford (staffNo=‘SG14’) a gerente e incrementar su salario a 18000 euros.
      • UPDATE Staff
        • SET position = ‘Manager’, salary = 18000
        • WHERE staffNo = ‘SG14’;
    • 91. DELETE
        • DELETE FROM NombreTabla
        • [WHERE condiciónBúsqueda]
      • NombreTabla puede ser el nombre de una base o de una vista actualizable.
      • condiciónBúsqueda es opcional; si se la omite, todas las filas serán borradas de la tabla. Esto no hace que se borre la propia tabla; Si se especifica condiciónBúsqueda , sólo se borrarán aquellas filas que satisfagan la condición indicada.
      © Pearson Education Limited 1995, 2005
    • 92. Ejemplo 5.41/42 Borrado de filas específicas mediante DELETE
      • Borrar todas las filas relativas al inmueble PG4.
      • DELETE FROM Viewing
        • WHERE propertyNo = ‘PG4’;
      • Borrar todas las filas de la tabla de búsqueda.
        • DELETE FROM Viewing;
    • 93.  

    ×