Base de datos con MySQL


Introducción

Cada vez que vas a un lugar te solicitan tus datos en algún comercio o establecimiento, los recopilan para poder realizar distintas operaciones con esta información. Por ejemplo, cuando te solicitan tu correo electrónico es para enviarte publicidad y mantenerte informado de las últimas ofertas en el establecimiento comercial, pero ¿te imaginas como pueden administrar la información de tantas personas?

Pues esto lo realizan a través una base de datos y un programa que la gestiona que se llama manejador de base datos. En este tema aprenderás como diseñar y manipular las bases de datos relacionales con MySQL, que es el manejador de base de datos o, por sus siglas en inglés, DBMS.


Explicación

Oracle (s.f.) define una base de datos como una recopilación organizada de información o datos estructurados que normalmente se almacena de forma electrónica en un sistema informático.

Existen diferentes tipos de base de datos. Estos son algunos tipos (Oracle, s.f.):

Figura 1. Tipos de bases de datos.

Las bases de datos requieren de un programa para gestionarlas, este también es conocido como manejador de base de datos (DBMS).

Diseño y estructura de una base de datos

El diseño y la estructura de una base de datos es fundamental en el desarrollo de un sistema de información. Para realizar el diseño te puedes apoyar en varios modelos como el modelo jerárquico, en red, entidad-relación, orientado por objetos, documental, etc. En este tema abordaremos el modelo entidad-relación por ser uno de los más comunes en la industria del software.

El modelo entidad-relación es simple y explícito, permite expresar una notación gráfica de la base de datos. Los elementos que conforman un diagrama entidad relación son los siguientes:

Figura 2. Elementos de un diagrama entidad relación.

En resumen, las tablas que conforman la base de datos son llamadas entidades, los datos dentro de las tablas son los atributos y las conexiones entre las tablas son las relaciones.

Las entidades y sus atributos se representan gráficamente de la siguiente forma:

Figura 3. Representación gráfica de una entidad y un atributo.

La relación que existe entre dos entidades puede variar de acuerdo con la cantidad. Por ejemplo, un alumno puede estar relacionado a varias asignaturas, es decir, tiene una relación “uno a muchos”, a esto se le llama cardinalidad. Existen diferentes notaciones para expresar gráficamente la cardinalidad, la más común es la notación de patas de gallo que se representa por medio de los símbolos:

Figura 4. Representación gráfica de cardinalidad en notación de patas de gallo.

Lenguaje de Consulta Estructurada (structured query language)

“El SQL es un lenguaje de programación que utilizan casi todas las bases de datos relacionales para consultar, manipular y definir los datos, además de para proporcionar control de acceso” (Oracle, s.f.).

En SQL, las sentencias principales se dividen en dos categorías:

  • Lenguaje de definición de datos (data definition language, DDL)
    • CREATE

La sentencia CREATE se usa para crear objetos como bases de datos, tablas, funciones, vistas, procedimientos almacenados, índices, etcétera.

CREATE TABLE personas(

 id int(11),

 nombre varchar(100),

 apellido varchar(50),

 direccion varchar(500),

 telefono varchar(20),

 email varchar(50)

);

Tabla 1. Sentencia CREATE.

    • ALTER

La sentencia ALTER sirve para alterar los objetos de la base de datos.

ALTER TABLE personas

MODIFY email varchar(100);

 

ALTER TABLE personas

ADD edad int;

Tabla 2. Sentencia ALTER.

    • DROP

La sentencia DROP se necesita para eliminar cualquier objeto en la base de datos.

DROP TABLE personas;

Tabla 3. Sentencia DROP.

    • TRUNCATE

La sentencia TRUNCATE se usa para eliminar los registros dentro de la base de datos. A diferencia de la sentencia anterior, esta no elimina el objeto.

TRUNCATE TABLE personas;

Tabla 4. Sentencia TRUNCATE.

  • Lenguaje de manipulación de datos (data manipulation language, DML)
    • SELECT

La sentencia SELECT se requiere para seleccionar los datos de una tabla.

SELECT * FROM personas;

Tabla 5. Sentencia SELECT.

    • INSERT

La sentencia INSERT se usa para insertar datos en una tabla.

INSERT INTO personas ( id, nombre, apellido, direccion, telefono, email, edad )

VALUES ( 1, 'Enrique', 'Suarez', 'Principal 2, Mexico', '5512345678', 'enriquesuarez@mail.com', 20);

Tabla 6. Sentencia INSERT.

    • DELETE

La sentencia DELETE se necesita para eliminar los datos en una tabla.

DELETE FROM personas;

Tabla 7. Sentencia DELETE.

    • UPDATE

La sentencia UPDATE se usa para actualizar los datos en una tabla.

UPDATE personas SET nombre = 'Enrique Gonzalez';

Tabla 8. Sentencia UPDATE.

Para que las sentencias DML puedan dar datos más precisos en la manipulación de los datos, existen cláusulas, que son condiciones que se agregan a las sentencias para optimizar las consultas. Las cláusulas más comunes son las siguientes:

  • WHERE

Cláusula que sirve para delimitar los datos que manipularán. En el siguiente ejemplo se muestra la consulta a una tabla y únicamente devolverá los datos que cumplan con la condición.

Para esta cláusula en particular es necesario usar los operadores relacionales que vinculan un campo con un valor para que sea comparado. Son los siguientes:

Figura 5. Operadores relacionales en MySQL.

Y se ocupan de la siguiente manera:

SELECT *

FROM personas

WHERE edad > 18;

Tabla 9. Ejemplo de cláusula WHERE.

  • DISTINCT

Cláusula que sirve para quitar los duplicados en una tabla, es decir, si deseas visualizar los datos de una columna sin que se repitan.

SELECT DISTINCT nombre

FROM personas;

Tabla 10. Ejemplo de cláusula DISTINCT.

  • ORDER BY

Cláusula que sirve para ordenar los datos en base a una columna de la tabla. Se pueden ordenar de forma ascendente (ASC) o descendiente (DESC).

SELECT *

FROM personas

ORDER BY nombre ASC;

 

SELECT *

FROM personas

ORDER BY edad DESC;

Tabla 11. Ejemplo de la cláusula ORDER BY.

  • GROUP BY

Cláusula que sirve para agrupar los datos por una o más columnas. Junto con esta cláusula se pueden ocupar los operadores analíticos estadísticos como los siguientes:

Figura 6. Operadores analíticos en MySQL.

Y se pueden ocupar como se muestra a continuación:

SELECT edad, COUNT(*)

FROM personas

GROUP BY edad;

Tabla 12. Ejemplo de la cláusula GROUP BY.

  • HAVING

Cláusula que se ocupa junto con la cláusula GROUP BY para validar una condición.

SELECT edad, COUNT(*)

FROM personas

GROUP BY edad

HAVING edad > 18;

Tabla 12. Ejemplo la cláusula HAVING.

También existen los operadores lógicos, que permiten que agregar más de una condición a las cláusulas. Los operadores lógicos son los siguientes:

  • AND. Es verdadero cuando la primera y la segunda condición se cumplen.
  • OR. Es verdadero si alguna de las condiciones se cumple.

SELECT *

FROM personas

WHERE edad > 18 AND edad < 40;

 

SELECT *

FROM personas

WHERE nombre = 'Juan' OR nombre ='Maria';

Tabla 13. Ejemplo de operadores lógicos.

Integridad referencial

En MySQL se pueden unir dos tablas por medio de alguno de sus campos y el campo por el cual se unen deben existir en ambas tablas, de tal manera que exista una congruencia entre los campos; a esto se le llama integridad referencial.

Para que exista la integridad referencial en una base de datos deben existir llaves que serán las que protegerán la congruencia en la base de datos.

Existen dos tipos de llaves:

Figura 7. Tipos de llaves.

El manual de referencia de MySQL (2021) dice que se debe tener en cuenta que las claves foráneas en SQL se usan para chequear y forzar integridad referencial, no para unir tablas.

Índices

Los índices se utilizan para localizar los registros de una forma más rápida. “La mejor manera de mejorar el rendimiento de las operaciones SELECT es crear índices en una o más de las de las columnas que se comprueban en la consulta” (MySQL, 2021).

Haciendo una analogía, cuando tú buscas un tema en específico en un libro, buscas en su tabla de contenido o índice para encontrar el tema más rápido e ir directamente a la página en donde se encuentra. Funciona igual en los índices de las bases de datos, nos sirven para optimizar las búsquedas. “Las entradas de los índices actúan como punteros a las filas de la tabla, permitiendo la consulta determinar rápidamente qué filas coinciden con una condición en la cláusula WHERE y recuperar los otros valores de columna para esas filas. Todos los tipos de datos de MySQL pueden ser indexados” (MySQL, 2021)

Para crear un índice en una tabla existente se hace modificando la tabla y agregando el índice.

ALTER TABLE personas ADD INDEX idx_nombre (nombre);

Tabla 14. Creación de un índice en una tabla existente.

Si deseas eliminar algún índice, de igual forma modificas la tabla, pero en lugar de agregar, eliminas con la sentencia DROP.

ALTER TABLE personas DROP INDEX idx_nombre;

Tabla 14. Eliminar un índice.

En caso de que quieras visualizar los índices que posee una tabla, lo realizas con la sentencia SHOW.

SHOW INDEX FROM personas;

Tabla 14. Visualizar los índices de la tabla.


Cierre

En un mundo en donde la tecnología es parte del día a día, la información es el pilar fundamental y las bases de datos son los contenedores de datos que se convierten en herramientas poderosas si las sabemos manipular. Las bases de datos deben ser fácilmente legibles y ordenadas. Eso se logra gracias a los gestores de bases de datos o DBMS, por sus siglas en inglés. Uno de los más utilizados es MySQL que nos ofrece las ventajas de la administración de bases relacionales.

Los principales componentes de MySQL son los siguientes:

Figura 8. Componentes DDL.

Figura 9. Componentes DML.

 


Checkpoint

Asegúrate de:

  • Comprender el uso de las bases de datos en la vida cotidiana para que puedas aplicar su uso en una situación personal o laboral.
  • Reconocer las principales cláusulas y los operadores en MySQL para aplicarlos en una base de datos de un caso real.
  • Aplicar el uso de los índices en las bases de datos para optimizar las búsquedas.
  • Implementar la integridad referencial para respetar la relación entre las tablas de la base de datos.

Bibliografía

  • IBM. (s.f). Claves primarias y foráneas. Recuperado de https://www.ibm.com/docs/es/ida/9.1.2?topic=entities-primary-foreign-keys
  • MySQL. (2021). MySQL 8.0 Reference Manual. Recuperado de https://downloads.mysql.com/docs/refman-8.0-en.a4.pdf
  • Oracle. (s.f). ¿Qué es una base de datos? Recuperado de https://www.oracle.com/mx/database/what-is-database/

La obra presentada es propiedad de ENSEÑANZA E INVESTIGACIÓN SUPERIOR A.C. (UNIVERSIDAD TECMILENIO), protegida por la Ley Federal de Derecho de Autor; la alteración o deformación de una obra, así como su reproducción, exhibición o ejecución pública sin el consentimiento de su autor y titular de los derechos correspondientes es constitutivo de un delito tipificado en la Ley Federal de Derechos de Autor, así como en las Leyes Internacionales de Derecho de Autor.

El uso de imágenes, fragmentos de videos, fragmentos de eventos culturales, programas y demás material que sea objeto de protección de los derechos de autor, es exclusivamente para fines educativos e informativos, y cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por UNIVERSIDAD TECMILENIO.

Queda prohibido copiar, reproducir, distribuir, publicar, transmitir, difundir, o en cualquier modo explotar cualquier parte de esta obra sin la autorización previa por escrito de UNIVERSIDAD TECMILENIO. Sin embargo, usted podrá bajar material a su computadora personal para uso exclusivamente personal o educacional y no comercial limitado a una copia por página. No se podrá remover o alterar de la copia ninguna leyenda de Derechos de Autor o la que manifieste la autoría del material.