Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Unidad 1
1. Base de Datos para Aplicaciones
Unidad I
Manipulación avanzada de datos con SQL
M.C. Jaime Lara Alvarez
2. Contenido
• Conceptos (BD, BD • Consultas y su representación gráfica
Relacional, Normalización ) • Operadores
• Características y ventajas de una BD • Funciones de Agregación
Relacional
• Vistas
• Elementos del Modelo Relacional
• Valores vacíos y repetidos
• Sistemas Gestores de BD (SGBD -
DBMA) • Modificación de la BD
• SQL • Reunión de Relaciones
• Cláusulas:
– SELECT
– FROM
– WHERE
– GROUP BY
– HAVING
– ORDER BY
3. Conceptos
• Base de Datos (Banco de datos, colección de datos)
– Silberschatz:
• Un sistema de bases de datos es una colección de archivos
interrelacionados y un conjunto de programas que permitan
a los usuarios acceder y modificar estos archivos.
• Uno de los propósitos principales de un sistema de bases de
datos es proporcionar a los usuarios una visión abstracta de
los datos. Es decir, el sistema esconde ciertos detalles de
cómo se almacenan y mantienen los datos.
– Una BD contiene información relevante para una empresa.
4. Base de Datos Relacional
• Definición:
– Una base de datos relacional es un conjunto de
una o más tablas (a las cuales se les asigna un
nombre exclusivo) estructuradas en registros
(líneas) y campos (columnas), que se vinculan entre
sí por un campo en común.
5. Normalización
• Las bases de datos relacionales pasan por un
proceso al que se le conoce como
normalización, el cual es entendido como el
proceso necesario para que una base de datos
sea utilizada de manera óptima.
6. Características de una BD Relacional
• Los datos estarán
distribuidos en
varias tablas
• El mejor diseño de
una base de datos es
aquel que involucra
varias tablas
relacionadas a través
de sus llaves
primarias y foráneas.
7. Ventajas de una BD Relacional
• Entre las ventajas de este modelo están:
– Garantiza herramientas para evitar la duplicidad de
registros, a través de campos claves o llaves.
– Garantiza la integridad referencial: Así al eliminar
un registro elimina todos los registros relacionados
dependientes.
8. Elementos del Modelo Relacional
Término relacional formal Equivalente informal
Entidad / Relación Tabla
Tupla Fila o registro
Cardinalidad Número de filas o registros
Atributo Columna o campo
Grado Número de columnas o campos
Atributo Identificador Llave Primaria (PK)
Dominio Conjunto de valores legales o permitidos
9. Elementos del Modelo Relacional
ATRIBUTOS
Nombre de la
TABLA PELICULA
TITULO AÑO DURACION
La guerra de las galaxias 1997 120
TUPLAS El señor de los anillos 2001 180
(Registros) Mar adentro 2004 90
El viaje de Chihiro 2001 120
El DOMINIO del atributo TITULO = TEXTO
Dominio de AÑO y
DURACION = ENTEROS
10. Ejemplo: Tabla Película
grado
atributos
título director género rodaje nacionalidad duración
Amores Perros A. González Drama 2000 México 1:45
The Matrix A. Wachowsky Ciencia-ficción 1999 EEUU 1:38
cardinalidad
Torrente S. Segura Comedia 1997 España 1:10
tuplas
Nos miran N. López Policiaco 2001 España 1:18
Amelie J. P. Jeunet Comedia 2001 Francia 1:22
Los lunes al sol F. León Drama 2002 España 1:17
11. Claves
• Clave candidata:
– Atributo o atributos que identifican de manera única una
tupla dada
• Clave Primaria (Primary Key)
– Elegida a partir de las claves candidatas de la relación.
– Ningún componente de la clave primaria acepta valores
nulos.
• Clave Foranea (Foreign Key)
– Especifica de forma explícita la forma en que dos tablas se
relacionan.
– Mecanismo para asegurar la integridad.
12. Atributos
• Cada atributo de una tabla (relación) tiene un
nombre
• El conjunto de valores permitidos para cada
atributo es llamado dominio del atributo
• El valor especial null (sin valor) es parte de todos
los dominios a menos que se especifique lo
contrario.
• El número de atributos se denomina grado o
aridad de la relación.
13. Sistemas de Gestión de Bases de Datos (SGBD)
• Database management system (DBMS):
– Existen programas denominados sistemas gestores de bases de datos
(SGBD), que permiten almacenar y posteriormente acceder a los
datos de forma rápida y estructurada.
– El objetivo principal de un SGBD es proporcionar una forma de
almacenar y recuperar la información de una base de datos de
manera que sea tanto práctica como eficiente.
• Aplicaciones más usuales:
– Gestión de empresas e instituciones públicas.
– Entornos científicos (almacenar la información
experimental).
14. Productos SGBD disponibles en el mercado
SGBD libres SGBD no libres SGBD no libres y gratuitos
• MySQL • dBase • Microsoft SQL
• PostgreSQL • IBM DB2 Server Compact
• Firebird • IBM Informix Edition
• SQLite • Interbase de • Oracle Express
CodeGear Edition 10
• DB2 Express-C • Microsoft
• Apache Derby Access
• Microsoft SQL
Server
• Oracle
15. SQL (Structured Query Language)
• Lenguaje basado en el álgebra relacional.
• El lenguaje SQL se considere un lenguaje de consultas,
contiene además muchas otras capacidades además de
la consulta en bases de datos. Incluye características para
definir la estructura de los datos, para la modificación de
los datos en la base de datos y para la especificación de
restricciones de seguridad.
16. Estructura básica de SQL
• La estructura básica de una expresión SQL
consiste en tres cláusulas:
– SELECT
– FROM
– WHERE
17. Clausula SELECT
• La cláusula SELECT corresponde a la operación
proyección del álgebra relacional.
• Se usa para listar los atributos deseados del
resultado de una consulta.
• El resultado de una consulta SELECT es una
relación (tabla).
18. Clausula FROM
• La cláusula FROM corresponde a la operación
producto cartesiano del álgebra relacional.
• Lista las relaciones que deben ser analizadas en
la evaluación de la expresión.
19. Clausula WHERE
• La cláusula WHERE corresponde al predicado
selección del álgebra relacional.
• Es un predicado que engloba a los atributos de
las relaciones que aparecen en la cláusula
FROM.
20. Clausula WHERE (Continuación)
– En la cláusula WHERE, SQL usa las conectivas lógicas:
– And
– Or
– Not
• Los operandos de las conectivas lógicas pueden ser expresiones que
contengan los operadores de comparación:
– <, <=, >, >=, = y <>.
• SQL permite usar los operadores de comparación para comparar cadenas y
expresiones aritméticas, así como tipos especiales, tales como el tipo fecha.
• SQL incluye un operador de comparación between para simplificar las
cláusulas WHERE que especifica que un valor sea menor o igual que un
valor y mayor o igual que otro valor.
21. Consultas
• Se puede pensar que una consulta consiste en
obtener un subconjunto de información que es
“cortada” de un subconjunto de renglones y
columnas de una tabla y entonces después es
“pegada” dentro de una tabla temporal o
virtual.
• A continuación vamos a ver la representación
gráfica de los pasos de una consulta
25. Aplicaciones
• Consultas sencillas pueden proporcionar
información para reportes, para subconjuntos
de datos para análisis, y respuestas a preguntas
específicas.
26. Especificando condiciones para seleccionar renglones
• El “filtrado” o “selección” de renglones está
basado en una condición lógica o boleana, la
cual se evalúa sobre cada uno de los renglones
de la tabla o tablas sobre las que se está
trabajando.
• Para determinar la condición es necesario
hacer uso de diferente operadores.
28. Operadores de comparación
Operador Significado Ejemplo
= Igualdad SELECT idAlumno, Nombre
FROM alumno
WHERE idAlumno = 1
< Menor que SELECT *
FROM alumno_materias
WHERE calificacion < 8
<= Menor o Igual que SELECT *
FROM alumno_materias
WHERE calificacion <= 7
> Mayor que SELECT *
FROM alumno_materias
WHERE calificacion > 9
>= Mayor o igual que SELECT *
FROM alumno_materias
WHERE calificacion < 8
<>, != Diferente SELECT *
FROM alumno
WHERE nombre != 'Juan'
29. Operadores Lógicos
SELECT *
FROM alumno_materias
WHERE alumno = 1 and Calificacion > 7
SELECT *
FROM alumno_materias
WHERE alumno = 1 or Calificacion > 7
SELECT *
FROM alumno_materias
WHERE not Calificacion = 7
30. Caso de Estudio
• Biblioteca UTP:
– La biblioteca de la UTP desea almacenar la
información de sus Libros(titulo, resumen, genero
literario, editorial), autores y alumnos. La biblioteca
desea llevar un control de los préstamos realizados
a los alumno.
– A manera de ejemplo utilizaremos el modelo
relacional de la biblioteca para abordar los temas
siguientes
32. Reunión de relaciones
• Ejemplo: ¿Cómo saber los alumnos que han
realizado prestamos?
– Esta información se encuentra almacenada en dos
tablas: en la tabla alumnos y en la tabla prestamos.
• ¿Cómo podemos juntar la información?
33. Join
• Para unir dos tablas utilizamos la operación join
dentro de la clausula FROM
• SELECT campo1_, campo_2, …, campo_n
FROM tabla1 join tabla 2
on tabla1.campo_t1 = tabla2.campo_t2
Nota: tenga en cuenta que los campos campo_t1 y campo_t2 tienen que ser del
mismo tipo y que por lo general uno de estos es llave primaria y el otro es llave
foranea, aunque esto último no es necesario.
34. Join – Unión de alumnos con prestamos
• SELECT *
FROM prestamos p join alumnos a
on p.alumno = a.matricula
Nota: Por comodidad se renombrando la tabla
prestamos como p y la tabla alumnos como a. En
caso contrario hubiera tenido que escribir:
• SELECT *
FROM prestamos join alumnos
on prestamos.alumno = alumnos.matricula
36. Group By
• El atributo o atributos especificados en la
cláusula group by se usan para formar grupos.
• Las tuplas con el mismo valor en todos los
atributos especificados en la cláusula group by
se colocan en un grupo.
37. Having
• Los predicados de la cláusula having se aplican
después de la formación de grupos, de modo
que se pueden usar las funciones de
agregación.
38. Order By
• SQL ofrece al usuario cierto control sobre el
orden en el cual se presentan las tuplas de una
relación.
• La cláusula order by hace que las tuplas
resultantes de una consulta se presenten en un
cierto orden.
39. Order By - Ejemplo
• Ordenar de forma Ascendente los alumnos
– SELECT *
FROM alumnos
order by matricula
• Ordenar de forma descendente los alumnos
– SELECT *
FROM alumnos
order by matricula DESC
40. Funciones de Agregación
• Las funciones de agregación son funciones que
toman una colección de valores como entrada y
producen un único valor como salida.
• SQL proporciona cinco funciones de agregación
primitivas:
– Media: avg
– Mínimo: min
– Máximo: max
– Total: sum
– Cuenta: count
41. Average - avg
• Retorna el valor medio de expresión
• Sintaxis
– AVG(expresión)
• Revisar:
– http://www.w3schools.com/sql/sql_func_avg.asp
42. Max, Min
• Devuelven el mínimo o el máximo de un
conjunto de valores contenidos en un campo
especifico de una consulta. Ejemplo:
• SELECT min(id_Volumen) as 'ID Mínimo',
max(id_Volumen) as 'ID Máximo‘
FROM volumenes
43. Count
• Con mucha frecuencia se usa la función de
agregación count para contar el número de
tuplas de una relación.
• La notación para esta función en SQL es
count(*).
44. Count
• Obtener el total de prestamos:
– SELECT count(*) as 'Total de prestamos‘
FROM prestamos
• Obtener el total de libros:
– SELECT count(*) as 'Total de libros‘
FROM libros
45. Count
• Obtener los prestamos realizados por cada alumno
• SELECT matricula, nombre,
count(*) as 'Prestamos realizados'
FROM alumnos a join prestamos p
on a.matricula = p.alumno
GROUP BY matricula
46. Sum
• Retorna la suma de expr. Si el conjunto
resultado no tiene registros, SUM() retorna
NULL.
• Sintaxis
– SUM(expresión)
47. Ejemplo: Count y Sum
• Obtener de cada libro su titulo, la cantidad de libros que cuenta la
biblioteca de cada libro y los libros disponibles para préstamo.
• SELECT titulo,
count(*) as 'Cantidad de Libros',
sum(disponible) as 'Libros disponibles‘
FROM volumenes join libros
on libros.isbn = volumenes.libro
GROUP BY libro;
48. LIMIT
• La cláusula LIMIT puede usarse para restringir el número de registros
retornados por el comando SELECT. LIMIT tiene uno o dos argumentos
numéricos, que deben ser enteros positivos (incluyendo cero).
• Con dos argumentos, el primer argumento especifica el desplazamiento
del primer registro a retornar. El desplazamiento del registro inicial es 0.
• Con un argumento, el valor especifica el número de registros a retornar
desde el comienzo del conjunto de resultados, en otras palabras, LIMIT n
es equivalente a LIMIT 0,n.
• Ejemplo: Seleccionar los primeros 5 libros ordenados por su nombre.
SELECT titulo SELECT titulo
FROM libros FROM libros
ORDER BY BINARY titulo ORDER BY BINARY titulo
LIMIT 0,5 LIMIT 5
50. Vistas
• Si los datos de la BD cambian, entonces los resultados de las
consultas también deben de cambiar.
• Una vista es un resultado de una consulta SQL de una o varias
tablas; también se le puede considerar una tabla virtual (Tabla en
donde se almacenan los resultados de una consulta y es virtual
porque solo es temporal para la ejecución de una consulta
determinada).
• Las vistas tienen la misma estructura que una tabla: filas y
columnas. La única diferencia es que sólo se almacena de ellas la
definición, no los datos. Los datos que se recuperan mediante
una consulta a una vista se presentarán igual que los de una
tabla.
51. Vistas ( Continuación )
• Al igual que sucede con una tabla, se pueden
insertar, actualizar, borrar y seleccionar datos
en una vista.
• Una vista se especifica a través de una
sentencia SELECT.
• La mayoría de los SGBD soportan la creación y
manipulación de vistas.
• Las vistas fueron introducidas en la versión 5.0
del servidor de base de datos MySQL.
53. CREATE VIEW - Ejemplo
CREATE VIEW alu_materia_calificacion as
SELECT a.idAlumno as Matricula,
a.Nombre as 'Nombre del Alumno',
m.Nombre as 'Nombre de la Materia',
am.Calificacion
FROM (alumno a JOIN alumno_materias am
ON a.idAlumno = am.Alumno)
JOIN materia m ON am.materia = m.idMateria
57. Trabajando con valores nulos
• Desde que se va construyendo la definición de
cada tabla, se puede restringir a que un campo
pueda o no aceptar valores nulos.
• Un valor nulo significa que para un campo de
cualquier tipo de los que se permiten definir
(int, char, varchar, etc.) no se le asigne valor
alguno (como si se quedara vacio).
58. Trabajando con valores nulos
SELECT *
FROM tabla t
WHERE t.columna is null
SELECT *
FROM tabla t
WHERE not (t.columna is null)
59. Manejo de Valores duplicados
SELECT FirstName
FROM Students
• Si se quiere obtener el resultado sin
que aparezcan valores duplicados, se
puede usar la palabra clave DISTINCT
SELECT DISTINCT m.FirstName
FROM Member m
61. Borrado
• DELETE FROM alumno
• Borra todas las tuplas de la relacion alumno
• DELETE FROM alumno
WHERE idAlumno = 5
• Borra la tupla identificada por el idAlumno 5.
• DELETE FROM alumno_materias
WHERE calificacion < 7
• Borra las tuplas de la tabla alumno_materia que tengan una
calificacion menor a 7
62. Inserción
• INSERT INTO tabla
VALUES ( ‘valor 1’, 2, ...)
• INSERT INTO alumno (idAlumno, Nombre)
VALUES (5, ‘Guadalupe Reyes');