Roberto Arevalillo HerráezProgramación y Base de Datos Primera Actividad BT3. Sistemas de Bases de Datos y el lenguaje SQL
Gestión de bases de datos (0372) Técnico Superior en Administración de Sistemas Informáticos en Red
Iniciar
Indice
Gestión de Bases de Datos
Objetivos
El Diccionario de Datos y el Diagrama E/R
El lenguaje SQL
Herramientas Gráficas Mysql
DDL
DML
Objetivos
Esta unidad tiene como objetvo capacitar en el diseño y administración de base de datos. Para ello se presentan los conceptos clave y técnicas fundamentales del diseño físico de bases de datos y las herramientas a utilizar. Se aprenderá tanto el lenguaje de definición de datos (DDL), como el lenguaje de manipulación de datos (DML). Durante toda la unidad se mostrarán ejemplos ilustrativos para facilitar su comprensión y aplicación práctica.
El Diccionaro de datos y elDiagrama Entidad Relación
El diccionario de datos.
El diccionario de datos trata de documentar los metadatos más ligados a su almacenamiento en la base de datos. Es decir, incluye aspectos técnicos como el tipo de dato, formato, longitud, posibles valores que puede tomar e, incluso, transformaciones sufridas, sin olvidar la definición de cada campo.
Estos metadatos ayudan a los usuarios a entender los datos desde el punto de vista técnico para poder explotarlos adecuadamente. Por este motivo, cada base de datos debería contar con un diccionario de datos actualizado y bien estructurado
+ info
El modelo entidad/relación
Una Entidad es cualquier objeto u elemento (real o abstracto) acerca del cual se pueda almacenar información en la base de datos. En el modelo entidad relación los conjuntos de entidades se representan con un rectángulo dentro del cual se escribe el nombre de la entidad.
Es un modelo para realizar esquemas con la idea de proveer una visión unificada de los datos de un sistema de base de datos. Se pueden utilizarcon cualquier SGBD ya que son conceptuales. Entre los componentes del modelo se encuentran las entidades, las relaciones y los atributos.
El modelo E/R
Relaciones
Representan asociaciones entre entidades, es decir entidades de un conjunto que tienen contacto con entidades de otro conjunto
05
La representación gráfica de las entidades se realiza con un rombo al que se le unen líneas que se dirigen a las entidades, las relaciones tienen nombre (se suele usar un verbo). En el ejemplo anterior podría usarse como nombre de relación, trabajar.
Cardinalidad
Indica el número de relaciones en las que una entidad puede aparecer. Se anota en términos de:
cardinalidad mínima. Indica el número mínimo de asociaciones en las que aparecerá cada ejemplar de la entidad (el valor que se anota es de cero o uno, aunque tenga una cardinalidad mínima de más de uno, se indica sólo un uno)
cardinalidad máxima. Indica el número máximo de relaciones en las que puede aparecer cada ejemplar de la entidad. Puede ser uno, otro valor concreto mayor que uno (tres por ejemplo) o muchos (se representa con n). Normalmente la cardinalidad máxima es 1 ó n
71%
Atributos
Describen propiedades de las entidades y las relaciones. Son fundamentales y establecen la información que deseamos almacenar de cada objeto de la base de datos. El modelo Entidad/Relación clásico los representa con elipses, dentro de las cuales se coloca el nombre del atributo. La elipse se une con una línea a las entidades. El identificador principal o clave es uno o más atributos de una entidad cuyos valores son únicos en cada ejemplar de la entidad
El lenguaje SQL
¿Qué es SQL?
SQL (Structured Query Language) es un lenguaje de consulta utilizado para gestionar y manipular bases de datos relacionales. Proporciona una forma estandarizada de interactuar con los sistemas de gestión de bases de datos relacionales (RDBMS) y realizar diversas operaciones, como consultar datos, definir estructuras de bases de datos, insertar, actualizar y eliminar datos, así como gestionar la seguridad de las bases de datos.
Características y usos clave de SQL
+ info
+ info
+ info
+ info
En esta unidad aprenderemos acerca de DDL y DML
SGDB MySQL
Cada Sistema de Gestión de Bases de Datos (SGBD) utiliza su propia implementación de SQL, basada en el estándar del lenguaje, pero con características y extensiones específicas que lo diferencian
En esta unidad utilizaremos MySQL como sistema gestor de bases de datos para poner en práctica los conceptos aprendidos. MySQL es uno de los SGBD más populares, conocido por su facilidad de uso, rendimiento y amplia adopción en aplicaciones web
DDL Data Denition Language
Índice DDL
Lenguaje de Definición de Datos
Introducción al lenguaje DDL
Creación, Modificación y eliminación de Base de datos
Tablas y tipos de datos
Restricciones de tabla y columna
Introducción al lenguaje DDL
El DDL es la parte del lenguaje SQL que realiza la función de definición de datos del SGBD. Fundamentalmente, se encarga de la creación, modificación y eliminación de los objetos de la base de datos (es decir de los metadatos).
Creación de bases de datos
Crear la base de datos implica indicar los archivos y ubicaciones que se utilizarán para la misma, además de otras indicaciones técnicas y administrativas que no se comentarán en este tema.
en MySQL, la siguiente sentencia crea una nueva base de datos llamada "prueba" con el conjunto de caracteres latin1 y el cotejamiento latin1_swedish_ci
Modificación y eliminación de bases de datos
Además de crear Bases de Datos, Mysql permite la modificación y eliminación de una base de datos.
- Podemos cambiar el conjunto de caracteres y collation de la base de datos utilizando ALTER DATABASE
- Para eliminar una base de datos completa, utilizamos el comando DROP DATABASE
Tablas
Una tabla es un objeto de la BD que almacena datos en filas y columnas. La creación de una tabla engloba las definiciones de atributos y/o restricciones
Tipos de Datos
A la hora de crear tablas, hay que indicar el tipo de datos de cada campo. Necesitamos pues conocer los distintos tipos de datos. Describiremos los diferentes tipos así comos sus peculiaridades.
VARCHAR
BLOB
CHAR
Fecha y Hora
Numéricos
ENUM
Tipos numéricos enteros
Estos se utilizan para almacenar números enteros sin decimales en Mysql
TINYINT
BOOL
SMALLINT
MEDIUMINT
INT
tabla resumen
BIGINT
Tipos numéricos. Coma flotante
En MySQL, los tipos de datos numéricos en coma flotante están diseñados para almacenar valores con decimales
FLOAT(p)
DOUBLE
DECIMAL
Almacena números decimales exactos, sin aproximaciones. Se utiliza un byte por cada dígito más algunos bytes adicionales para el signo y la posición decimal
Número con coma flotante.
p representa la precisión (número máximo de dígitos). Ocupa 4 bytes
Número de coma flotante de tamaño normal (precisión doble)Ocupa 8 bytes
+ info
+ info
+ info
Comparativa entre float, double y decimal
Tipos de Fechas y Horas
En MySQL, los tipos de datos de fecha y hora se utilizan para almacenar valores relacionados con fechas, horas o ambos
DATE
fechas en formato YYYY-MD-DD
DATETIME
Combinación de fecha y hora
TIMESTAMP
Incluye soporte para zonas horarias
Incluye solo la hora
TIME
TIMESTAMP
Almacena solo un valor de año
YEAR
Comparativa entre tipos de fechas y horas
Crear tabla
La sentencia CREATE TABLE se utiliza para crear una tabla.
CREATE TABLE nom_tabla (lista _elementos_tabla)
nom_tabla: es un nombre de menos de 30 caracteres. Se compone de dos partes: usuario.nombre , El usuario es el identificador del propietario de la tabla y nombre es el nombre de la tabla. Dentro de la tabla podemos especificar una serie de columnas que contienen datos y restricciones que verifican datos y especifican otras características de la tabla.
Cada columna debe tener asignado un tipo de dato válido
Modificar tablas
La definición de una tabla se puede modificar con la instrucción ALTER.
Las acciones de modificar incluyen:
modificación de la definición de la columna
Eliminación de columnas.
renombrar tabla
RENAME nombre_tabla_existente TO nuevo_nombre_tabla;
ALTER TABLE nombre_tabla
MODIFY [COLUMN] nombre_columna definición_de_ tipo
ALTER TABLE nombre_tabla Drop [COLUMN] nom_colum
Borrar tablas
Para borrar una tabla (tanto la definición como los datos que pudiera contener) se utiliza la sentencia:
DROP TABLE nombre_tabla [CASCADE] [ RESTRICT ];
Borrar solamente el contenido de la tabla.
TRUNCATE TABLE nombre_tabla
Gestión de restricciones
Como norma general tendremos que pensar en los siguientes tipos de campos:
Claves primarias.
Claves externas.
Campos que se usan en combinaciones de tablas (joins)
Campos sobre los que se realizan búsquedas (Where)
Campos sobre los que se realizan clasificaciones (Order by )
Restricciones de integridad
Las restricciones de integridad se pueden hacer de dos formas:
- Definición a nivel de columna, en la definición de cada atributo.
- Definición a nivel de tabla, al final de cada tabla.
Las restricciones de integridad se llaman CONSTRAINTS.
Se les puede asignar un nombre o por defecto el SGBD les da uno correlativo.
Restricción de columna
- Las restricciones de columna son restricciones que afectan a una sola columna. Se utilizan para determinar si un valor propuesto para una columna es válido o no. Las restricciones de columna se evalúan después de validar la entrada según los requisitos de tipo básicos (como asegurarse de que un valor sea un número entero para columnas int).
Restricciones a nivel de tabla
Las restricciones de tabla pueden expresar casi cualquier restricción que una restricción de columna pueda expresar, pero también pueden expresar restricciones que involucran más de una columna. En lugar de adjuntarse a una columna específica, las restricciones de la tabla pueden hacer referencia a cualquiera de las columnas de la tabla
Algunas restricciones de integridad
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT, NULL
Verificación de las restricciones. Datos de prueba.
Los datos de prueba son fundamentales para evaluar si las restricciones de la base de datos están correctamente implementadas y si el sistema maneja adecuadamente los errores. Durante las pruebas debemos:
- Insertar datos válidos: Verificar que los datos válidos se acepten sin problemas.
- Insertar datos inválidos: Confirmar que el sistema rechace los datos que violan restricciones.
Participa en el Kahoot interactivo sobre SQL y DDL.
🧠 Reta tus conocimientos sobre comandos, tipos de datos y restricciones. 💡 Aprende mientras te diviertes y compites con tus compañeros. 🏆 Objetivo: Responde correctamente y ¡sube al podio de los ganadores!
Kahoot
DML (Data Manipulation Language)
Indice DML
El lenguaje DML
La orden SELECT
Subconsultas
Inserción, modificación y borrado de datos
Realización de consultas
El DML (Data Manipulation Language), lenguaje de manipulación de datos, incluye ordenes que permiten al usuario:
- Recuperar los datos almacenados en la base de datos.
- Actualizar la base de datos añadiendo nuevos datos.
- Suprimir datos.
- Modificar datos previamente almacenados
La orden SELECT
Antes de realizar una consulta sobre la Base de Datos, para recuperar información, tendremos que:
- Decidir qué tablas están implicadas en la consulta y ponerlas en el FROM.
- Ver cuáles son las relaciones entre las tablas, seleccionar las relevantes para la consulta en cuestión
- Poner las condiciones en el WHERE, ORDER BY u otras.
- Fijar las columnas a mostrar en el SELECT.
Ejemplo sencillo SELECT Tipo, Modelo FROM Pieza WHERE Precio>3;
Alias Los alias sirven para dar otro nombre a una columna
SELECT id_trabajo AS identificador, nombre FROM trabajos;
No es obligatorio utilizar la palabra AS, es igualmente válido dejar un espacio en blanco antes del alias:
Uso del asterisco
El símbolo * (asterisco) sirve para seleccionar todas las columnas de una tabla.
Cálculos aritméticos
Los operadores + (suma), - (resta), * (multiplicación) y / (división), se pueden utilizar para hacer cálculos en las consultas. Cuando se utilizan como expresión en una consulta SELECT. No modifican los datos originales sino que como resultado de la vista generada por SELECT SELECT nombre, precio, precio * 1.16 AS precio_con_iva FROM articulos;
La prioridad de esos operadores es la habitual en todos los lenguajes de programación.
Tienen más prioridad las operaciones de multiplicación y división que las de suma y la resta.
En caso de igualdad de prioridad, se realiza primero la operación que esté más a la izquierda. Como es lógico, se puede evitar cumplir esa prioridad usando paréntesis; el interior de los paréntesis es lo que se ejecuta primero.
condiciones
operadores de comparación
=, <>, >, <, >=, <=.
valores lógicos
AND, OR, NOT
- % (Secuencia de caracteres)
- _ un carácter cualquiera
LIKE
comprueba si el valor es nulo
IS NULL
Consultas SELECT de varias tablas
Las bases de datos relacionales almacenan sus datos en varias tablas. Lo normal, en casi cualquier consulta, es requerir datos de varias tablas a la vez. Esto es posible porque los datos de las tablas están ligados por columnas que contienen claves secundarias o externas que permiten relacionar los datos de esa tabla con datos de otra tabla.
Video
Revisamos el producto cartesiano de tablas y la composición interna JOIN ON
Composición externa
El OUTER JOIN incluye las filas que no tienen coincidencias en una de las tablas, llenando los valores faltantes con NULL
LEFT JOIN
RIGHT JOIN
CROSS JOIN
Devuelve todas las filas de la tabla izquierda aunque no tengan coincidencias en la tabla derecha
El RIGHT JOIN es similar al INNER JOIN, solo que al seleccionarlo muestra todos los valores de la tabla de la derecha, aunque no tenga correspondencia en la tabla de la izquierda
Es un tipo especial de JOIN que devuelve el producto cartesiano entre las tablas que forman parte de la UNION. Se comporta igual que el INNER JOIN como si no tuviera la parte del “ON”
+ info
Consultas de Valores Agrupados
La cláusula GROUP BY divide la tabla en grupos con las líneas del mismo valor para uno o más atributos .Si se aplica una SELECT a una tabla agrupada , cada expresión de la selección debe dar como resultado un único valor por grupo.
Obtener la edad media de los ciclistas de cada equipo
SELECT AVG(edad) FROM ciclista
GROUP BY nomequipo ;
+ info
SELECT con la cláusula ORDER BY
Las expresiones de la cláusula ORDER BY pueden ser cualquiera que haga referencia a una columna o a cálculos sobre la columna. Ejemplo:
SELECT nombre,apellido1,apellido2
FROM alumnos
ORDER BY apellido1, apellido2, nombre;
+ info
Comando LIMIT
El comando LIMIT se utiliza en MySQL para restringir la cantidad de filas que se devuelven en una consulta. SELECT columna1, columna2, ... FROM tabla LIMIT número_de_filas, offset;
Orden de ejecución de las sentencias
Este diagrama ilustra la diferencia entre el orden de escritura (coding order) y el orden de ejecución (execution order) de una consulta SQL. Aunque escribimos las cláusulas SQL en un orden específico, el motor de la base de datos las procesa en un orden diferente
+ info
La claúsula HAVING
HAVING es a GROUP BY lo que
WHERE es a SELECT .
Sirve para restringir el número de filas devueltas por GROUP BY.
La cláusula HAVING se puede referir a funciones agregadas, a las que una cláusula WHERE no puede
Operador Unión
Combina filas de 2 tablas en una única tabla. Tiene varias restricciones :
Ambas tablas deben contener el mismo número de columnas.
El tipo de datos de cada columna en la 1ª tabla debe ser el mismo que el tipo de datos de la columna correspondiente en la 2ª tabla.
Ninguna de las dos tablas pueden estar ordenada con la cláusula ORDER BY. Sin embargo, los resultados combinados pueden ser ordenados.
+ info
Participa en el crucigrama interactivo sobre sentencias SELECT
¡Es hora de poner a prueba lo que has aprendido! 🖥️ Completa el crucigrama y demuestra tu dominio sobre las consultas SQL 🔍 Conocer las sentencias SELECT y otras funciones clave nunca fue tan divertido 💡 ¡Refuerza lo aprendido mientras te diviertes resolviendo pistas!
Wordwall
Consultas complejas. Funciones de ventana
Una función ventana SQL realiza cálculos a través de un conjunto de filas de la tabla que están relacionadas con la fila actual. Este conjunto de filas se llama ventana o marco de ventana - de ahí viene el término "funciones ventana".Las funciones ventana se definen utilizando la cláusula OVER(). Se pueden incluir cláusulas adicionales dentro de la cláusula OVER() para definir aún más la ventana (PARTITION BY y ORDER BY)
+ info
Consultas complejas CTE.
Las expresiones comunes de tabla (CTEs) permiten asignar un nombre a un conjunto de resultados temporal y luego referirse a ese conjunto de resultados por su nombre (como si fuera una tabla o una vista) en las sentencias SELECT, INSERT, UPDATE, o DELETE. La sintaxis básica de lasCTE en MySQL puede resumirse como sigue:
WITH cte_name (column_list) AS (
query
)
SELECT *
FROM cte_name;
+ info
Consultas complejas CTE.
Las expresiones comunes de tabla (CTEs) permiten asignar un nombre a un conjunto de resultados temporal y luego referirse a ese conjunto de resultados por su nombre (como si fuera una tabla o una vista) en las sentencias SELECT, INSERT, UPDATE, o DELETE. La sintaxis básica de lasCTE en MySQL puede resumirse como sigue:
WITH cte_name (column_list) AS (
query
)
SELECT *
FROM cte_name;
+ info
INSERCIÓN DE DATOS
Añadir datos a una tabla se realiza mediante la instrucción INSERT. INSERT INTO tabla [(listaDeColumnas)]
VALUES (valor1 [,valor2 ...]) La tabla representa la tabla a la que queremos añadir el registro y los valores que siguen a la cláusula VALUES, son los valores que damos a los distintos campos del registro. Si no se especifica la lista de campos, la lista de valores debe seguir el orden de las columnas según fueron creados
+ info
Modificación de datos
La modificación de los datos de las filas se realiza mediante la instrucción UPDATE.Su sintaxis es la siguiente:
UPDATE tabla
SET columna1=valor1 [,columna2=valor2...]
[WHERE condición]; Se modifican las columnas indicadas en el apartado SET con los valores indicados. La cláusula WHERE permite especificar qué registros serán modificados.
Borrado de datos
Se realiza mediante la instrucción DELETE:DELETE [FROM] tabla [WHERE condición]; Hay que tener en cuenta que el borrado de un registro no puede provocar fallos de integridad y que la opción de integridad ON DELETE CASCADE hace que no sólo se borren las filas indicadas, sino todas los relacionadas.
+ info
Participa en el Quizz interactivo sobre SQL y DML.
🧠 Reta tus conocimientos sobre sentencias SQL de manipulación de datos 💡 Aprende mientras te diviertes y compites con tus compañeros. 🏆 Objetivo: Responde correctamente y ¡sube al podio de los ganadores!
Quizz
Herramientas Gráficas
Herramientas gráficas proporcionadas por Mysql
MySQL Workbench
Herramientes del gestor. PhpMyAdmin
Gestor de MySQL con interfaz web
Herramientas externas al gestor
DBeaver
Bibliografía
Silberschatz, H. Korth & S. Sudarskhan. Fundamentos de Bases de Datos. 6ª Edición. McGraw Hill. 2014.Jorge Sanchez, profesor de informática. Manuales, ejercicios y documentos sobre cursos de informática. (n.d.). jorgesanchez.net. https://jorgesanchez.net/bd Cliente MySQL: Repasamos las mejores interfaces gráficas | blog de Arsys. (2024, 4). Arsys. https://www.arsys.es/blog/interfaces-graficas-mysql Javi Castillo J. (2023, November 15). Consultas SELECT en SQL de varias tablas [Video]. YouTube. https://www.youtube.com/watch?v=Yxia2I46EGs Programación Fácil. (2023, June 29). ¿Cómo se utilizan las SUBCONSULTAS en SQL?- MÁSTER EN SQL #19 [Video]. YouTube. https://www.youtube.com/watch?v=SDOWm-wD_VE Jayaram, P. (2019, November 4). Revisión, ejemplos Y USO de SQL union. SQL Shack - articles about database auditing, server performance, data recovery, and more. https://www.sqlshack.com/es/revision-ejemplos-y-uso-de-sql-union/ Join MySQL: La distintas formas de union entre Tablas. (n.d.). Generación de Leads Cualificados | Premium Leads. https://www.premiumleads.com/blog/desarrollo/join-mysql-la-distintas-formas-de-union-entre-tablas/ Las CTE de MySQL Y Como Utilizarlas. (2024, October 3). LearnSQL.es. https://learnsql.es/blog/las-cte-de-mysql-y-como-utilizarlas/ Una vision general de las funciones de ventana de MySQL. (2023, July 27). LearnSQL.es. https://learnsql.es/blog/una-vision-general-de-las-funciones-de-ventana-de-mysql/
Gracias!
Espero que hayas disfrutado de esta unidad didáctica!!
Restricciones de tabla
Por ejemplo, en una base de datos bancaria, una tabla llamada prestatarios_calificados podría necesitar verificar si las personas tienen una cuenta bancaria y la capacidad de ofrecer garantías para poder asingarles un préstamo. Podría tener sentido incluir ambos en el mismo CHECK
clave primaria
Para añadir un índice de clave primaria en una tabla de MySQL, debemos utilizar la instrucción ALTER TABLE seguida de la cláusula ADD PRIMARY KEY
FLOAT
Se utiliza en Mysql para almacenar números en coma flotante de precisión simple. Es más eficiente en términos de almacenamiento que DOUBLE, pero puede perder precisión para valores muy grandes o pequeños. Un número de coma flotante con precisión sencilla tiene una precisión de 7 decimales aproximadamente. Puede almacenar valores como 12345.678.
Los valores permitidos son de -3.402823466E+38 a - 1.175494351E-38 con signo y de 1.175494351E-38 a 3.402823466E+38 con signo
Criterio de ordenación
Normalmente ordena en ascendente, pero si usamos DESC ordenará en descendente: SELECT nombre, apellido1, apellido2, f_n fecha_nacimiento FROM alumnos ORDER BY f_n DESC; Mostrará la lista de alumnos ordenada de forma que aparezcan primero los más jóvenes.
CASCADE
CASCADE significa que se elimina la tabla y todas las restricciones y vistas donde se encuentra alguna de sus columnas.
Precaución: Puede tener consecuencias no deseadas si hay múltiples dependencias.
La siguiente sentencia elimina la tabla empleados y todos los elementos relacionados. Si otras tablas o vistas dependen de empleados, se eliminarán también.
DROP TABLE empleados CASCADE;
Coma flotante Double(M,D)
En Mysql es un número con coma flotante de doble precisión que tiene una precisión aproximada de 15 decimales. Puede almacenar valores como 156.79769313486231.
Los valores permitidos con signo sonde -1.7976931348623157E+308 a -2.2250738585072014E-308, 0,y sin signo de 2.2250738585072014E-308 a 1.7976931348623157E+308
M es la cantidad máxima de dígitos (precisión total).
D es la cantidad de dígitos después del punto decimal.
DATETIME
En Mysql Almacena fecha y hora con el formato 'YYYY-MM-DD HH:MM:SS'. Permite almacenar fechas en el rango desde '1000-01-01 00:00:00' hasta '9999-12-31 23:59:59'. Para ello utiliza 8 bytes de almacenamiento Puede almacenar fracciones de segundo hasta 6 dígitos, lo que aumenta el tamaño. Un ejemplo sería '2024-11-16 14:30:00'
Restricciones DEFAULT y NOT NULL
La cláusula DEFAULT especifica un valor por omisión para la columna que va a utilizarse cuando se inserte una nueva fila en la tabla y no se especifique un valor.
Puede especificarse NOT NULL para asegurar que la columna siempre contiene datos
Restricciones FOREIGN KEY
Podemos definir una FOREIGN KEY (clave ajena) que indique que el valor de la lista de columnas debe existir en otra tabla.
¿Que ocurrirá si queremos borrar o modificar los valores de la clave primaria a la que hace referencia la clave ajena?,
El sistema impedirá que hagamos esta operación porque rompería la integridad de la BD.
Algunas de las opciones son: CASCADE, SET NULL, SET DEFAULT, NO ACTION.
BLOB
Aunque no es un tipo texto propiamente dicho puede utilizarse para guardar información binaria, contenido de un archivo JPG, un archivo comprimido ZIP , etc., y texto cuya longitud supere la longitud permitida por los tipos CHAR y VARCHAR.
Este tipo diferencia entre mayúsculas y minúsculas.
Los tipos TINYBLOB, MEDIUMBLOB Y LONGBLOB son BLOB de diferentes tamaños.
Diccionario de datos
Para la cumplimentación de los metadatos solicitados en un diccionario de datos, existen guías y plantillas prediseñadas como el siguiente ejemplo proporcionado por el Departamento de Agricultura de los EEUU
Estructura de una consulta SELECT
SELECT [ALL | DISTINCT ] columnas seleccionadas FROM tabla
[WHERE expresión_condicional]
[ORDER BY columnas de ordenación ALL : Permite la aparición de filas idénticas (valor por defecto).
DISTINCT: No permite la aparición de filas idénticas.
YEAR
Permite almacenar un año en formato de dos o cuatro dígitos. El valor por defecto está en formato de cuatro dígitos.
En formato de cuatro dígitos, los valores permitidos son de 1901 a 2155, y 0000 Un ejemplo sería 2024
Tipos numéricos
Existen seis tipos básicos para almacenar números enteros, diferenciados por el rango de valores que pueden almacenar.
- TINYINT
- BOOL, BOOLEAN
- SMALLINT
- MEDIUMINT
- INT
- BIGINT
¿Hacemos una consulta de UNION?
Por ejemplo, la tabla ‘A’ tiene 1,2 y 3 y la tabla ‘B’ tiene 3,4,5. Se aprecia como en esta operación, combina las dos tablas y se eliminan los duplicados
Restricción CHECK
En el siguiente ejemplo, se restringe la edad a un valor mayor o igual a 0 mediante la resricción CHECK
Tipo Fecha y Hora
En MySQL, los tipos de datos para fechas y horas permiten almacenar y manipular información temporal con precisión y flexibilidad. Incluyen DATE para fechas (AAAA-MM-DD), TIME para horas (HH:MM:SS), DATETIME para la combinación de fecha y hora (AAAA-MM-DD HH:MM:SS), TIMESTAMP para almacenar fecha y hora en formato UTC con soporte para zonas horarias, y YEAR para registrar únicamente el año (AAAA). Estos tipos son esenciales para gestionar eventos cronológicos, realizar cálculos temporales, filtrar datos según intervalos y garantizar la integridad al trabajar con datos temporales en aplicaciones
Restricciones a nivel de columna CHECK
La cláusula CHECK es una expresión lógica que se define con la misma sintaxis que la condición de la cláusula WHERE de la sentencia SELECT.
Los predicados que admite son: BETWEEN, LIKE, IN, IS NULL /IS NOT NULL y ALL/ANY,
Restricción CHECK
En el siguiente ejemplo, se restringe la edad a un valor mayor o igual a 0 mediante la resricción CHECK
TIMESTAMP
Almacena una combinación de fecha y hora similar a DATETIME, pero incluye soporte para zonas horarias. Permite almacenar fechas desde '1970-01-01 00:00:01 UTC' hasta '2038-01-19 03:14:07 UTC'
ENUM
Es una clase especial de tipo de cadena.
Al definir la columna se indican los posibles valores que puede tomar, y posteriormente sólo se podrán guardar en la columna los valores definidos.
Internamente MySQL sustituye la cadena por un número, ahorrando espacio en cada inserción.
VARCHAR
Tiene el mismo rango que CHAR, pero guarda los caracteres que realmente introducimos más uno para guardar la longitud de la cadena.
También admite el modificador BINARY.
Restricciones PRIMARY KEY
Podemos definir una PRIMARY KEY (clave primaria) para la tabla o definir una columna particular o un conjunto de columnas que sean UNIQUE (que sus valores no se puedan repetir en la tabla).
DATE
Descripción: En Mysql puede almacenar fechas desde '1000-01-01' hasta '9999-12-31'. Ocupa 3 bytes de espacio de almacenamiento Un ejempo podría ser '2024-11-16'
DECIMAL(M, D)
Aunque no es un tipo en coma flotante como FLOAT o DOUBLE, se utiliza para almacenar números con decimales. M especifica el número total de dígitos. D especifica el número de dígitos después del punto decimal. Puede almacenar valores como 12345678.90
Clave externa
La tabla pedidos tiene una columna id_cliente que hace referencia a la columna id_cliente de la tabla clientes
- Visit the Analytics settings;
- Activate user tracking;
- Let the communication flow!
CHAR
Permite definir cadenas de texto de longitud fija.
La longitud se define entre paréntesis a continuación del tipo y puede estar comprendido entre 0 y 255 caracteres.
Admite la modificación BINARY que permite en las consultas diferenciar entre mayúsculas y minúsculas.
RESTRICT
Sólo se permite el borrado de la tabla si no existe ninguna vista o referencia a ella (es decir, si ninguna de sus columnas es clave ajena en otra tabla). Este enfoque es más seguro para evitar eliminaciones accidentales de estructuras interrelacionadas. Ejemplo: DROP TABLE empleados RESTRICT;
TIME
Almacena solo un valor de hora (sin fecha) en formato. 'HH:MM:SS'. Ocupa 3 bytes de espacio de almacenamiento. Un ejemplo sería '14:30:00'
Group by
La sintaxis de una referencia a una función agrupada es la siguiente:
{ avg | max | min | sum | count } ( [all | distinct] expresión_escalar ) | count(*) Para las funciones sum y avg los argumentos deben ser numéricos
distinct indica que los valores redundantes sean eliminados antes de que se realice el cálculo correspondiente. (no se puede usar delante de count(*)).
Los cálculos se realizan después de la selección y de aplicar las condiciones.
Los valores nulos son eliminados antes de realizar los cálculos (incluido el count).
Ejemplo: Nombre y edad del mayor ciclista de cada equipo. SELECT C.nombre, MAX(C.edad) FROM ciclista C
GROUP BY C.nomequipo;
Tipos numéricos enteros
Los tipos numéricos enteros se utilizan para almacenar números enteros sin decimales
Orden de ejecución
Cuando el motor de la base de datos ejecuta la consulta, sigue un flujo diferente, basado en cómo se obtienen y filtran los datos. El orden real de ejecución es: FROM: Primero se identifican las tablas WHERE: Se filtran las filas GROUP BY: Se agrupan los datos . HAVING: Se filtran los grupos resultantes SELECT: Se seleccionan las columnas que queremos en el resultado. ORDER BY: Se ordenan los datos según los criterios establecidos. LIMIT: Finalmente, se limita el número de registros devueltos.
Actividad 1. Programación y Base de Datos
ROBERTO AREVALILLO HERRAEZ
Created on November 13, 2024
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Memories Presentation
View
Pechakucha Presentation
View
Decades Presentation
View
Color and Shapes Presentation
View
Historical Presentation
View
To the Moon Presentation
View
Projection Presentation
Explore all templates
Transcript
Roberto Arevalillo HerráezProgramación y Base de Datos Primera Actividad BT3. Sistemas de Bases de Datos y el lenguaje SQL
Gestión de bases de datos (0372) Técnico Superior en Administración de Sistemas Informáticos en Red
Iniciar
Indice
Gestión de Bases de Datos
Objetivos
El Diccionario de Datos y el Diagrama E/R
El lenguaje SQL
Herramientas Gráficas Mysql
DDL
DML
Objetivos
Esta unidad tiene como objetvo capacitar en el diseño y administración de base de datos. Para ello se presentan los conceptos clave y técnicas fundamentales del diseño físico de bases de datos y las herramientas a utilizar. Se aprenderá tanto el lenguaje de definición de datos (DDL), como el lenguaje de manipulación de datos (DML). Durante toda la unidad se mostrarán ejemplos ilustrativos para facilitar su comprensión y aplicación práctica.
El Diccionaro de datos y elDiagrama Entidad Relación
El diccionario de datos.
El diccionario de datos trata de documentar los metadatos más ligados a su almacenamiento en la base de datos. Es decir, incluye aspectos técnicos como el tipo de dato, formato, longitud, posibles valores que puede tomar e, incluso, transformaciones sufridas, sin olvidar la definición de cada campo.
Estos metadatos ayudan a los usuarios a entender los datos desde el punto de vista técnico para poder explotarlos adecuadamente. Por este motivo, cada base de datos debería contar con un diccionario de datos actualizado y bien estructurado
+ info
El modelo entidad/relación
Una Entidad es cualquier objeto u elemento (real o abstracto) acerca del cual se pueda almacenar información en la base de datos. En el modelo entidad relación los conjuntos de entidades se representan con un rectángulo dentro del cual se escribe el nombre de la entidad.
Es un modelo para realizar esquemas con la idea de proveer una visión unificada de los datos de un sistema de base de datos. Se pueden utilizarcon cualquier SGBD ya que son conceptuales. Entre los componentes del modelo se encuentran las entidades, las relaciones y los atributos.
El modelo E/R
Relaciones
Representan asociaciones entre entidades, es decir entidades de un conjunto que tienen contacto con entidades de otro conjunto
05
La representación gráfica de las entidades se realiza con un rombo al que se le unen líneas que se dirigen a las entidades, las relaciones tienen nombre (se suele usar un verbo). En el ejemplo anterior podría usarse como nombre de relación, trabajar.
Cardinalidad
Indica el número de relaciones en las que una entidad puede aparecer. Se anota en términos de:
cardinalidad mínima. Indica el número mínimo de asociaciones en las que aparecerá cada ejemplar de la entidad (el valor que se anota es de cero o uno, aunque tenga una cardinalidad mínima de más de uno, se indica sólo un uno)
cardinalidad máxima. Indica el número máximo de relaciones en las que puede aparecer cada ejemplar de la entidad. Puede ser uno, otro valor concreto mayor que uno (tres por ejemplo) o muchos (se representa con n). Normalmente la cardinalidad máxima es 1 ó n
71%
Atributos
Describen propiedades de las entidades y las relaciones. Son fundamentales y establecen la información que deseamos almacenar de cada objeto de la base de datos. El modelo Entidad/Relación clásico los representa con elipses, dentro de las cuales se coloca el nombre del atributo. La elipse se une con una línea a las entidades. El identificador principal o clave es uno o más atributos de una entidad cuyos valores son únicos en cada ejemplar de la entidad
El lenguaje SQL
¿Qué es SQL?
SQL (Structured Query Language) es un lenguaje de consulta utilizado para gestionar y manipular bases de datos relacionales. Proporciona una forma estandarizada de interactuar con los sistemas de gestión de bases de datos relacionales (RDBMS) y realizar diversas operaciones, como consultar datos, definir estructuras de bases de datos, insertar, actualizar y eliminar datos, así como gestionar la seguridad de las bases de datos.
Características y usos clave de SQL
+ info
+ info
+ info
+ info
En esta unidad aprenderemos acerca de DDL y DML
SGDB MySQL
Cada Sistema de Gestión de Bases de Datos (SGBD) utiliza su propia implementación de SQL, basada en el estándar del lenguaje, pero con características y extensiones específicas que lo diferencian
En esta unidad utilizaremos MySQL como sistema gestor de bases de datos para poner en práctica los conceptos aprendidos. MySQL es uno de los SGBD más populares, conocido por su facilidad de uso, rendimiento y amplia adopción en aplicaciones web
DDL Data Denition Language
Índice DDL
Lenguaje de Definición de Datos
Introducción al lenguaje DDL
Creación, Modificación y eliminación de Base de datos
Tablas y tipos de datos
Restricciones de tabla y columna
Introducción al lenguaje DDL
El DDL es la parte del lenguaje SQL que realiza la función de definición de datos del SGBD. Fundamentalmente, se encarga de la creación, modificación y eliminación de los objetos de la base de datos (es decir de los metadatos).
Creación de bases de datos
Crear la base de datos implica indicar los archivos y ubicaciones que se utilizarán para la misma, además de otras indicaciones técnicas y administrativas que no se comentarán en este tema.
en MySQL, la siguiente sentencia crea una nueva base de datos llamada "prueba" con el conjunto de caracteres latin1 y el cotejamiento latin1_swedish_ci
Modificación y eliminación de bases de datos
Además de crear Bases de Datos, Mysql permite la modificación y eliminación de una base de datos.
Tablas
Una tabla es un objeto de la BD que almacena datos en filas y columnas. La creación de una tabla engloba las definiciones de atributos y/o restricciones
Tipos de Datos
A la hora de crear tablas, hay que indicar el tipo de datos de cada campo. Necesitamos pues conocer los distintos tipos de datos. Describiremos los diferentes tipos así comos sus peculiaridades.
VARCHAR
BLOB
CHAR
Fecha y Hora
Numéricos
ENUM
Tipos numéricos enteros
Estos se utilizan para almacenar números enteros sin decimales en Mysql
TINYINT
BOOL
SMALLINT
MEDIUMINT
INT
tabla resumen
BIGINT
Tipos numéricos. Coma flotante
En MySQL, los tipos de datos numéricos en coma flotante están diseñados para almacenar valores con decimales
FLOAT(p)
DOUBLE
DECIMAL
Almacena números decimales exactos, sin aproximaciones. Se utiliza un byte por cada dígito más algunos bytes adicionales para el signo y la posición decimal
Número con coma flotante. p representa la precisión (número máximo de dígitos). Ocupa 4 bytes
Número de coma flotante de tamaño normal (precisión doble)Ocupa 8 bytes
+ info
+ info
+ info
Comparativa entre float, double y decimal
Tipos de Fechas y Horas
En MySQL, los tipos de datos de fecha y hora se utilizan para almacenar valores relacionados con fechas, horas o ambos
DATE
fechas en formato YYYY-MD-DD
DATETIME
Combinación de fecha y hora
TIMESTAMP
Incluye soporte para zonas horarias
Incluye solo la hora
TIME
TIMESTAMP
Almacena solo un valor de año
YEAR
Comparativa entre tipos de fechas y horas
Crear tabla
La sentencia CREATE TABLE se utiliza para crear una tabla. CREATE TABLE nom_tabla (lista _elementos_tabla) nom_tabla: es un nombre de menos de 30 caracteres. Se compone de dos partes: usuario.nombre , El usuario es el identificador del propietario de la tabla y nombre es el nombre de la tabla. Dentro de la tabla podemos especificar una serie de columnas que contienen datos y restricciones que verifican datos y especifican otras características de la tabla. Cada columna debe tener asignado un tipo de dato válido
Modificar tablas
La definición de una tabla se puede modificar con la instrucción ALTER. Las acciones de modificar incluyen:
modificación de la definición de la columna
Eliminación de columnas.
renombrar tabla
RENAME nombre_tabla_existente TO nuevo_nombre_tabla;
ALTER TABLE nombre_tabla MODIFY [COLUMN] nombre_columna definición_de_ tipo
ALTER TABLE nombre_tabla Drop [COLUMN] nom_colum
Borrar tablas
Para borrar una tabla (tanto la definición como los datos que pudiera contener) se utiliza la sentencia: DROP TABLE nombre_tabla [CASCADE] [ RESTRICT ]; Borrar solamente el contenido de la tabla. TRUNCATE TABLE nombre_tabla
Gestión de restricciones
Como norma general tendremos que pensar en los siguientes tipos de campos:
Claves primarias.
Claves externas.
Campos que se usan en combinaciones de tablas (joins)
Campos sobre los que se realizan búsquedas (Where)
Campos sobre los que se realizan clasificaciones (Order by )
Restricciones de integridad
Las restricciones de integridad se pueden hacer de dos formas:
Las restricciones de integridad se llaman CONSTRAINTS. Se les puede asignar un nombre o por defecto el SGBD les da uno correlativo.
Restricción de columna
Restricciones a nivel de tabla
Las restricciones de tabla pueden expresar casi cualquier restricción que una restricción de columna pueda expresar, pero también pueden expresar restricciones que involucran más de una columna. En lugar de adjuntarse a una columna específica, las restricciones de la tabla pueden hacer referencia a cualquiera de las columnas de la tabla
Algunas restricciones de integridad
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT, NULL
Verificación de las restricciones. Datos de prueba.
Los datos de prueba son fundamentales para evaluar si las restricciones de la base de datos están correctamente implementadas y si el sistema maneja adecuadamente los errores. Durante las pruebas debemos:
Participa en el Kahoot interactivo sobre SQL y DDL.
🧠 Reta tus conocimientos sobre comandos, tipos de datos y restricciones. 💡 Aprende mientras te diviertes y compites con tus compañeros. 🏆 Objetivo: Responde correctamente y ¡sube al podio de los ganadores!
Kahoot
DML (Data Manipulation Language)
Indice DML
El lenguaje DML
La orden SELECT
Subconsultas
Inserción, modificación y borrado de datos
Realización de consultas
El DML (Data Manipulation Language), lenguaje de manipulación de datos, incluye ordenes que permiten al usuario:
La orden SELECT
Antes de realizar una consulta sobre la Base de Datos, para recuperar información, tendremos que:
- Decidir qué tablas están implicadas en la consulta y ponerlas en el FROM.
- Ver cuáles son las relaciones entre las tablas, seleccionar las relevantes para la consulta en cuestión
- Poner las condiciones en el WHERE, ORDER BY u otras.
- Fijar las columnas a mostrar en el SELECT.
Ejemplo sencillo SELECT Tipo, Modelo FROM Pieza WHERE Precio>3;Alias Los alias sirven para dar otro nombre a una columna SELECT id_trabajo AS identificador, nombre FROM trabajos;
No es obligatorio utilizar la palabra AS, es igualmente válido dejar un espacio en blanco antes del alias:
Uso del asterisco El símbolo * (asterisco) sirve para seleccionar todas las columnas de una tabla.
Cálculos aritméticos
Los operadores + (suma), - (resta), * (multiplicación) y / (división), se pueden utilizar para hacer cálculos en las consultas. Cuando se utilizan como expresión en una consulta SELECT. No modifican los datos originales sino que como resultado de la vista generada por SELECT SELECT nombre, precio, precio * 1.16 AS precio_con_iva FROM articulos;
La prioridad de esos operadores es la habitual en todos los lenguajes de programación. Tienen más prioridad las operaciones de multiplicación y división que las de suma y la resta. En caso de igualdad de prioridad, se realiza primero la operación que esté más a la izquierda. Como es lógico, se puede evitar cumplir esa prioridad usando paréntesis; el interior de los paréntesis es lo que se ejecuta primero.
condiciones
operadores de comparación
=, <>, >, <, >=, <=.
valores lógicos
AND, OR, NOT
LIKE
comprueba si el valor es nulo
IS NULL
Consultas SELECT de varias tablas
Las bases de datos relacionales almacenan sus datos en varias tablas. Lo normal, en casi cualquier consulta, es requerir datos de varias tablas a la vez. Esto es posible porque los datos de las tablas están ligados por columnas que contienen claves secundarias o externas que permiten relacionar los datos de esa tabla con datos de otra tabla.
Video
Revisamos el producto cartesiano de tablas y la composición interna JOIN ON
Composición externa
El OUTER JOIN incluye las filas que no tienen coincidencias en una de las tablas, llenando los valores faltantes con NULL
LEFT JOIN
RIGHT JOIN
CROSS JOIN
Devuelve todas las filas de la tabla izquierda aunque no tengan coincidencias en la tabla derecha
El RIGHT JOIN es similar al INNER JOIN, solo que al seleccionarlo muestra todos los valores de la tabla de la derecha, aunque no tenga correspondencia en la tabla de la izquierda
Es un tipo especial de JOIN que devuelve el producto cartesiano entre las tablas que forman parte de la UNION. Se comporta igual que el INNER JOIN como si no tuviera la parte del “ON”
+ info
Consultas de Valores Agrupados
La cláusula GROUP BY divide la tabla en grupos con las líneas del mismo valor para uno o más atributos .Si se aplica una SELECT a una tabla agrupada , cada expresión de la selección debe dar como resultado un único valor por grupo.
Obtener la edad media de los ciclistas de cada equipo SELECT AVG(edad) FROM ciclista GROUP BY nomequipo ;
+ info
SELECT con la cláusula ORDER BY
Las expresiones de la cláusula ORDER BY pueden ser cualquiera que haga referencia a una columna o a cálculos sobre la columna. Ejemplo: SELECT nombre,apellido1,apellido2 FROM alumnos ORDER BY apellido1, apellido2, nombre;
+ info
Comando LIMIT
El comando LIMIT se utiliza en MySQL para restringir la cantidad de filas que se devuelven en una consulta. SELECT columna1, columna2, ... FROM tabla LIMIT número_de_filas, offset;
Orden de ejecución de las sentencias
Este diagrama ilustra la diferencia entre el orden de escritura (coding order) y el orden de ejecución (execution order) de una consulta SQL. Aunque escribimos las cláusulas SQL en un orden específico, el motor de la base de datos las procesa en un orden diferente
+ info
La claúsula HAVING
HAVING es a GROUP BY lo que WHERE es a SELECT . Sirve para restringir el número de filas devueltas por GROUP BY. La cláusula HAVING se puede referir a funciones agregadas, a las que una cláusula WHERE no puede
Operador Unión
Combina filas de 2 tablas en una única tabla. Tiene varias restricciones :
Ambas tablas deben contener el mismo número de columnas. El tipo de datos de cada columna en la 1ª tabla debe ser el mismo que el tipo de datos de la columna correspondiente en la 2ª tabla. Ninguna de las dos tablas pueden estar ordenada con la cláusula ORDER BY. Sin embargo, los resultados combinados pueden ser ordenados.
+ info
Participa en el crucigrama interactivo sobre sentencias SELECT
¡Es hora de poner a prueba lo que has aprendido! 🖥️ Completa el crucigrama y demuestra tu dominio sobre las consultas SQL 🔍 Conocer las sentencias SELECT y otras funciones clave nunca fue tan divertido 💡 ¡Refuerza lo aprendido mientras te diviertes resolviendo pistas!
Wordwall
Consultas complejas. Funciones de ventana
Una función ventana SQL realiza cálculos a través de un conjunto de filas de la tabla que están relacionadas con la fila actual. Este conjunto de filas se llama ventana o marco de ventana - de ahí viene el término "funciones ventana".Las funciones ventana se definen utilizando la cláusula OVER(). Se pueden incluir cláusulas adicionales dentro de la cláusula OVER() para definir aún más la ventana (PARTITION BY y ORDER BY)
+ info
Consultas complejas CTE.
Las expresiones comunes de tabla (CTEs) permiten asignar un nombre a un conjunto de resultados temporal y luego referirse a ese conjunto de resultados por su nombre (como si fuera una tabla o una vista) en las sentencias SELECT, INSERT, UPDATE, o DELETE. La sintaxis básica de lasCTE en MySQL puede resumirse como sigue: WITH cte_name (column_list) AS ( query ) SELECT * FROM cte_name;
+ info
Consultas complejas CTE.
Las expresiones comunes de tabla (CTEs) permiten asignar un nombre a un conjunto de resultados temporal y luego referirse a ese conjunto de resultados por su nombre (como si fuera una tabla o una vista) en las sentencias SELECT, INSERT, UPDATE, o DELETE. La sintaxis básica de lasCTE en MySQL puede resumirse como sigue: WITH cte_name (column_list) AS ( query ) SELECT * FROM cte_name;
+ info
INSERCIÓN DE DATOS
Añadir datos a una tabla se realiza mediante la instrucción INSERT. INSERT INTO tabla [(listaDeColumnas)] VALUES (valor1 [,valor2 ...]) La tabla representa la tabla a la que queremos añadir el registro y los valores que siguen a la cláusula VALUES, son los valores que damos a los distintos campos del registro. Si no se especifica la lista de campos, la lista de valores debe seguir el orden de las columnas según fueron creados
+ info
Modificación de datos
La modificación de los datos de las filas se realiza mediante la instrucción UPDATE.Su sintaxis es la siguiente: UPDATE tabla SET columna1=valor1 [,columna2=valor2...] [WHERE condición]; Se modifican las columnas indicadas en el apartado SET con los valores indicados. La cláusula WHERE permite especificar qué registros serán modificados.
Borrado de datos
Se realiza mediante la instrucción DELETE:DELETE [FROM] tabla [WHERE condición]; Hay que tener en cuenta que el borrado de un registro no puede provocar fallos de integridad y que la opción de integridad ON DELETE CASCADE hace que no sólo se borren las filas indicadas, sino todas los relacionadas.
+ info
Participa en el Quizz interactivo sobre SQL y DML.
🧠 Reta tus conocimientos sobre sentencias SQL de manipulación de datos 💡 Aprende mientras te diviertes y compites con tus compañeros. 🏆 Objetivo: Responde correctamente y ¡sube al podio de los ganadores!
Quizz
Herramientas Gráficas
Herramientas gráficas proporcionadas por Mysql
MySQL Workbench
Herramientes del gestor. PhpMyAdmin
Gestor de MySQL con interfaz web
Herramientas externas al gestor
DBeaver
Bibliografía
Silberschatz, H. Korth & S. Sudarskhan. Fundamentos de Bases de Datos. 6ª Edición. McGraw Hill. 2014.Jorge Sanchez, profesor de informática. Manuales, ejercicios y documentos sobre cursos de informática. (n.d.). jorgesanchez.net. https://jorgesanchez.net/bd Cliente MySQL: Repasamos las mejores interfaces gráficas | blog de Arsys. (2024, 4). Arsys. https://www.arsys.es/blog/interfaces-graficas-mysql Javi Castillo J. (2023, November 15). Consultas SELECT en SQL de varias tablas [Video]. YouTube. https://www.youtube.com/watch?v=Yxia2I46EGs Programación Fácil. (2023, June 29). ¿Cómo se utilizan las SUBCONSULTAS en SQL?- MÁSTER EN SQL #19 [Video]. YouTube. https://www.youtube.com/watch?v=SDOWm-wD_VE Jayaram, P. (2019, November 4). Revisión, ejemplos Y USO de SQL union. SQL Shack - articles about database auditing, server performance, data recovery, and more. https://www.sqlshack.com/es/revision-ejemplos-y-uso-de-sql-union/ Join MySQL: La distintas formas de union entre Tablas. (n.d.). Generación de Leads Cualificados | Premium Leads. https://www.premiumleads.com/blog/desarrollo/join-mysql-la-distintas-formas-de-union-entre-tablas/ Las CTE de MySQL Y Como Utilizarlas. (2024, October 3). LearnSQL.es. https://learnsql.es/blog/las-cte-de-mysql-y-como-utilizarlas/ Una vision general de las funciones de ventana de MySQL. (2023, July 27). LearnSQL.es. https://learnsql.es/blog/una-vision-general-de-las-funciones-de-ventana-de-mysql/
Gracias!
Espero que hayas disfrutado de esta unidad didáctica!!
Restricciones de tabla
Por ejemplo, en una base de datos bancaria, una tabla llamada prestatarios_calificados podría necesitar verificar si las personas tienen una cuenta bancaria y la capacidad de ofrecer garantías para poder asingarles un préstamo. Podría tener sentido incluir ambos en el mismo CHECK
clave primaria
Para añadir un índice de clave primaria en una tabla de MySQL, debemos utilizar la instrucción ALTER TABLE seguida de la cláusula ADD PRIMARY KEY
FLOAT
Se utiliza en Mysql para almacenar números en coma flotante de precisión simple. Es más eficiente en términos de almacenamiento que DOUBLE, pero puede perder precisión para valores muy grandes o pequeños. Un número de coma flotante con precisión sencilla tiene una precisión de 7 decimales aproximadamente. Puede almacenar valores como 12345.678.
Los valores permitidos son de -3.402823466E+38 a - 1.175494351E-38 con signo y de 1.175494351E-38 a 3.402823466E+38 con signo
Criterio de ordenación
Normalmente ordena en ascendente, pero si usamos DESC ordenará en descendente: SELECT nombre, apellido1, apellido2, f_n fecha_nacimiento FROM alumnos ORDER BY f_n DESC; Mostrará la lista de alumnos ordenada de forma que aparezcan primero los más jóvenes.
CASCADE
CASCADE significa que se elimina la tabla y todas las restricciones y vistas donde se encuentra alguna de sus columnas. Precaución: Puede tener consecuencias no deseadas si hay múltiples dependencias. La siguiente sentencia elimina la tabla empleados y todos los elementos relacionados. Si otras tablas o vistas dependen de empleados, se eliminarán también. DROP TABLE empleados CASCADE;
Coma flotante Double(M,D)
En Mysql es un número con coma flotante de doble precisión que tiene una precisión aproximada de 15 decimales. Puede almacenar valores como 156.79769313486231.
Los valores permitidos con signo sonde -1.7976931348623157E+308 a -2.2250738585072014E-308, 0,y sin signo de 2.2250738585072014E-308 a 1.7976931348623157E+308
M es la cantidad máxima de dígitos (precisión total). D es la cantidad de dígitos después del punto decimal.
DATETIME
En Mysql Almacena fecha y hora con el formato 'YYYY-MM-DD HH:MM:SS'. Permite almacenar fechas en el rango desde '1000-01-01 00:00:00' hasta '9999-12-31 23:59:59'. Para ello utiliza 8 bytes de almacenamiento Puede almacenar fracciones de segundo hasta 6 dígitos, lo que aumenta el tamaño. Un ejemplo sería '2024-11-16 14:30:00'
Restricciones DEFAULT y NOT NULL
La cláusula DEFAULT especifica un valor por omisión para la columna que va a utilizarse cuando se inserte una nueva fila en la tabla y no se especifique un valor.
Puede especificarse NOT NULL para asegurar que la columna siempre contiene datos
Restricciones FOREIGN KEY
Podemos definir una FOREIGN KEY (clave ajena) que indique que el valor de la lista de columnas debe existir en otra tabla. ¿Que ocurrirá si queremos borrar o modificar los valores de la clave primaria a la que hace referencia la clave ajena?, El sistema impedirá que hagamos esta operación porque rompería la integridad de la BD. Algunas de las opciones son: CASCADE, SET NULL, SET DEFAULT, NO ACTION.
BLOB
Aunque no es un tipo texto propiamente dicho puede utilizarse para guardar información binaria, contenido de un archivo JPG, un archivo comprimido ZIP , etc., y texto cuya longitud supere la longitud permitida por los tipos CHAR y VARCHAR. Este tipo diferencia entre mayúsculas y minúsculas. Los tipos TINYBLOB, MEDIUMBLOB Y LONGBLOB son BLOB de diferentes tamaños.
Diccionario de datos
Para la cumplimentación de los metadatos solicitados en un diccionario de datos, existen guías y plantillas prediseñadas como el siguiente ejemplo proporcionado por el Departamento de Agricultura de los EEUU
Estructura de una consulta SELECT
SELECT [ALL | DISTINCT ] columnas seleccionadas FROM tabla [WHERE expresión_condicional] [ORDER BY columnas de ordenación ALL : Permite la aparición de filas idénticas (valor por defecto). DISTINCT: No permite la aparición de filas idénticas.
YEAR
Permite almacenar un año en formato de dos o cuatro dígitos. El valor por defecto está en formato de cuatro dígitos. En formato de cuatro dígitos, los valores permitidos son de 1901 a 2155, y 0000 Un ejemplo sería 2024
Tipos numéricos
Existen seis tipos básicos para almacenar números enteros, diferenciados por el rango de valores que pueden almacenar.
¿Hacemos una consulta de UNION?
Por ejemplo, la tabla ‘A’ tiene 1,2 y 3 y la tabla ‘B’ tiene 3,4,5. Se aprecia como en esta operación, combina las dos tablas y se eliminan los duplicados
Restricción CHECK
En el siguiente ejemplo, se restringe la edad a un valor mayor o igual a 0 mediante la resricción CHECK
Tipo Fecha y Hora
En MySQL, los tipos de datos para fechas y horas permiten almacenar y manipular información temporal con precisión y flexibilidad. Incluyen DATE para fechas (AAAA-MM-DD), TIME para horas (HH:MM:SS), DATETIME para la combinación de fecha y hora (AAAA-MM-DD HH:MM:SS), TIMESTAMP para almacenar fecha y hora en formato UTC con soporte para zonas horarias, y YEAR para registrar únicamente el año (AAAA). Estos tipos son esenciales para gestionar eventos cronológicos, realizar cálculos temporales, filtrar datos según intervalos y garantizar la integridad al trabajar con datos temporales en aplicaciones
Restricciones a nivel de columna CHECK
La cláusula CHECK es una expresión lógica que se define con la misma sintaxis que la condición de la cláusula WHERE de la sentencia SELECT. Los predicados que admite son: BETWEEN, LIKE, IN, IS NULL /IS NOT NULL y ALL/ANY,
Restricción CHECK
En el siguiente ejemplo, se restringe la edad a un valor mayor o igual a 0 mediante la resricción CHECK
TIMESTAMP
Almacena una combinación de fecha y hora similar a DATETIME, pero incluye soporte para zonas horarias. Permite almacenar fechas desde '1970-01-01 00:00:01 UTC' hasta '2038-01-19 03:14:07 UTC'
ENUM
Es una clase especial de tipo de cadena. Al definir la columna se indican los posibles valores que puede tomar, y posteriormente sólo se podrán guardar en la columna los valores definidos. Internamente MySQL sustituye la cadena por un número, ahorrando espacio en cada inserción.
VARCHAR
Tiene el mismo rango que CHAR, pero guarda los caracteres que realmente introducimos más uno para guardar la longitud de la cadena. También admite el modificador BINARY.
Restricciones PRIMARY KEY
Podemos definir una PRIMARY KEY (clave primaria) para la tabla o definir una columna particular o un conjunto de columnas que sean UNIQUE (que sus valores no se puedan repetir en la tabla).
DATE
Descripción: En Mysql puede almacenar fechas desde '1000-01-01' hasta '9999-12-31'. Ocupa 3 bytes de espacio de almacenamiento Un ejempo podría ser '2024-11-16'
DECIMAL(M, D)
Aunque no es un tipo en coma flotante como FLOAT o DOUBLE, se utiliza para almacenar números con decimales. M especifica el número total de dígitos. D especifica el número de dígitos después del punto decimal. Puede almacenar valores como 12345678.90
Clave externa
La tabla pedidos tiene una columna id_cliente que hace referencia a la columna id_cliente de la tabla clientes
CHAR
Permite definir cadenas de texto de longitud fija. La longitud se define entre paréntesis a continuación del tipo y puede estar comprendido entre 0 y 255 caracteres. Admite la modificación BINARY que permite en las consultas diferenciar entre mayúsculas y minúsculas.
RESTRICT
Sólo se permite el borrado de la tabla si no existe ninguna vista o referencia a ella (es decir, si ninguna de sus columnas es clave ajena en otra tabla). Este enfoque es más seguro para evitar eliminaciones accidentales de estructuras interrelacionadas. Ejemplo: DROP TABLE empleados RESTRICT;
TIME
Almacena solo un valor de hora (sin fecha) en formato. 'HH:MM:SS'. Ocupa 3 bytes de espacio de almacenamiento. Un ejemplo sería '14:30:00'
Group by
La sintaxis de una referencia a una función agrupada es la siguiente: { avg | max | min | sum | count } ( [all | distinct] expresión_escalar ) | count(*) Para las funciones sum y avg los argumentos deben ser numéricos distinct indica que los valores redundantes sean eliminados antes de que se realice el cálculo correspondiente. (no se puede usar delante de count(*)). Los cálculos se realizan después de la selección y de aplicar las condiciones. Los valores nulos son eliminados antes de realizar los cálculos (incluido el count). Ejemplo: Nombre y edad del mayor ciclista de cada equipo. SELECT C.nombre, MAX(C.edad) FROM ciclista C GROUP BY C.nomequipo;
Tipos numéricos enteros
Los tipos numéricos enteros se utilizan para almacenar números enteros sin decimales
Orden de ejecución
Cuando el motor de la base de datos ejecuta la consulta, sigue un flujo diferente, basado en cómo se obtienen y filtran los datos. El orden real de ejecución es: FROM: Primero se identifican las tablas WHERE: Se filtran las filas GROUP BY: Se agrupan los datos . HAVING: Se filtran los grupos resultantes SELECT: Se seleccionan las columnas que queremos en el resultado. ORDER BY: Se ordenan los datos según los criterios establecidos. LIMIT: Finalmente, se limita el número de registros devueltos.