Bienvenido a este mega post de MySQL donde te presentare todas las generalidades sobre este asombroso Sistema de Gestión de Bases de Datos.
Que es MySQL
MySQL es un sistema de gestión de bases de datos (SGBD) , desarrollado por la empresa MySQL AB fundada en 1995, luego en el 2008 Sun Microsystem adquiere la empresa, y finalmente el 2010 Oracle Corporation adquiere a Sun Microsystem quedando este ultimo como dueños de MySQL.
Cabe destacar que a pesar de que MySQL es un proyecto de código abierto, posee una doble licencia o licencia dual, una Licencia publica general (GPL) y una Licencia Privativa o comercial, donde el copyright de la mayor parte del código fuente pertenece a Oracle Corporation.
Lo bueno de la licencia GLP es que podemos crear nuestra propia versión derivada de MySQL, y bautizarla con el nombre que queramos.
MySQL o también conocido como MySQL Server, es un Sistema de Gestión de Bases de Datos(SGBD) que adopta el modelo cliente – servidor, y permite la conexión de muchos usuarios al mismo tiempo desde conexiones remotas o locales.
Porque Aprender MySQL
La base de datos MySQL es el sistema de gestión de bases datos relacionales mas popular del mundo, tal y como lo arroja el DB-Engines Ranking, MySQL ocupa el segundo lugar aun por encima de otros competidores como son Microsoft SQL Server, solo siendo superada por Oracle DataBase.
Está presente en los entorno webs, y mas del 70% de los sistemas web y sitios web de Internet utilizan a MySQL.
Además está en continuo desarrollo recibiendo numerosas actualizaciones por parte de la empresa que lo desarrolla y también una gran comunidad de desarrolladores.
Requerimientos del sistema
Este magnifico SGBD tiene requerimientos mínimos que posee cualquier equipo actual, aunque hay que tomar en cuenta que en un entorno de producción se recomienda utilizar mayor cantidad de recursos.
- Procesador: 2 Ghz
- Memoria RAM: 512 MB
- Espacio Instalación: 200 MB
- Sistema operativo: Windows ,Linux, Unix, MacOS, BSD, etc.
- Arquitectura del sistema: 32bit, 64 bit
- Protocolo de red: TCP/IP
Como descargar MySQL
Quizás ya te estés preguntando donde puedo descargar MySQL, bueno… la respuesta es simple MySQL puede ser descargado desde diferentes fuentes y según el sistema operativo, aunque siempre recomiendo descargarlo del sitio web oficial o de los repositorios oficiales, ya que estos garantizan la integridad, disponibilidad y seguridad (en caso de virus), que otras fuentes.
Para descargar MySQL podemos ir a su sitio web y seleccionar la versión a descargar y el sistema operativo donde lo vamos a instalar.
Tutorial MySQL
Como Instalar MySQL en Windows
Una vez en la pagina de descarga debemos seleccionar el sistema operativo en este caso windows, y seleccionamos la opcion que dice MySQL Installer MS, en la caja azul que dice Go to Download Page
Seleccionamos la versión más actual y damos clic en la versión que ocupa más megas en este caso 313.8M, quizás en tu caso ocupe más espacio, esto es para utilizar el instalador offline, si deseas el online puede seleccionar el otro.
Luego nos saldrá una pagina que nos invita a suscribirnos, esto no es necesario (la suscripción), hacemos clic en No thanks, just start my download.
Iniciamos la instalación dando doble clic sobre el instalador descargado, e inmediatamente nos aparecerá un asistente de instalación.
Como vemos en la imagen el instalador tiene 5 opciones:
- Developer default: esta instala todos los componentes de MySQL para un ambiente de desarrollo
- Server Only: esta opción instala solamente el MySQL Server sin complementos
- Client only: esta opción solo instala el MySQL Workbench, pero no instala el MySQL Server
- Full: parecida a la primera opción, pero no instala los componentes de desarrollo.
- Custom: Permite seleccionar cuales componentes queremos incluir en la instalación
Operadores de comparacion y relacionales en MySQL
Para esta instalación seleccionaremos la opción Custom.
Debemos seleccionar los paquetes que queremos instalar:
MySQL Server : este es nuestro SGBD, no se puede quedar, a menos que ya lo hayas instalado
En Application seleccionar MySQL Workbench, sera nuestro cliente con interfaz gráfica para gestionar MySQL Server.
Y en el apartado MySQL Connectors seleccionaremos los conectores para los lenguajes de programación que vallamos a utilizar, estos también se pueden descargar por separados e instalar mas adelante, no es necesario u obligatorio seleccionarlos ahora.
También podemos agregar la documentación y algunos ejemplos, pero eso queda a decisión de cada cual.
Una vez seleccionados los paquetes deseados pulsamos el botón Next y Execute. Se nos pedirá instalar el Microsoft Visual C++ 2015, pero este proceso es automático.
Una vez listo para la instalación de cada paquete veremos un INSTL DONE y algunos como el plugin de visual studio que sera necesario instalarlo manualmente.
Pulsamos el botón execute y comenzara la instalación.
Ya finalizada la instalación de cada modulo veremos en el asistente la opción de configurar MySQL Server.
Podemos seleccionar Standalone MySQL Server/Classic MySQL Replication.
Pasaremos a otra pantalla donde configuraremos el tipo de equipo que utilizara MySQL Server, el protocolo de conexión y puerto TCP que utilizará para conexiones remotas nuestro servidor MySQL
En el desplegable Config Type dispondremos de tres opciones:
- Development Computer: Este es un equipo que esta dedicado a desarrollo de sistemas y no sera utilizado en producción.
- Server Computer: Esta orientado a equipos dedicados a proveer un servicio en ambiente de producción, por ejemplo un servidor web.
- Dedicated Computer: Esta opción es utilizada donde el equipo solo ejecutara MySQL Server ya sea en producción o desarrollo.
Utilizaremos Development Computer, en la casilla de TCP utilizaremos el puerto por defecto 3306.
Debemos crearle un Password a el usuario root, usuario por defecto de MySQL Server, aunque en el botón Add User podemos agregar otros usuarios
Y concluimos colocándole un nombre al servicio que utilizara Windows para iniciar y manejar el server como un servicio.
Luego veremos la notificación de que ya se aplicaron todas las configuraciones.
También podemos probar la conexión a ver si todo marcha bien.
y ya concluimos con la instalacion en windows, se supone que las cosas en windows son mas faciles que en linux, pero adivina… en linux con dos simples comandos instalas mysql server y mysql workbench.
Realiza consultas a bases de datos MySQL con SELECT
Como Instalar MySQL en Linux (Debian, Ubuntu y Derivados)
En todo sistema Linux, sin importar la distribución que sea, lo primero es actualizar los repositorios y actualizar el sistema
sudo apt update && sudo apt upgrade
Luego ejecutamos el comando para instalar MySQL Server y MySQL Workbench
sudo apt install mysql-server mysql-client mysql-workbench
Estos comandos instalan tanto el servidor MySQL Server y la interfaz gráfica el MySQL Workbench.
Se nos mostrará una lista de paquetes y dependencias para instalarse, escribimos «S» si el idioma es español o «Y» si esta en inglés, para continuar.
Luego nos saldrá una ventana de color purpura la cual nos pedirá que ingresemos una contraseña para el usuario root.
Una vez completada la instalación ejecutamos el comando
sudo mysql_secure_installation
Con esto se ejecutara un asistente (en la consola claro…) que nos ira preguntando, primero sobre la contraseña del usuario root (si, la que ya habíamos cambiado..)
- remover usuario anónimo? respondemos Si
- deshabilitar acceso remoto? respondemos no
- remover base de datos «test»? respondemos si
- recargar privilegios de tablas? respondemos si
y ta-tan, ya esta concluida la instalación de MySQL y MySQL Workbench en linux, en mi opinion bastante facil, y un proceso corto, con relación a la instalacion en windows.
Características
Entre tantas cosas geniales que tiene MySQL te presento algunas de las características mas importantes.
- Proporciona la opción de seleccionar múltiples motores de almacenamiento para cada tabla, entre los que posee (innoDB, MySam, etc..)
- Agrupación de transacciones, esto permite reunir múltiples transacciones desde varias conexiones con la finalidad de aumentar notablemente el número de transacciones por segundo.
- Conexión segura utilizando SSL.
- Ejecución de transacciones permitiendo confirmar(commit) o retroceder(rollback) si ocurre algún fallo.
- Uso de claves foráneas con la finalidad de proporcionar integridad referencial y evita la ambigüedad y duplicidad.
- Presenta un amplio subconjunto del lenguaje SQL como son DDL, DML y DCL
- Permite tener los datos siempre disponibles gracias a la Replicación.
- Disponible en casi todas las plataformas o sistemas operativos.
- Búsqueda e indexación de campos de texto.
- Uso de tablas hash en memorias temporales
- El uso de tablas en disco b-tree para búsquedas más rápidas con la compresión de índice.
- Posee y dispone de un sistema de usuarios y privilegios con verificación basada en SSL.
- Uso de múltiples cores y multihilos gracias a los hilos de kernel.
- Puede manejar gran cantidad de datos, con más de 60 millones de registros.
- En las últimas versiones, se permiten hasta 64 índices por tablas.
Ventajas
- Su principal ventaja es que es un proyecto de código abierto,utiliza la licencia GPL, esto nos permite utilizar a MySQL sin costo alguno reduciendo significativamente la inversión de dinero en nuestros proyectos.
- Es de fácil instalación, y esta presente en casi todos los sistemas operativos especialmente en los principales como son Windows, Linux y MacOs.
- Posee su propio entono de administración el MySQL WorkBench
- Tiene un gran desempeño, en cuanto a velocidad
- Permite trabajar con diferentes modelo de bases de datos, Relacional y NoSQL
- Posee diferentes motores de bases de datos como son InnoDb, NDB, MyISAM, etc)
- Requerimientos de sistema mínimos, posibilitando utilizarlo en cualquier equipo aun con bajos recursos.
- Incorpora entorno con seguridad y encryptación.
Desventajas
Como todo en la vida, no todo es color de rosa, aquí te presento algunas cosas que para algunos serían desventajas, aunque para otro esos puntos darían igual o no tendrían ningún problema.
- Las mejores características del SGBD no están presente en la versión comunidad, sino que tienes que pagar por ellas (aunque para ser sinceros, con las que ofrece la versión comunidad va de maravillas)
- Aunque la comunidad de desarrollo es bastante grande, siempre debe ir encaminada a los propósitos de Oracle sobre el SGBD, es decir que el futuro de MySQL esta sujeto a las decisiones de la directiva.
- El SGBD esta muy por detrás que sus competidores PostgreSQL, MariaDB, SQL Server.
Software de administración
Tenemos que aclarar que MySQL es un Sistema de Gestión de Bases de Datos y se instala como un servicio, convirtiendo el equipo en el que esta instalado en un servidor, y este puede ser accedido desde diferentes clientes.
Por tanto, que tengas MySQL Server instalado en un equipo no significa que podrás administrar las bases de datos o crear nuevas, para esta tarea necesitas un software administrativo, el cual nos permita interactuar con el SGDB.
Claro lo dicho anteriormente tiene una excepción y es que MySQL Server puede ser accedido por la terminal (CMD si estas en windows) y administrarse por esta vía, pero siempre es mas amigable un entorno grafico.
Como software de administración podemos tener muchas opciones tanto de pago como de código abierto sin embargo solo te mencionare algunas de código abierto y uso gratuito:
Pero sin duda el mejor es MySQL Workbench, desarrollado y mantenido por la misma Oracle Corporation.
Modelo de datos
Cuando hablamos de modelo de datos nos referimos a la forma, estructura y arquitectura de almacenamiento que utiliza un SGDB, siendo el mas predominante el relacional entre los SGDB más populares.
Este modelo relacional organiza los datos en tablas, que a su vez están compuestas por columnas y cada registro es una fila.
Aunque cabe destacar que MySQL también permite el modelo documental muy utilizado por los SGBD NoSQL.
SQL
SQL son las siglas de Structure Languaje Query que en español significa Lenguaje Estructurado de Consultas, y por supuesto el lenguaje utilizado en las bases de datos relacionales.
El lenguaje SQL esta compuesto por varios sub lenguajes:
- DDL – Data Definition Languaje
utilizado para crear los elementos de la base de datos incluye las sentencias:
CREATE DATABASE
CREATE TABLE
CREATE INDEX
CREATE COLUNM
DROP DATABASE
DROP COLUMN
DROP INDEX
ALTER DATABASE
ALTER TABLE
ALTER COLUMN
TRUNCATE TABLE - DML – Data Manipulation Languaje
utilizado para Insertar, Consultar, Eliminar y Actualizar los datos
INSERT INTO
UPDATE TABLE
SELECT FROM
DELETE FROM - DCL – Data Control Languaje
Este permite dar o quitar privilegios a usuarios sobre las bases de datos y las tablas
GRANT ACCESS
REVOKE ACCESS
Existen mas sub lenguajes de SQL pero no todos los SGDB los incluyen.
Quien usa MySQL
Quizás esta sea una pregunta que vienes haciéndote quien sabe desde cuando, pero ya que inicias con este SGBD es bueno saber, y la respuesta es que gran porcentaje de aplicaciones grandes y populares utilizan este magnifico SGDB, incluso la gran mayoría (por no decir todas) de las paginas que utilizan PHP también están utilizando a MySQL como SGDB, además existen numerosas empresas de renombre que también la utilizan entre ellas podemos nombrar los grandes sitios web como son Wikipedia, facebook, Twitter, Youtube, Flickr.
Algunos CMS como WordPress, Drupal, Joomla, phpBB, servicios de gestión de versiones como lo es Git Gogs (esto es para los que quieren tener su propio servidor de git ), entre muchas otras más.
MySQL y los lenguajes de programación
Bien si estas leyendo este Mega Post de MySQL, es porque de seguro has incursionado en el mundo del desarrollo de software y es bueno saber con cuales herramienta contamos y te cuento que a lo largo de los años el uso de MySQL ha ido en aumento y casi todos los lenguajes de programación tienen una librería disponible para interactuar con MySQL.
Hay lenguajes como PHP que ya incluyen en su core una implementación de la librería para MySQL y no es necesario instalar ni agregar ningún complemento.
Para los demás lenguajes se han desarrollado librerías, existen dos grupos de desarrolladores los de MySQL y los de la comunidad.
Los drivers o conectores desarrollados por MySQL son en total 8 y puedes descargarlo desde su sitio web.
Los siguientes Driver o conectores son desarrollados y mantenidos por la comunidad.
Alternativas a MySQL
Sin lugar a duda MySQL es un excelentísimo SGBD pero no se pueden descartar las alternativas.
MariaDB: es un Sistema de Gestión de Bases de datos derivado de MySQL y posee licencia GLP, y es desarrollado por Michael widenius creador de MySQL, el desarrollo de MariaDB se debe a que vino preocupación por parte de la comunidad sobre el futuro de MySQL al ser comprada por Oracle, hay que destacar que MariaDB es compatible con casi todo lo de MySQL.
PostgreSQL: Tambien conocido como Postgres, este es un sistema de gestión de bases de datos relacional orientado a objeto y también es de código abierto.
Microsoft SQL Server: es la alternativa de pago a MySQL, este no es desarrollado por una comunidad sino por la empresa Microsoft, no es gratuita, posee mejores características que la versión gratuita de MySQL, y un lenguaje de consultas mas completo, sin duda es la mejor alternativa de pago después de Oracle.
SQLite: otro sistema de gestión gratuito y de código libre, es prácticamente el mas sencillo de todos y requiere muy poca o casi ninguna configuración, permite almacenar hasta 2TB de datos y es utilizado en sistemas IOS y Android. Carece de algunas características geniales de MySQL y otrso SGBD pero no por eso debemos descartarlo.
MySQL vs MariaDB
Decir que un SGBD es mejor que cualquier otro SGBD y viceversa sería puro fanatismo, todo dependerá de las necesidades del proyecto y la habilidades del o de los desarrolladores, pero en esta ocasión solo vamos a comparar a dos hermanas, hijas del mismo padre(Michael Widenius), y actualmente eternas rivales, MySQL y MariaDB.
Para realizar esta comparativa me voy a utilizar una tabla, los datos presentados aquí salen de las documentaciones de los sitios web de ambas, y colocados en un orden que se pueda apreciar.
Característica | MariaDB | MySQL |
Motores de almacenamiento | MariaDB tiene12 motores de almacenamientos adicionales a los que tiene MySQL que no encontraras en MySQL. | Este Posee menos motores de almacenamientos comparado con MariaDB. |
Mejoras de velocidad | MariaDB muestra un incremento exponencial comparado con MySQL. | Muestra un bajo rendimiento de velocidad comparado con MariaDB. |
Primera versión | 2009 | 1995 |
Sistema Operativo | Windows (7 y superior)LinuxFreeBSD MacOS Solaris | FreeBSD Linux MacOS Solaris Windows (Todas las versiones) |
Indexación y Cache | El motor de almacenamiento en Memoria de realiza un INSERT un 24% mas rápido que el de MySQL | El motor de almacenamiento en Memoria de MySQL es mas lento que el de MariaDB. |
Grupo de conexiones | MariaDB trae un grupo de hilos avanzados capaz de ejecutar y soportar hasta 200,000+ conexiones. | El grupo de hilos provistos por MySQL no puede soportar 200,000 conexiones simultaneas. |
Replicación | En MariaDB, la replicacion puede realizarse segura y rápida. Actualizaciones el doble de rápido comparado con MySQL. | En su versión comunidad permite un numero estático de hilos por conexión, esto limita la replicacion. Aunque en la versión enterprise trae mas capacidad de hilos. |
Complementos/Extensiones | MariaDB viene con nuevos complementos y extensiones incluyendo las sentencias JSON, WITH y KILL. | Las características de MariaDB no están presentes en MySQL. |
Enmascaramiento de datos | No | Si |
Columnas dinámicas | No | Si |
Monitoreo | SQLyog | MySQL workbench |
Enrutamiento | MariaDB MaxScale | MySQL Router |
Analíticas | MaraiDB ColumnStore | No |
Modelo de base de datos secundario | Almacenamiento Documental y Graph DBMS | Almacenamiento Documental |
Bifurcaciones | 868 | 1.6 K |
Compañías utilizandola | Nrise, Accenture, Docplanner, Grooveshark. | Airbnb, Uber Technologies, Netflix, Dropbox. |
Espero que este mega post de MySQL te sea útil, si crees que hay que agregar algo más puedes dejarlo en los comentario.