Está en la página 1de 70

Base de Datos para Aplicaciones

Unidad I

Manipulación avanzada de datos con SQL

M.C. Jaime Lara Alvarez


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
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.
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.
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.
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.
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.
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


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
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
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.
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.
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).
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
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.
Estructura básica de SQL

• La estructura básica de una expresión SQL


consiste en tres cláusulas:
– SELECT
– FROM
– WHERE
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).
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.
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.
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.
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
Selección de Filas
Selección de Columnas
Selección de renglones y columnas
Aplicaciones

• Consultas sencillas pueden proporcionar


información para reportes, para subconjuntos
de datos para análisis, y respuestas a preguntas
específicas.
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.
Modelo Relacional - Ejemplo
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'
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
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
Modelo Relacional - Biblioteca
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?


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.
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
CLÁUSULAS

• GROUP BY

• HAVING

• ORDER BY
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.
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.
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.
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
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
Average - avg

• Retorna el valor medio de expresión

• Sintaxis
– AVG(expresión)

• Revisar:
– http://www.w3schools.com/sql/sql_func_avg.asp
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
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(*).
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
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
Sum

• Retorna la suma de expr. Si el conjunto


resultado no tiene registros, SUM() retorna
NULL.

• Sintaxis
– SUM(expresión)
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;
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
Vistas
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.
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.
CREATE VIEW

CREATE VIEW nombre_vista AS


SELECT *
FROM tablaX
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
Consultar datos de la vista
Consultas sobre Vistas
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).
Trabajando con valores nulos

SELECT *
FROM tabla t
WHERE t.columna is null

SELECT *
FROM tabla t
WHERE not (t.columna is null)
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
Modificación de la BD

• Borrado

• Inserción

• Actualizaciones
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
Inserción

• INSERT INTO tabla


VALUES ( ‘valor 1’, 2, ...)

• INSERT INTO alumno (idAlumno, Nombre)


VALUES (5, ‘Guadalupe Reyes');
Actualizaciones

• UPDATE alumno
SET nombre = ‘Juan Perez’

• UPDATE alumno
SET Nombre = 'Juan Pérez‘
WHERE idAlumno = 1
Reunion de Relaciones

• Inner join
• Left outer join
• Right outer join
• Natural join
Reunion de Relaciones
Inner join
left outer join
Right outer join
Natural join
Referencias

• FUNDAMENTOS DE BASES DE DATOS


Silberschatz, Korth, Sudarshan. Quinta Edición.
McGraw-Hill 2006
ISBN: 84 – 481 – 4644 - 1

• Sintaxis de SELECT
– http://dev.mysql.com/doc/refman/5.0/es/select.html
• Avg
• http://www.w3schools.com/sql/sql_func_avg.asp
• Group By
– http://dev.mysql.com/doc/refman/5.0/es/group-by-functions.html