Programación y Bases de Datos
Primera Actividad
Bloque temático: BT3 Titulación: Técnico Superior en Desarrollo de Aplicaciones Web Módulo: Bases de datos (código: 0484)
Empezamos!
Cristina Outeiriño Cid
Contenidos
Almacenamiento de la información
01
Realización de consultas SQL
02
Consultas avanzadas con SQL
03
Ponte a prueba!
04
01
Almacenamiento de la información
Almacenamiento de la información
01
Almacenar Datos
Estrategias de almacenamiento
El Esquema de una Base de Datos
Diseñar una Base de Datos
Sistemas Gestores de Bases de Datos
El lenguaje SQL
Almacenamiento de la información
01
Almacenar Datos
¿Qué es un dato? Un dato es una unidad de información que puede ser registrada y conservada para su uso posterior.
¿Qué es un almacén de datos (data warehouse)? Un almacén de datos es un sistema diseñado para almacenar información de manera organizada, lo que facilita su acceso y análisis.
¿Qué es una base de datos? Una base de datos es un tipo específico de almacén de datos que: - Contiene información estructurada.
- Está diseñada para permitir tanto el almacenamiento eficiente como la consulta de los datos.
Almacenamiento de la información
01
Almacenar Datos
Base de datos (BD) vs. Sistema Gestor de Bases de Datos (SGBD): La base de datos (BD) se refiere al repositorio donde se almacenan los datos, mientras que un sistema gestor de bases de datos (SGBD) es el software encargado de administrarla y facilitar su manipulación.
Almacenamiento de la información
01
Almacenar Datos
Arquitectura de un sistema software: Arquitectura de tres capas
Capa de presentación: Se encarga de la interacción con el usuario, proporcionando la interfaz a través de la cual este interactúa con el sistema.
Capa de lógica: Contiene la programación y las reglas de negocio que gestionan el procesamiento y el flujo de información en el sistema.
Capa de datos: Administra el almacenamiento y la recuperación de la información, incluyendo las bases de datos y los repositorios de datos utilizados.
Almacenamiento de la información
01
Almacenar Datos
Organización habitual de los datos: El modelo relacional
Los datos se organizan en tablas, que representan conjuntos de información relacionados.
Cada tabla está compuesta por: - Filas (registros): Corresponden a instancias individuales de datos.
- Columnas (campos): Representan los atributos o características de los datos almacenados.
Almacenamiento de la información
01
Almacenar Datos
Métodos de almacenamiento
Aspectos físicos (dónde): Los datos suelen almacenarse en memoria principal y, de forma más persistente, en sistemas de almacenamiento secundario, como discos duros.
Aspectos lógicos (cómo):Usualmente se guardan en estructuras específicas del SGBD (archivos internos) o, en ausencia de un SGBD, en archivos planos.
Almacenamiento de la información
01
Almacenar Datos
Principales retos en la gestión de datos:
- Organización del almacén: Diseñar una estructura adecuada para almacenar los datos.
- Gestión de operaciones: Implementar y manejar las operaciones CRUD (Crear, Leer, Actualizar, Borrar).
- Garantía de integridad: Aplicar principios como los de ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad).
- Seguridad: Proteger el acceso a la información mediante controles adecuados.
- Optimización del rendimiento: Reducir los tiempos de acceso y uso de los datos.
Almacenamiento de la información
01
Estrategias de almacenamiento
Estructuras de datos en memoria: Los datos se almacenan directamente en las estructuras del programa, permaneciendo en memoria mientras este se ejecuta.
+ info
Ficheros en almacenamiento externo: Persistente.
Archivos con organización lógica: Se añade una estructura definida a los datos almacenados en archivos.
+ info
Bases de datos gestionadas por un SGBD: Los datos se organizan dentro de una base de datos y se gestionan mediante un sistema especializado (SGBD). Esta estrategia ofrece múltiples ventajas, aunque incrementa la complejidad del sistema.
Almacenamiento de la información
01
El Esquema de una Base de Datos
Elementos Fundamentales de la Estructura de una Base de Datos
Para una tabla: - Nombre de la tabla: Identificador único para distinguirla dentro del sistema.
- Nombres de las columnas (campos): Definen las categorías de datos almacenados.
- Tipos de datos (para cada campo): Especifican el formato y naturaleza de los valores (números, texto, fechas, etc.).
- Restricciones: Limitaciones impuestas para mantener la integridad de los datos.
Conjunto de tablas y relaciones:- Al incluir múltiples tablas, se establecen relaciones entre ellas mediante claves foráneas (Foreign Keys), siguiendo los principios del modelo relacional.
Almacenamiento de la información
01
El Esquema de una Base de Datos
Existen diversas formas de estructurar un almacén de datos:
- Plano (Flat): Datos organizados en tablas sencillas sin relaciones complejas.
- Jerárquico (Hierarchical): Organización en forma de árbol, con elementos padres e hijos.
- En red (Network): Relaciones complejas y multidireccionales.
- Relacional (Relational): Basado en tablas relacionadas por claves.
- En estrella (Star): Diseño optimizado para análisis en sistemas de inteligencia de negocio.
- Copo de nieve (Snowflake): Variante más normalizada del esquema estrella
Almacenamiento de la información
01
Diseñar una base de datos
Etapas en el diseño de una base de datos:
1. Diseño Conceptual:- Se realiza de manera visual, utilizando diagramas y esquemas en papel o herramientas similares.
- El objetivo es crear un modelo comprensible incluso para personas sin conocimientos técnicos, facilitando la comunicación de ideas.
2. Diseño Lógico:- Se enfoca en organizar los datos según el modelo elegido (como el modelo relacional).
- Permite plasmar las necesidades conceptuales en una estructura clara y precisa para su implementación
Almacenamiento de la información
01
Diseñar una base de datos
Etapas en el diseño de una base de datos:
3. Diseño Físico:- Consiste en implementar el diseño lógico utilizando un lenguaje específico del sistema gestor de bases de datos (SGBD).
- Define cómo se almacenarán físicamente los datos en el sistema.
Almacenamiento de la información
01
Diseñar una base de datos
Un diseño eficaz debe:
- Minimizar la redundancia: Reducir la duplicación de datos para optimizar espacio y evitar confusiones.
- Prevenir inconsistencias: Garantizar que los datos sean coherentes en toda la base.
- Asegurar la integridad de los datos: Proteger la precisión y validez de la información almacenada.
- Facilitar el acceso rápido a los datos: Diseñar estructuras eficientes que soporten consultas ágiles.
- Controlar el acceso a los datos: Establecer restricciones claras sobre quién puede acceder y modificar cada elemento de información.
Almacenamiento de la información
01
Sistemas Gestores de Bases de Datos
Arquitectura del SGBD: Modelo ANSI/XPARC:
1. Nivel Externo: Cada usuario o aplicación interactúa con los datos mediante vistas específicas que reflejan su perspectiva de los datos almacenados.
2. Nivel Conceptual: Define la organización general de los datos, describiendo el diseño conceptual y lógico de la base.
3. Nivel Interno: Detalla el almacenamiento físico de los datos, incluyendo dónde y cómo se guardan (diseño físico).
Almacenamiento de la información
01
Sistemas Gestores de Bases de Datos
El SGBD es un software complejo que incluye diversos módulos para su funcionamiento óptimo:
- Interfaz externa: Ofrece opciones gráficas (GUI) o de consola (CLI) para la interacción con los usuarios.
- Gestor del almacenamiento físico: Maneja cómo y dónde se almacenan los datos en el hardware.
- Intérprete del modelo de datos: Procesa el lenguaje definido por el modelo utilizado
- Compilador y optimizador de consultas: Convierte las consultas en instrucciones eficaces para ejecutar.
- Motor de la base de datos: Núcleo encargado de procesar las operaciones.
- Gestor de transacciones: Asegura la ejecución fiable y coherente de transacciones.
- Gestor de usuarios y seguridad: Controla accesos y permisos según perfiles de usuario.
Almacenamiento de la información
01
El lenguaje SQL
El SQL (Structured Query Language) es el estándar principal para la gestión de bases de datos relacionales, en las que los datos se organizan en tablas.
Características principales de SQL:
- Basado en el modelo relacional: Trabaja con datos estructurados en tablas, lo que facilita la organización y la consulta.
- Lenguaje declarativo: Permite al usuario especificar qué datos necesita sin necesidad de definir cómo obtenerlos, delegando esta tarea al sistema gestor de bases de datos.
- Altamente utilizado: Es el lenguaje más extendido para la administración de bases de datos, tanto a nivel académico como en la industria.
- Simplicidad y potencia: Es fácil de aprender para principiantes, pero permite realizar operaciones avanzadas y complejas en bases de datos de gran tamaño.
- Completitud funcional: Soporta todas las operaciones fundamentales de gestión de bases de datos.
+ info
Almacenamiento de la información
01
El lenguaje SQL
SQL abarca tres áreas esenciales para la gestión de un almacén de datos:
- Definición de datos: Mediante el Lenguaje de Definición de Datos (DDL), se crean y configuran las estructuras físicas de la base de datos (tablas, índices, esquemas).
- Modificación de datos: Con el Lenguaje de Manipulación de Datos (DML), se gestionan los datos almacenados (insertar, modificar y consultar información).
- Control de acceso: A través del Lenguaje de Control de Datos (DCL), se define quién tiene acceso a la base de datos y qué permisos tienen (roles, privilegios).
02
Realización de consultas SQL
Realización de consultas SQL
02
El Lenguage SQL
Tipos de Datos y Valores Nulos
El crucigrama SQL
El comando SELECT
Filtrar y Ordenar los resultados
Funciones en SQL
Agrupaciones de Datos
02
El Lenguage SQL
Realización de consultas SQL
El SQL (Structured Query Language) es un lenguaje estándar utilizado para interactuar con bases de datos que implementan el modelo relacional, donde toda la información está organizada en tablas.
¿Qué es y qué se puede hacer con SQL?
- Gestión integral: SQL permite definir la estructura de la base de datos, manipular datos y controlar el acceso.
- Estándar con variaciones: Aunque existen estándares, cada SGBD incluye extensiones específicas.
- Interactividad: Los SGBD proporcionan interfaces o consolas para ejecutar comandos SQL directamente.
- Modelo relacional: Toda la información y resultados de consultas se organizan en tablas.
02
El Lenguage SQL
Realización de consultas SQL
Estructura básica de las declaraciones SQL Las sentencias SQL están compuestas por varios elementos fundamentales:
SELECT CURSO, NOMBRE, NOTA FROM ALUMNOS WHERE ASIGNATURA = "BD"
02
Tipos de Datos y Valores Nulos
Realización de consultas SQL
Consulta básica sin origen de datos: Genera un resultado directamente evaluando una expresión.
SELECT 1;
Devuelve un valor literal.
SELECT 10 + 14;
Realiza cálculos, operando con números de distintos tipos.
SELECT (10 < 20);
Evalúa expresiones booleanas, devolviendo 0 o 1.
SELECT "2022-10-01";
Trabaja con datos temporales como fechas y horas.
02
Tipos de Datos y Valores Nulos
Realización de consultas SQL
Operadores:
- Números: Enteros (INT) y decimales (DECIMAL(n,p)).
- Cadenas de caracteres: VARCHAR(N), delimitadas con comillas simples (').
- Fechas: DATE y TIMESTAMP, que se manejan de forma similar a texto.
Cada SGBD puede añadir o modificar tipos, por lo que es esencial consultar su documentación oficial.
02
Tipos de Datos y Valores Nulos
Realización de consultas SQL
Operadores
En SQL, los operadores son herramientas esenciales para construir expresiones que manipulan y comparan datos. Existen múltiples categorías, cada una diseñada para un propósito específico:
- Operadores aritméticos: Permiten realizar cálculos matemáticos básicos sobre valores numéricos.
+ info
- Operadores de comparación: Se utilizan para establecer relaciones entre valores y evaluar condiciones.
+ info
- Operadores lógicos: Ayudan a combinar múltiples condiciones en una sola expresión lógica.
+ info
+ info
- Otros operadores avanzados
02
Tipos de Datos y Valores Nulos
Realización de consultas SQL
El valor nulo (NULL) en SQL representa un campo sin valor asignado, es decir, un dato inexistente.
- Es importante diferenciarlo de otros valores como 0 o una cadena vacía (""), ya que NULL indica la ausencia de cualquier valor.
- Puede generar complicaciones en las consultas, ya que los valores nulos requieren un tratamiento específico.
- Para verificar si un campo contiene un valor nulo, se utiliza el operador especial IS NULL.
- En caso de trabajar con datos que puedan contener nulos, es fundamental detectarlos y considerarlos adecuadamente.
02
Tipos de Datos y Valores Nulos
Realización de consultas SQL
El valor nulo (NULL) en SQL representa un campo sin valor asignado, es decir, un dato inexistente.
- Es importante diferenciarlo de otros valores como 0 o una cadena vacía (""), ya que NULL indica la ausencia de cualquier valor.
- Puede generar complicaciones en las consultas, ya que los valores nulos requieren un tratamiento específico.
- Para verificar si un campo contiene un valor nulo, se utiliza el operador especial IS NULL.
- En caso de trabajar con datos que puedan contener nulos, es fundamental detectarlos y considerarlos adecuadamente.
02
El comando SELECT
Realización de consultas SQL
El comando SELECT se utiliza para realizar consultas en bases de datos:
- Resultado: Devuelve una tabla con 0, 1 o más columnas (campos) y sus correspondientes registros.
- Estructura: Permite especificar los campos deseados, el origen de los datos (tablas u otras fuentes) y las condiciones necesarias para filtrar los resultados.
- Origen de datos: Generalmente se define en la cláusula FROM y suele ser una tabla, aunque también puede incluir combinaciones más complejas, como resultados de otras consultas, tablas relacionadas o expresiones.
02
El comando SELECT
Realización de consultas SQL
- Alias: Se pueden asignar nombres temporales a columnas o tablas utilizando la palabra clave AS.
- Selección completa: SELECT * recupera todas las columnas de una tabla.
- Versión avanzada: SELECT DISTINCT elimina registros duplicados en los resultados, devolviendo solo valores únicos.
SELECT * FROM students;
Todos los campos de los estudiantes
SELECT name FROM students;
Nombres de los estudiantes
SELECT name AS my_students FROM students;
Nombrar temporalmente la columna "name" como "my_students"
SELECT DISTINCT name FROM students;
Nombres sin repetición
02
Filtrar y Ordenar los resultados
Realización de consultas SQL
La cláusula WHERE en SQL
- Propósito: Se utiliza en diversos comandos SQL para filtrar los datos antes de seleccionarlos o procesarlos.
- Funcionamiento: Actúa como un filtro que crea una tabla temporal, limitando los registros que cumplen las condiciones especificadas.
SELECT age FROM students WHERE name='Juan';
La edad del estudiante llamado Juan
SELECT name FROM students WHERE id=1;
El nombre del estudiente con el identificador 1
02
Filtrar y Ordenar los resultados
Realización de consultas SQL
Para construir un predicado en una cláusula WHERE, se suelen utilizar los siguientes elementos:
- Valores fijos: Constantes como números o texto.
- Nombres de campos: Identificadores de columnas en las tablas.
- Operadores: Pueden ser aritméticos o de comparación.
- Operadores lógicos: Permiten combinar múltiples expresiones.
SELECT id FROM students WHERE age>13 AND name='Juan';
Los identificadores de los estudientes llamados 'Juan' que tengan más de 13 años
02
Filtrar y Ordenar los resultados
Realización de consultas SQL
Operadores habituales en SQL:
- AND, OR, NOT: Se utilizan para encadenar predicados.
- LIKE: Permite buscar patrones dentro de cadenas de texto, utilizando caracteres especiales para representar cualquier secuencia.
- IN: Es una forma de comparar un valor con una lista de valores posibles.
- BETWEEN: Se utiliza para definir un rango de valores.
SELECT id FROM students WHERE age BETWEEN 13 AND 16 OR age IN (18, 21);
Identificadores de estudientes con edades 13, 14, 15, 16, 18 y 21
SELECT id FROM students WHERE name LIKE 'J%';
Identificadores de estudientes cuyos nombres empiezan por J
02
Filtrar y Ordenar los resultados
Realización de consultas SQL
Cláusulas SQL: ORDER BY y LIMIT
- ORDER BY: Se utiliza para ordenar los resultados de una consulta según uno o más campos. Se puede especificar si el orden es ascendente (ASC, por defecto) o descendente (DESC).
- LIMIT (o TOP en algunos SGBD): Permite limitar el número de resultados devueltos por la consulta a número específico.
SELECT id FROM students ORDER BY name DESC;
Los identificadores de los estudiantes en orden inverso alfabéticamente según sus nombres
SELECT id FROM students LIMIT 3;
Los tres primeros identificadores de estudiantes
02
Funciones en SQL
Realización de consultas SQL
Realización de consultas SQL
Funciones estándar SQL: Funciones que están definidas por el estándar SQL y son comúnmente soportadas por la mayoría de los SGBD.
- MIN() y MAX(): Estas funciones se utilizan para obtener el valor mínimo y máximo de un conjunto de datos, respectivamente.
- COUNT(), AVG(), SUM(): Son funciones de agregación para contar el número de registros, calcular el promedio de los valores y sumar los valores de una columna, respectivamente.
SELECT MIN(age) FROM students;
La edad mínima de entre los estudiantes
SELECT COUNT(*) FROM students;
El número de estudiantes
SELECT AVG(age) FROM students;
La edad media de los estudiantes
02
Funciones en SQL
Realización de consultas SQL
Realización de consultas SQL
Funciones predeterminadas: Cada Sistema de Gestión de Bases de Datos (SGBD) ofrece un conjunto de funciones predefinidas, que pueden operar sobre un conjunto de datos. Estas funciones son muy útiles para realizar cálculos o manipular datos dentro de las consultas SQL.
Funciones personalizadas: Se pueden crear funciones propias (conocidas como funciones definidas por el usuario, o UDF por sus siglas en inglés) para realizar tareas específicas que no están cubiertas por las funciones predeterminadas. Esto se hace mediante programación dentro del entorno del SGBD.
02
Agrupaciones de Datos
Realización de consultas SQL
Realización de consultas SQL
En SQL, se pueden realizar operaciones sobre datos agrupados:
- GROUP BY: Esta cláusula se utiliza para agrupar los registros de una tabla según uno o más campos. Permite aplicar funciones agregadas a cada conjunto de datos agrupado.
- HAVING: Después de agrupar los datos, se puede aplicar una condición sobre esos grupos mediante la cláusula HAVING.
SELECT age, COUNT(*) AS num_students FROM studentsGROUP BY age HAVING COUNT(*) > 1;
La cantidad de estudiantes que hay de cada edad si para dicha edad hay más de uno
Realización de consultas SQL
02
El crucigrama SQL
03
Consultas Avanzadas con SQL
Consultas Avanzadas con SQL
03
Combinación de consultas
El valor NULL
RelacionaSQL
Combinación de tablas
Uso de subconsultas
03
Consultas Avanzadas con SQL
Combinación de consultas
Para combinar los resultados de dos o más consultas se utilizan los operadores de conjunto, que permiten trabajar con las tablas resultantes de cada consulta como si fueran conjuntos matemáticos.
Requisitos para combinar consultas:- Igual número de columnas en los resultados de ambas consultas.
- Compatibilidad de tipos de datos entre las columnas correspondientes.
- UNION: Combina los resultados de dos consultas, eliminando los duplicados por defecto. Si se desea incluir duplicados, se puede usar UNION ALL.
SELECT name FROM studentsUNION ALL SELECT name FROM teachers;
SELECT name FROM studentsUNION SELECT name FROM teachers;
Los nombres de estudiantes y profesores con duplicados
Los nombres de estudiantes y profesores sin duplicados
03
Consultas Avanzadas con SQL
Combinación de consultas
- INTERSECT: Devuelve únicamente las filas que están presentes en los resultados de ambas consultas. Si se desea incluir duplicados, se puede usar INTERSECT ALL.
- EXCEPT: Devuelve las filas que están en los resultados de la primera consulta pero no en los de la segunda. Si se desea incluir duplicados, se puede usar EXCEPT ALL.
SELECT name FROM studentsEXCEPT SELECT name FROM teachers;
SELECT name FROM studentsINTERSECT SELECT name FROM teachers;
Los nombres de estudiantes que no lo son de profesores
Los nombres que son de estudiantes y de profesores
03
Consultas Avanzadas con SQL
El valor NULL
El valor NULL en SQL representa un dato desconocido o no existente, lo que lo diferencia de una cadena vacía ("") o el valor cero (0). A simple vista, no es posible identificar un NULL, pero tiene implicaciones importantes en el diseño y las consultas de bases de datos.
Características y utilidad del valor NULL:
- Indica datos faltantes o desconocidos en un campo: reflejan que no se dispone de información, en lugar de usar cadenas vacías o valores predeterminados inapropiados.
- Facilita restricciones del modelo de datos:
- Restricción NOT NULL: evita que un campo pueda tener valores NULL.
03
Consultas Avanzadas con SQL
El valor NULL
Consultar valores NULL
Para trabajar con valores NULL, SQL proporciona los operadores:
- IS NULL: verifica si un campo tiene un valor nulo.
- IS NOT NULL: verifica si un campo tiene un valor conocido.
SELECT * FROM students WHERE name IS NULL;
Todos los campos de los estudiantes con nombre desconocido
SELECT * FROM students WHERE name IS NOT NULL;
Todos los campos de los estudiantes con nombre conocido
Los valores NULL no cumplen condiciones estándar de comparación (=, <, etc.) y requieren un manejo especial.
03
Consultas Avanzadas con SQL
Combinaciones de tablas
03
Consultas Avanzadas con SQL
La cláusula JOIN en SQL permite combinar registros de múltiples tablas en una sola consulta, utilizando condiciones que relacionan sus campos.
Esta operación es fundamental para trabajar con bases de datos normalizadas, donde los datos se distribuyen entre varias tablas relacionadas.
Características de JOIN
- Combina registros de varias tablas basándose en una o más condiciones, como la relación entre una clave primaria (PK) y una clave foránea (FK).
- Permite trabajar con cualquier número de tablas, no solo dos, generando nuevas combinaciones de campos.
- Se diferencia de operadores como UNION, EXCEPT e INTERSECT, ya que estos operan sobre registros completos con los mismos campos, mientras que JOIN combina columnas de distintas tablas.
03
Consultas Avanzadas con SQL
Combinaciones de tablas
03
Consultas Avanzadas con SQL
INNER JOIN: Devuelve solo los registros donde la condición de combinación se cumple. Es el tipo más común.
SELECT students.id, students.name, teachers.id, teachers.nameFROM students INNER JOIN teachers ON students.age = teachers.age;
Los estudiantes y profesores que tienen la misma edad.
LEFT OUTER JOIN: Incluye todos los registros de la tabla izquierda, incluso si no tienen coincidencia en la tabla derecha. Los campos no coincidentes de la tabla derecha se rellenan con NULL.
SELECT S.id, S.name, S.age, T.id, T.name, T.ageFROM students AS S LEFT OUTER JOIN teachers AS T ON S.age = T.age;
Todos los estudiantes junto con el nombre del profesor que tiene la misma edad (si existe)
03
Consultas Avanzadas con SQL
Combinaciones de tablas
03
Consultas Avanzadas con SQL
RIGHT OUTER JOIN: Similar al LEFT OUTER JOIN, pero incluye todos los registros de la tabla derecha y completa con NULL los de la izquierda que no tienen coincidencia.
SELECT S.id, S.name, S.age, T.id, T.name, T.ageFROM students AS S RIGHT OUTER JOIN teachers AS T ON S.age = T.age;
Todos los profesores junto con el nombre del estudiante que tiene la misma edad (si existe)
FULL OUTER JOIN: Combina el comportamiento de los JOIN izquierdo y derecho: incluye todos los registros de ambas tablas, rellenando con NULL cuando no hay coincidencias.
SELF JOIN: Permite combinar una tabla consigo misma, útil para analizar relaciones jerárquicas o dependencias dentro de una sola tabla.
03
Consultas Avanzadas con SQL
Uso de Subconsultas
03
Consultas Avanzadas con SQL
Las subconsultas son consultas anidadas dentro de otra consulta principal. Resultan muy útiles para resolver problemas complejos y permiten reutilizar resultados intermedios en la consulta principal.
Subconsulta como Expresión de Valor: El resultado de la subconsulta es un único valor que se utiliza en la cláusula principal.
SELECT id, name, age FROM studentsWHERE age > (SELECT MIN(age) FROM teachers);
Los estudiantes que tienen una edad mayor que la edad mínima de los profesores.
03
Consultas Avanzadas con SQL
Uso de Subconsultas
03
Consultas Avanzadas con SQL
Subconsulta como Expresión de Tabla: El resultado de la subconsulta es una tabla, y se utiliza como origen de datos en la consulta principal.
SELECT name, ageFROM ( SELECT id, name, age FROM students WHERE age IN (SELECT DISTINCT age FROM teachers) ) AS MatchingStudents;
Nombres de los estudiantes y su edad si su edad está entre las edades de los profesores.
03
Consultas Avanzadas con SQL
Uso de Subconsultas
03
Consultas Avanzadas con SQL
Subconsulta como Expresión de Consulta: La subconsulta se utiliza en operaciones booleanas y devuelve TRUE/FALSE según los registros que coincidan.
- EXISTS: Comprueba si la subconsulta devuelve al menos un registro.
SELECT id, name, ageFROM studentsWHERE EXISTS ( SELECT 1 FROM teachers WHERE teachers.age = students.age );
Estudiantes cuya edad coincide con al menos un profesor.
03
Consultas Avanzadas con SQL
Uso de Subconsultas
03
Consultas Avanzadas con SQL
- IN: La subconsulta devuelve una tabla de una columna, y la consulta principal verifica si los valores coinciden con alguno de los registros devueltos.
- ANY/SOME: Similar a IN, pero se usa en combinación con operadores de comparación como <, >, =.
- ALL: Verifica si una expresión cumple para todos los valores devueltos por la subconsulta.
SELECT name, ageFROM students WHERE age IN ( SELECT age FROM teachers );
Estudiantes cuyas edades coinciden con las edades de los profesores.
SELECT name, ageFROM students WHERE age > ANY ( SELECT age FROM teachers );
Estudiantes cuya edad es mayor que la edad de algún profesor.
03
Consultas Avanzadas con SQL
Relaciona SQL
04
Ponte a prueba!
Ponte a prueba!
04
Quiz de SQL
Kahoot de SQL
04
Ponte a prueba!
Quiz de SQL
00:30
Ponte a prueba!
04
Quiz de SQL 2/10
00:30
Ponte a prueba!
04
Quiz de SQL 3/10
00:30
Ponte a prueba!
04
Quiz de SQL 4/10
00:30
Ponte a prueba!
04
Quiz de SQL 5/10
00:30
Ponte a prueba!
04
Quiz de SQL 6/10
00:30
Ponte a prueba!
04
Quiz de SQL 7/10
00:30
Ponte a prueba!
04
Quiz de SQL 8/10
00:30
Ponte a prueba!
04
Quiz de SQL 9/10
00:30
Ponte a prueba!
04
Quiz de SQL 10/10
00:30
04
Ponte a prueba!
Kahoot de SQL
Objetivo logrado!
A por el siguiente...
EJEMPLOS
- Archivos de texto: Contienen caracteres alfanuméricos organizados como texto plano.
- Archivos binarios: Almacenan números o códigos, representando datos en un formato compacto y eficiente.
- JSON: Un formato de texto estructurado con reglas sintácticas específicas:
- Cada dato se asigna a un campo.
- Los campos se organizan jerárquicamente.
- Utiliza reglas claras para definir y estructurar la información.
- CSV:
- Datos organizados como tablas.
- Las filas representan registros y los campos están separados por comas u otros delimitadores.
- XML:
- Usa un lenguaje de marcas para estructurar jerárquicamente los datos.
- Hojas de cálculo:
- Tablas gestionadas en un formato de filas, columnas y celdas.
- Son herramientas muy útiles y ampliamente utilizadas, aunque presentan limitaciones para manejar datos complejos.
- Facilitan la exportación e importación de información en formato CSV (una tabla a la vez).
EJEMPLOS
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
INNER JOIN
- CRUD:
- Crear,
- Leer,
- Actualizar y
- Eliminar registros.
- Transacciones:
- Asegura la integridad y consistencia en procesos complejos.
Operaciones fundamentales de gestión de bases de datos:
Programación y Bases de Datos - Primera Actividad - Cristina Outeiriño
Cristina Outeiriño Cid
Created on November 21, 2024
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Corporate Christmas Presentation
View
Business Results Presentation
View
Meeting Plan Presentation
View
Customer Service Manual
View
Business vision deck
View
Economic Presentation
View
Tech Presentation Mobile
Explore all templates
Transcript
Programación y Bases de Datos Primera Actividad
Bloque temático: BT3 Titulación: Técnico Superior en Desarrollo de Aplicaciones Web Módulo: Bases de datos (código: 0484)
Empezamos!
Cristina Outeiriño Cid
Contenidos
Almacenamiento de la información
01
Realización de consultas SQL
02
Consultas avanzadas con SQL
03
Ponte a prueba!
04
01
Almacenamiento de la información
Almacenamiento de la información
01
Almacenar Datos
Estrategias de almacenamiento
El Esquema de una Base de Datos
Diseñar una Base de Datos
Sistemas Gestores de Bases de Datos
El lenguaje SQL
Almacenamiento de la información
01
Almacenar Datos
¿Qué es un dato? Un dato es una unidad de información que puede ser registrada y conservada para su uso posterior.
¿Qué es un almacén de datos (data warehouse)? Un almacén de datos es un sistema diseñado para almacenar información de manera organizada, lo que facilita su acceso y análisis.
¿Qué es una base de datos? Una base de datos es un tipo específico de almacén de datos que:- Contiene información estructurada.
- Está diseñada para permitir tanto el almacenamiento eficiente como la consulta de los datos.
Almacenamiento de la información
01
Almacenar Datos
Base de datos (BD) vs. Sistema Gestor de Bases de Datos (SGBD): La base de datos (BD) se refiere al repositorio donde se almacenan los datos, mientras que un sistema gestor de bases de datos (SGBD) es el software encargado de administrarla y facilitar su manipulación.
Almacenamiento de la información
01
Almacenar Datos
Arquitectura de un sistema software: Arquitectura de tres capas
Capa de presentación: Se encarga de la interacción con el usuario, proporcionando la interfaz a través de la cual este interactúa con el sistema.
Capa de lógica: Contiene la programación y las reglas de negocio que gestionan el procesamiento y el flujo de información en el sistema.
Capa de datos: Administra el almacenamiento y la recuperación de la información, incluyendo las bases de datos y los repositorios de datos utilizados.
Almacenamiento de la información
01
Almacenar Datos
Organización habitual de los datos: El modelo relacional
Los datos se organizan en tablas, que representan conjuntos de información relacionados.
Cada tabla está compuesta por:- Filas (registros): Corresponden a instancias individuales de datos.
- Columnas (campos): Representan los atributos o características de los datos almacenados.
Almacenamiento de la información
01
Almacenar Datos
Métodos de almacenamiento
Aspectos físicos (dónde): Los datos suelen almacenarse en memoria principal y, de forma más persistente, en sistemas de almacenamiento secundario, como discos duros.
Aspectos lógicos (cómo):Usualmente se guardan en estructuras específicas del SGBD (archivos internos) o, en ausencia de un SGBD, en archivos planos.
Almacenamiento de la información
01
Almacenar Datos
Principales retos en la gestión de datos:
Almacenamiento de la información
01
Estrategias de almacenamiento
Estructuras de datos en memoria: Los datos se almacenan directamente en las estructuras del programa, permaneciendo en memoria mientras este se ejecuta.
+ info
Ficheros en almacenamiento externo: Persistente.
Archivos con organización lógica: Se añade una estructura definida a los datos almacenados en archivos.
+ info
Bases de datos gestionadas por un SGBD: Los datos se organizan dentro de una base de datos y se gestionan mediante un sistema especializado (SGBD). Esta estrategia ofrece múltiples ventajas, aunque incrementa la complejidad del sistema.
Almacenamiento de la información
01
El Esquema de una Base de Datos
Elementos Fundamentales de la Estructura de una Base de Datos
Para una tabla:- Nombre de la tabla: Identificador único para distinguirla dentro del sistema.
- Nombres de las columnas (campos): Definen las categorías de datos almacenados.
- Tipos de datos (para cada campo): Especifican el formato y naturaleza de los valores (números, texto, fechas, etc.).
Conjunto de tablas y relaciones:- Al incluir múltiples tablas, se establecen relaciones entre ellas mediante claves foráneas (Foreign Keys), siguiendo los principios del modelo relacional.
Almacenamiento de la información
01
El Esquema de una Base de Datos
Existen diversas formas de estructurar un almacén de datos:
Almacenamiento de la información
01
Diseñar una base de datos
Etapas en el diseño de una base de datos:
1. Diseño Conceptual:- Se realiza de manera visual, utilizando diagramas y esquemas en papel o herramientas similares.
- El objetivo es crear un modelo comprensible incluso para personas sin conocimientos técnicos, facilitando la comunicación de ideas.
2. Diseño Lógico:- Se enfoca en organizar los datos según el modelo elegido (como el modelo relacional).
- Permite plasmar las necesidades conceptuales en una estructura clara y precisa para su implementación
Almacenamiento de la información
01
Diseñar una base de datos
Etapas en el diseño de una base de datos:
3. Diseño Físico:- Consiste en implementar el diseño lógico utilizando un lenguaje específico del sistema gestor de bases de datos (SGBD).
- Define cómo se almacenarán físicamente los datos en el sistema.
Almacenamiento de la información
01
Diseñar una base de datos
Un diseño eficaz debe:
Almacenamiento de la información
01
Sistemas Gestores de Bases de Datos
Arquitectura del SGBD: Modelo ANSI/XPARC:
1. Nivel Externo: Cada usuario o aplicación interactúa con los datos mediante vistas específicas que reflejan su perspectiva de los datos almacenados.
2. Nivel Conceptual: Define la organización general de los datos, describiendo el diseño conceptual y lógico de la base.
3. Nivel Interno: Detalla el almacenamiento físico de los datos, incluyendo dónde y cómo se guardan (diseño físico).
Almacenamiento de la información
01
Sistemas Gestores de Bases de Datos
El SGBD es un software complejo que incluye diversos módulos para su funcionamiento óptimo:
Almacenamiento de la información
01
El lenguaje SQL
El SQL (Structured Query Language) es el estándar principal para la gestión de bases de datos relacionales, en las que los datos se organizan en tablas.
Características principales de SQL:
+ info
Almacenamiento de la información
01
El lenguaje SQL
SQL abarca tres áreas esenciales para la gestión de un almacén de datos:
02
Realización de consultas SQL
Realización de consultas SQL
02
El Lenguage SQL
Tipos de Datos y Valores Nulos
El crucigrama SQL
El comando SELECT
Filtrar y Ordenar los resultados
Funciones en SQL
Agrupaciones de Datos
02
El Lenguage SQL
Realización de consultas SQL
El SQL (Structured Query Language) es un lenguaje estándar utilizado para interactuar con bases de datos que implementan el modelo relacional, donde toda la información está organizada en tablas.
¿Qué es y qué se puede hacer con SQL?
02
El Lenguage SQL
Realización de consultas SQL
Estructura básica de las declaraciones SQL Las sentencias SQL están compuestas por varios elementos fundamentales:
SELECT CURSO, NOMBRE, NOTA FROM ALUMNOS WHERE ASIGNATURA = "BD"
02
Tipos de Datos y Valores Nulos
Realización de consultas SQL
Consulta básica sin origen de datos: Genera un resultado directamente evaluando una expresión.
SELECT 1;
Devuelve un valor literal.
SELECT 10 + 14;
Realiza cálculos, operando con números de distintos tipos.
SELECT (10 < 20);
Evalúa expresiones booleanas, devolviendo 0 o 1.
SELECT "2022-10-01";
Trabaja con datos temporales como fechas y horas.
02
Tipos de Datos y Valores Nulos
Realización de consultas SQL
Operadores:
Cada SGBD puede añadir o modificar tipos, por lo que es esencial consultar su documentación oficial.
02
Tipos de Datos y Valores Nulos
Realización de consultas SQL
Operadores
En SQL, los operadores son herramientas esenciales para construir expresiones que manipulan y comparan datos. Existen múltiples categorías, cada una diseñada para un propósito específico:
+ info
+ info
+ info
+ info
02
Tipos de Datos y Valores Nulos
Realización de consultas SQL
El valor nulo (NULL) en SQL representa un campo sin valor asignado, es decir, un dato inexistente.
02
Tipos de Datos y Valores Nulos
Realización de consultas SQL
El valor nulo (NULL) en SQL representa un campo sin valor asignado, es decir, un dato inexistente.
02
El comando SELECT
Realización de consultas SQL
El comando SELECT se utiliza para realizar consultas en bases de datos:
02
El comando SELECT
Realización de consultas SQL
SELECT * FROM students;
Todos los campos de los estudiantes
SELECT name FROM students;
Nombres de los estudiantes
SELECT name AS my_students FROM students;
Nombrar temporalmente la columna "name" como "my_students"
SELECT DISTINCT name FROM students;
Nombres sin repetición
02
Filtrar y Ordenar los resultados
Realización de consultas SQL
La cláusula WHERE en SQL
SELECT age FROM students WHERE name='Juan';
La edad del estudiante llamado Juan
SELECT name FROM students WHERE id=1;
El nombre del estudiente con el identificador 1
02
Filtrar y Ordenar los resultados
Realización de consultas SQL
Para construir un predicado en una cláusula WHERE, se suelen utilizar los siguientes elementos:
SELECT id FROM students WHERE age>13 AND name='Juan';
Los identificadores de los estudientes llamados 'Juan' que tengan más de 13 años
02
Filtrar y Ordenar los resultados
Realización de consultas SQL
Operadores habituales en SQL:
SELECT id FROM students WHERE age BETWEEN 13 AND 16 OR age IN (18, 21);
Identificadores de estudientes con edades 13, 14, 15, 16, 18 y 21
SELECT id FROM students WHERE name LIKE 'J%';
Identificadores de estudientes cuyos nombres empiezan por J
02
Filtrar y Ordenar los resultados
Realización de consultas SQL
Cláusulas SQL: ORDER BY y LIMIT
SELECT id FROM students ORDER BY name DESC;
Los identificadores de los estudiantes en orden inverso alfabéticamente según sus nombres
SELECT id FROM students LIMIT 3;
Los tres primeros identificadores de estudiantes
02
Funciones en SQL
Realización de consultas SQL
Realización de consultas SQL
Funciones estándar SQL: Funciones que están definidas por el estándar SQL y son comúnmente soportadas por la mayoría de los SGBD.
SELECT MIN(age) FROM students;
La edad mínima de entre los estudiantes
SELECT COUNT(*) FROM students;
El número de estudiantes
SELECT AVG(age) FROM students;
La edad media de los estudiantes
02
Funciones en SQL
Realización de consultas SQL
Realización de consultas SQL
Funciones predeterminadas: Cada Sistema de Gestión de Bases de Datos (SGBD) ofrece un conjunto de funciones predefinidas, que pueden operar sobre un conjunto de datos. Estas funciones son muy útiles para realizar cálculos o manipular datos dentro de las consultas SQL.
Funciones personalizadas: Se pueden crear funciones propias (conocidas como funciones definidas por el usuario, o UDF por sus siglas en inglés) para realizar tareas específicas que no están cubiertas por las funciones predeterminadas. Esto se hace mediante programación dentro del entorno del SGBD.
02
Agrupaciones de Datos
Realización de consultas SQL
Realización de consultas SQL
En SQL, se pueden realizar operaciones sobre datos agrupados:
SELECT age, COUNT(*) AS num_students FROM studentsGROUP BY age HAVING COUNT(*) > 1;
La cantidad de estudiantes que hay de cada edad si para dicha edad hay más de uno
Realización de consultas SQL
02
El crucigrama SQL
03
Consultas Avanzadas con SQL
Consultas Avanzadas con SQL
03
Combinación de consultas
El valor NULL
RelacionaSQL
Combinación de tablas
Uso de subconsultas
03
Consultas Avanzadas con SQL
Combinación de consultas
Para combinar los resultados de dos o más consultas se utilizan los operadores de conjunto, que permiten trabajar con las tablas resultantes de cada consulta como si fueran conjuntos matemáticos.
Requisitos para combinar consultas:- Igual número de columnas en los resultados de ambas consultas.
- Compatibilidad de tipos de datos entre las columnas correspondientes.
SELECT name FROM studentsUNION ALL SELECT name FROM teachers;
SELECT name FROM studentsUNION SELECT name FROM teachers;
Los nombres de estudiantes y profesores con duplicados
Los nombres de estudiantes y profesores sin duplicados
03
Consultas Avanzadas con SQL
Combinación de consultas
SELECT name FROM studentsEXCEPT SELECT name FROM teachers;
SELECT name FROM studentsINTERSECT SELECT name FROM teachers;
Los nombres de estudiantes que no lo son de profesores
Los nombres que son de estudiantes y de profesores
03
Consultas Avanzadas con SQL
El valor NULL
El valor NULL en SQL representa un dato desconocido o no existente, lo que lo diferencia de una cadena vacía ("") o el valor cero (0). A simple vista, no es posible identificar un NULL, pero tiene implicaciones importantes en el diseño y las consultas de bases de datos.
Características y utilidad del valor NULL:
03
Consultas Avanzadas con SQL
El valor NULL
Consultar valores NULL
Para trabajar con valores NULL, SQL proporciona los operadores:
SELECT * FROM students WHERE name IS NULL;
Todos los campos de los estudiantes con nombre desconocido
SELECT * FROM students WHERE name IS NOT NULL;
Todos los campos de los estudiantes con nombre conocido
Los valores NULL no cumplen condiciones estándar de comparación (=, <, etc.) y requieren un manejo especial.
03
Consultas Avanzadas con SQL
Combinaciones de tablas
03
Consultas Avanzadas con SQL
La cláusula JOIN en SQL permite combinar registros de múltiples tablas en una sola consulta, utilizando condiciones que relacionan sus campos.
Esta operación es fundamental para trabajar con bases de datos normalizadas, donde los datos se distribuyen entre varias tablas relacionadas.
Características de JOIN
03
Consultas Avanzadas con SQL
Combinaciones de tablas
03
Consultas Avanzadas con SQL
INNER JOIN: Devuelve solo los registros donde la condición de combinación se cumple. Es el tipo más común.
SELECT students.id, students.name, teachers.id, teachers.nameFROM students INNER JOIN teachers ON students.age = teachers.age;
Los estudiantes y profesores que tienen la misma edad.
LEFT OUTER JOIN: Incluye todos los registros de la tabla izquierda, incluso si no tienen coincidencia en la tabla derecha. Los campos no coincidentes de la tabla derecha se rellenan con NULL.
SELECT S.id, S.name, S.age, T.id, T.name, T.ageFROM students AS S LEFT OUTER JOIN teachers AS T ON S.age = T.age;
Todos los estudiantes junto con el nombre del profesor que tiene la misma edad (si existe)
03
Consultas Avanzadas con SQL
Combinaciones de tablas
03
Consultas Avanzadas con SQL
RIGHT OUTER JOIN: Similar al LEFT OUTER JOIN, pero incluye todos los registros de la tabla derecha y completa con NULL los de la izquierda que no tienen coincidencia.
SELECT S.id, S.name, S.age, T.id, T.name, T.ageFROM students AS S RIGHT OUTER JOIN teachers AS T ON S.age = T.age;
Todos los profesores junto con el nombre del estudiante que tiene la misma edad (si existe)
FULL OUTER JOIN: Combina el comportamiento de los JOIN izquierdo y derecho: incluye todos los registros de ambas tablas, rellenando con NULL cuando no hay coincidencias.
SELF JOIN: Permite combinar una tabla consigo misma, útil para analizar relaciones jerárquicas o dependencias dentro de una sola tabla.
03
Consultas Avanzadas con SQL
Uso de Subconsultas
03
Consultas Avanzadas con SQL
Las subconsultas son consultas anidadas dentro de otra consulta principal. Resultan muy útiles para resolver problemas complejos y permiten reutilizar resultados intermedios en la consulta principal.
Subconsulta como Expresión de Valor: El resultado de la subconsulta es un único valor que se utiliza en la cláusula principal.
SELECT id, name, age FROM studentsWHERE age > (SELECT MIN(age) FROM teachers);
Los estudiantes que tienen una edad mayor que la edad mínima de los profesores.
03
Consultas Avanzadas con SQL
Uso de Subconsultas
03
Consultas Avanzadas con SQL
Subconsulta como Expresión de Tabla: El resultado de la subconsulta es una tabla, y se utiliza como origen de datos en la consulta principal.
SELECT name, ageFROM ( SELECT id, name, age FROM students WHERE age IN (SELECT DISTINCT age FROM teachers) ) AS MatchingStudents;
Nombres de los estudiantes y su edad si su edad está entre las edades de los profesores.
03
Consultas Avanzadas con SQL
Uso de Subconsultas
03
Consultas Avanzadas con SQL
Subconsulta como Expresión de Consulta: La subconsulta se utiliza en operaciones booleanas y devuelve TRUE/FALSE según los registros que coincidan.
SELECT id, name, ageFROM studentsWHERE EXISTS ( SELECT 1 FROM teachers WHERE teachers.age = students.age );
Estudiantes cuya edad coincide con al menos un profesor.
03
Consultas Avanzadas con SQL
Uso de Subconsultas
03
Consultas Avanzadas con SQL
SELECT name, ageFROM students WHERE age IN ( SELECT age FROM teachers );
Estudiantes cuyas edades coinciden con las edades de los profesores.
SELECT name, ageFROM students WHERE age > ANY ( SELECT age FROM teachers );
Estudiantes cuya edad es mayor que la edad de algún profesor.
03
Consultas Avanzadas con SQL
Relaciona SQL
04
Ponte a prueba!
Ponte a prueba!
04
Quiz de SQL
Kahoot de SQL
04
Ponte a prueba!
Quiz de SQL
00:30
Ponte a prueba!
04
Quiz de SQL 2/10
00:30
Ponte a prueba!
04
Quiz de SQL 3/10
00:30
Ponte a prueba!
04
Quiz de SQL 4/10
00:30
Ponte a prueba!
04
Quiz de SQL 5/10
00:30
Ponte a prueba!
04
Quiz de SQL 6/10
00:30
Ponte a prueba!
04
Quiz de SQL 7/10
00:30
Ponte a prueba!
04
Quiz de SQL 8/10
00:30
Ponte a prueba!
04
Quiz de SQL 9/10
00:30
Ponte a prueba!
04
Quiz de SQL 10/10
00:30
04
Ponte a prueba!
Kahoot de SQL
Objetivo logrado!
A por el siguiente...
EJEMPLOS
EJEMPLOS
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
INNER JOIN
Operaciones fundamentales de gestión de bases de datos: