MySQL
MySQL
Introducción
En programación es prácticamente inevitable trabajar con algún tipo de sistema de gestión de
bases de datos. Cualquier programa que imaginemos tarde o temprano necesitará almacenar
datos en algún lugar, como mínimo para poder almacenar la lista de usuarios autorizados, sus
permisos y propiedades.
La definición
Una base de datos relacional (RDB) es una forma de estructurar información en tablas, filas y
columnas. Un RDB tiene la capacidad de establecer vínculos (o relaciones) entre información
mediante la unión de tablas, lo que facilita la comprensión y la obtención de estadísticas sobre
la relación entre varios datos.
Desarrollado por EF Codd desde IBM en la década de 1970, el modelo de base de datos
relacional permite que cualquier tabla se relacione con otra mediante un atributo común. En lugar
de usar estructuras jerárquicas para organizar los datos, Codd propuso un cambio a un modelo
de datos en el que los datos se almacenan, se consultan y se relacionan en tablas sin reorganizar
las tablas que los contienen.
Considera la base de datos relacional como una colección de archivos de hojas de cálculo que
ayudan a las empresas a organizar, administrar y relacionar datos. En el modelo de base de
datos relacional, cada “hoja de cálculo” es una tabla que almacena información, representada
como columnas (atributos) y filas (registros o tuplas).
Los atributos (columnas) especifican un tipo de datos, y cada registro (o fila) contiene el valor de
ese tipo de datos específico. Todas las tablas de una base de datos relacional tienen un atributo
conocido como clave primaria, que es un identificador único de una fila, y cada fila se puede usar
para crear una relación entre tablas diferentes mediante una clave externa (una referencia a una
clave primaria de otra tabla existente).
version: '2'
services:
mysql:
image: mysql
ports:
- '3306:3306'
environment:
- MYSQL_ROOT_PASSWORD=root
Luego simplemente nos posicionamos en donde hemos creado este archivo y ejecutamos el
comando:
docker compose up
Ahora que ya tenemos nuestra base de datos corriendo y nuestra tool para conectarnos debemos
utilizar el siguiente “connection string” (así se denomina al protocolo que utilizamos para
conectarnos a una base de datos, esto se utilizará en nuestras aplicaciones y todas aquellas que
se quieran conectar a dicha instancia).
server=localhost;port=3306;user=root;password=root;Persist Security
Info=False;
Para crear una tabla en nuestro nuevo esquema podemos utilizar un script como el que sigue:
En caso de que queramos borrar dicha tabla, podemos utilizar el siguiente script:
Customer Table:
Reemplazamos “usuario” por nuestro usuario, “tabla” por la tabla que queremos afectar y
“archivo.sql” por el archivo sql que deseamos importar. Es importante tener en cuenta que
deberíamos tener creada la tabla (aunque esté vacía) antes de hacer la importación.
SELECT
SELECT / seleccionar / obtener / retrieve, son las distintas palabras que utilizamos para este
comando, el cual utilizamos básicamente para obtener un conjunto de registros.
Ejemplos:
- Ahora un poco más complejo, supongamos que queremos obtener el listado de órdenes
con el nombre del cliente que ha hecho el pedido.
Veamos que el ejemplo es mucho más complejo, ya que cruzamos dos tablas utilizando
la clave foránea customer_id. Además hemos utilizado alias para las columnas y para las
tablas.
INSERT
La sentencia INSERT se utiliza para agregar registros a las tablas.
Ejemplos:
UPDATE
La sentencia UPDATE se utiliza obviamente para actualizar registros existentes en las distintas
tablas. Es importante recalcar que si no ponemos una cláusula WHERE, podemos actualizar
todos los registros de dicha tabla.
Ejemplo:
Ejemplo:
JOIN
Existen varios tipos de JOIN, se utiliza para unir tablas, es decir obtener registros de distintas
tablas unidos por alguna referencia. Recordar teoría de conjuntos.
Índices
Un índice es un puntero a una fila de una determinada tabla de nuestra base de datos. Pero…
¿Qué significa exactamente un puntero? Pues bien, un puntero no es más que una referencia
que asocia el valor de una determinada columna (o el conjunto de valores de una serie de
columnas) con las filas que contienen ese valor (o valores) en las columnas que componen el
puntero.
Los índices mejoran el tiempo de recuperación de los datos en las consultas realizadas contra
nuestra base de datos. Pero los índices no son todo ventajas, la creación de índices implica un
aumento en el tiempo de ejecución sobre aquellas consultas de inserción, actualización y
eliminación realizadas sobre los datos afectados por el índice (ya que tendrán que actualizarlo).
Del mismo modo, los índices necesitan un espacio para almacenarse, por lo que también tienen
un coste adicional en forma de espacio en disco.
La construcción de los índices es el primer paso para realizar optimizaciones en las consultas
realizadas contra nuestra base de datos. Por ello, es importante conocer bien su funcionamiento
y los efectos colaterales que pueden producir.
Ejemplo: