MySQL: Qué es y para qué sirve

Categoría:  Soporte y Ayuda, Sysadmin
Fecha: 21/10/2022
En el mundo de la programación es necesario trabajar con grandes cantidades de datos e información. Gracias a las bases de datos, dicha información puede estar almacenada y organizada de manera que puede ser consultada y modificada por una aplicación o web.

Para trabajar con bases de datos existen herramientas de gestión que permiten administrarlas de manera fácil y eficiente. MySQL es un sistema de gestión de bases de datos relacionales de código abierto (open source) que se basa en el modelo "cliente - servidor" y del cual te voy a hablar más en profundidad en este artículo. ¡Sigue leyendo!

Índice del artículo
  • Qué es una base de datos
  • Qué es SQL
  • Sentencias de SQL con ejemplos
  • Qué es MySQL
  • MySQL vs otros sistemas de gestión de bases de datos
  • Conclusión


MySQL es el sistema de gestión de bases de datos "open source" más conocido del mercado.

Qué es una base de datos


Antes de nada, voy a repasar un par de conceptos previos a explicarte qué es MySQL.

Una base de datos es un conjunto organizado de información que, en este caso, se almacena de forma electrónica dentro de un sistema informático.

Existe un tipo de base de datos llamado base de datos relacional, que es el que nos interesa en este artículo. En una base de datos relacional la información está estructurada en tablas (conjunto de datos) con columnas (campos) y filas (registros). Los conjuntos de datos o tablas pueden estar relacionados entre sí a través de claves primarias y foráneas. Estás claves son simplemente unos identificadores que permiten relacionar un conjunto de datos con otro.

Un ejemplo básico sería la base de datos de una tienda online, en la que podría haber una tabla para los usuarios y otra para los pedidos. En la tabla "usuarios" estarían, por ejemplo, las columnas de ID, nombre, email y contraseña. Cada fila sería un registro de un nuevo usuario. La fila ID contendría las claves primarias o identificadores únicos de cada usuario.

Una base de datos relacional está organizada en tablas, columnas y filas.

En la tabla "pedidos" estarían las columnas ID (con un identificador único para cada pedido), artículo e ID cliente. La columna "ID cliente" contendría claves foráneas, que se corresponden con el ID del usuario que haya realizado cada pedido.

Se pueden relacionar tablas de una base de datos relacional entre sí a través de las claves primarias y foráneas.

Este es un ejemplo muy básico de una base de datos relacional, pero realmente se pueden manejar y organizar conjuntos de datos mucho más complejos.

Qué es SQL


SQL son las siglas en inglés de Lenguaje de Consulta Estructurada (Structured Query Language). Se trata de un tipo de lenguaje de programación que sirve para consultar y modificar datos de una base de datos. Actualmente, es el lenguaje más utilizado para las bases de datos relacionales.
Cuando hablamos de SQL es para referirnos al lenguaje en sí y no hay que confundirlo con MySQL, que es un gestor de bases de datos.

Con SQL es posible insertar datos, modificarlos, consultarlos o eliminarlos utilizando una serie de comandos o sentencias (SQL Queries). A continuación, te mostraré algunos ejemplos.

Sentencias de SQL con ejemplos


Como te decía, el lenguaje SQL permite el uso de una serie de sentencias mediante las cuales puedes manipular los datos de la base de datos. Para poder explicarte las más importantes, voy a basarme en esta base de datos con una tabla de ejemplo llamada "pokemon":

El lenguaje SQL permite utilizar una serie de sentencias o comandos para recuperar, consultar y manipular la información de la base de datos.

SELECT: Utilizada para consultar y recuperar datos.
SELECT * FROM pokemon

Para seleccionar todo (el asterisco representa "todo") dentro de la tabla "pokemon". Es decir, todas las columnas (ID, nombre, tipo, altura...) y todos las filas (registros). En este caso, devolvería toda la información.

Resultado:

  1. Bulbasaur - Planta - 0.7 - 6.9 - 45

  2. Charmander - Fuego - 0.6 - 8.5 - 39

  3. Squirtle - Agua - 0.5 - 9.0 - 44

  4. Pikachu - Eléctrico - 0.4 - 6.0 - 35

  5. Ditto - Normal - 0.3 - 4.0 - 48

  6. Snorlax - Normal - 2.1 - 460.0 - 160


SELECT nombre, tipo FROM pokemon

En lugar de un asterisco para seleccionar todo, puedes elegir qué columnas quieres seleccionar. El ejemplo anterior devolvería solamente las columnas nombre y tipo, dentro de la tabla:

Resultado:
Bulbasaur - Planta
Charmander - Fuego
Squirtle - Agua
Pikachu - Eléctrico
Ditto - Normal
Snorlax - Normal

SELECT DISTINCT: Igual que "SELECT" pero evitando valores repetidos.
SELECT DISTINCT tipo FROM pokemon

Devolvería toda la columna “tipo” pero sin repetir valores./

Resultado:
Planta
Fuego
Agua
Eléctrico
Normal

WHERE: Sirve para filtrar y extraer registros de la base de datos con determinadas condiciones. Por ejemplo:
SELECT * FROM pokemon WHERE tipo='Normal'

Devolvería todo (ID, nombre, tipo, altura, peso y HP) de la tabla “pokemon” pero solamente de los que su campo tipo sea “normal”. Es decir:

Resultado:
5 - Ditto - Normal - 0.3 - 4.0 - 48
6 - Snorlax - Normal - 2.1 - 460.0 - 160

AND, OR y NOT: Son operadores que se pueden usar junto con “WHERE”.
SELECT nombre FROM pokemon WHERE tipo='Normal' AND peso=4.0

Resultado:
Ditto
SELECT nombre FROM pokemon WHERE tipo='Agua' OR tipo=’Normal’

Resultado:
Squirtle
Ditto
Snorlax
SELECT nombre FROM pokemon WHERE NOT tipo=’Normal’

Resultado:
Bulbasaur
Charmander
Squirtle
Pikachu

ORDER BY: Para ordenar la consulta realizada según un valor o valores, tanto de manera ascendente (ASC) cómo descendente (DESC).
SELECT nombre,hp FROM pokemon ORDER BY hp ASC

Resultado:
Pikachu - 35
Charmander - 39
Squirtle - 44
Bulbasaur - 45
Ditto - 48
Snorlax - 160

INSERT INTO: Para añadir un registro nuevo a una tabla de la base de datos. Hay que indicar las columnas con sus respectivos valores.
INSERT INTO pokemon (nombre, tipo, altura, peso, hp)
VALUES ('Mewtwo', 'Psíquico', 2.0, 122.0, 106)

El código anterior insertaría una nueva fila en la tabla “pokemon” con el siguiente registro:
7 - Mewtwo - Psíquico - 2.0 - 122.0 - 106

Cómo puedes ver, no he especificado el ID en la sentencia SQL. Esto es porque en este caso el ID es la clave primaria y es autoincremental, por lo que se añade automáticamente en cada registro.

UPDATE: Para modificar un registro existente en una tabla de la base de datos. Hay que indicar con el comando SET las columnas que queremos modificar, el valor correspondiente y el registro que quieres actualizar. Para esto último, es recomendable utilizar el campo id ya que siempre va a ser un valor único para cada registro.
UPDATE pokemon 
SET altura = 3.0, hp= 305
WHERE id = 6

El código anterior modificaría el registro:
6 - Snorlax - Normal - 2.1 - 460.0 - 160

Con estos nuevos parámetros:
6 - Snorlax - Normal - 3.0 - 460.0 - 305
Es MUY IMPORTANTE que utilices “WHERE” para indicar sobre qué registro vas a hacer los cambios; si no, se actualizarán todos los registros.

DELETE: Para eliminar registros de una tabla de la base de datos.
DELETE FROM pokemon WHERE tipo='normal'

Con el código anterior eliminarías de la tabla “pokemon” todos los registros cuyo tipo sea “normal”.

Al igual que con “UPDATE”, es importante que utilices “WHERE”. De lo contrario, eliminarás todos los registros de la tabla.

Estos son solo algunos ejemplos simples de sentencias SQL que sirven para consultar y alterar tablas de una base de datos. Pero, además de estas, existen otras sentencias (cómo los “JOIN”) para realizar consultas más avanzadas. Además, también es posible crear tablas nuevas con “CREATE TABLE” o incluso una nueva base de datos con “CREATE DATABASE”.

Qué es MySQL


Ahora sí, vamos al lío y vamos a ver qué es MySQL.

MySQL es probablemente el sistema de gestión de bases de datos relacionales de código abierto más conocido del mercado. Fue desarrollado en 1995 por la empresa MySQL AB, que fue adquirida en 2008 por Sun Microsystems y a su vez por Oracle Corporation en 2010.

Un sistema de gestión de bases de datos relacionales o RDBMS como MySQL es simplemente un software pensado para gestionar y administrar bases de datos.

MySQL es el RDBMS más utilizado en aplicaciones web y se puede ejecutar en diferentes sistemas operativos. Por ejemplo, es utilizado en algunos de los CMS más conocidos como WordPress, Drupal o Joomla.

A estas alturas, puede que te estés preguntando cuál es la diferencia entre SQL y MySQL. La respuesta es sencilla:

  • SQL es el lenguaje que se utiliza para consultar y manipular las bases de datos.

  • MySQL es un sistema de gestión de bases de datos relacionales (RDBMS) que sirve para administrar una base de datos utilizando SQL.


Como te comentaba al principio de este artículo, MySQL trabaja de manera relacional, por lo que las bases de datos están organizadas en tablas que se relacionan entre sí a través de claves o índices.

MySQL funciona de manera relacional, de manera que sus tablas pueden estar relacionadas entre ellas.

Además, MySQL se basa en un concepto llamado "modelo cliente-servidor". Esto quiere decir que la información se encuentra centralizada en un servidor (normalmente tu hosting) que recibe y procesa las peticiones. Estas peticiones son realizadas por los diferentes clientes (usuarios que realizan consultas a la base de datos a través de herramientas como phpMyAdmin, por ejemplo) en forma de sentencias SQL.

MySQL se basa en el modelo cliente - servidor.

Dentro del entorno de MySQL existen varios motores de almacenamiento con los que puedes trabajar. Pero, ¿qué es eso de motor de almacenamiento? Es el módulo que se encarga de gestionar (crear, leer y actualizar) los datos de las tablas de la base de datos. Como te decía, en MySQL es posible utilizar diferentes motores de almacenamiento, como MyISAM, InnoDB, CSV o NDB.

En MySQL existen multitud de tipos de datos que puedes utilizar. Cuando creas una tabla con sus respectivos campos, no es lo mismo almacenar un nombre de usuario que una fecha o una contraseña. Por ello, existen distintos tipos de datos. Algunos de ellos son:

Datos numéricos:

  • Tinyint, Int, Smallint, Mediumint, Bigint: Números enteros con signo positivo o negativo.

  • Float y Double: Para números con decimales.

  • Decimal: Parecido a “float” y “double” pero, al contrario que estos, con “decimal” los cálculos son exactos. Por ello, es recomendado para almacenar precios.

  • Boolean: Número entero con valor 0 (falso) o 1 (verdadero).


Datos de cadena (string):

  • Char y Varchar: Para almacenar cadenas de texto. “Char” para cadenas de tamaño fijo y “Varchar” para tamaño variable.

  • Tinyblob, Blob, Mediumblob y Longblob: Para guardar información en formato binario como imágenes, audio, archivos, etc.

  • Set: Para almacenar un conjunto de valores de una lista (hasta un máximo de 64).

  • Enum: Almacena valores de una lista enumerada previamente definida. Es útil, por ejemplo, para almacenar los roles de usuario (administrador, suscriptor, etc.).

  • Tinytext, Text, Mediumtext y Longtext: Para almacenar grandes cantidades de texto.


Datos de fecha:

  • Date: Para almacenar fechas con el formato año/mes/día.

  • Datetime: Para almacenar fecha y hora con el formato año/mes/día/horas/minutos/segundos.

  • Time: Para almacenar una hora con el formato horas/minutos/segundos.

  • Timestamp: Es parecido a “datetime” pero con fecha y hora UTC.

  • Year: Para almacenar el año.


Una de las ventajas de MySQL es que permite el uso de vistas. Las vistas son tablas virtuales que muestran información almacenada en otras tablas de la base de datos. Gracias al uso de las vistas se pueden conseguir:

  • Mejoras en el rendimiento: Al hacer consultas más ligeras sobre consultas más complejas, se consigue optimizar la base de datos MySQL.

  • Mejoras en la privacidad: Ya que puedes dar al usuario sólo la información que consideres oportuna y no toda la tabla.

  • Entorno de pruebas: Puedes realizar pruebas sin miedo a romper nada, ya que estás trabajando sobre tablas virtuales.


Además de las vistas, MySQL también permite utilizar:

  • Procedimientos almacenados: Son fragmentos de código que puedes reutilizar para tareas repetitivas.

  • Funciones almacenadas: Son un conjunto de operaciones SQL que devuelven un solo valor.

  • Triggers: Disparador que se activa cuando ocurre algún evento (insertar, actualizar, borrar, etc.) en una tabla.


Para facilitar el manejo, existen varias interfaces visuales también llamadas GUI (graphical user interface) para MySQL. Algunas de las más utilizadas son MySQL Workbench, BeeKeeper Studio, DBeaver o phpMyAdmin (interfaz web).

MySQL vs otros sistemas de gestión de bases de datos


Aunque es de los más utilizados, MySQL no es el único sistema de gestión de bases de datos. Existen otras alternativas también muy conocidas como MariaDB, MongoDB, PostgreSQL, Microsoft SQL Server o SQLite, entre otras.

Existen otros sistemas alternativos a MySQL.

MariaDB es un proyecto que nace como bifurcación de MySQL en 2009 tras la compra de MySQL por parte de Oracle. Es compatible con aplicaciones web como WordPress y es una de las grandes alternativas a MySQL.

MongoDB es un sistema de base de datos no relacionales de código abierto que surgió en el año 2009. La principal diferencia entre MongoDB y otros sistemas de bases de datos, como MySQL, es que no organiza la información en filas y columnas. En lugar de ello, almacena los datos en formato BSON (binary JSON).

PostgreSQL es un sistema orientado a objetos y es de código abierto y gratuito. Permite tipos de datos avanzados.

Microsoft SQL Server está, como su propio nombre indica, desarrollado por Microsoft. Utiliza el lenguaje Transact-SQL, que es una implementación del estándar ANSI del lenguaje SQL.

SQLite es uno de los sistemas de bases de datos relacionales más conocidos. Funciona como un servidor independiente y es ligeramente más simple que, por ejemplo, MySQL.

Conclusión


MySQL es un sistema open source para administrar bases de datos relacionales y que funciona bajo el modelo "cliente-servidor". Es uno de los sistemas de gestión más potentes y conocidos del mercado y, por ello, es uno de los más utilizados.

Si formas parte del mundo del desarrollo web, seguro que ya has trabajado con MySQL y eres consciente de las ventajas y beneficios que te aporta su uso. Si no es así, espero que este artículo haya despejado tus dudas sobre MySQL y, si no, no dudes en dejar un comentario😄
David Suárez
David Suárez

David Suárez, trabaja en el departamento de marketing de Raiola Networks. Le apasiona el desarrollo web, el anime y jugar RocketLeague

Artículos relacionados

Si te ha gustado este post, aquí tienes otros que pueden ser de tu interés. ¡No dejes de aprender!

Aún no tenemos comentarios en MySQL: Qué es y para qué sirve

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *