Muchos programas necesitan guardar o almacenar datos para su uso posterior y leer los datos que se registran. Aunque hay muchas maneras de hacer esto, el enfoque más común es utilizar un Sistema de gestión de bases de datos relacionales (RDBMS). MySQL es un RDBMS de código abierto estándar de la industria que ha sido ampliamente adoptado por proyectos de desarrollo de software. Esta guía proporciona una descripción general de MySQL y explica los conceptos principales de RDBMS.
¿Qué es una base de datos relacional (RDBMS)?
Una base de datos es una aplicación para almacenar y recuperar datos. Aunque los mecanismos difieren, la mayoría de las bases de datos proporcionan una API que permite a los usuarios agregar, eliminar, acceder, buscar y administrar sus datos. Como alternativa al uso de una base de datos, los datos se pueden almacenar en archivos de texto o tablas hash. Sin embargo, esta técnica no es tan rápida ni tan conveniente como usar una base de datos y rara vez se usa en los sistemas modernos.
Las primeras aplicaciones de bases de datos evolucionaron hasta convertirse en la moderna base de datos relacional , que permite a los usuarios almacenar cantidades masivas de datos. Un RDBMS ya no obliga a los usuarios a almacenar datos en una tabla grande. Proporciona formas más estructuradas de particionar los datos y está diseñado para un acceso más eficiente. Las aplicaciones RDBMS están optimizadas para lecturas y escrituras rápidas y transferencia masiva de información.
Los diseñadores de bases de datos conceptualizan y organizan los datos en términos de tablas , columnas y filas . Una fila también se denomina registro , o tupla. Las bases de datos relacionales contemporáneas estructuran los datos utilizando los siguientes conceptos:
- Cada base de datos contiene una o más tablas.
- Cuando el usuario crea una tabla, especifica las columnas dentro de la tabla al mismo tiempo.
- Cada columna representa un atributo o campo específico dentro del registro. Una columna está diseñada para contener datos de un tipo de datos en particular, por ejemplo,
VARCHAR
, que representa una cadena de longitud variable. - Una tabla contiene un grupo de filas.
- Cada fila dentro de una tabla representa una entrada de base de datos única. Cada columna dentro de la fila contiene un campo individual en esa entrada.
- Una tabla de base de datos es como una matriz de dos por dos. Cada cuadrado dentro de la matriz contiene un dato.
Se considera que un RDBMS es relacional porque permite a los usuarios definir relaciones dentro y entre las distintas tablas utilizando claves e índices. Una base de datos relacional permite que un usuario proporcione o genere una clave principal por cada fila. SQL puede garantizar que esta clave sea única dentro de la tabla. Los campos de estas tablas pueden estar relacionados entre sí en función de sus claves principales y externas. Estas relaciones ayudan a estructurar y organizar la base de datos y limitan la cantidad de datos duplicados.
Una aplicación RDBMS siempre proporciona las capacidades que se enumeran a continuación. Las aplicaciones individuales pueden ofrecer más opciones.
- Permite la creación, definición, modificación y eliminación de tablas, columnas, filas, claves primarias e índices de la base de datos.
- Acepta consultas SQL y almacena o recupera los datos relevantes, combinando información de diferentes tablas de bases de datos según sea necesario.
- Garantiza la integridad de los datos y las referencias entre las tablas. Por ejemplo, una clave externa siempre apunta a una fila válida en otra tabla.
- Actualiza automáticamente índices, marcas de tiempo y otros atributos generados internamente según sea necesario.
Las bases de datos relacionales utilizan el lenguaje de consulta estructurado (SQL) para consultar y actualizar la base de datos. Por ejemplo, un cliente RDBMS usa SQL INSERT
comando para agregar una nueva fila a una de las tablas de la base de datos. Cuando un usuario agrega una nueva fila, especifica simultáneamente un valor para cada columna. Se utilizan comandos SQL adicionales para modificar y eliminar filas, administrar elementos de la base de datos y recuperar una lista de registros que cumplen criterios específicos.
Por ejemplo, considere una base de datos para una escuela. Esta base de datos tiene varias tablas, para profesores, estudiantes, cursos, aulas, etc. La definición de los Students
La tabla puede contener columnas para el nombre y apellido del estudiante, ID, grado, familia y más. Cada fila de esta tabla simboliza a un estudiante individual y sirve para representar y recopilar toda la información relevante sobre ese estudiante. Si el nombre del estudiante es "John", el first_name
columna en esta fila contiene John
. La identificación del estudiante puede servir como índice y clave principal y podría usarse para hacer una referencia cruzada del estudiante en otras tablas.
Por ejemplo, un Students
simplificado La tabla se puede definir utilizando la estructura que se muestra a continuación. La fila superior representa los nombres de las columnas de la tabla. La siguiente tabla actualmente tiene dos filas de datos, una para cada estudiante.
first_name | apellido | grado | id_familia | student_id |
---|---|---|---|---|
Juan | Doe | 4 | 1116 | 5005 |
Jane | Estudiante | 5 | 1224 | 5350 |
¿Cuáles son algunos términos comunes de RDBMS?
Los siguientes términos se utilizan con frecuencia en relación con las bases de datos:
- Columna: Un conjunto de valores del mismo tipo de datos, que representa un atributo dentro de una tabla. Las columnas se definen cuando se crea una tabla.
- Clave compuesta: Una clave que consta de varias columnas. Se usa una clave compuesta cuando una sola columna no puede identificar una fila de manera confiable.
- Base de datos: Un grupo organizado de datos que se almacena electrónicamente. Una base de datos generalmente se organiza en grupos de información más pequeños.
- Clave externa: Un índice que se utiliza para vincular una entrada de tabla con una fila en otra tabla.
- Índice: Un método para acceder más rápidamente a las entradas de la base de datos. Se puede crear un índice usando cualquier combinación de atributos, pero la implementación es específica de la aplicación. El índice de una base de datos es similar al índice de un libro.
- Clave principal: Una columna que sirve como índice para identificar de forma única una fila dentro de una tabla. Una clave principal puede generarse automáticamente o definirse en la definición de la tabla. Se puede usar una clave principal para ubicar una fila específica dentro de una tabla.
- Integridad referencial: Una propiedad de base de datos interna para garantizar que una clave externa siempre haga referencia a una fila válida en otra tabla.
- Sistema de gestión de bases de datos relacionales (RDBMS): Un tipo de sistema de base de datos basado en relaciones entre tablas y entradas.
- Fila: Una entrada estructurada dentro de una tabla que consta de un conjunto de datos relacionados. Cada fila de una tabla tiene la misma estructura, que corresponde a las especificaciones de la columna en la definición de la tabla. Una fila también se denomina registro o tupla.
- Lenguaje de consulta estructurado (SQL): Un lenguaje de programación simplificado específico del dominio que se utiliza para administrar datos en un RDBMS.
- Tabla: Una colección de registros de base de datos, que consta de una serie de filas y columnas. Se puede pensar en una tabla como una matriz de información de dos dimensiones.
SQL frente a MySQL
Los términos SQL y MySQL a menudo se mezclan o se usan indistintamente, pero no son lo mismo. SQL es el lenguaje de programación estándar para consultar aplicaciones RDBMS. Se utiliza para escribir consultas de base de datos y se puede utilizar con cualquier sistema de base de datos que lo admita. MySQL es una instancia específica de un RDBMS que usa SQL. Los usuarios de la base de datos envían comandos SQL a un RDBMS como MySQL para leer y escribir datos y administrar la base de datos. No existe una aplicación llamada SQL, por lo que no tiene sentido hacer una comparación "SQL vs MySQL". Sin embargo, el término base de datos SQL a menudo se usa informalmente como un término abreviado para cualquier base de datos relacional.
El Lenguaje SQL
El lenguaje SQL se especifica como una serie de sentencias. No se considera un lenguaje de programación imperativo de propósito general como Python, porque carece de una gama completa de estructuras de datos y declaraciones de control. En cambio, es un lenguaje específico de dominio destinado a un solo propósito. SQL está diseñado para la consulta, definición y manipulación de datos. También está diseñado para proporcionar control de acceso a datos. Una ventaja de SQL es que puede acceder a varios registros con un solo comando. No especifica cómo la base de datos debe acceder a una entrada.
El lenguaje SQL consta de palabras clave designadas, expresiones, consultas, declaraciones, operadores y cláusulas opcionales. Los identificadores de objetos se utilizan para hacer referencia a las entidades de la base de datos, incluidas las tablas y las columnas. SQL admite una gran cantidad de tipos de datos predefinidos, como CHAR
, para el carácter y INTEGER
. Algunos de los operadores SQL más importantes incluyen =
, <>
, >
, <
, IN
, LIKE
, TRUE
, FALSE
, y NOT
. Las versiones recientes de SQL ahora admiten un CASE
simple declaración. La documentación de MySQL contiene más información sobre la estructura del lenguaje SQL, los tipos de datos y las declaraciones.
Algunas de las sentencias y cláusulas de SQL más utilizadas incluyen las siguientes:
- ALTERNAR: Modifica la estructura de un objeto de base de datos.
- CREAR: Crea un objeto de base de datos, como una tabla o una base de datos.
- ELIMINAR: Elimina una o más filas existentes de la base de datos.
- SOLTAR: Elimina permanentemente un objeto de la base de datos.
- DE: Indica qué tabla usar para la consulta.
- CONCESIÓN: Autoriza a un usuario de la base de datos a realizar una acción en particular.
- AGRUPAR POR: Una cláusula para organizar la salida de un
SELECT
declaración. - INSERTAR: Agrega filas a la base de datos.
- ÚNETE: Una cláusula que especifica cómo combinar y ensamblar datos de varias tablas.
- COMBINAR: Combina datos de varias tablas.
- ORDENAR POR: Una cláusula para ordenar el resultado de una consulta.
- SELECCIONAR: Recupera datos de una o más tablas. Este comando no altera la base de datos ni cambia ningún dato.
- ACTUALIZACIÓN: Modifica una o más filas existentes.
- DÓNDE: Una cláusula para identificar las filas en las que debe operar una consulta. Por lo general, se usa con un operador de comparación.
El comodín *
El operador se usa a menudo junto con SELECT
dominio. Este comando le indica a SQL que muestre todas las columnas en la salida.
A continuación se muestran un par de ejemplos de consultas SQL. El siguiente comando SQL muestra el name
de cada clase en la Class
base de datos para cada fila donde el valor del subject
la columna es math
.
SELECT name
FROM Class
WHERE subject='math';
La siguiente instrucción SQL crea la Class
mesa. El CREATE
define cada columna de la tabla, junto con su tipo de datos, en orden secuencial. El VARCHAR
El tipo de datos se utiliza para contener una cadena de longitud variable. El SMALLINT
el tipo de datos se usa para valores enteros pequeños del rango firmado de -32768
a 32767
.
CREATE TABLE Class (
classID smallint,
name varchar(255),
subject varchar(255),
level smallint
);
¿Qué es la base de datos MySQL?
MySQL es un RDBMS que implementa SQL. Originalmente fue diseñado para usar con bases de datos de tamaño pequeño a mediano, pero ahora puede manejar incluso grandes cantidades de datos almacenados. MySQL está escrito en C/C++ y en su mayoría cumple con el estándar SQL. Sin embargo, agrega muchas extensiones y enfatiza la velocidad y la confiabilidad sobre el cumplimiento perfecto. Puede encontrar una discusión más detallada sobre el cumplimiento de MySQL y SQL en la documentación de MySQL sobre los estándares de cumplimiento.
La versión básica de MySQL es distribuida por Oracle Corporation y está disponible de forma gratuita bajo una licencia de código abierto. La versión actual de MySQL es 8.0. MySQL se puede usar en cualquier distribución de Linux y en la mayoría de las otras plataformas. Es un componente importante de la pila LAMP de código abierto , junto con Linux, Apache y el lenguaje de programación PHP. La pila LAMP es la piedra angular del desarrollo de aplicaciones web de código abierto en Linux. MySQL se puede utilizar como parte de un sistema cliente/servidor o como parte de un sistema integrado.
Como todas las aplicaciones RDBMS, MySQL es una base de datos relacional. Los administradores y usuarios definen las relaciones dentro y entre las tablas de la base de datos. Las diferentes columnas se pueden marcar como obligatorias u opcionales y pueden servir como clave principal o como puntero a otra tabla. MySQL es estable, confiable y fácil de usar. Aquí hay algunas ventajas específicas de MySQL:
- MySQL es un producto maduro, popular y bien establecido. Tiene más apoyo de la comunidad que otras bases de datos de código abierto y mejor material de referencia y documentación.
- MySQL se puede configurar para ser compatible con ACID cuando se utiliza con el sistema de almacenamiento InnoDB. El acrónimo ACID significa Atomicidad, Consistencia, Aislamiento y Durabilidad. Esto significa que puede garantizar la validez de los datos a pesar de cualquier error, falla o interrupción.
- Es conocido por su alto rendimiento, debido a funciones como bibliotecas de clases optimizadas, compresión, asignación de memoria y tablas hash. Admite subprocesos de kernel multiproceso para una operación más eficiente en sistemas con múltiples CPU.
- Admite bases de datos muy grandes, almacena hasta cientos de millones de registros y hasta 64 índices por tabla.
- MySQL proporciona mecanismos de seguridad mejorados, incluido el cifrado de todas las contraseñas.
- Permite la replicación de datos y la redundancia para mejorar la confiabilidad.
- MySQL brinda soporte para alias en tablas y columnas, y soporte completo para muchos juegos de caracteres diferentes.
- MySQL funciona bien con PHP, que se usa ampliamente en el desarrollo web.
- Funciona con muchos compiladores diferentes y en muchas plataformas diferentes, y está diseñado para ser portátil entre sistemas. Los programas cliente se pueden escribir en muchos idiomas. MySQL proporciona API para C/C++, PHP, Java, Python, Ruby y Perl.
- MySQL está disponible como una biblioteca que se puede incrustar en aplicaciones independientes.
- MySQL está empaquetado con varias utilidades de cliente convenientes, incluido
mysqldump
ymysqladmin
. Los usuarios pueden verificar, optimizar y reparar tablas usandomysqlcheck
programa. - La licencia de código abierto de MySQL permite a los desarrolladores personalizar MySQL y modificar el código fuente para cumplir con sus requisitos.
MySQL también está disponible en una Enterprise Edition más completa, con soporte completo al cliente. Para obtener información sobre la instalación de MySQL en Ubuntu u otras plataformas Linux, consulte la guía de Linode sobre la instalación y configuración de MySQL en Ubuntu 20.04.
SQL frente a NoSQL
Los sistemas NoSQL son una alternativa a las aplicaciones RDBMS tradicionales basadas en SQL. Como su nombre lo indica, utilizan un modelo no relacional para manejar datos. Por lo general, son menos estructurados y más flexibles que un RDBMS. Los sistemas NoSQL no están estandarizados y pueden tomar una variedad de formatos. Sin embargo, normalmente se basan en valores clave, gráficos o documentos, no en tablas. Algunas aplicaciones NoSQL pueden usar lenguajes estructurados específicos de dominio o incluso aceptar consultas SQL en paralelo. Algunos ejemplos de aplicaciones NoSQL incluyen Redis y MongoDB. Para obtener más información sobre los sistemas NoSQL, consulte la guía Linode para una comparación entre las bases de datos SQL y NoSQL.
¿Qué son el cliente y el servidor MySQL?
El cliente MySQL y el servidor MySQL son dos componentes diferentes que funcionan juntos en una arquitectura en red. Normalmente hay un servidor central y uno o más clientes. La aplicación del servidor de base de datos MySQL se instala en un host, a menudo como parte de la pila LAMP. Este servidor almacena la configuración y los datos de la base de datos y responde a las consultas de los clientes. También hace cumplir la seguridad y cualquier sistema de control de acceso y replica y archiva los datos según sea necesario. El mismo servidor puede alojar múltiples bases de datos para diferentes clientes.
El cliente MySQL permite a los usuarios conectarse con un servidor MySQL, ya sea en el mismo sistema o en un host diferente. El cliente envía consultas SQL al servidor para leer o escribir en una base de datos. El cliente MySQL también administra, mantiene y asegura el cliente. Se recomienda un cliente independiente para los usuarios que solo desean conectarse a una base de datos remota para ejecutar consultas. Los administradores que deseen alojar una base de datos en el servidor deben instalar el paquete de servidor MySQL completo. La instalación del servidor incluye un cliente para crear y administrar la base de datos.
La utilidad de cliente de línea de comandos MySQL estándar se llama mysql
. Se puede instalar sin el componente del servidor usando el comando yum install mysql
o apt-get install mysql-client
. Para acceder al cliente MySQL, use el comando mysql <database_name>
. El nombre de usuario, la contraseña y la dirección IP del servidor se pueden especificar mediante parámetros adicionales.
Cuando el usuario inicia sesión correctamente, el cliente muestra el indicador de MySQL mysql>
. A continuación, el usuario puede ejecutar comandos SQL. Para obtener más información sobre la instalación y el uso de MySQL, consulte la guía de Linode sobre cómo conectarse a una base de datos MySQL o MariaDB.
¿Para que se usa MySQL?
MySQL es un RDBMS versátil para usar con un conjunto de datos de cualquier tamaño. Se puede considerar en cualquier momento en que una aplicación deba almacenar y recuperar datos. MySQL se desarrolló originalmente para configuraciones de un solo servidor de tamaño pequeño a mediano. Pero con las recientes mejoras de rendimiento y escalabilidad, se puede usar prácticamente en cualquier lugar en una aplicación de cualquier tamaño. Incluso las grandes empresas, como Uber, Airbnb y Shopify, utilizan MySQL.
Los usuarios deben instalar MySQL para configurar WordPress. WordPress usa MySQL para almacenar todos sus datos y archivos de configuración, e interactúa dinámicamente con MySQL para mostrar y crear páginas web. Los usuarios no necesariamente tienen que entender SQL para usar WordPress. Sin embargo, puede ser útil cuando se realizan personalizaciones avanzadas. En Linux, WordPress suele instalarse como un paquete junto con MySQL y el resto de la pila LAMP. Para obtener más información sobre cómo configurar MySQL y WordPress, consulte la guía de Linode sobre la instalación de WordPress en Ubuntu 20.04.
Otras aplicaciones comunes para MySQL incluyen almacenamiento de datos, procesamiento de transacciones, sistemas de reserva, comercio electrónico y bases de datos web. Por ejemplo, una base de datos MySQL puede mantener la lista de productos y el inventario de una tienda en línea.
Conclusión
Esta guía responde a la pregunta más frecuente:"¿Qué es una base de datos MySQL?" MySQL es una base de datos relacional que organiza los datos en función de las relaciones entre tablas y campos. Es un tipo de Sistema de gestión de bases de datos relacionales (RDBMS), que almacena entradas como filas dentro de tablas. Cada fila consta de varias columnas, que representan los diferentes atributos del registro de datos. El lenguaje de programación SQL específico de la base de datos se utiliza para almacenar y recuperar datos de MySQL. SQL utiliza una serie de declaraciones discretas y está diseñado para funcionar con sistemas RDBMS.
MySQL es conocido por su capacidad para almacenar grandes tablas y grandes cantidades de datos, así como por su velocidad y confiabilidad. Proporciona API para muchos lenguajes de programación comunes y está empaquetado con varias utilidades útiles. El servidor MySQL almacena datos y responde a solicitudes de clientes MySQL. El cliente siempre se empaqueta con el servidor, pero se puede usar como una aplicación independiente para comunicarse con bases de datos remotas. MySQL se usa en muchas empresas conocidas y es esencial para aquellos que quieren usar WordPress. Sin embargo, también se utiliza en bases de datos web y almacenamiento de datos. Para obtener más información sobre MySQL, consulte la documentación de MySQL.
Más información
Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.
- Documentación oficial de MySQL