1 / 54

Fundamentos de Bases de Datos

Fundamentos de Bases de Datos. El lenguaje estándar para acceso y manipulación de Bases de Datos: Structured Query Language ( SQL ). Base de datos Northwind. Esta BD contiene información de pedidos , clientes , empleados , productos , proveedores , etc.

oma
Download Presentation

Fundamentos de Bases de Datos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fundamentos de Bases de Datos El lenguaje estándar para acceso y manipulación de Bases de Datos: Structured Query Language (SQL)

  2. Base de datos Northwind • Esta BD contiene información de pedidos, clientes, empleados, productos, proveedores, etc. • Las llaves primarias están en negritas

  3. Consultando la información de Northwind • Para consultar los datos que están almacenados en una Base de datos se utiliza el lenguaje de manipulación de datos SQL • Para obtener la información de las compañías que envían los paquetes se ejecuta el siguiente comando o query Atributos Tabla

  4. Ejemplo usando Select * • La consulta más compacta es obtener todos los atributos de una tabla • Por ejemplo para obtener toda la información de los clientes, utilizamos el siguiente query • El (*) asterisco indica que se deben obtener todos los atributos del cliente: select * from Customers

  5. Ejecutando las consultas • Utilizando Microsoft SQL Server Management Studio: Query Base de datos utilizada Ejecutar query Resultados

  6. SQL: STRUCTURED QUERY LANGUAGE • Los ejemplos anteriores muestran un ejemplo sencillo del SQL, para hacer consultas más elaboradas se requiere conocer la sintaxis del SQL: SELECT [DISTINCT | ALL] {* | [columnExpression [AS newName]] [,...] } FROM TableName [alias] [, ...] [WHERE condition] [GROUP BY columnList] [HAVING condition] [ORDER BY columnList]

  7. El estatuto SELECT SELECT Especifica las columnas a mostrar en el resultado FROM Especifica la(s) tabla(s) a utilizar. WHERE Filtra renglones de acuerdo a la condición especificada. GROUP BY Forma grupos de renglones con el mismo valor en la columna HAVING Filtra grupos de acuerdo a la condición especificada. ORDER BY Especifica como ordenar el resultado.

  8. Mostrar solo algunos atributos • Obtener solo algunos atributos y todos los registros de una tabla SELECT A1, A2, …, An FROM r1

  9. Evitar tuplas duplicadas Mostrar en que ciudades hay clientes Se repiten las ciudades Usar DISTINCT No se repiten

  10. Especificando una condición • Obtener nombre de compañía y del contacto de los clientes que viven en London

  11. Especificando una condición con patrones • Obtener nombre de compañía y del contacto de los clientes cuya ciudad comienza con B patrones • % • Ignora los valores de cero o más caracteres • _ • Ignora el valor de un caracter

  12. Especificando una condición con patrones • Obtener nombre de compañía y del contacto de los clientes cuya ciudad tenga como penultima letra una e % cero o más caracteres _1 sólo caracter

  13. Especificando varias condiciones (OR) • Obtener nombre de compañía y del contacto de los clientes cuya ciudad sea London o Buenos Aires

  14. Especificando varias condiciones (AND) • Obtener nombre de compañía y del contacto de los clientes cuya ciudad sea London y que la persona contacto sea un Agente de ventas (Sales Agent)

  15. Uso de Conjuntos en una Condición (IN) • Obtener nombre de compañía, nombre y titulo del contacto de los clientes cuya persona contacto sea un Agente de ventas (Sales Agent) o un representante de ventas (Sales Representative) o un asociado de ventas (Sales Associate)

  16. Conjuntos en una condición (NOT IN) • Obtener nombre de compañía, nombre y titulo del contacto de los clientes cuya persona contacto NO sea un Agente de ventas (Sales Agent) o un representante de ventas (Sales Representative) o un asociado de ventas (Sales Associate)

  17. Verificando valores NULL • Obtener Id del cliente, nombre de la compañía y la Region para aquellos clientes cuya Region sea NULL Null Valor que significaque al atributo no se le asignó un valoro se le asignó NULL

  18. Verificando valores NOT NULL • Obtener Id del cliente, nombre de la compañía y la Region para aquellos clientes cuya Region tenga un valor asignado

  19. Ordenando los resultados (ascendente) • Obtener el nombre del producto y su precio unitario ordenando del producto más barato al más caro • El default es ordenar de menor a mayor

  20. Ordenando los resultados (descendente) • Obtener el nombre del producto y su precio unitario ordenando del producto más caro al más barato • Usar la clausula DESC

  21. Funciones en SQL • Las siguientes funciones aplican a valores numéricos y no numéricos: • COUNT • Regresa cuantos valores (diferentes de NULL) existen en la columna especificada. • COUNT(*) • Regresa el número de registros en la tabla especificada • MIN • Regresa el mínimo de los contenidos de la columna especificada. Primero elimina NULLs • MAX • Regresa el máximo de los contenidos de la columna especificada. Primero elimina NULLs

  22. Funciones en SQL • Las siguientes funciones aplican SOLO a valores numéricos : • SUM • Regresa la suma de los contenidos de la columna especificada. Primero elimina NULLs • AVG • Regresa el promedio de los contenidos de la columna especificada. Primero elimina NULLs • NOTA: En algunos DBMSs, si existe un NULL puede marcar un error de ejecución

  23. Ejemplos del uso del count • La tabla de Clientes tiene 91 registros • Los primeros 2 ejemplos cuentan el número de registros que tienen un valor diferente de NULL en el atributo region. • El Ejemplo 3, cuenta los registros que tienen valores NULL en region • count(atributo) elimina atributos NULL, count(*) no elimina region con NULL

  24. COUNT eliminando valores duplicados • Usar DISTINCT para eliminar regiones que se repiten. Comparar los resultados obtenidos con cada query

  25. Ejemplo de MIN y MAX • Obtener el costo del producto mas barato • Obtener el costo del producto más caro

  26. Ejemplo de AVG y SUM • Obtener el precio promedio de todos los productos • Obtener el número total de unidades en inventario de todos los productos

  27. Misceláneo: MIN, MAX, AVG • Varias funciones en el estatuto Select

  28. Uso de Funciones IMPORTANTE • Las funciones COUNT, MIN, MAX, SUM, AVG sólopueden usarse en • SELECT • HAVING (se verá más adelante)

  29. GROUP BY En el reporte puede verse que tengo varios productos de la misma categoría. Si quisiera saber cuantos productos tengo de cada categoría como podría hacerle? Podría agrupar y contar todos los registros que tienen el mismo valor en CategoryID Por ejemplo, tengo 12 productos de categoría 1

  30. group by GROUP BYCategoryID • Agrupa todos los registros que tienen el mismo valor en el atributo especificado (CategoryID) • Se utiliza con otra función, por ejemplo COUNT para saber cuantos registros fueron agrupados • SELECT CategoryID, count(CategoryID)FROM ProductsGROUP BY CategoryID ID 1 12 prod.

  31. Count y Group by • Se obtiene el número de productos que existen de cada categoría

  32. ID o nombre? • El tener un número de categoría no indica nada, es mejor poner el nombre de la categoría como en el resultado siguiente: • Pero, como se escribe el query? Con un JOIN entre la llave foránea FK IDCategory y la llave Primaria Categories(IDCategory)

  33. Join • El nombre de la categoría está en la tabla Categories y nuestra consulta utiliza la tabla de Productos • Poner en el query las 2 tablas y especificar una condición dondela FK=PK

  34. Join entre 2 tablas Nombre del producto, Id de categoría y Nombre de la categoría FK PK

  35. Count y Group by • número de productos existentes de cada categoría

  36. Count, Group by, Having • número de productos existentes de cada categoría para los que el número de productos sea menor a 10

  37. Count, Group by, Having, alias • número de productos existentes de cada categoría para los que el número de productos sea menor a 10 • Se utilizan alias para las tablas

  38. SQL y Algebra Relacional • SQL query tipico SELECT A1, A2, …, An FROM r1, r2, …, rm WHERE P • Es equivalente al siguiente estatuto de álgebra relacional: πA1, A2,…,A3(σP(r1 x r2 … x rm)) .

  39. Operadores Union, Interseccion y Diferencia • Operaciones con tablas

  40. SQL y Algebra Relacional El asterisco (*) se refiere a todos los atributos o columnas de la tabla.

  41. Union • Obtener todos los países donde hay un cliente o un proveedor

  42. Interseccion • Obtener todos los países donde hay proveedores y clientes

  43. Obtener los países donde hay proveedores, pero no hay clientes Obtener los países donde sólo hay clientes y no hay provedores Diferencia (Except)

  44. Ejemplos en SQL cse_majors • cse_majors U eee_majors: • Select * from cse_majors union select * from eee_majors • cse_majors – eee_majors: • Select * from cse_majors minus select * from eee_majors • cse_profs x cse_courses: • Select * from cse_profs, cse_courses • CLASS=‘SR’(cse_majors): • Select * from cse_majors where class= ‘SR’ Cse_profs eee_majors cse_courses

  45. Ejemplos adicionales cse_majors • πID, NAME(cse_majors): • Select id, name from cse_majors • cse_majors ∩ eee_majors: • Select * from cse_majors intersect select * from eee_majors • cse_profs teaches: • Select * from cse_profs P, teaches T where P.name = T.name • cse_profs cse_courses teaches: • Select P.name, P.office, C.crsid, C.crstitle from cse_profs P, cse_courses C, teaches T where P.name = T.name and T.crsid = C.crsid teaches eee_majors cse_courses Cse_profs

  46. Ejercicio 1 • Obtenga el nombre de los empleados que tomaron el curso BD1 en Junio 25, 1990 emp(id, name) takes( id, crsid, date) course(crsid, name) SELECT name FROM emp E, takes T WHERE E.id = T.id AND T.date = ’25Jun90’ AND T.crsid = ‘BD1’

  47. Ejercicio SQL • Quien es el Jefe del empleado ‘John Smith’ ? Obtenga el nombre y el departamento del jefe. Emp(id, nombre, dnum) Dept(dnum, nombre, idJefe) SELECT M.nombre, D.nombre FROM emp E, emp M, dept D WHERE E.nombre= ‘John Smith’ and E.dnum = D.dnum AND D.idJefe = M.id

  48. SQL • Encuentre los empleados con los salarios mas altos emp(ID, NOMBRE, SALARIO, SUPERID, DNO) Select id, nombre, salario From emp Where salario = (select max(salario) from emp)

  49. Queries Anidados • Encuentre los alumnos que tienen una especialidad (major) en computer science y en electrical engineering. select id, name from cse_majors where id in ( select id from eee_majors) Evaluacion: (1) query anidado (2) query externo utilizando los resultados del query interno

  50. Subqueries • Encuentre los empleados que no han tomado algun curso • SQL: select name from emp E where not exists (select * from takes T where T.id = E.id) Para cada tupla de empleado, el query anidado selecciona todas las tuplas de TAKES cuyo ID es igual al ID del empleado; Si el resultado del subquery está vacío, entonces significa que el empleado no ha tomado algun curso y entonces esa tupla se incluye en el resultado. EXISTS subquery: VERDADEROsi el subquery SI regresa tuplas FALSO si el subquery no regresa tuplas NOT EXISTS subquery = NOT(EXISTS subquery) emp(id, name) takes( id, crsid, date) course(crsid, name)

More Related