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!
[elementor-template id="80835"]
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.
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.
SELECT: Utilizada para consultar y recuperar datos.
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.
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:
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.
![MySQL es el sistema de gestión de bases de datos "open source" más conocido del mercado.](https://cdn.raiolanetworks.com/blog/wp-content/uploads/logo-mysql.png)
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.](https://cdn.raiolanetworks.com/blog/wp-content/uploads/base-de-datos-relacional-usuarios.jpeg)
![Se pueden relacionar tablas de una base de datos relacional entre sí a través de las claves primarias y foráneas.](https://cdn.raiolanetworks.com/blog/wp-content/uploads/base-de-datos-relacional-pedidos.jpeg)
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.](https://cdn.raiolanetworks.com/blog/wp-content/uploads/base-de-datos-pokemon.jpeg)
SELECT * FROM pokemonPara 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:
- Bulbasaur - Planta - 0.7 - 6.9 - 45
- Charmander - Fuego - 0.6 - 8.5 - 39
- Squirtle - Agua - 0.5 - 9.0 - 44
- Pikachu - Eléctrico - 0.4 - 6.0 - 35
- Ditto - Normal - 0.3 - 4.0 - 48
- Snorlax - Normal - 2.1 - 460.0 - 160
SELECT nombre, tipo FROM pokemonEn 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 pokemonDevolverí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.0Resultado: 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 ASCResultado: 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 = 6El 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.
![MySQL funciona de manera relacional, de manera que sus tablas pueden estar relacionadas entre ellas.](https://cdn.raiolanetworks.com/blog/wp-content/uploads/mysql-bases-de-datos-relacionales.jpg)
![MySQL se basa en el modelo cliente - servidor.](https://cdn.raiolanetworks.com/blog/wp-content/uploads/modelo-cliente-servidor.jpg)
- 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).
- 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.
- 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.
- 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.
- 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.
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.](https://cdn.raiolanetworks.com/blog/wp-content/uploads/otros-sistemas-de-gestion-de-bases-de-datos.jpg)