Está en la página 1de 228

INTRODUCCION A BASES DE

DATOS Y SQL
Fundamentación:
Este curso permite a los estudiantes asistentes adquirir destreza en el
manejo de datos de sistemas que una determinada empresa o
institución utilizan para su funcionamiento diario. La demanda de
servicios técnicos asociados a las tecnologías de la información y
comunicación (TIC) han mostrado un aumento sostenido y con
expectativas de crecimiento perdurable. Tanto empresas privadas como
organismos estatales necesitan personal cualificado, que entre otras
tareas puedan manejar datos vinculados a la organización a la cual
pertenecen.
INTRODUCCION A BASES DE
DATOS Y SQL
Contenidos Mínimos:
•Conceptos Introductorios en la Gestión de Datos
•Conceptos Introductorios de sistemas de información
•Modelado de datos
•Bases de Datos Relacionales
•Operaciones en SQL
BASE DE DATOS
Bibliografía:

Mannino, Michael V. Administración de Base de Datos – Diseño y desarrollo


de aplicaciones. 3ª Ed. México: Mc. Graw – Hill; 2007
Date, C. J; Introducción a los sistemas de bases de datos - Pearson Educacion ;
2008
Ramez Elmasri, Shamkant Navathe; Fundamentos de sistemas de bases de
3
datos, Pearson Addison-Wesley; 5th. edition (May 1, 2007)
Archivos de almacenamiento de datos
Organización Tradicional

Sistema de Sistema de Sistema de Sistema de


Ventas Producción Administr. Almacenes

Arch. Arch. Arch. Arch.


de de de de
Ventas Producción Administr. Almacenes
Archivos de almacenamiento de datos
Problemas
 Redundancia: Datos repetidos en diferentes ficheros

 Inconsistencia: Datos incoherentes con su significado (por ej. Fecha)

 Incongruencia: Datos relacionados incompletos (registrar asistencia de


alumnos no matriculados)

 Inaccesibilidad: Construcción de programas para visualizar datos

 Fragmentación: Almacenamiento datos relacionados en múltiples ficheros (ej:


cabecera de factura y renglones)

 Atomicidad de actualización: Ficheros parcialmente actualizados ante fallos


(ej cabecera de factura y renglones)

 Concurrencia: Accesos simultáneos de varios usuarios requiere implementar


bloqueos frente a acciones de grabación y borrado

 Seguridad: No provee un esquema de perfiles de usuarios en el que pueda


predefinirse los permisos de acción sobre los ficheros.
- Bases de Datos
Base de Datos
Definición de James Martin

Colección de datos interrelacionados


almacenados sin redundancias perjudiciales
o innecesarias, su finalidad es servir a una
aplicación o más, de la mejor manera
posible; los datos se almacenan de modo
que resulten independientes de los
programas que los usan; se emplean
métodos bien determinados para incluir
datos nuevos y para modificar o extraer los
datos almacenados
Base de Datos
Ambiente Actual

Software

SIST. APLICACION
Hardware

SIST. OPERATIVO
DBMS
BASE
DE
DATOS
Base de Datos
Organización Actual

Sistema de Sistema de Sistema de Sistema de


Ventas Producción Administr. Almacenes

Sistema de Administración de Bases de Datos (DBMS)

BASE
DE
DATOS
Base de Datos
Problemas que intenta solucionar

 Almacenar datos y las relaciones de estos


con otros datos
 Almacenar los datos una sola vez de forma
independiente a su tratamiento
 Ofrecer recursos para mantener la integridad
de los datos que se almacenan
Base de Datos
Sistema de Administración de Bases de Datos

Es una colección de programas que


facilitan los procesos de definición
(arquitectura) y manipulación de archivos
(tablas) relacionados, grabando,
eliminando, modificando, visualizando y
extrayendo datos de ellos.
Qué son las Bases de Datos?
Una base de datos es un conjunto de información relacionada con
un asunto o con una finalidad, tal como el seguimiento de los
pedidos de clientes o una colección de música.
Si la base de datos no está almacenada en una máquina, o sólo lo
está parte de la misma, es posible que necesite controlar
información de varias fuentes distintas que tiene que organizar y
coordinar usted mismo.
Qué son las Bases de Datos?
Def. formal: Una Base de Datos una colección de datos
persistentes que pueden compartirse e interrelacionarse.
Las B de D para funcionar requieren de un Sistema
Administrador de Bases de Datos!
El es básicamente un sistema para archivar en una computadora; o
sea un sistema computarizado cuyo propósito general es mantener
información y hacer que la misma esté disponible cuando se
solicite.
La información en cuestión puede ser cualquier cosa que se
considere importante para el individuo o la organización a la cual
debe servir el sistema.
Qué son las Bases de Datos?
Componentes:
SOFTWARE DE SOFTWARE BASE
APLICACIÓN

USUARIOS
USUARIOS

DATOS

HARDWARE (discos – procesadores –


dispositivos de E/S –EJ. Monitores)
Qué son las Bases de Datos?
Def. formal: Una Base de Datos es una colección de datos
persistentes que pueden compartirse e interrelacionarse.
Persistentes: significa que los datos residen en un almacenamiento estable, tal
como un disco magnético.
Compartir: significa que una base de datos puede tener múltiples usos y
usuarios. Una base de datos proporciona una memoria común para varias
funciones en una organización.
Interrelación: significa que los datos almacenados como unidades separadas se
pueden conectar para mostrar un cuadro completo.
Cómo funcionan las Bases de Datos?
Las Bases de Datos para funcionar requieren de un Sistema
Administrador de Bases de Datos (DBMS – Data Base
Management System)
A modo de RESUMEN destacamos algunas de las funciones principales:
Bases de Datos
Ventajas
• Los datos pueden compartirse.
• Es posible reducir la redundancia.
• Es posible (hasta cierto grado) evitar la inconsistencia.
• Es posible brindar un manejo de transacciones.
• Es posible mantener la integridad.
• Es posible hacer cumplir la seguridad
• Es posible equilibrar los requerimientos en conflicto.
• Es posible hacer cumplir los estándares.
• Dá independencia de los datos.
Evolución de Bases de Datos
Cómo surgen?

Usuarios Usuarios
Finales Finales

Aplicaciones Máquinas Clientes


Aplicaciones Clientes
Acceso Remoto
Transparente
DBMS Servidor
DBMS Máquina Servidor

Base de Base de
Datos Datos
Bases de Datos – Arq C - S

Máquina Clientes Máquina Clientes Máquina Clientes

Red de Comunicaciones

Máquina Servidor

Base
de
Datos
Bases de Datos Distribuidas

Sitio 1
Clientes Clientes
Sitio 2
Servidor Servidor

Red de Comunicaciones
Clientes
Sitio 3 Servidor

Clientes
Servidor Sitio 4
Interactuando con las bases de datos
Cuál es son las funciones del DBA?
Los administradores de bases de datos ayudan tanto a los profesionales en
sistemas de información como a los usuarios funcionales. Los administradores de
bases de datos tienen una amplia variedad de responsabilidades técnicas y no
técnicas:
Sistema de Información
Un Sistema es un conjunto de componentes relacionados entre sí que trabajan
para alcanzar un objetivo.
Los objetivos se cumplen mediante la interacción con el ambiente y funciones de
desempeño.
Un Sistema de Información acepta datos provenientes de su entorno, los
procesa y genera datos de salida para la toma de decisiones.
Sistema de Información
Proceso del desarrollo de sistemas de información

En todas las metodologías de desarrollo se deben generar:


•Modelos de datos
•Modelos de procesos
•Modelos de interacciones con el entorno.
La fase del análisis de sistemas genera una versión inicial de estos modelos.
La fase de diseño de sistemas agrega más detalles para que los modelos se puedan implementar de forma
más eficiente.
Sistema de Información
Objetivos del desarrollo de base de datos
El objetivo es crear una base de datos que proporcione un
recurso importante a una organización.
Para lograr este objetivo, la base de datos deben:
• dar servicio a una gran comunidad de usuarios,
• apoyar políticas corporativas,
• incluir datos de alta calidad y
• ofrecer un acceso eficiente.
Sistema de Información
Proceso de desarrollo de la base de datos

Sitio 1 Sitio 3

Red
Sitio 2

Sitio 4
Sistema de Información
Proceso de desarrollo de la base de datos
Sistema de Información
Proceso de desarrollo de la base de datos
Sistema de Información
Modelaje de Datos:
Es fundamental para diseñar una Base de Datos, y un sistema en
general, determinar cuales son los datos que se deben registrar, cuales
son las relaciones existentes entre ellos y que resultados se esperan
obtener.
Los datos que registremos deben tener las siguientes propiedades:
• Persistentes
• Compartidos
• Integrados (Interrelacionados, o sea que los datos almacenados
como unidades separadas se pueden conectar para mostrar un
cuadro completo)
Sistema de Información
Modelaje de Datos:
Las bases de datos contienen tanto ENTIDADES como RELACIONES
entre ENTIDADES.
Una ENTIDAD es un conjunto de datos generalmente sobre un tema, al
que puede accederse de forma conjunta. Una entidad puede
representar una persona, lugar, cosa o suceso; por ejemplo, una base
de datos de empleados contiene entidades como empleados,
departamentos y habilidades.
Las RELACIONES registran el vinculo entre estas ENTIDADES que
deben ser recordados. Por ejemplo muestran la asignación de los
empleados con los departamentos, las habilidades que poseen y su
historia salarial.
Una base de datos típica de un negocio puede tener cientos de
entidades y relaciones.
Sistema de Información
Modelaje de Datos:
Sistema de Información
Modelaje de Datos:
DIAGRAMA DE ENTIDAD RELACION
Símbolos básicos:
Tipo de Entidad:

Es una colección de entidades de interés (personas, lugares,


eventos o cosas) representadas por un rectángulo en un
diagrama de entidad-relación
Relaciones:

Es una asociación nombrada entre los tipos de entidades. Una


relación representa una asociación en dos sentidos o
bidireccional entre entidades. La mayoría de las relaciones
involucran dos distintos tipos de entidad.
Atributos:

Es una propiedad de un tipo de entidad o relación. Cada


atributo tiene un tipo de dato que define el tipo de valores y
operaciones permitidas sobre dicho atributo.
DIAGRAMA DE ENTIDAD RELACION
Símbolos básicos:

Símbolo de Símbolo de
Entidad Relación

Nombre de
Entidad

Clave
Primaria

Nombre de
Atributo

Nombre de
Relación
DIAGRAMA DE ENTIDAD RELACION
Símbolos básicos:

Los ERD tienen un lenguaje natural de


correspondencia.
Los tipos de entidades pueden
corresponder al sustantivo y las
relaciones a verbos o frases de
Qué Significa? preposiciones que conectan los
sustantivos.
CURSO OFRECIDO
curso 1 oferta 1
oferta 2 Se puede leer el diagrama de entidad
curso 2 relación como una colección de
curso 3 oferta 3 sentencias.
oferta 4
oferta 5 Ej. “El Curso curso i ES Ofrecido con el
curso 4 oferta 6 oferta j “

Diagrama de Instancias de la Relación ES


Observe que existe una dirección
implícita en cada relación. En la otra
DIAGRAMA DE ENTIDAD RELACION
Representación de Cardinalidades: PATA DE
LINEA CUERVO: admite
Símbolo Externo PERPENDICULAR muchas
– Cardinalidad : cardinalidad 1 cardinalidades
MAXIMA

Símbolo Interno
– Cardinalidad
MINIMA
CIRCULO:
admite
cardinalidad 0
DIAGRAMA DE ENTIDAD RELACION
Representación de Cardinalidades:

• Un curso se relaciona con un mínimo de cero cursos ofrecidos (el


círculo en la posición interna) y un máximo de muchos cursos
ofrecidos (la pata de cuervo en la posición externa).
• Un curso ofrecido se relaciona con exactamente un curso (uno y
sólo uno), tal como se muestra por las líneas verticales de las
posiciones interna y externa.
DIAGRAMA DE ENTIDAD RELACION
Representación de Cardinalidades:
DIAGRAMA DE ENTIDAD RELACION
Representación de Cardinalidades:
Un Docente
Opción 1 puede ofrecer el
dictado de un
curso o ninguno

Varios Docente
puede ofrecer el
dictado de
Opción 2 varios cursos o
ninguno

Relaciones opcionales para


cada tipo de entidad
DIAGRAMA DE ENTIDAD RELACION
Representación de Cardinalidades:

Relaciones de 1 a 1
DIAGRAMA DE ENTIDAD RELACION
Representación de Cardinalidades:
DIAGRAMA DE ENTIDAD RELACION
Variantes de Relación:
• Relaciones M-N con atributo
DIAGRAMA DE ENTIDAD RELACION
Variantes de Relación:
• Tipos de entidad asociativa que representan relaciones M-way
Es una entidad débil que depende de dos o más tipos de entidades
para su Clave Primaria. Un tipo de entidad asociativa con más de
dos relaciones identificables se le conoce como un tipo de entidad
asociativa M-way.
Características de las Bases de Datos Relacionales

•Una base de datos relacional se compone de varias tablas


o relaciones.

•No pueden existir dos tablas con el mismo nombre ni


registro.

•Cada tabla es a su vez un conjunto de registros (filas y


columnas).
Elementos de las Bases de Datos Relacionales

•Relaciones base y derivadas.- En una base de datos


relacional, todos los datos se almacenan y se accede a ellos
por medio de relaciones.

•Las relaciones que almacenan datos son llamadas


"relaciones base" y su implementación es llamada "tabla".

•Otras relaciones no almacenan datos, pero son calculadas


al aplicar operaciones relacionales. Estas relaciones son
llamadas "relaciones derivadas" y su implementación es
llamada "vista" o "consulta". Las relaciones derivadas son
convenientes ya que expresan información de varias
relaciones actuando como si fuera una sola.
Elementos de las Bases de Datos Relacionales

•Restricciones.- Son una limitación que obliga el


cumplimiento de ciertas condiciones en la base de
datos.

•Algunas no son determinadas por los usuarios, sino


que son inherentemente definidas por el simple
hecho de que la base de datos sea relacional.
Algunas otras restricciones las puede definir el
usuario, por ejemplo, usar un campo con valores
enteros entre 1 y 10.
Dominio y tipos de datos en BD Relacionales

• Cada atributo de una relación debe tener un nombre y un dominio. El dominio indica
los valores que pueden ser aceptados o asumidos por una columna de la relación.

•Dominios.- Describe un conjunto de posibles valores para cierto atributo. Cualquier


valor de este atributo debe ser elemento del conjunto especificado

•Los tipos de datos en un dominio pueden ser enteros, cadenas de texto, fecha, no
procedirales, etc

Condiciones:
•Cada atributo tiene un dominio
•El dominio indica el tipo de datos que será almacenado
•El dominio indica las restricciones en los valores que el atributo puede tomar
•El dominio indica si utiliza caracteres, números, solo dos letras, solo mayores que
cero, solo números enteros, etc.
•Los dominios deben ser atómicos, es decir que los valores contenidos en los atributos
no se puedan separar en valores de dominios mas simples.
•Como un dominio restringe los valores del atributo, puede ser considerado como una
restricción.

•Por ejemplo el atributo de sexo se puede definir un dominio de valores válidos ‘M’ y ‘F’
o en Fecha_nacimiento considerar fechas después del primero de enereo de 1960.
Elementos de las Bases de Datos Relacionales
•Clave única.- Cada tabla puede tener uno o más campos cuyos valores
identifican de forma única cada registro de dicha tabla, es decir, no pueden
existir dos o más registros diferentes cuyos valores en dichos campos sean
idénticos. Este conjunto de campos se llama clave única. Pueden existir varias
claves únicas en una determinada tabla, y a cada una de éstas suele llamársele
candidata a clave primaria.

•Clave primaria.- Una clave primaria es una clave única elegida entre todas las
candidatas que define unívocamente a todos los demás atributos de la tabla,
para especificar los datos que serán relacionados con las demás tablas. La
forma de hacer esto es por medio de claves foráneas. Sólo puede existir una
clave primaria por tabla y ningún campo de dicha clave puede contener valores
NULL.

•Clave foránea.- Una clave foránea es una referencia a una clave en otra
tabla, determina la relación existente en dos tablas. Las claves foráneas no
necesitan ser claves únicas en la tabla donde están y sí a donde están
referenciadas. Por ejemplo, el código de departamento puede ser una clave
foránea en la tabla de empleados. Se permite que haya varios empleados en un
mismo departamento, pero habrá uno y sólo un departamento por cada clave
distinta de departamento en la tabla de empleados.
Elementos de las Bases de Datos Relacionales

•Clave índice.- Las claves índice surgen con la necesidad de tener un acceso
más rápido a los datos. Los índices pueden ser creados con cualquier
combinación de campos de una tabla. Las consultas que filtran registros por
medio de estos campos, pueden encontrar los registros de forma no secuencial
usando la clave índice.Las bases de datos relacionales incluyen múltiples
técnicas de ordenamiento, cada una de ellas es óptima para cierta distribución
de datos y tamaño de la relación. Los índices generalmente no se consideran
parte de la base de datos, pues son un detalle agregado. Sin embargo, las
claves índices son desarrolladas por el mismo grupo de programadores que las
otras partes de la base de datos.

•Procedimientos almacenados.- Un procedimiento almacenado es código


ejecutable que se asocia y se almacena con la base de datos. Los
procedimientos almacenados usualmente recogen y personalizan operaciones
comunes, como insertar un registro dentro de una tabla, recopilar información
estadística, o encapsular cálculos complejos. Son frecuentemente usados por un
API por seguridad o simplicidad. Los procedimientos almacenados no son parte
del modelo relacional, pero todas las implementaciones comerciales los incluyen.
Definición de relación

interconexiones (relaciones)
•Son las
entre los datos (que están guardados en
tablas), y a través de dichas
conexiones se relacionan los datos de
ambas tablas.
Ejemplo de relación
Álgebra relacional y cálculo relacional.

•El álgebra y el cálculo relacional proveen la forma teórica para manipular una
Base de Datos relacional

•El álgebra relacional fue desarrollada en 1970 y el cálculo relacional en 1971


por Codd.

•El álgebra relacional es un lenguaje procedural para manipular relaciones.

•El cálculo relacional es importante porque:

a) esta basado en la lógica de predicados (lógica que facilita determinar la


veracidad de una oración)
b) los lenguajes comerciales estan basados en éste.
Álgebra relacional y cálculo relacional.

•Manipula las relaciones produciendo nuevas relaciones consistente de nueve


operaciones que son tomadas de la matemática, del lenguaje relacional y otras
de lenguaje de programación comunes.

•De origen matematico.


- Union
- Interseccion
- Diferencia
- Producto cartesiano
•De lenguaje de programación
- assignación
•De lenguaje Relacional
- proyección (para remover tablas)
- selección (cumplir condiciones para las busquedas)
- divide (excluir datos)
-Join (union entre tablas)
Normalización.
Al modelar una base de datos, desearemos evitar puntos que crean confusión,
duplicación de la información y por ende, un mal funcionamiento y exploración
de la información. Entre las propiedades indeseables en un diseño de bases de
datos tenemos:

• Redundancia en la información.
• Incapacidad de representar cierta información.
• Registrar información que no sea identificable.

La Normalización es un proceso que consiste en designar y aplicar una serie de


reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al
modelo relacional. Las bases de datos relacionales se normalizan para: Evitar la
redundancia de los datos.

Se aplica un conjunto de técnicas para producir un nuevo esquema que


representa la misma información pero contiene menos redundancias y evita
posibles anomalías en las inserciones, actualizaciones y borrados.
Formas normales (Primera, segunda y tercera formas normales) .
Una tabla está en Primera Forma Normal si:

Esta forma normal elimina los valores repetidos dentro de una Base de
Datos.

• Todos los atributos son atómicos. Un atributo es atómico si los


elementos del dominio son simples e indivisibles.
• La tabla contiene una clave primaria única.
• La clave primaria no contiene atributos nulos.
• No debe existir variación en el número de columnas.
• Los Campos no clave deben identificarse por la clave (Dependencia
Funcional)
• Debe Existir una independencia del orden tanto de las filas como de
las columnas, es decir, si los datos cambian de orden no deben
cambiar sus significados
Formas normales (Primera, segunda y tercera formas normales) .

La tabla EMPLEADOS repite información:

Podemos reducir EMPLEADOS y crear una nueva tabla EMAIL:


Formas normales (Primera, segunda y tercera formas normales) .

Segunda forma normal (2FN)

Una relación está en segunda forma normal (2FN) si y sólo si está en 1FN y
todos los atributos que no sean llaves dependen por completo de llave primaria,
Es decir que no existen dependencias parciales. (Todos los atributos que no son
clave principal deben depender únicamente de la clave principal).

En otras palabras podríamos decir que la segunda forma normal está basada en
el concepto de dependencia completamente funcional.
Formas normales (Primera, segunda y tercera formas normales) .

Se aplica para el mismo ejemplo de EMPLEADOS e EMAIL


Formas normales (Primera, segunda y tercera formas normales) .

Tercera forma normal (3FN). Evitar la redundancia de datos

Una relación están en tercera forma normal (3FN) si y sólo si están en 2FN y
todos los atributos no llave dependen de manera no transitiva de la llave
primaria. En la práctica significa que se debe eliminar cualquier relación que
permita llegar a un mismo dato de dos o más formas diferentes y evitar la
redundancia
Formas normales (Primera, segunda y tercera formas normales) .

En este caso creamos una nueva tabla de PUESTOS, donde la clave seria el puesto y
queda como clave foránea o ajena) referenciado la tabla EMPLEADOS
Proceso de descomposición sin pérdida

Es el proceso de descomponer los objetos o


tablas en sus formas normales sin que haya
pérdida de datos.
Reglas de CODD

Regla 0: el sistema debe ser relacional, base de datos y administrador


de sistema. Ese sistema debe utilizar sus facilidades relacionales
(exclusivamente) para manejar la base de datos.
Regla 1: la regla de la información, toda la información en la base de
datos es representada unidireccionalmente, por valores en posiciones de
las columnas dentro de filas de tablas. Toda la información en una base
de datos relacional se representa explícitamente en el nivel lógico
exactamente de una manera: con valores en tablas.
Regla 2: la regla del acceso garantizado, todos los datos deben ser
accesibles sin ambigüedad. Esta regla es esencialmente una nueva
exposición del requisito fundamental para las llaves primarias. Dice que
cada valor escalar individual en la base de datos debe ser lógicamente
direccionable especificando el nombre de la tabla, la columna que lo
contiene y la llave primaria.
Reglas de CODD

Regla 3: tratamiento sistemático de valores nulos, el sistema de gestión


de base de datos debe permitir que haya campos nulos. Debe tener una
representación de la "información que falta y de la información
inaplicable" que es sistemática, distinto de todos los valores regulares.
Regla 4: catálogo dinámico en línea basado en el modelo relacional, el
sistema debe soportar un catálogo en línea, el catálogo relacional debe
ser accesible a los usuarios autorizados. Es decir, los usuarios deben
poder tener acceso a la estructura de la base de datos (catálogo).
Regla 5: la regla comprensiva del sublenguaje de los datos, el sistema
debe soportar por lo menos un lenguaje relacional que; 1.Tenga una
sintaxis lineal.
2.Puede ser utilizado de manera interactiva.
3.Soporte operaciones de definición de datos, operaciones de
manipulación de datos (actualización así como la recuperación),
seguridad e integridad y operaciones de administración de
transacciones.
Reglas de CODD

Regla 6: regla de actualización, todas las vistas que son teóricamente


actualizables deben ser actualizables por el sistema.
Regla 7: alto nivel de inserción, actualización, y cancelación, el
sistema debe soportar suministrar datos en el mismo tiempo que se
inserte, actualiza o esté borrando. Esto significa que los datos se
pueden recuperar de una base de datos relacional en los sistemas
construidos de datos de filas múltiples y/o de tablas múltiples.
Regla 8: independencia física de los datos, los programas de aplicación
y actividades del terminal permanecen inalterados a nivel lógico
cuandoquiera que se realicen cambios en las representaciones de
almacenamiento o métodos de acceso.
Regla 9: independencia lógica de los datos, los cambios al nivel lógico
(tablas, columnas, filas, etc.) no deben requerir un cambio a una
solicitud basada en la estructura. La independencia de datos lógica es
más difícil de lograr que la independencia física de datos.
Reglas de CODD
Regla 10: independencia de la integridad, las limitaciones de la
integridad se deben especificar por separado de los programas de la
aplicación y se almacenan en la base de datos. Debe ser posible
cambiar esas limitaciones sin afectar innecesariamente las aplicaciones
existentes.
Regla 11: independencia de la distribución, la distribución de las
porciones de la base de datos a las varias localizaciones debe ser
invisible a los usuarios de la base de datos. Los usos existentes deben
continuar funcionando con éxito:
1.cuando una versión distribuida del SGBD se introdujo por primera
vez
2.cuando se distribuyen los datos existentes se redistribuyen en todo
el sistema.
Regla 12: la regla de la no subversión, si el sistema proporciona una
interfaz de bajo nivel de registro, a parte de una interfaz relacional,
que esa interfaz de bajo nivel no se pueda utilizar para subvertir el
sistema, por ejemplo: sin pasar por seguridad relacional o limitación de
integridad. Esto es debido a que existen sistemas anteriormente no
relacionales que añadieron una interfaz relacional, pero con la interfaz
nativa existe la posibilidad de trabajar no relacionalmente.
Estándar SQL.

Es en 1992, cuando se lanzó un nuevo estándar ampliado y


revisado del SQL llamado "SQL-92" o "SQL2".

En la actualidad el SQL es el estándar de facto de la


inmensa mayoría de los SGBD comerciales. Y, aunque la
diversidad de añadidos particulares que incluyen las
distintas implementaciones comerciales del lenguaje es
amplia, el soporte al estándar SQL-92 es general y muy
amplio.
Bases de Datos Relacionales
Si utiliza Microsoft Access, puede administrar toda la información desde un
único archivo de base de datos. Dentro de este archivo, divida los datos en
contenedores de almacenamiento separados denominados tablas; vea, agregue y
actualice los datos en las tablas mediante formularios en línea; busque y
recupere solamente los datos que necesite mediante consultas; y analice o
imprima los datos con el esquema deseado mediante informes.
Bases de Datos Relacionales
Básicamente la información queda estructurada de la siguiente forma:
Base de Datos
Está constituida por un conjunto de Tablas independientes que se relacionan
entre sí de modo tal de no mantener información duplicada. Ej. Base de Datos de
Alumnos que contiene la información de todos los alumnos, docentes y materias
que cursa cada alumno con un docente.
Tablas
Está constituida por un conjunto de Registros que poseen la misma estructura
(definición) y cada uno de los componentes de ese conjunto posee información
individual. Ej. Tabla de Alumnos que contiene la información de todos los
alumnos.
Registros
Está constituido por un conjunto de Campos relacionados entre sí que cuentan
con su propio nombre. Ej. El registro de un Alumno, que contiene los datos
personales de cada uno de los alumnos.
Campos
Es la más pequeña unidad de información que recibe un nombre. Ej.
Nro.Documento, Nombre, Domicilio, Teléfono, etc.
Bases de Datos Relacionales
Las Tablas representaran nuestras entidades y relaciones detectadas en el DER:
Bases de Datos Relacionales
Las Tablas representaran nuestras entidades y relaciones detectadas en el DER:
Tabla: arreglo bidimensional de datos. Una tabla está formada por un encabezado que define el nombre de la tabla
y los nombres de columnas y un cuerpo que contiene las filas de datos.
INTRODUCCIÓN:
 La normalización es el proceso de organizar
los datos en una base de datos. Esto incluye
la creación de tablas y que establece
relaciones entre aquellas tablas según reglas
diseñadas para proteger los datos y hacer la
base de datos que es más flexible al eliminar
redundancia y dependencia incoherente.

Los datos redundantes desperdician espacio


en disco y crean problemas de
mantenimiento. Si es necesario cambiar datos
que aparecen en más de un sitio, el cambio
deberá ser exactamente igual en todos estos
sitios. Por ejemplo, un cambio de dirección de
un cliente es mucho más fácil de implementar
si los datos sólo se almacenan en la tabla
 La normalización también hace las cosas
fáciles de entender. Los seres humanos
tenemos la tendencia de simplificar las
cosas al máximo. Lo hacemos con casi
todo, desde los animales hasta con los
automóviles.
 Una base de datos normalizada ocupa
menos espacio en disco que una no
normalizada. Hay menos repetición de
datos, lo que tiene como consecuencia un
mucho menor uso de espacio en disco.
¿Por qué
Normalizar?
 Las bases de datos relacionales se normalizan
para:
 Evitar la redundancia de los datos.
 Evitar problemas de actualización de los datos
en las tablas.
 Proteger la integridad de los datos.
 En el modelo relacional es frecuente llamar
tabla a una relación, aunque para que una tabla
sea considerada como una relación tiene que
cumplir con algunas restricciones:
 Cada columna debe tener su nombre único.
 No puede haber dos filas iguales. No se
permiten los duplicados.
 Todos los datos en una columna deben ser del
mismo tipo.
Reglas:

 Existen unas cuantas reglas para la


normalización de bases de datos. Cada
regla se denomina "forma normal“.
 Si se cumple la primera regla, se dice
que la base de datos está en la "primera
forma normal (1FN)“;
 Si se cumple la primera regla y la
segunda, se dice que la base de datos
está en “segunda forma normal (2FN)”;
 Si se cumplen las tres primeras reglas,
se considera que la base de datos está
en la "tercera forma normal"
Ejemplo:
Para comprender cada una de las FN, utilicemos la siguiente tabla
1FN:
 La regla de la Primera Forma Normal
establece que las columnas repetidas
deben eliminarse y colocarse en tablas
separadas.
 Una tabla se encuentra en primera forma
normal si impide que un atributo de una
tupla pueda tomar más de un valor
(atómicos)
 Los Pasos a seguir son:
 Tenemos que eliminar los grupos repetidos.
 Tenemos que crear una nueva tabla con la
clave de la tabla base y el grupo repetido.

Análisis del Ejemplo:
 Esta tabla no cumple el requisito de la
Primera Forma Normal (1NF) de sólo tener
campos atómicos, pues el nombre del
lector es un campo que puede (y
conviene) descomponerse en apellido
paterno, apellido materno y nombres
 Además existen libros con 2 autores por lo
que es conveniente colocarlos en su
propio registro
Resultado: 1FN

Registro Como se puede ver,


propio Separados hay cierta redundancia
característica de 1NF.
2FN:

 La regla de la Segunda Forma Normal


establece que todas las dependencias
parciales se deben eliminar y separar
dentro de sus propias tablas. Una
dependencia parcial es un término que
describe a aquellos datos que no
dependen de la a primaria de la tabla para
identificarlos.
 Es decir, ocurre si una tabla está en
primera forma normal y además cada
atributo que no sea clave, depende de
forma funcional completa respecto de
cualquiera de las claves. Toda la clave
principal debe hacer dependientes al resto
de atributos, si hay atributos que depende
Análisis del ejemplo
 Actualmente en nuestra tabla tenemos
varias dependencias parciales si
consideramos como atributo clave el
código del libro.
 Por ejemplo, el título es completamente
identificado por el código del libro, pero el
nombre del lector en realidad no tiene
dependencia de este código, por tanto
estos datos deben ser trasladados a otra
tabla
Libro

Resultado:
2FN?
Lector
Recordemos…
 Para que un sistema de Base de Datos se
encuentre en 2FN es NECESARIO que esté
en 1FN.
 Como podemos observar la tabla Lector
fue separada por lo que debemos aplicar
las reglas de la 1FN que dice:
 eliminar los grupos repetidos.
 crear una nueva tabla con la clave de la tabla
base y el grupo repetido.
 Sin embargo, sabemos que CodLibro no
identifica a la nueva tabla Lector y que si
lo introducimos estaríamos incumpliendo
la 2FN en la dependencia funcional de la
Resultado:
2FN
tablas Libro y Lector?

 Esta nueva disposición de la base de datos


necesita que exista otra tabla para
mantener la relación entre ellas
 También debemos tomar en cuenta de
2FN:
 Los registros tan sólo deben depender de la
clave principal de una tabla (si es necesario,
puede ser una clave compuesta).
 Con ello podemos deducir que FechaDev
depende del CodLibro y CodLector por lo
que la colocaremos en esta nueva tabla
Lector
Libro

Libro

Préstamos

Tablas 2FN:
3FN:
 Una tabla está normalizada en esta forma si
todas las columnas que no son clave son
funcionalmente dependientes por completo
de la clave primaria y no hay dependencias
transitivas. Una dependencia transitiva es
aquella en la cual las columnas que no son
clave son dependientes de otras columnas
que tampoco son clave
 Es decir, sucede cuando una tabla está en
2FN y además ningún atributo que no sea
clave depende transitivamente de las claves
de la tabla, es por ello que no ocurre
cuando algún atributo depende
funcionalmente de atributos que no son
clave.
Análisis del ejemplo:
 En nuestro ejemplo en 2NF, la tabla Libro,
conserva información acerca del libro, los
autores y editoriales.
 Como podemos ver, los datos del autor no
pertenecen a la tabla libro ya que solo
dependen TRANSITIVAMENTE de su
CodLibro. Lo mismo sucede con la
Editorial.
 En un análisis mas profundo, nos
encontramos en la misma situación que la
tabla Lector, al no poder introducir la
clave base como parte de la tabla ya que
no cumpliríamos la 2FN y, para estar en
Análisis del ejemplo…
 De lo anterior se desprende que:
 Para estar cumplir con 3FN debemos sacar
Autor y Editorial y mandarlos a sus propias
tablas
 Para cumplir con 2FN, deberemos crear sus
propias PK que serán: CodAutor y CodEditorial
.
Libro

Resultado:
3FN? Libro Autor
Editorial
Relación entre tablas
 Para mantener las relaciones entre las
Tablas deberemos crear las tablas con las
PK de cada una de las nuevas tablas para
no perder la información acerca de qué
autor ha escrito qué libro y las editoriales
correspondientes.
Libro-
Autor

Resultado:
3FN? Libro-
Editorial
Resultado: 3FN?

Prestamos
Lector

Sin Cambios ya que ellas ya se encuentran en 3FN,


porque no hay dependencias TRANSITIVAS
Normalización de Tercer Nivel
Libro-
Autor

Libro Autor
Editorial

Libro-
Préstamos Editorial
Lector
Ejemplo 2:
1FN
 En la Tabla Alquiler los Datos que se
repiten son:
 Codigo/Cliente
 Nombre/Cliente
 Direccion/Cliente
 Telefono/Cliente
 En la Tabla Casette los datos que se
repiten son:
 Codigo/Actor
 Nombre/Actor
 Nacimiento/Actor
Resultado:
2FN
 Introducimos Codigo/Autor y
Codigo/Cliente en la tabla alquiler, para
mantener la relación entre las tablas
 Las otras tablas permanecen igual
Resultado:
3FN
 Codigo/Casette y Codigo/Autor dependen
transitivamente de la PK, en la Tabla
Alquiler
 El Valor/Alquiler depende del
Codigo/Casette, de Numero/Copias y de
Formato
 Por lo que no puede estar en Tabla
Alquiler ya que pertenece a la tabla
Casette
 Titulo/Pelicula se manda a su propia tabla
ya que depende de Codigo/Pelicula,
Codigo/Categoria y Codigo/Actor
 Se crean las tablas Membresia y Categoria
para mantener las relaciones
Resultados:
Ventajas
 Integridad de datos (porque no hay datos
redundantes ni omitidos).
 Consultas optimizadas (porque las tablas
normalizadas generan combinaciones
eficaces y rápidas).
 Creación y ordenación de índices más
rápidas (porque las tablas tienen menos
columnas).
 Ejecución más rápida de la instrucción
UPDATE (porque hay menos índices por
tabla).
 Resolución de concurrencias mejorada
Inconvenientes:
 Se puede incurrir en un nuevo costo
cuando se reestructuran las tablas de
datos.
 También es posible sobrenormalizar una
base de datos y descomponerla en
demasiadas tablas granulares. Por
ejemplo, pueden tener una tabla
perfectamente normalizada de empleado
que contiene campos para nombre,
identificación y dirección de correo
electrónico. Si esto ocurre, puede que
tengan que crear consultas más complejas
para unir los datos dispersos en varias
NORMALIZACIÓN DE LA
BASE DE DATOS.
Que es la normalización
 La normalización es el proceso mediante el cual se transforman
datos complejos a un conjunto de estructuras de datos más
pequeñas, que además de ser más simples y más estables, son más
fáciles de mantener. También se puede entender la normalización
como una serie de reglas que sirven para ayudar a los diseñadores de
bases de datos a desarrollar un esquema que minimice los problemas
de lógica.
 La normalización se adoptó porque el viejo estilo de poner todos los
datos en un solo lugar, como un archivo o una tabla de la base de
datos, era ineficiente y conducía a errores de lógica cuando se
trataban de manipular los datos
 El proceso de normalización tiene un nombre y una serie de reglas
para cada fase. Esto puede parecer un poco confuso al principio,
pero poco a poco se va entendiendo el proceso, así como las razones
para hacerlo de esta manera.
Base de datos
 En cada una de las
actividades que
usamos, ha existido
la información.
 Esta información
puede ser usada ya
sea en forma
organizada o
desorganizada, pero
llevarlo de esta
manera no garantiza
su buen uso.
INTRODUCCIÒN
El proceso de normalización de bases de datos consiste en
aplicar una serie de reglas a las relaciones obtenidas tras
el paso del modelo entidad-relación al modelo relacional.
Las bases de datos relacionales se normalizan para:
 Evitar la redundancia de los datos.
 Evitar problemas de actualización de los datos en las
tablas.
 Proteger la integridad de los datos.
 En el modelo relacional es frecuente llamar tabla a una
relación, aunque para que una tabla sea considerada
como una relación tiene que cumplir con algunas
restricciones:
 Cada columna debe tener su nombre único.
 No puede haber dos filas iguales. No se permiten los
duplicados.
 Todos los datos en una columna deben ser del mismo tipo.
Grados de normalización.
 Existen básicamente tres niveles de normalización: Primera
Forma Normal (1NF), Segunda Forma Normal (2NF) y Tercera
Forma Normal (3NF). Cada una de estas formas tiene sus propias
reglas. Cuando una base de datos se conforma a un nivel, se
considera normalizada a esa forma de normalización. No siempre
es una buena idea tener una base de datos conformada en el
nivel más alto de normalización, puede llevar a un nivel de
complejidad que pudiera ser evitado si estuviera en un nivel más
bajo de normalización.
 Regla Descripción
Primera Forma Normal (1FN) Incluye la eliminación de todos los grupos
repetidos.
 Segunda Forma Normal (2FN) Asegura que todas las columnas que no son
llave sean completamente dependientes de la llave primaria (PK).
 Tercera Forma Normal (3FN) Elimina cualquier dependencia transitiva.
Una dependencia transitiva es aquella en la cual las columnas que no son
llave son dependientes de otras columnas que tampoco son llave.
Primera forma normal (1FN)
 La regla de la Primera Forma Normal establece que las columnas
repetidas deben eliminarse y colocarse en tablas separadas.

Poner la base de datos en la Primera Forma Normal resuelve el


problema de los encabezados de columna múltiples. Muy a menudo,
los diseñadores de bases de datos inexpertos harán algo similar a la
tabla no normalizada. Una y otra vez, crearán columnas que
representen los mismos datos. La normalización ayuda a clarificar la
base de datos y a organizarla en partes más pequeñas y más fáciles de
entender. En lugar de tener que entender una tabla gigantesca y
monolítica que tiene muchos diferentes aspectos, sólo tenemos que
entender los objetos pequeños y más tangibles, así como las
relaciones que guardan con otros objetos también pequeños.
Segunda forma normal (2FN)
 La regla de la Segunda Forma Normal establece que
todas las dependencias parciales se deben eliminar y
separar dentro de sus propias tablas. Una
dependencia parcial es un término que describe a
aquellos datos que no dependen de la llave primaria
de la tabla para identificarlos.

Una vez alcanzado el nivel de la Segunda Forma


Normal, se controlan la mayoría de los problemas
de lógica. Podemos insertar un registro sin un
exceso de datos en la mayoría de las tablas.
Tercera forma normal (3FN)
 Una tabla está normalizada en esta forma si todas las
columnas que no son llave son funcionalmente dependientes
por completo de la llave primaria y no hay dependencias
transitivas. Comentamos anteriormente que una dependencia
transitiva es aquella en la cual existen columnas que no son
llave que dependen de otras columnas que tampoco son llave.

Cuando las tablas están en la Tercera Forma Normal se


previenen errores de lógica cuando se insertan o borran
registros. Cada columna en una tabla está identificada de
manera única por la llave primaria, y no deben haber datos
repetidos. Esto provee un esquema limpio y elegante, que es
fácil de trabajar y expandir
Un dato sin normalizar no cumple con ninguna regla de
normalización. Para explicar con un ejemplo en que consiste
cada una de las reglas, vamos a considerar los datos de la
siguiente tabla.
ID_OR ID_CLI NOM_C ESTAD NUM_I DESC_I
FECHA CANT PRECIO
DEN ENTE LIENTE O TEM TEM

2301 2/23/03 101 MARTI CA 3786 RED 3 35

RAQUE
2301 2/23/03 101 MARTI CA 4011 6 65
TA

2301 2/23/03 101 MARTI CA 9132 PAQ-3 8 4.75

HERMA
2302 2/25/03 107 WI 5794 PAQ-6 4 5.0
N
WE-
RAQUE
2303 2/27/03 110 SPORT MI 4011 2 65
TA
S
WE-
2303 2/27/03 110 SPORT MI 3141 FUNDA 2 10
S
Primera forma:
Tenemos que eliminar los grupos repetidos.
Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo
repetido
Los registros quedan ahora conformados en dos tablas que llamaremos
ORDENES y ARTICULOS_ORDENES

- ORDENES
ID_ORDEN FECHA ID_CLIENTE NOM_CLIENTE ESTADO
2301 2/23/03 101 MARTI CA
2302 2/25/03 107 HERMAN WI
2303 2/27/03 110 WE-SPORTS MI

ARTICULOS_ORDENES
ID_ORDEN NUM_ITEM DESC_ITEM CANT PRECIO
2301 3786 RED 3 35
2301 4011 RAQUETA 6 65
2301 9132 PAQ-3 8 4.75
2302 5794 PAQ-6 4 5.0
2303 4011 RAQUETA 2 6 5
2303 3141 FUNDA 2 10
Segunda forma:
Determinar cuáles columnas que no son llave no dependen de la llave
primaria de la tabla.
Eliminar esas columnas de la tabla base.
Crear una segunda tabla con esas columnas y la(s) columna(s) de la PK de
la cual dependen.
Por su parte, la tabla ARTICULOS_ORDENES no se encuentra
en 2FN ya que las columnas PRECIO y DESC_ITEM son
dependientes de NUM_ITEM, pero no son dependientes de
ID_ORDEN. Lo que haremos a continuación es eliminar estas
columnas de la tabla ARTICULOS_ORDENES y crear una tabla
ARTICULOS con dichas columnas y la llave primaria de la que
dependen.

Las tablas quedan ahora de la siguiente manera.


ID_ORDEN NUM_ITEM CANT
2301 3786 3
2301 4011 6
2301 9132 8
2302 5794 4
2303 4011 2
2303 3141 2

NUM_ITEM DESC_ITEM PRECIO


3786 RED 35
4011 RAQUETA 65
9132 PAQ-3 4.75
5794 PAQ-6 5.0
4011 RAQUETA 65
3141 FUNDA 10
Tercera forma:

Determinar las columnas que son dependientes de otra columna no llave.


Eliminar esas columnas de la tabla base.
Crear una segunda tabla con esas columnas y con la columna no llave de la
cual son dependientes.

ID_ORDEN FECHA ID_CLIENTE


2301 2/23/03 101
2302 2/25/03 107
2303 2/27/03 110

NOM_CLIENT
ID_CLIENTE ESTADO
E
101 MARTI CA
107 HERMAN WI
110 WE-SPORTS MI
VENTAJAS
 Integridad de datos (porque no hay datos
redundantes ni omitidos).
 Consultas optimizadas (porque las tablas
normalizadas generan combinaciones eficaces y
rápidas).
 Creación y ordenación de índices más rápidas
(porque las tablas tienen menos columnas).
 Ejecución más rápida de la instrucción UPDATE
(porque hay menos índices por tabla).
 Resolución de concurrencias mejorada (porque los
bloqueos de tabla afectarán a menos datos).
Bases de Datos Relacionales
Bases de Datos Relacionales
Las Tablas representaran nuestras entidades y relaciones detectadas en el DER.

Relación: conexión entre las filas de dos tablas. Las relaciones se muestran mediante los valores de una columna en
una tabla que coinciden con los valores de una columna en otra tabla.
Bases de Datos Relacionales
REGLAS DE INTEGRIDAD:

Integridad de la entidad significa que cada tabla debe tener una columna o combinación de columnas con valores
únicos.
Unico significa que no existen dos filas de una tabla que tengan el mismo valor.
Por ejemplo, StdSSN en Student es única y la combinación de StdSSN y OfferNo es única en Enrollment.
La integridad de la entidad asegura que las entidades (personas, cosas y eventos) se identifiquen de forma única en
una base de datos. Por razones de auditoría, seguridad y comunicaciones, es importante que las entidades de
negocio sean fácilmente rastreables.

Integridad referencial significa que los valores de la columna de una tabla deben coincidir con los valores de la
columna de la tabla relacionada. Por ejemplo, el valor StdSSN de cada fila de la tabla Enrollment debe coincidir con
el valor de StdSSN de alguna fila de la tabla Student.
La integridad referencial se cerciora de que una base de datos contenga conexiones válidas.

Estas Reglas ya las podemos identificar en el momento que hacemos el diseño de la Base de Datos con el DER.
Bases de Datos Relacionales
REGLAS DE INTEGRIDAD:

Definiciones
• Superllave: Una columna o combinación de columnas que contiene valores únicos para cada renglón. La
combinación de todas las columnas de una tabla siempre es una superllave, ya que las filas de una tabla deben ser
únicas.

• Llave candidata: Una superllave mínima. Una superllave es mínima si al quitar cualquiera de las columnas ya no
es única.

• Valor nulo: Un valor especial que representa la ausencia de un valor presente. Un valor nulo puede indicar que se
desconoce el valor presente o que no aplica para una determinada fila.

• Llave primaria: Una llave candidata diseñada de forma especial. La llave primaria de una tabla no puede contener
valores nulos.

• Llave foránea: Columna o combinación de columnas en la cual los valores deben coincidir con aquéllos de la llave
candidata. Una llave foránea debe tener el mismo tipo de datos que su llave candidata asociada. En la sentencia
CREATE TABLE de SQL, una llave foránea debe estar asociada con una llave primaria en lugar de sólo con una
llave candidata.
Bases de Datos Relacionales
REGLAS DE INTEGRIDAD:

Integridad de la Entidad y Referencial


Bases de Datos Relacionales
REGLAS DE INTEGRIDAD:

Integridad de la Entidad, Referencial y Otras restricciones


Bases de Datos Relacionales
REGLAS DE INTEGRIDAD:

Representación gráfica de la integridad referencial en Access


Bases de Datos Relacionales
REGLAS DE INTEGRIDAD:

Acciones para eliminar y actualizar filas referenciadas

Eliminación de una fila referenciada: ¿Qué le pasa a las filas relacionadas (es decir, filas de la tabla hija con idéntico
valor de llave foránea) cuando se elimina la fila referenciada de la tabla madre?
Actualización de la llave primaria de una fila referenciada: ¿Qué le pasa a las filas relacionadas cuando se actualiza
la llave primaria de la fila referenciada en la tabla madre?

Acciones posibles
Existen varias acciones posibles para dar respuesta a la eliminación de una fila referenciada o a la actualización de la
llave primaria de una fila referenciada. La acción apropiada depende de las tablas involucradas.
• Restringir: No permitir la acción en la fila referenciada.
Por ejemplo, no permitir que una fila de Student se borre si existen renglones relacionados en Enrollment. De forma
similar, no permitir que Student.StdSSN se modifique si existen filas en Enrollment.
• Cascada: Realizar la misma acción (acción en cascada) en las filas relacionadas.
Por ejemplo, si se elimina un Student, se deben eliminar las filas relacionadas en Enrollment. De forma similar, si
Student.StdSSN se modifica en alguna fila, se debe actualizar StdSSN en las filas relacionadas de Enrollment.
• Nulificar: Igualar a nulo la llave foránea de las filas relacionadas.
Por ejemplo, si se elimina una fila de Faculty, entonces igualar FacSSN a NULL en las filas relacionadas de Offering.
La acción nulificar no se permite cuando la llave foránea no permite valores nulos. Por ejemplo, la opción nulificar no
es válida cuando se eliminan renglones de la tabla Student, ya que Enrollment.StdSSN es parte de la llave primaria.
• Por omisión: Igualar la llave foránea de las filas relacionadas al valor por omisión.
Por ejemplo, si se elimina una fila de Faculty, entonces se debe igualar FacSSN al valor por omisión del facultativo en
relación con las filas Offering. El valor por omisión del facultativo puede interpretarse como “se anunciará”.
Bases de Datos Relacionales
REGLAS DE INTEGRIDAD:

Acciones para eliminar y actualizar filas referenciadas

Eliminación de una fila referenciada: ¿Qué le pasa a las filas relacionadas (es decir, filas de la tabla hija con idéntico
valor de llave foránea) cuando se elimina la fila referenciada de la tabla madre?
Actualización de la llave primaria de una fila referenciada: ¿Qué le pasa a las filas relacionadas cuando se actualiza
la llave primaria de la fila referenciada en la tabla madre?

Las acciones para eliminar y actualizar se pueden especificar en SQL utilizando las cláusulas ON DELETE y ON
UPDATE
Access 2013
Microsoft Access 2013 funciona bajo el sistema operativo Windows y viene incluido dentro del paquete Microsoft
Office, de manera que debemos tener este sistema instalado en nuestro equipo.
Para acceder al programa, podemos desplegar las opciones del menú Iniciar o utilizar el icono identificativo del
programa que suele ubicarse en el Escritorio de Windows.
A continuación, nos encontraremos con la pantalla de Inicio rápido, que nos permite elegir la manera de empezar a
trabajar, puede ser desde una plantilla o una base de datos en blanco.
Access 2013
La interfaz
La interfaz de Access posee elementos para manipular la ventana del programa de manera independiente del
contenido de las bases de datos.
Barra de título
Para comenzar, conozcamos la Barra de título, que contiene el nombre de la base de datos en la cual estamos
trabajando, los botones Minimizar, Maximizar y Cerrar, así como también la Barra de herramientas de acceso
rápido.
Access 2013
Access 2013
La interfaz
La interfaz de Access posee elementos para manipular la ventana del programa de manera independiente del
contenido de las bases de datos.
Barra de título
Para comenzar, conozcamos la Barra de título, que contiene el nombre de la base de datos en la cual estamos
trabajando, los botones Minimizar, Maximizar y Cerrar, así como también la Barra de herramientas de acceso
rápido.
Access 2013
H1

Access 2013
Tipos de datos
Cada registro que introducimos en una tabla tiene un formato determinado, por eso Access permite definir
el tipo de dato que se empleará en cada campo. Las opciones son las siguientes:
• Texto corto: permite registrar hasta 255 caracteres alfanuméricos, es decir que es posible ingresar texto
y números que no sean utilizados para un cálculo, por ejemplo, números de teléfono y de documento.
• Texto largo: similar a la anterior, pero sin límite en la cantidad de caracteres.
• Número: solo admite números, que pueden ser usados en cálculos, por ejemplo, cantidad de horas
trabajadas y cantidad de productos vendidos, entre otras posibilidades.
• Fecha/Hora: se utiliza para registrar fechas y horas, por ejemplo, las fechas de las ventas o los horarios
de trabajo de los empleados.
• Moneda: representa valores monetarios, como, por ejemplo, salarios, precios de venta, costos, totales.
• Autonumeración: genera, de manera automática, números enteros correlativos o aleatorios.
• Sí/No: genera una casilla en la tabla, que se debe activar para indicar valores positivos o desactivar para
valores negativos.
• Objeto OLE: para almacenar archivos, imágenes, sonidos y videos.
• Hipervínculo: vincula archivos y elementos de una base de datos a direcciones URL y de correo
electrónico.
• Datos adjuntos: para adjuntar archivos a un campo, por ejemplo, una tabla que posea datos de los
empleados puede llevar adjunto el currículum correspondiente, en el registro de cada uno de ellos.
• Asistente para búsquedas: permite generar un menú con opciones, para seleccionar los valores del
campo. Este tipo de dato es para valores con poca o ninguna variación, por ejemplo, una lista de
sucursales.
Diapositiva 130

H1 Hugo; 25/09/2018
Access 2013
Access 2013
Editar formato de la tabla
Es posible modificar el diseño de la tabla desde la vista de hoja de datos o bien de vista diseño.
Access 2013
Crear listas predeterminadas
Access 2013
Crear listas predeterminadas
Access 2013
Organizar datos
La función Organizar datos permite indicar un orden (ascendente o descendente) mediante el cual se visualizará la
información ingresada en las tablas. Para ordenar los datos de un campo, debemos situar el cursor en una de sus
celdas, ingresar en la ficha Inicio/Ordenar y filtrar y pulsar los botones Ascendente o Descendente.
Cuando ordenamos los registros de un campo, debemos tener en cuenta que los diferentes datos referentes a cada
uno, es decir aquellos que se encuentran en la misma fila, respetan la concordancia, por lo tanto, no se mezclarán.
Access 2013
Buscar y reemplazar datos
La función de búsqueda que posee Access permite ubicar datos o registros específicos de manera inmediata con solo
pulsar un botón. Esta función se torna una herramienta fundamental en aquellos casos en que la base de datos posee
una gran cantidad de registros y la ubicación manual se vuelve una tarea compleja, que no solo requiere tiempo sino
también una cuidadosa atención de nuestra parte para no pasar por alto ningún dato. Las mismas ventajas tiene la
función Reemplazar.
Access 2013
Buscar y reemplazar datos
Access 2013
Propiedades y formatos
Luego de crear tablas, es importante aprender a modificar sus propiedades, ya que cada una de ellas establece un
aspecto diferente de los datos que vamos a introducir. Mediante el manejo de las propiedades, disminuiremos el
tamaño de la base de datos, validaremos los datos, crearemos mensajes de error para evitar aquellos que no cumplan
con los criterios deseados y más.
Formato de los datos
Cada tipo de dato posee la propiedad Formato, que permite establecer la apariencia de los datos que serán
introducidos en el campo seleccionado, al ubicarnos en la Vista Hoja de datos.
Access 2013
Propiedades y formatos
Valores predeterminados
Esta propiedad nos permite agilizar el proceso de registro de la información, ya que es de gran utilidad en los casos
en que los valores del campo son constantes o con pocas variaciones. De esta manera, nos evita tener que escribir
reiteradamente un determinado contenido en cada celda.
Access 2013
Propiedades y formatos
Validar datos
Esta propiedad nos da la posibilidad de restringir los valores admitidos en un campo para evitar errores. La
propiedad Regla de validación permite establecer las condiciones que deben cumplir los datos para ser aceptados o
no en un campo..
Access 2013
Propiedades y formatos
Validar datos
Esta propiedad nos da la posibilidad de restringir los valores admitidos en un campo para evitar errores. La
propiedad Regla de validación permite establecer las condiciones que deben cumplir los datos para ser aceptados o
no en un campo..
Access 2013
Propiedades y formatos
Convertir datos en obligatorios
Es posible que, en muchas ocasiones, necesitemos que el usuario ingrese datos de forma obligatoria en un campo
determinado. Es decir, que no pueda continuar con el resto de los registros sin completar dicho campo. Para lograr
esto, utilizamos la propiedad Requerido, que posee una lista desplegable con dos valores: Sí y No. Al elegir la
opción Sí, se vuelve obligatoria la introducción de datos en ese campo, por lo tanto, en la Vista Hoja de datos no
podrá quedar vacío.
Access 2013
Propiedades y formatos
Crear formatos predeterminados
Access ofrece la posibilidad de indicar el tipo de caracteres y el orden en el que serán aceptados los datos en un
campo, a través de la creación de formatos predeterminados que establezcan cuántos caracteres se admitirán, si
serán números o letras, mayúsculas o minúsculas, si tendrán o no una separación, etcétera. Para ello, utilizamos la
propiedad Máscara de entrada.
Access 2013
Propiedades y formatos
Crear formatos predeterminados
Access ofrece la posibilidad de indicar el tipo de caracteres y el orden en el que serán aceptados los datos en un
campo, a través de la creación de formatos predeterminados que establezcan cuántos caracteres se admitirán, si
serán números o letras, mayúsculas o minúsculas, si tendrán o no una separación, etcétera. Para ello, utilizamos la
propiedad Máscara de entrada.
Access 2013
Filtros
Una muy buena forma de clasificar los datos es filtrarlos. Mediante la aplicación de filtros, logramos clasificar datos
con uno o varios criterios (según lo que especifiquemos). De esta manera, visualizaremos únicamente los datos que
cumplan con los criterios especificados y esto nos permitirá disponer fácil y rápidamente de la información que
necesitamos.

Filtrar registros
Para llevar a cabo una adecuada clasificación de la información en la creación de los diferentes tipos de filtros,
utilizaremos las opciones del apartado Ordenar y filtrar
Access 2013
Filtros
Filtrar registros
Para llevar a cabo una adecuada clasificación de la información en la creación de los diferentes tipos de filtros,
utilizaremos las opciones del apartado Ordenar y filtrar
Access 2013
Relaciones entre tablas
LA CLAVE PRINCIPAL NOS PERMITE IDENTIFICAR CADA REGISTRO DE MANERA ÚNICA.

El campo que se emplea para identificar cada registro con un valor único se denomina campo clave o clave
principal.
A su vez, el campo clave de una tabla es frecuentemente utilizado en otra, con el fin de poder relacionarlas entre sí.
A estos campos los llamamos clave externa.
Un campo sea clave principal implica que:
• El campo queda automáticamente indexado sin duplicados: si ingresamos un valor repetido en el campo clave,
Access nos muestra un mensaje de error.
• No es posible omitir valores en el campo: todos los registros deberán contener un valor en el campo clave, de lo
contrario, Access muestra un mensaje de error.
Access 2013
Relaciones datos
Las herramientas para relacionar tablas nos permiten acceder rápidamente a la información almacenada, sin
necesidad de abrir cada una de las tablas que contienen los datos. Por lo tanto, al proceso de relación podemos
definirlo como: la vinculación entre dos tablas a través de un campo en común.
Bases de Datos Relacionales
REGLAS DE INTEGRIDAD:

Acciones para eliminar y actualizar filas referenciadas

Eliminación de una fila referenciada: ¿Qué le pasa a las filas relacionadas (es decir, filas de la tabla hija con idéntico
valor de llave foránea) cuando se elimina la fila referenciada de la tabla madre?
Actualización de la llave primaria de una fila referenciada: ¿Qué le pasa a las filas relacionadas cuando se actualiza
la llave primaria de la fila referenciada en la tabla madre?

Acciones posibles
Existen varias acciones posibles para dar respuesta a la eliminación de una fila referenciada o a la actualización de la
llave primaria de una fila referenciada. La acción apropiada depende de las tablas involucradas.
• Restringir: No permitir la acción en la fila referenciada.
Por ejemplo, no permitir que una fila de Student se borre si existen renglones relacionados en Enrollment. De forma
similar, no permitir que Student.StdSSN se modifique si existen filas en Enrollment.
• Cascada: Realizar la misma acción (acción en cascada) en las filas relacionadas.
Por ejemplo, si se elimina un Student, se deben eliminar las filas relacionadas en Enrollment. De forma similar, si
Student.StdSSN se modifica en alguna fila, se debe actualizar StdSSN en las filas relacionadas de Enrollment.
• Nulificar: Igualar a nulo la llave foránea de las filas relacionadas.
Por ejemplo, si se elimina una fila de Faculty, entonces igualar FacSSN a NULL en las filas relacionadas de Offering.
La acción nulificar no se permite cuando la llave foránea no permite valores nulos. Por ejemplo, la opción nulificar no
es válida cuando se eliminan renglones de la tabla Student, ya que Enrollment.StdSSN es parte de la llave primaria.
• Por omisión: Igualar la llave foránea de las filas relacionadas al valor por omisión.
Por ejemplo, si se elimina una fila de Faculty, entonces se debe igualar FacSSN al valor por omisión del facultativo en
relación con las filas Offering. El valor por omisión del facultativo puede interpretarse como “se anunciará”.
Bases de Datos Relacionales
REGLAS DE INTEGRIDAD:

Acciones para eliminar y actualizar filas referenciadas

Eliminación de una fila referenciada: ¿Qué le pasa a las filas relacionadas (es decir, filas de la tabla hija con idéntico
valor de llave foránea) cuando se elimina la fila referenciada de la tabla madre?
Actualización de la llave primaria de una fila referenciada: ¿Qué le pasa a las filas relacionadas cuando se actualiza
la llave primaria de la fila referenciada en la tabla madre?

Las acciones para eliminar y actualizar se pueden especificar en SQL utilizando las cláusulas ON DELETE y ON
UPDATE
Access 2013
Relaciones datos
Las herramientas para relacionar tablas nos permiten acceder rápidamente a la información almacenada, sin
necesidad de abrir cada una de las tablas que contienen los datos. Por lo tanto, al proceso de relación podemos
definirlo como: la vinculación entre dos tablas a través de un campo en común.
Access 2013
Opciones para la relación entre tablas
Al activar la casilla Exigir integridad referencial, indicamos que los datos entre ambas tablas deben ser coherentes:
no se podrá eliminar un registro que contenga un dato relacionado.

La casilla Actualizar en cascada campos relacionados permite actualizar de manera automática los cambios
generados en uno de los campos que interviene en la relación. Por ejemplo, si modificamos el número que identifica
a un cliente en la tabla CLIENTES, este se actualizará también en la tabla COMPRO.

La casilla Actualizar en cascada los campos relacionados permite actualizar de manera automática los cambios
generados en uno de los campos que interviene en la relación. Por ejemplo, si modificamos el número que identifica
a un cliente en la tabla CLIENTES, este se actualizará también en la tabla COMPRO.

Si activamos la casilla Eliminar en cascada los registros relacionados, cuando borremos un registro que posee el
campo clave, se eliminará automáticamente de las tablas que contengan este registro como clave externa. Por
ejemplo, si borramos un cliente de la tabla CLIENTES, los registros que se correspondan en la tabla COMPRO
también se eliminarán.
Access 2013
Relaciones - Ficha Diseño
En el momento en que podemos ver la pestaña Relaciones, es cuando aparece la ficha Diseño en la cinta de
opciones. Esta ficha permite realizar varias operaciones sobre la relación,
Access 2013
Diseño de Consultas
Access 2013
Diseño de Consultas de Actualización
Tabla de expresiones de ejemplo
En esta tabla se muestran algunas expresiones de ejemplo y una explicación de cómo cambian los datos.
Expresión Resultado

"Vendedor" En un campo de texto, cambia un valor de texto a Vendedor.

#10/8/17# En un campo de fecha y hora, cambia un valor de fecha a 10-ago-17.

Sí En un campo de tipo Sí/No, cambia el valor No a Sí.

"NP" & [NúmeroPieza] Agrega "NP" al principio de cada número de pieza especificado.

[PrecioUnidad] * [Cantidad] Multiplica los valores de los campos PrecioUnidad y Cantidad.

[Transporte] * 1,5 Aumenta los valores de un campo denominado Transporte en un 50 por ciento.

DSuma("[Cantidad] * [PrecioUnidad]", Si los valores de Id de producto de la tabla actual coinciden con los valores de Id
"Detalles de pedidos", "[IdProducto]=" & [IdProducto]) de producto de la tabla denominada Detalles de pedidos, esta expresión
actualiza los totales de ventas multiplicando los valores de un campo
denominado Cantidad por los valores de un campo denominado PrecioUnidad.
La expresión usa la función DSuma porque funciona con más de una tabla y más
de un campo de tabla.

Derecha([CódigoPostalEnvío], 5) Trunca (quita) los caracteres situados más a la izquierda en una cadena de texto o
una cadena numérica y deja los cinco caracteres situados más a la derecha.

SiInm(Es Nulo([PrecioUnidad]), 0, [PrecioUnidad]) Cambia un valor nulo (desconocido o sin definir) a un valor cero (0) en un campo
denominado PrecioUnidad.
Access 2013
Microsoft Access 2013 funciona bajo el sistema operativo Windows y viene incluido dentro del paquete Microsoft
Office, de manera que debemos tener este sistema instalado en nuestro equipo.
Para acceder al programa, podemos desplegar las opciones del menú Iniciar o utilizar el icono identificativo del
programa que suele ubicarse en el Escritorio de Windows.
A continuación, nos encontraremos con la pantalla de Inicio rápido, que nos permite elegir la manera de empezar a
trabajar, puede ser desde una plantilla o una base de datos en blanco.
Access 2013
La interfaz
La interfaz de Access posee elementos para manipular la ventana del programa de manera independiente del
contenido de las bases de datos.
Barra de título
Para comenzar, conozcamos la Barra de título, que contiene el nombre de la base de datos en la cual estamos
trabajando, los botones Minimizar, Maximizar y Cerrar, así como también la Barra de herramientas de acceso
rápido.
Access 2013
Access 2013
La interfaz
La interfaz de Access posee elementos para manipular la ventana del programa de manera independiente del
contenido de las bases de datos.
Barra de título
Para comenzar, conozcamos la Barra de título, que contiene el nombre de la base de datos en la cual estamos
trabajando, los botones Minimizar, Maximizar y Cerrar, así como también la Barra de herramientas de acceso
rápido.
Access 2013
Introducción a SQL
 SQL – Structured Query Language – Lenguaje de consulta estructurado
 SQL es el lenguaje estándar para trabajar con bases de datos relacionales y es
soportado por casi la totalidad de los productos existentes en el mercado.
 SQL fue desarrolado por IBM Research a partir de los conceptos definidos
por Codd y fue presentado como SEQUEL (Structures English QUEry
Language) en mayo de 1974 por Chamberlin y Boyce.
 SQL fue implementado por primera vez en el prototipo de IBM: System R
 SQL desde 1992 tiene su nombre oficial: Estándar Internacional del Lenguaje
de Base de Datos SQL
 SQL fue concebido como “Sublenguaje de Datos” y combinaba dos lenguajes
subordinados: DDL (Data Definition Language) y DML (Data Manipulation
Language)
 SQL en 1996 se le incorporó las características de PSM (Módulos
Almacenados Persistentes), llegando a ser un lenguaje completo. 161
Introducción a SQL

162
Introducción a SQL
CREATE TABLE ALUMNOS(
LEGAJO INTEGER NOT NULL, CREATE TABLE CURSA(
NOMBRE CHAR(30) NOT NULL, LEGAJO INTEGER NOT NULL,
DNI INTEGER NOT NULL , COD_MAT INTEGER NOT NULL,
DOMICILIO CHAR(30), AÑO_LECTIVO INTEGER NOT NULL,
FEC_NAC DATE, FEC_INSC DATE,
PRIMARY KEY (LEGAJO)); PRIMARY KEY (LEGAJO, COD_MAT, AÑO_LECTIVO),
FOREIGN KEY (LEGAJO) REFERENCES
CREATE TABLE DOCENTE( ALUMNOS(LEGAJO),
DNI INTEGER NOT NULL , FOREIGN KEY (COD_MAT) REFERENCES
NOMBRE CHAR(30) NOT NULL, MATERIA(COD_MAT) );
DOMICILIO CHAR(30),
P_MAIL CHAR(30),
FEC_NAC DATE,
TELEFONO CHAR(15), CREATE TABLE EXAMEN(
PRIMARY KEY (DNI)); LEGAJO INTEGER NOT NULL,
COD_MAT INTEGER NOT NULL,
CREATE TABLE MATERIA( FEC_EXA DATE NOT NULL,
COD_MAT INTEGER NOT NULL, NOTA INTEGER,
NOMBRE CHAR(30) NOT NULL, ACTA INTEGER,
CARRERA CHAR(20) , PRIMARY KEY (LEGAJO, COD_MAT, FEC_EXA),
AÑO INTEGER, FOREIGN KEY (LEGAJO) REFERENCES
CUATRIMESTRE INTEGER, ALUMNOS(LEGAJO),
DNI_PROFESOR INTEGER, FOREIGN KEY (COD_MAT) REFERENCES
PRIMARY KEY (COD_MAT) MATERIA(COD_MAT) ); 163
FOREIGN KEY (DNI_PROFESOR) REFERENCES
DOCENTE(DNI));
ALUMNOS
LEGAJO NOMBRE DNI DOMICILIO FEC_NAC TELEFONO
1428 Lopez, Jorge Luis 33455666 8 nro 1808 23/4/1998 CURSA
1903 Perez, Karina 43333222 22 nro 345 10/5/2001 LEGAJO COD_MAT AÑO_LECTIVO FEC_INSC
2102 Arce, Cesar 34444555 22 nro 345 10/4/1998 1428 2 2006 10/3/2006
2103 Moon, Lucila 34555444 San Martin nro19/12/1999
1245 2102 2 2006 12/3/2006
3908 Rodriguez, Jorge 11462300 16 esquina 43 24/7/1972 2103 22 2006 10/8/2006
3923 Sombra, Fernando 25851211 9 de julio 961 7/7/1973 422676 1903 34 2007 2/2/2007
4103 Salvador, Maria Alejandra 11137562 Paladino 439 13/3/2000 432454 1428 2 2007 12/3/2007
4105 Vidoret, Daniel 26507702 6 bis 505 13/5/2000 4241604 1903 34 2008 3/2/2008
4106 Ruiz, Gisela 28358351 Alberdi 1392 1428 22 2008 10/3/2008
4108 Weizz, Nelson 13956555 Maipu 72 4/5/1972 421604 1903 34 2009 1/3/2010
1903 34 2011 1/3/2011
DOCENTE
DNI NOMBRE DOMICILIO P_MAIL FEC_NAC TELEFONO
16772834 ALFONSO HUGO 10 NRO 346 alfonsoh@ing.unlpam.edu.ar 4/9/1964 322904
22222222 DAVIS EDUARDO 107 NRO 444 davise@ing.unlpam.edu.ar
12333444 MINETTI GABRIELA 306 NRO 1346 minettig@ing.unlpam.edu.ar 30/12/1954 422780
11111111 RAMOS RAQUEL 35 NRO 344 rramos@ing.unlpam.edu.ar
22333444 SALTO CAROLINA 112 NRO 555 saltoc@ing.unlpam.edu.ar 30/12/1974 422780

EXAMEN
MATERIA LEGAJO COD_MAT FEC_EXA NOTA ACTA
COD_MAT NOMBRE CARRERA AÑO CUATRIMESTRE DNI_PROFESOR 1428 2 12/12/2006 2 100
4 Analisis Matemático I Ing. Electromecanica 1 1 2102 2 12/12/2006 6 100
33 Computación II Ing. Electromecanica 2 2 22333444 2103 22 4/2/2007 2 120
44 Electrónica I Ing. electromecanica 4 1 2102 22 4/2/2007 10 120
55 Mecanica de los fluidos Ing. electromecanica 4 1 4103 22 4/2/2007 10 120
2 Algebra Ing. Sistemas 1 1 22222222 4105 34 20/12/2008 8 141
34 Base de Datos Ing. Sistemas 3 1 16772834 1428 34 20/12/2008 4 141
56 Base de Datos Dist Ing. Sistemas 5 2 16772834 3908 22 3/3/2009 8 162
22 Ingles I Ing. Sistemas 2 2 11111111 2103 22 3/3/2009 8 162
5 Matemática Discreta Ing. Sistemas 1 2 22222222 1428 22 3/3/2009 1644 162
57 Sistemas Operativos Ing. Sistemas 3 1 22333444 4105 57 10/3/2009 110 170
Introducción a SQL
Para realizar cualquier Consulta sobre los datos que contienen las Tablas
usaremos alguna de las siguientes sintaxis:

Para lo cual sólo necesitamos conocer:


1. Qué datos queremos obtener?
2. Dónde están los datos?
3. Qué condición deben cumplir los datos?
4. Cómo debe estar ordenado el resultado?
165
Consultas en SQL
Consultas:
1. Mostrar todos los datos de los estudiantes
2. Mostrar el nombre y número de documento de todos los estudiantes
3. Ídem a la 2 pero ordenar el resultado alfabéticamente por nombre
del estudiante
4. Buscar los estudiantes que se llaman Fernando
5. Identificar las materias de Base de Datos. Mostrar Nombre de
materia, código y año
6. Obtener la información de todas las materias de primer año
7. Obtener el nombre de las carreras que tengan materias registradas.
8. Obtener un historial académico de Jorge López. Debe contener
nombre de materia, fecha de examen y nota. Ordenar los exámenes
cronológicamente.
9. Identificar las materias que dicta la profesora Raquel Ramos. Deberá
indicar materia, carrera a la que pertenece y cuatrimestre en que
dicta tal materia.
10.Identificar las materías que aún no tienen profesor asignado
11.Identificar lo docentes que no tienen materias asignadas. Mostrar
toda la información de los mismos ordenada alfabéticamente por
nombre 166

12.Identificar los estudiantes que comparten vivienda, según el


Consultas en SQL
Consultas:

15.Informar la cantidad de materias aprobada por los alumnos en un


determinado año, por Ej 2009.

16.Modificar la consulta anterior para sólo informar los que hayan


aprobado mas de 2 materias en ese año
17.Modificar el domicilio de la docente Minetti, su nuevo domicilio es
Calle 101 Nro 955
18.Incorporar las cursadas de los estudiantes del presente año. Al
menos 1 nuevo registro
19.Eliminar el estudiante Weizz. Pudo?? Por que??
20.Eliminar la estudiante Karina Perez. Pudo?? Por que??

167
Introducción a SQL
Ejemplo

168
SQL - Subquery
También podemos anidar Consulta, lo que recibe el nombre de Subconsultas.
SELECT NOMBRE,CARRERA,CUATRIMESTRE
FROM MATERIA
WHERE DNI_PROFESOR IN ( SELECT DNI
FROM DOCENTES
WHERE NOMBRE LIKE ‘*RAMOS RAQUEL*');
O

SELECT NOMBRE,CARRERA,CUATRIMESTRE
FROM MATERIA
WHERE EXISTS (SELECT *
FROM DOCENTES
WHERE NOMBRE LIKE ‘*RAMOS RAQUEL*'
169
AND MATERIA.DNI_PROFESOR = DNI);
SQL – Funciones Agregadas
También podemos pretender que nuestras consultas realicen cálculos sobre los
datos o subgrupos de ellos.
Ejemplos:
Informar la cantidad de docentes:
SELECT COUNT(*) AS CANTIDAD
FROM DOCENTES;
Informar la cantidad de materias por cada una de las carreras
SELECT CARRERA, COUNT(*) AS CANTIDAD
FROM MATERIA
GROUP BY CARRERA;

Las funciones a aplicar son: COUNT, MIN, MAX, SUM, AVG 170
Introducción a SQL
Para Insertar datos en las Tablas usaremos alguna de las siguientes sintaxis:

Ejemplo
INSERT INTO CURSA (LEGAJO, COD_MAT, AÑO_LECTIVO, FEC_INSC)
VALUES (1903, 34, 2007, 02/02/2007 );
o
INSERT INTO CURSA VALUES (1903, 34, 2007, 02/02/2007 ); 171
Introducción a SQL
Para Actualizar datos en las Tablas usaremos alguna de las siguientes sintaxis:

Ejemplo
UPDATE CURSA
SET AÑO_LECTIVO = 2010
WHERE LEGAJO = 1903 AND COD_MAT = 34 AND FEC_INSC = 01/03/2010 ;

172
Introducción a SQL
Para Actualizar datos en las Tablas usaremos alguna de las siguientes sintaxis:

Ejemplo
UPDATE MATERIA
SET CARRERA = 'Ing. Sistemas'
WHERE CARRERA = 'Analista Programador';

173
Introducción a SQL
Para Eliminar datos en las Tablas usaremos alguna de las siguientes sintaxis:

Ejemplo
DELETE FROM CURSA
WHERE LEGAJO = 1903 AND COD_MAT = 34 AND
FEC_INSC = 01/03/2010 ;

DELETE FROM CURSA


WHERE AÑO_LECTIVO = 2006;

174
INTRODUCCION A
BASES DE DATOS Y
SQL
Introducción a SQL
Lectura Recomendada:
1. Mannino. Capítulos 3 y 4
2. ACCESS 2013 - Guía Practica para el Usuario
3. Fleitas, Paula; Access 2013

175
Taller de Gestión de
Datos

SQL
Structured Query Language
- Consultas Resueltas-

176
Consultas en SQL
Consultas:
1. Mostrar todos los datos de los estudiantes
SELECT LEGAJO, NOMBRE, DNI, DOMICILIO, FEC_NAC, TELEFONO
FROM ALUMNOS;

SELECT *
FROM ALUMNOS;

2. Mostrar el nombre y número de documento de todos los estudiantes


SELECT NOMBRE, DNI
FROM ALUMNOS;

3. Ídem a la 2 pero ordenar el resultado alfabéticamente por nombre


del estudiante
SELECT NOMBRE, DNI
FROM ALUMNOS
ORDER BY NOMBRE ASC;

4. Buscar los estudiantes que se llaman Fernando


SELECT NOMBRE, DNI 177

FROM ALUMNOS
Consultas en SQL
Consultas:
5. Identificar las materias de Base de Datos. Mostrar Nombre de
materia, código y año
SELECT NOMBRE, COD_MAT, AÑO
FROM MATERIA
WHERE NOMBRE LIKE ‘*Base de Datos*';
SELECT NOMBRE, COD_MAT, AÑO
FROM MATERIA
WHERE UPPER(NOMBRE) LIKE '*BASE*' AND
UPPER(NOMBRE) LIKE '*DATO*';
6. Obtener la información de todas las materias de primer año
SELECT NOMBRE, COD_MAT, AÑO,CUATRIMESTRE, CARRERA
FROM MATERIA
WHERE AÑO=1;
7. Obtener el nombre de las carreras que tengan materias registradas.
SELECT CARRERA
FROM MATERIA;
Pero evitando las duplicaciones que no aportan información:
SELECT DISTINCT CARRERA
FROM MATERIA; 178

O mejor aún:…
Consultas en SQL
Consultas:
8. Obtener un historial académico de Jorge López. Debe contener
nombre de materia, fecha de examen y nota. Ordenar los exámenes
cronológicamente.

SELECT MATERIA.NOMBRE,FEC_EXA,NOTA
FROM EXAMEN, MATERIA, ALUMNOS
WHERE EXAMEN.COD_MAT = MATERIA.COD_MAT
AND EXAMEN.LEGAJO = ALUMNOS.LEGAJO
AND ALUMNOS.NOMBRE LIKE '*Lopez, Jorge*'
ORDER BY FEC_EXA;

O bien:

SELECT MATERIA.NOMBRE,FEC_EXA,NOTA
FROM (EXAMEN JOIN MATERIA
ON EXAMEN.COD_MAT = MATERIA.COD_MAT )
JOIN ALUMNOS
ON EXAMEN.LEGAJO = ALUMNOS.LEGAJO
WHERE ALUMNOS.NOMBRE LIKE '*Lopez, Jorge*' 179

ORDER BY FEC_EXA;
Consultas en SQL
Consultas:
9. Identificar las materias que dicta la profesora Raquel Ramos. Deberá
indicar materia, carrera a la que pertenece y cuatrimestre en que dicta
tal materia.
SELECT MATERIA.NOMBRE,CARRERA,CUATRIMESTRE
FROM MATERIA JOIN DOCENTES
ON MATERIA.DNI_PROFESOR = DOCENTES.DNI
WHERE DOCENTES.NOMBRE LIKE '*RAMOS RAQUEL*';

O bien usando Subquery:

SELECT NOMBRE,CARRERA,CUATRIMESTRE
FROM MATERIA
WHERE DNI_PROFESOR IN ( SELECT DNI
FROM DOCENTES
WHERE NOMBRE LIKE '*RAMOS RAQUEL*');

10.Identificar las materias que aún no tienen profesor asignado


SELECT NOMBRE,CARRERA,CUATRIMESTRE
180
FROM MATERIA
WHERE DNI_PROFESOR IS NULL;
Consultas en SQL
Consultas:
11.Identificar lo docentes que no tienen materias asignadas. Mostrar toda la
información de los mismos ordenada alfabéticamente por nombre
SELECT *
FROM DOCENTES
WHERE NOT EXISTS (SELECT *
FROM MATERIA
WHERE DNI_PROFESOR=DOCENTES.DNI)
ORDER BY NOMBRE;
o
SELECT *
FROM DOCENTES
WHERE DNI NOT IN (11111111, 22333444, 16772834, 22222222)
ORDER BY NOMBRE;
o
SELECT *
FROM DOCENTES
WHERE DNI NOT IN (SELECT DISTINCT DNI_PROFESOR
FROM MATERIA);
181
Consultas en SQL
Consultas:
12.Identificar los estudiantes que comparten vivienda, según el domicilio
registrado. Deberá entregar: pares de números de legajos
SELECT A1.LEGAJO, A2.LEGAJO
FROM ALUMNOS AS A1, ALUMNOS AS A2
WHERE A1.DOMICILIO = A2.DOMICILIO AND A1.LEGAJO<>A2.LEGAJO;
13.Identificar los docentes que tienen más de 50 años
SELECT DNI,NOMBRE,ROUND((DATE()-FEC_NAC)/365,0) AS EDAD
FROM DOCENTES
WHERE (DATE()-FEC_NAC)/365>50;
14.Identificar los alumnos que han aprobado Base de Datos. El listado debe
contener el nombre del alumno, legajo, teléfono, nota alcanzada y fecha
de examen. Ordenar el informe en orden decreciente de fecha de
examen.
SELECT ALUMNOS.NOMBRE,ALUMNOS.LEGAJO, TELEFONO, NOTA,
FEC_EXA
FROM EXAMEN, MATERIA, ALUMNOS
WHERE EXAMEN.COD_MAT = MATERIA.COD_MAT
AND EXAMEN.LEGAJO = ALUMNOS.LEGAJO
182
AND NOTA>=4
AND MATERIA.NOMBRE = 'Base de Datos'
Consultas en SQL
Consultas:
15.Informar la cantidad de materias aprobada por los alumnos en un
determinado año, por Ej 2009.
SELECT ALUMNOS.LEGAJO, ALUMNOS.NOMBRE, YEAR(FEC_EXA) AS
AÑO, COUNT(*)AS CANTIDAD
FROM ALUMNOS JOIN EXAMEN ON EXAMEN.LEGAJO =
ALUMNOS.LEGAJO
WHERE NOTA>=4 AND YEAR(FEC_EXA)='2009'
GROUP BY ALUMNOS.LEGAJO, ALUMNOS.NOMBRE, YEAR(FEC_EXA)
ORDER BY AÑO,ALUMNOS.NOMBRE;

16.Modificar la consulta anterior para sólo informar los que hayan aprobado
mas de 2 materias en ese año
SELECT ALUMNOS.LEGAJO, ALUMNOS.NOMBRE, YEAR(FEC_EXA) AS
AÑO, COUNT(*)AS CANTIDAD
FROM ALUMNOS JOIN EXAMEN ON EXAMEN.LEGAJO =
ALUMNOS.LEGAJO
WHERE NOTA>=4 AND TO_CHAR(FEC_EXA,'YYYY')='2009'
GROUP BY ALUMNOS.LEGAJO, ALUMNOS.NOMBRE, YEAR(FEC_EXA)
HAVING COUNT(*)>=2 183
ORDER BY AÑO,ALUMNOS.NOMBRE;
Consultas en SQL
Consultas:
17.Modificar el domicilio de la docente Minetti, su nuevo domicilio es Calle
101 Nro 955
UPDATE DOCENTES
SET DOMICILIO = 'Calle 101 Nro 955'
WHERE NOMBRE LIKE '%MINETTI%‘;
18.Incorporar las cursadas de los estudiantes del presente año. Al menos 1
nuevo registro.
INSERT INTO CURSA VALUES (1903, 34, 2019, ‘2019-02-15’);
Ingresar otros 4 registros con valores válidos e inválidos para
chequear consistencia.

19.Eliminar el estudiante Weizz. Pudo?? Por que??


DELETE FROM ALUMNOS
WHERE NOMBRE LIKE '%Weizz%';

184
Consultas en SQL
Consultas:
20.Eliminar la estudiante Karina Perez. Pudo?? Por que??
DELETE FROM ALUMNOS
WHERE NOMBRE LIKE '%Perez, Karina%';
Se viola la regla de integridad referencia. Cómo lo puedo
solucionar?

Solución:
DELETE FROM CURSA
WHERE LEGAJO IN (
SELECT LEGAJO FROM ALUMNOS
WHERE NOMBRE LIKE '%Perez, Karina%');
Y luego si lo admite a:
DELETE FROM ALUMNOS
WHERE NOMBRE LIKE '%Perez, Karina%';

185
Introducción a SQL
Para realizar cualquier Consulta sobre los datos que contienen las Tablas
usaremos alguna de las siguientes sintaxis:

Para lo cual sólo necesitamos conocer:


1. Qué datos queremos obtener?
2. Dónde están los datos?
3. Qué condición deben cumplir los datos?
4. Cómo debe estar ordenado el resultado?
186
Introducción a SQL
CREATE TABLE ALUMNOS(
LEGAJO INTEGER NOT NULL, CREATE TABLE CURSA(
NOMBRE CHAR(30) NOT NULL, LEGAJO INTEGER NOT NULL,
DNI INTEGER NOT NULL , COD_MAT INTEGER NOT NULL,
DOMICILIO CHAR(30), AÑO_LECTIVO INTEGER NOT NULL,
FEC_NAC DATE, FEC_INSC DATE,
PRIMARY KEY (LEGAJO)); PRIMARY KEY (LEGAJO, COD_MAT, AÑO_LECTIVO),
FOREIGN KEY (LEGAJO) REFERENCES
CREATE TABLE DOCENTE( ALUMNOS(LEGAJO),
DNI INTEGER NOT NULL , FOREIGN KEY (COD_MAT) REFERENCES
NOMBRE CHAR(30) NOT NULL, MATERIA(COD_MAT) );
DOMICILIO CHAR(30),
P_MAIL CHAR(30),
FEC_NAC DATE,
TELEFONO CHAR(15), CREATE TABLE EXAMEN(
PRIMARY KEY (DNI)); LEGAJO INTEGER NOT NULL,
COD_MAT INTEGER NOT NULL,
CREATE TABLE MATERIA( FEC_EXA DATE NOT NULL,
COD_MAT INTEGER NOT NULL, NOTA INTEGER,
NOMBRE CHAR(30) NOT NULL, ACTA INTEGER,
CARRERA CHAR(20) , PRIMARY KEY (LEGAJO, COD_MAT, FEC_EXA),
AÑO INTEGER, FOREIGN KEY (LEGAJO) REFERENCES
CUATRIMESTRE INTEGER, ALUMNOS(LEGAJO),
DNI_PROFESOR INTEGER, FOREIGN KEY (COD_MAT) REFERENCES
PRIMARY KEY (COD_MAT) MATERIA(COD_MAT) ); 187
FOREIGN KEY (DNI_PROFESOR) REFERENCES
DOCENTE(DNI));
ALUMNOS
LEGAJO NOMBRE DNI DOMICILIO FEC_NAC TELEFONO
1428 Lopez, Jorge Luis 33455666 8 nro 1808 23/4/1998 CURSA
1903 Perez, Karina 43333222 22 nro 345 10/5/2001 LEGAJO COD_MAT AÑO_LECTIVO FEC_INSC
2102 Arce, Cesar 34444555 22 nro 345 10/4/1998 1428 2 2006 10/3/2006
2103 Moon, Lucila 34555444 San Martin nro19/12/1999
1245 2102 2 2006 12/3/2006
3908 Rodriguez, Jorge 11462300 16 esquina 43 24/7/1972 2103 22 2006 10/8/2006
3923 Sombra, Fernando 25851211 9 de julio 961 7/7/1973 422676 1903 34 2007 2/2/2007
4103 Salvador, Maria Alejandra 11137562 Paladino 439 13/3/2000 432454 1428 2 2007 12/3/2007
4105 Vidoret, Daniel 26507702 6 bis 505 13/5/2000 4241604 1903 34 2008 3/2/2008
4106 Ruiz, Gisela 28358351 Alberdi 1392 1428 22 2008 10/3/2008
4108 Weizz, Nelson 13956555 Maipu 72 4/5/1972 421604 1903 34 2009 1/3/2010
1903 34 2011 1/3/2011
DOCENTE
DNI NOMBRE DOMICILIO P_MAIL FEC_NAC TELEFONO
16772834 ALFONSO HUGO 10 NRO 346 alfonsoh@ing.unlpam.edu.ar 4/9/1964 322904
22222222 DAVIS EDUARDO 107 NRO 444 davise@ing.unlpam.edu.ar
12333444 MINETTI GABRIELA 306 NRO 1346 minettig@ing.unlpam.edu.ar 30/12/1954 422780
11111111 RAMOS RAQUEL 35 NRO 344 rramos@ing.unlpam.edu.ar
22333444 SALTO CAROLINA 112 NRO 555 saltoc@ing.unlpam.edu.ar 30/12/1974 422780

EXAMEN
MATERIA LEGAJO COD_MAT FEC_EXA NOTA ACTA
COD_MAT NOMBRE CARRERA AÑO CUATRIMESTRE DNI_PROFESOR 1428 2 12/12/2006 2 100
4 Analisis Matemático I Ing. Electromecanica 1 1 2102 2 12/12/2006 6 100
33 Computación II Ing. Electromecanica 2 2 22333444 2103 22 4/2/2007 2 120
44 Electrónica I Ing. electromecanica 4 1 2102 22 4/2/2007 10 120
55 Mecanica de los fluidos Ing. electromecanica 4 1 4103 22 4/2/2007 10 120
2 Algebra Ing. Sistemas 1 1 22222222 4105 34 20/12/2008 8 141
34 Base de Datos Ing. Sistemas 3 1 16772834 1428 34 20/12/2008 4 141
56 Base de Datos Dist Ing. Sistemas 5 2 16772834 3908 22 3/3/2009 8 162
22 Ingles I Ing. Sistemas 2 2 11111111 2103 22 3/3/2009 8 162
5 Matemática Discreta Ing. Sistemas 1 2 22222222 1428 22 3/3/2009 1884 162
57 Sistemas Operativos Ing. Sistemas 3 1 22333444 4105 57 10/3/2009 110 170
Consultas en SQL
Consultas:
1. Mostrar todos los datos de los estudiantes
2. Mostrar el nombre y número de documento de todos los estudiantes
3. Ídem a la 2 pero ordenar el resultado alfabéticamente por nombre
del estudiante
4. Buscar los estudiantes que se llaman Fernando
5. Identificar las materias de Base de Datos. Mostrar Nombre de
materia, código y año
6. Obtener la información de todas las materias de primer año
7. Obtener el nombre de las carreras que tengan materias registradas.
8. Obtener un historial académico de Jorge López. Debe contener
nombre de materia, fecha de examen y nota. Ordenar los exámenes
cronológicamente.
9. Identificar las materias que dicta la profesora Raquel Ramos. Deberá
indicar materia, carrera a la que pertenece y cuatrimestre en que
dicta tal materia.
10.Identificar las materías que aún no tienen profesor asignado
11.Identificar lo docentes que no tienen materias asignadas. Mostrar
toda la información de los mismos ordenada alfabéticamente por
nombre 189

12.Identificar los estudiantes que comparten vivienda, según el


SQL – Join o Reunión de Tablas
Ejemplo. Identificar las materias que han cursado estudiantes en el año 2006. Informar
datos de la materia, del estudiante y fecha de inscripción. Ordenar el informe por nombre
de materia y nombre del estudiante.

190
SQL - Subquery
También podemos anidar Consulta, lo que recibe el nombre de Subconsultas.
SELECT NOMBRE,CARRERA,CUATRIMESTRE
FROM MATERIA
WHERE DNI_PROFESOR IN ( SELECT DNI
FROM DOCENTES
WHERE NOMBRE LIKE ‘*RAMOS RAQUEL*');
O

SELECT NOMBRE,CARRERA,CUATRIMESTRE
FROM MATERIA
WHERE EXISTS (SELECT *
FROM DOCENTES
WHERE NOMBRE LIKE ‘*RAMOS RAQUEL*'
191
AND MATERIA.DNI_PROFESOR = DNI);
SQL – Funciones Agregadas
También podemos pretender que nuestras consultas realicen cálculos sobre los
datos o subgrupos de ellos.
Ejemplos:
Informar la cantidad de docentes:
SELECT COUNT(*) AS CANTIDAD
FROM DOCENTES;
Informar la cantidad de materias por cada una de las carreras
SELECT CARRERA, COUNT(*) AS CANTIDAD
FROM MATERIA
GROUP BY CARRERA;

Las funciones a aplicar son: COUNT, MIN, MAX, SUM, AVG 192
Consultas en SQL
Consultas avanzadas
a) Identificar los docentes que tienen más de 50 años
b) Identificar los docentes que tienen entre 40 y 60 año
c) Identificar los alumnos que han aprobado Base de Datos. El
listado debe contener el nombre del alumno, legajo, teléfono,
nota alcanzada y fecha de examen. Ordenar el informe en orden
decreciente de fecha de examen.
d) Ídem a la c) pero con subquery
e) Informar de todos los alumnos: legajo, nombre y promedio con
aplazos. Ordenar el resultado alfabéticamente por nombre del
estudiante
f) Modificar la consulta e) para que sea promedio sin aplazos
g) Modificar la consulta f) para resolverlo sin el operador JOIN
h) Obtener la nómina completa de los estudiantes con las materias
rendidas. Mostrar los datos del estudiante, código de materia,
nota y fecha de examen. Ordenar alfabéticamente por nombre de
estudiante. 193
i) Informar la cantidad de materias aprobada por los alumnos en un
Consultas en SQL
Consultas avanzadas
k) Identificar todos los exámenes tomados en 2007
l) Identificar todos los exámenes que hayan alcanzado la máxima
nota (10)
m)Identificar todos los exámenes tomados en 2007 o que hayan
alcanzado la máxima nota (10)
n) Identificar todos los exámenes tomados en 2007 y que hayan
alcanzado la máxima nota (10)
o) Identificar todos los exámenes tomados en 2007 y que no hayan
alcanzado la máxima nota (10)
p) Modificar la tabla de Materia para unificar el nombre de las
carreras.
q) Modificar el domicilio de la docente Minetti, su nuevo domicilio es
Calle 101 Nro 955
r) Incorporar las cursadas de los estudiantes del presente año. Al
menos 5 nuevos registros.
s) Eliminar el estudiante Weizz Pudo?? Por que?? 194
t) Elimnar la estudiante Karina Perez. Pudo?? Por que??
Taller de Gestión de
Datos
Introducción a SQL
Lectura Recomendada:
1. Mannino. Capítulos 3 y 4
2. ACCESS 2013 - Guía Practica para el Usuario
3. Fleitas, Paula; Access 2013

195
Taller de Gestión de
Datos

SQL
Structured Query Language
- Consultas Resueltas-

196
Consultas en SQL
Consultas:
1. Mostrar todos los datos de los estudiantes
SELECT LEGAJO, NOMBRE, DNI, DOMICILIO, FEC_NAC, TELEFONO
FROM ALUMNOS;

SELECT *
FROM ALUMNOS;

2. Mostrar el nombre y número de documento de todos los estudiantes


SELECT NOMBRE, DNI
FROM ALUMNOS;

3. Ídem a la 2 pero ordenar el resultado alfabéticamente por nombre


del estudiante
SELECT NOMBRE, DNI
FROM ALUMNOS
ORDER BY NOMBRE ASC;

4. Buscar los estudiantes que se llaman Fernando


SELECT NOMBRE, DNI 197

FROM ALUMNOS
Consultas en SQL
Consultas:
5. Identificar las materias de Base de Datos. Mostrar Nombre de
materia, código y año
SELECT NOMBRE, COD_MAT, AÑO
FROM MATERIA
WHERE NOMBRE LIKE '%Base de Datos%';
SELECT NOMBRE, COD_MAT, AÑO
FROM MATERIA
WHERE UPPER(NOMBRE) LIKE '%BASE%' AND
UPPER(NOMBRE) LIKE '%DATO%';
6. Obtener la información de todas las materias de primer año
SELECT NOMBRE, COD_MAT, AÑO,CUATRIMESTRE, CARRERA
FROM MATERIA
WHERE AÑO=1;
7. Obtener el nombre de las carreras que tengan materias registradas.
SELECT CARRERA
FROM MATERIA;
Pero evitando las duplicaciones que no aportan información:
SELECT DISTINCT CARRERA
FROM MATERIA; 198

O mejor aún:…
Consultas en SQL
Consultas:
8. Obtener un historial académico de Jorge López. Debe contener
nombre de materia, fecha de examen y nota. Ordenar los exámenes
cronológicamente.

SELECT MATERIA.NOMBRE,FEC_EXA,NOTA
FROM EXAMEN, MATERIA, ALUMNOS
WHERE EXAMEN.COD_MAT = MATERIA.COD_MAT
AND EXAMEN.LEGAJO = ALUMNOS.LEGAJO
AND ALUMNOS.NOMBRE LIKE '%Lopez, Jorge%'
ORDER BY FEC_EXA;

O bien:

SELECT MATERIA.NOMBRE,FEC_EXA,NOTA
FROM (EXAMEN JOIN MATERIA
ON EXAMEN.COD_MAT = MATERIA.COD_MAT )
JOIN ALUMNOS
ON EXAMEN.LEGAJO = ALUMNOS.LEGAJO
WHERE ALUMNOS.NOMBRE LIKE '%Lopez, Jorge%' 199

ORDER BY FEC_EXA;
Consultas en SQL
Consultas:
9. Identificar las materias que dicta la profesora Raquel Ramos. Deberá
indicar materia, carrera a la que pertenece y cuatrimestre en que dicta
tal materia.
SELECT MATERIA.NOMBRE,CARRERA,CUATRIMESTRE
FROM MATERIA JOIN DOCENTES
ON MATERIA.DNI_PROFESOR = DOCENTES.DNI
WHERE DOCENTES.NOMBRE LIKE '%RAMOS RAQUEL%';

O bien usando Subquery:

SELECT NOMBRE,CARRERA,CUATRIMESTRE
FROM MATERIA
WHERE DNI_PROFESOR IN ( SELECT DNI
FROM DOCENTES
WHERE NOMBRE LIKE '%RAMOS
RAQUEL%');

10.Identificar las materias que aún no tienen profesor asignado


200
SELECT NOMBRE,CARRERA,CUATRIMESTRE
FROM MATERIA
Consultas en SQL
Consultas:
11.Identificar lo docentes que no tienen materias asignadas. Mostrar toda la
información de los mismos ordenada alfabéticamente por nombre
SELECT *
FROM DOCENTES
WHERE NOT EXISTS (SELECT *
FROM MATERIA
WHERE DNI_PROFESOR=DOCENTES.DNI)
ORDER BY NOMBRE;
o
SELECT *
FROM DOCENTES
WHERE DNI NOT IN (11111111, 22333444, 16772834, 22222222)
ORDER BY NOMBRE;
o
SELECT *
FROM DOCENTES
WHERE DNI NOT IN (SELECT DISTINCT DNI_PROFESOR
FROM MATERIA);
201
Consultas en SQL
Consultas:
12.Identificar los estudiantes que comparten vivienda, según el domicilio
registrado. Deberá entregar: pares de números de legajos
SELECT A1.LEGAJO, A2.LEGAJO
FROM ALUMNOS A1, ALUMNOS A2
WHERE A1.DOMICILIO = A2.DOMICILIO AND A1.LEGAJO<>A2.LEGAJO;
13.Modifique la consulta anterior para mostrar además el nombre de cada
uno y el domicilio
SELECT A1.LEGAJO, A1.NOMBRE, A2.LEGAJO, A2.NOMBRE,
A1.DOMICILIO
FROM ALUMNOS A1, ALUMNOS A2
WHERE A1.DOMICILIO = A2.DOMICILIO AND A1.LEGAJO<>A2.LEGAJO;
14.Modifique la consulta anterior para que no aparezcan los pares (A.A) y
tampoco (A,B) si ya apareció (B,A) pues no aporta información
SELECT A1.LEGAJO, A1.NOMBRE, A2.LEGAJO, A2.NOMBRE,
A1.DOMICILIO
FROM ALUMNOS A1, ALUMNOS A2
WHERE A1.DOMICILIO = A2.DOMICILIO AND A1.LEGAJO<A2.LEGAJO;
o
202
SELECT A1.LEGAJO, A1.NOMBRE, A2.LEGAJO, A2.NOMBRE,
A1.DOMICILIO
Consultas en SQL
Consultas avanzadas
a) Identificar los docentes que tienen más de 50 años
SELECT DNI,NOMBRE,ROUND((CURRENT_DATE-FEC_NAC)/365,0)
AS EDAD
FROM DOCENTES
WHERE (CURRENT_DATE-FEC_NAC)/365>50;
b) Identificar los docentes que tienen entre 40 y 60 años
SELECT DNI,NOMBRE,ROUND((CURRENT_DATE-FEC_NAC)/365,0)
AS EDAD
FROM DOCENTES
WHERE (CURRENT_DATE-FEC_NAC)/365 BETWEEN 40 AND 60;
O
SELECT DNI,NOMBRE,ROUND((CURRENT_DATE-FEC_NAC)/365,0)
AS EDAD
FROM DOCENTES
WHERE (CURRENT_DATE-FEC_NAC)/365 >= 40 AND
(CURRENT_DATE-FEC_NAC)/365 <=60;

203
Consultas en SQL
c) Identificar los alumnos que han aprobado Base de Datos. El listado debe contener el
nombre del alumno, legajo, teléfono, nota alcanzada y fecha de examen. Ordenar el
informe en orden decreciente de fecha de examen.
SELECT ALUMNOS.NOMBRE,ALUMNOS.LEGAJO, TELEFONO, NOTA,
FEC_EXA
FROM EXAMEN, MATERIA, ALUMNOS
WHERE EXAMEN.COD_MAT = MATERIA.COD_MAT
AND EXAMEN.LEGAJO = ALUMNOS.LEGAJO
AND NOTA>=4
AND MATERIA.NOMBRE = 'Base de Datos'
ORDER BY FEC_EXA DESC;
d) Ídem a la c) pero con subquery
SELECT ALUMNOS.NOMBRE,ALUMNOS.LEGAJO, TELEFONO, NOTA,
FEC_EXA
FROM EXAMEN, ALUMNOS
WHERE EXAMEN.LEGAJO = ALUMNOS.LEGAJO
AND NOTA>=4
AND COD_MAT IN (SELECT COD_MAT FROM MATERIA WHERE NOMBRE =
'Base de Datos')
ORDER BY FEC_EXA DESC; 204
Consultas en SQL
e) Informar de todos los alumnos: legajo, nombre y promedio con aplazos. Ordenar el
resultado alfabéticamente por nombre del estudiante
SELECT ALUMNOS.LEGAJO, ALUMNOS.NOMBRE,ROUND(AVG(NOTA),2)
AS PROMEDIO
FROM EXAMEN, ALUMNOS
WHERE EXAMEN.LEGAJO = ALUMNOS.LEGAJO
GROUP BY ALUMNOS.LEGAJO, ALUMNOS.NOMBRE
ORDER BY ALUMNOS.NOMBRE;
f) Modificar la consulta e) para que sea promedio sin aplazos
SELECT ALUMNOS.LEGAJO, ALUMNOS.NOMBRE,ROUND(AVG(NOTA),2)
AS PROMEDIO
FROM EXAMEN, ALUMNOS
WHERE EXAMEN.LEGAJO = ALUMNOS.LEGAJO AND NOTA>=4
GROUP BY ALUMNOS.LEGAJO, ALUMNOS.NOMBRE
ORDER BY ALUMNOS.NOMBRE;

205
Consultas en SQL
g) Modificar la consulta f) para resolverlo con el operador JOIN
SELECT ALUMNOS.LEGAJO, ALUMNOS.NOMBRE,ROUND(AVG(NOTA),2)
AS PROMEDIO
FROM EXAMEN JOIN ALUMNOS ON EXAMEN.LEGAJO =
ALUMNOS.LEGAJO
WHERE NOTA>=4
GROUP BY ALUMNOS.LEGAJO, ALUMNOS.NOMBRE
ORDER BY ALUMNOS.NOMBRE;

h) Obtener la nómina completa de los estudiantes con las materias rendidas.. Mostrar los
datos del estudiante, código de materia, nota y fecha de examen. Ordenar
alfabéticamente por nombre de estudiante.
SELECT ALUMNOS.*,COD_MAT, NOTA, FEC_EXA
FROM ALUMNOS JOIN EXAMEN ON EXAMEN.LEGAJO =
ALUMNOS.LEGAJO
ORDER BY ALUMNOS.NOMBRE;
Pero no aparecen todos los alumnos … sólo los que han rendido. Para modificar:
SELECT ALUMNOS.*,COD_MAT, NOTA, FEC_EXA
FROM ALUMNOS LEFT OUTER JOIN EXAMEN ON EXAMEN.LEGAJO =
ALUMNOS.LEGAJO 206
ORDER BY ALUMNOS.NOMBRE;
Consultas en SQL
i) Informar la cantidad de materias aprobada por los alumnos en un determinado año.
SELECT ALUMNOS.LEGAJO, ALUMNOS.NOMBRE, YEAR(FEC_EXA) AS AÑO,
COUNT(*) AS CANTIDAD
FROM ALUMNOS JOIN EXAMEN ON EXAMEN.LEGAJO =
ALUMNOS.LEGAJO
WHERE NOTA>=4
GROUP BY ALUMNOS.LEGAJO, ALUMNOS.NOMBRE, YEAR(FEC_EXA)
ORDER BY AÑO,ALUMNOS.NOMBRE;

SELECT ALUMNOS.LEGAJO, ALUMNOS.NOMBRE, YEAR(FEC_EXA) AS AÑO,


COUNT(*)AS CANTIDAD
FROM ALUMNOS JOIN EXAMEN ON EXAMEN.LEGAJO =
ALUMNOS.LEGAJO
WHERE NOTA>=4 AND YEAR(FEC_EXA)='2009'
GROUP BY ALUMNOS.LEGAJO, ALUMNOS.NOMBRE, YEAR(FEC_EXA)
ORDER BY AÑO,ALUMNOS.NOMBRE;

207
Consultas en SQL
j) Modificar la consulta anterior para sólo informar los que hayan aprobado mas de 2 materias en
ese año
SELECT ALUMNOS.LEGAJO, ALUMNOS.NOMBRE, YEAR(FEC_EXA) AS AÑO,
COUNT(*)AS CANTIDAD
FROM ALUMNOS JOIN EXAMEN ON EXAMEN.LEGAJO =
ALUMNOS.LEGAJO
WHERE NOTA>=4 AND TO_CHAR(FEC_EXA,'YYYY')='2009'
GROUP BY ALUMNOS.LEGAJO, ALUMNOS.NOMBRE, YEAR(FEC_EXA)
HAVING COUNT(*)>=2
ORDER BY AÑO,ALUMNOS.NOMBRE;

208
Consultas en SQL
k) Identificar todos los exámenes tomados en 2007
SELECT * FROM EXAMEN WHERE YEAR(FEC_EXA)='2007'
l) Identificar todos los exámenes que hayan alcanzado la máxima nota (10)
SELECT * FROM EXAMEN WHERE NOTA=10;
m) Identificar todos los exámenes tomados en 2007 o que hayan alcanzado la máxima nota (10)
SELECT * FROM EXAMEN WHERE YEAR(FEC_EXA)='2007'
UNION
SELECT * FROM EXAMEN WHERE NOTA=10;
n) Identificar todos los exámenes tomados en 2007 y que hayan alcanzado la máxima nota (10)
SELECT * FROM EXAMEN WHERE YEAR(FEC_EXA)='2007'
INTERSECT
SELECT * FROM EXAMEN WHERE NOTA=10;
o) Identificar todos los exámenes tomados en 2007 y que no hayan alcanzado la máxima nota
(10)
SELECT * FROM EXAMEN WHERE YEAR(FEC_EXA)='2007'
MINUS
SELECT * FROM EXAMEN WHERE NOTA=10;

209
Consultas en SQL
p) Modificar la tabla de Materia para unificar el nombre de las carreras.
UPDATE MATERIA
SET CARRERA = 'Ing. Electromecanica'
WHERE CARRERA = 'Ing. electromecanica';

q) Modificar el domicilio de la docente Minetti, su nuevo domicilio es Calle 101 Nro 955
UPDATE DOCENTES
SET DOMICILIO = 'Calle 101 Nro 955'
WHERE NOMBRE LIKE '%MINETTI%';

r) Incorporar las cursadas de los estudiantes del presente año. Al menos 1 nuevo registro.
INSERT INTO CURSA VALUES (1903, 34, 2019, ‘2019-02-15’);
Ingresar otros 4 registros con valores válidos e inválidos para chequear consistencia.
s) Eliminar el estudiante Weizz. Pudo?? Por que??
DELETE FROM ALUMNOS
WHERE NOMBRE LIKE '%Weizz%';

210
Consultas en SQL
t) Eliminar la estudiante Karina Perez. Pudo?? Por que??
DELETE FROM ALUMNOS
WHERE NOMBRE LIKE '%Perez, Karina%';
Se viola la regla de integridad referencia. Cómo lo puedo solucionar?

Solución:
DELETE FROM CURSA
WHERE LEGAJO IN (
SELECT LEGAJO FROM ALUMNOS
WHERE NOMBRE LIKE '%Perez, Karina%');
Y luego si lo admite a:
DELETE FROM ALUMNOS
WHERE NOMBRE LIKE '%Perez, Karina%';

211
Consultas en SQL
u) Identificar los alumnos que han aprobado todas las materias de 3er año de la Carrera ¨Ing.
Sistemas¨. El informe debe mostrar Nombre y Legajo.

SELECT LEGAJO, NOMBRE


FROM ALUMNOS
WHERE NOT EXISTS ( SELECT COD_MAT
FROM MATERIA
WHERE AÑO=3 AND CARRERA ='Ing. Sistemas'
MINUS
SELECT COD_MAT
FROM EXAMEN
WHERE NOTA>=4 AND
EXAMEN.LEGAJO = ALUMNOS.LEGAJO);

212
Consultas en SQL
u) Identificar los alumos que han aprobado todas las materias de 3er año de la Carrera ¨Ing.
Sistemas¨. El informe debe mostrar Nombre y Legajo.

O TAMBIEN…

SELECT LEGAJO, NOMBRE


FROM ALUMNOS
WHERE NOT EXISTS ( SELECT *
FROM MATERIA
WHERE AÑO=3 AND CARRERA ='Ing. Sistemas' AND
NOT EXISTS ( SELECT *
FROM EXAMEN
WHERE NOTA>=4 AND
EXAMEN.COD_MAT= MATERIA.COD_MAT AND
EXAMEN.LEGAJO = ALUMNOS.LEGAJO));

213
Introducción a SQL
 SQL – Structured Query Language – Lenguaje de consulta estructurado
 SQL es el lenguaje estándar para trabajar con bases de datos relacionales y es
soportado por casi la totalidad de los productos existentes en el mercado.
 SQL fue desarrolado por IBM Research a partir de los conceptos definidos
por Codd y fue presentado como SEQUEL (Structures English QUEry
Language) en mayo de 1974 por Chamberlin y Boyce.
 SQL fue implementado por primera vez en el prototipo de IBM: System R
 SQL desde 1992 tiene su nombre oficial: Estándar Internacional del Lenguaje
de Base de Datos SQL
 SQL fue concebido como “Sublenguaje de Datos” y combinaba dos lenguajes
subordinados: DDL (Data Definition Language) y DML (Data Manipulation
Language)
 SQL en 1996 se le incorporó las características de PSM (Módulos
Almacenados Persistentes), llegando a ser un lenguaje completo. 214
Introducción a SQL
Para definir las Tablas de Datos que constituirán la Base de Datos usaremos
algunas de las siguientes sintaxis:

215
Introducción a SQL
Ejemplos:

CREATE TABLE ALUMNOS( CREATE TABLE MATERIA(


LEGAJO INTEGER NOT NULL, COD_MAT INTEGER NOT NULL,
NOMBRE CHAR(30) NOT NULL, NOMBRE CHAR(30) NOT NULL,
DNI INTEGER NOT NULL , CARRERA CHAR(20) ,
DOMICILIO CHAR(30), AÑO INTEGER,
FEC_NAC DATE, CUATRIMESTRE INTEGER,
PRIMARY KEY (LEGAJO)); DNI_PROFESOR INTEGER,
PRIMARY KEY (COD_MAT));

CREATE TABLE CURSA


(LEGAJO INTEGER NOT NULL,
COD_MAT INTEGER NOT NULL,
AÑO_LECTIVO INTEGER NOT NULL,
FEC_INSC DATE,
PRIMARY KEY (LEGAJO, COD_MAT, AÑO_LECTIVO),
FOREIGN KEY (LEGAJO) REFERENCES ALUMNOS(LEGAJO),
FOREIGN KEY (COD_MAT) REFERENCES MATERIA(COD_MAT) );
216
Introducción a SQL
Para modificar la definición de las Tablas de Datos usaremos alguna de las
siguientes sintaxis:

217
Introducción a SQL
Ejemplos:
ALTER TABLE ALUMNOS
ADD (E_MAIL CHAR(20),
TELEFONO CHAR(15));

ALTER TABLE ALUMNOS


MODIFY E_MAIL CHAR(25) ;

ALTER TABLE ALUMNOS


RENAME COLUMN E_MAIL TO MAIL;

ALTER TABLE ALUMNOS


218
DROP COLUMN MAIL;
Introducción a SQL
Para eliminar las Tablas de Datos usaremos la siguiente sintaxis:

Ejemplo:
DROP TABLE ALUMNOS PURGE;

219
Introducción a SQL
También permite definir las tablas virtuales, Vistas, del Nivel Externo de la
arquitectura. Para ello usaremos la siguiente sintaxis:

220
Introducción a SQL
Ejemplos:
CREATE VIEW INSCRIPTOS_CURSADAS_2006
(COD_MAT, NOMBRE_MATERIA,CARRERA, LEGAJO,
NOMBRE_ALUMNO,INSCRIPTO )
AS (SELECT MATERIA.COD_MAT, MATERIA.NOMBRE,CARRERA,
ALUMNOS.LEGAJO, ALUMNOS.NOMBRE, FEC_INSC
FROM MATERIA, CURSA, ALUMNOS
WHERE MATERIA.COD_MAT = CURSA.COD_MAT
AND CURSA.LEGAJO = ALUMNOS.LEGAJO
AND AÑO_LECTIVO = 2006);

DROP VIEW INSCRIPTOS_CURSADAS_2006; 221


Introducción a SQL
Para Insertar datos en las Tablas usaremos alguna de las siguientes sintaxis:

Ejemplo
INSERT INTO CURSA (LEGAJO, COD_MAT, AÑO_LECTIVO, FEC_INSC)
VALUES (1903, 34, 2007, 02/02/2007 );
o
INSERT INTO CURSA VALUES (1903, 34, 2007, 02/02/2007 ); 222
Introducción a SQL
Para Actualizar datos en las Tablas usaremos alguna de las siguientes sintaxis:

Ejemplo
UPDATE CURSA
SET AÑO_LECTIVO = 2010
WHERE LEGAJO = 1903 AND COD_MAT = 34 AND FEC_INSC = 01/03/2010 ;

223
Introducción a SQL
Para Actualizar datos en las Tablas usaremos alguna de las siguientes sintaxis:

Ejemplo
UPDATE MATERIA
SET CARRERA = 'Ing. Sistemas'
WHERE CARRERA = 'Analista Programador';

224
Introducción a SQL
Para Eliminar datos en las Tablas usaremos alguna de las siguientes sintaxis:

Ejemplo
DELETE FROM CURSA
WHERE LEGAJO = 1903 AND COD_MAT = 34 AND
FEC_INSC = 01/03/2010 ;

DELETE FROM CURSA


WHERE AÑO_LECTIVO = 2006;

225
Introducción a SQL
Para realizar cualquier Consulta sobre los datos que contienen las Tablas
usaremos alguna de las siguientes sintaxis:

Para lo cual sólo necesitamos conocer:


1. Qué datos queremos obtener?
2. Dónde están los datos?
3. Qué condición deben cumplir los datos?
4. Cómo debe estar ordenado el resultado?
226
Introducción a SQL
Ejemplo

227

También podría gustarte