programa
Cuando empiezas a trabajar con SQL, es fácil pensar en los tipos de datos como simples etiquetas. Una sola columna almacena números, texto, fechas o tipos de datos especiales. Pero un tipo de datos es más que una simple etiqueta. Es un conjunto de reglas que define lo que es un valor a los ojos de la base de datos.
En la práctica, los tipos de datos determinan la forma en que SQL «entiende» la información de tu base de datos. Es un conjunto de instrucciones que proporciona a SQL el contexto necesario para leer, comparar y procesar tus datos con precisión.
En este tutorial, veremos las principales categorías de tipos de datos SQL y cómo se comportan en diferentes sistemas de gestión de bases de datos. Te animo a que sigas los ejemplos a lo largo de todo el texto.
Si no has trabajado mucho con tablas de bases de datos anteriormente, nuestro curso Fundamentos de SQL te ofrece una base clara y fácil de entender para principiantes que te permitirá comprender cómo se estructuran este tipo de conjuntos de datos.
¿Qué son los tipos de datos SQL?
Un tipo de datos describe el formato de tus datos: los tipos de valores que puede contener una columna, cómo se almacenan esos valores internamente y las operaciones que tiene sentido realizar con ellos.
Esto significa que la elección del tipo de datos afecta a más aspectos que el diseño de la tabla. Puede influir en las necesidades de almacenamiento, el rendimiento de las consultas, el comportamiento de clasificación, las operaciones matemáticas e incluso en la forma en que diferentes sistemas interpretan el mismo valor.
Aquí tienes una tabla sencilla que utiliza varios tipos a la vez:
CREATE TABLE employees (
id INT,
name VARCHAR(50),
start_date DATE,
active BOOLEAN,
salary DECIMAL(10, 2)
);
Cada columna de esta tabla define el tipo de datos que puede contener.
-
La columna «
id» almacenará números enteros, asignando a cada empleado un identificador único. -
La columna «
name» (Nombre de usuario) puede contener hasta 50 caracteres de texto, por lo que puedes almacenar nombres cortos. -
La columna «
start_date» (Añadir una fecha) es para las fechas del calendario. -
La columna «
active» almacenará valores verdaderos o falsos, lo que facilitará el seguimiento de los empleados que están activos actualmente. -
Por último, la columna «
salary» almacenará importes monetarios con una precisión de 10 dígitos, manteniendo dos dígitos después del punto decimal para los céntimos.
Juntas, estas columnas forman una tabla estructurada que impone reglas sobre los tipos de valores que se permiten en cada campo. Esto hace que los datos sean más predecibles y fáciles de manejar.
Añadamos algunos datos de ejemplo y veamos cómo quedaría la tabla resultante, utilizando PostgreSQL.
INSERT INTO employees (id, name, start_date, active, salary)
VALUES
(1, 'Alice Johnson', '2025-01-15', TRUE, 55000.00),
(2, 'Bob Smith', '2024-06-01', FALSE, 62000.50);
SELECT *
FROM employees;
|
id |
nombre |
start_date |
activo |
salario |
|
1 |
Alice Johnson |
2025-01-15 |
VERDADERO |
55 000,00 |
|
2 |
Bob Smith |
2024-06-01 |
FALSO |
62 000,50 |
Los sistemas de bases de datos de alquiler Diffesiguen los mismos principios, pero varían en cuanto a nomenclatura y características. Por ejemplo, SQL Server utiliza BIT en lugar de BOOLEAN, y MySQL trata BOOLEAN como un número entero pequeño.
Categorías de tipos de datos SQL
Hay cuatro categorías principales de tipos de datos: numéricos, caracteres, fechas y especiales. Veamos cada uno en detalle.

Tipos de datos numéricos
Los tipos numéricos almacenan números enteros o decimales. El tipo numérico específico determinará el rango, la precisión y el tamaño de almacenamiento de los números almacenados. Los tipos de datos más comunes en esta categoría son:
-
números enteros, como
INT,SMALLINTyBIGINT, para números enteros, -
decimales, como
DECIMAL(p, s)yNUMERIC(p, s), para valores decimales exactos, -
y flotantes, como
FLOATyDOUBLE, para valores aproximados que pueden introducir pequeñas diferencias de redondeo.
Creemos una tabla de ejemplo para mostrar los diferentes tipos de datos numéricos:
CREATE TABLE products (
product_id INT,
price DECIMAL(8, 2),
measurement FLOAT
);
INSERT INTO products VALUES
(1, 19.99, 3.1415),
(2, 250.56, 2.71828);
SELECT * FROM products;
Así es comose vería latabla de resultados:
|
product_id |
precio |
medición |
|
1 |
19,99 |
3,1415 |
|
2 |
250,56 |
2.71828 |
Como puedes ver, la primera columna está restringida a ser un número entero, la segunda a un decimal con dos cifras después del punto decimal y la tercera es un punto decimal con un número indefinido de cifras.
A primera vista, puede parecer que DECIMAL y FLOAT son lo mismo. Pero hay una diferencia importante: DECIMAL almacena un número preciso con un número específico de decimales, mientras que FLOAT guarda un valor aproximado que puede variar ligeramente según el sistema.
Es importante utilizar decimales cuando se requiere precisióny recurrir a los números flotantes solo si se aceptan pequeños errores de redondeo.
|
Categoría |
Tipo(s) de datos |
Finalidad / Qué almacena |
Valor(es) de ejemplo |
|
Numérico |
|
Números enteros de tamaño variable |
1, 42, 1000 |
|
Numérico |
|
Valores decimales exactos con precisión fija |
19,99, 250,56 |
|
Numérico |
|
Valores decimales aproximados. Puede introducir pequeñas diferencias de redondeo. |
3.1415, 2.71828 |
Tipos de datos de caracteres y cadenas
Los tipos de caracteres almacenan texto. Hay varios tipos diferentes que se diferencian en cuanto a rendimiento y eficiencia de almacenamiento.
-
CHAR(n)es para conjuntos de caracteres de longitud fija. Esto resulta útil para datos que siempre tienen el mismo tamaño, como códigos de estado o abreviaturas de aeropuertos. -
VARCHAR(n)es para conjuntos de caracteres de longitud variable. Es útil para nombres, direcciones de correo electrónico y otro texto introducido por el usuario. -
TEXTy tipos similares se utilizan para bloques grandes de texto no estructurado, como entradas de blog o descripciones de productos.
Algunos sistemas, como SQL Server, incluso admiten tipos de cadenas Unicode, como NCHAR y NVARCHAR, que resultan útiles cuando los datos incluyen texto en varios sistemas de escritura, como el latino, el chino o el cirílico.
|
Categoría |
Tipo(s) de datos |
Finalidad / Qué almacena |
Valor(es) de ejemplo |
|
Caracteres / Cadenas |
|
Texto de longitud fija |
«EE. UU.», «CA» |
|
Caracteres / Cadenas |
|
Texto de longitud variable |
«Alice Johnson», «Bob Smith» |
|
Caracteres / Cadenas |
|
Grandes bloques de texto sin estructurar |
«Prefiero que te comuniques por correo electrónico». «Necesito una copia de la factura por cada pedido». |
|
Caracteres / Cadenas |
|
Texto Unicode de longitud fija o variable |
'Å', 'É', 'München', 'São Paulo' |
Veamos cómo queda esto con unatabla de ejemplo que muestra diferentes tipos de datos de cadena:
CREATE TABLE customers (
id INT,
country_code CHAR(2),
name VARCHAR(100),
notes TEXT
);
INSERT INTO customers VALUES
(1, 'US', 'Alice Johnson', 'Preferred contact by email.'),
(2, 'CA', 'Bob Smith', 'Requires invoice copy for each order.');
SELECT * FROM customers;
Así es como quedaría esta tabla. Puedes ver las diferencias de longitud codificadas en cada tipo de datos de cadena.
|
id |
country_code |
nombre |
notas |
|
1 |
US |
Alice Johnson |
Prefiero que te comuniques por correo electrónico. |
|
2 |
CA |
Bob Smith |
Se requiere una copia de la factura por cada pedido. |
Aquí, CHAR(2) impone una longitud constante, mientras que VARCHAR y TEXT permiten una mayor flexibilidad.
Tipos de datos de fecha y hora
Los tipos de datos de fecha y hora permiten almacenar y consultar información temporal con precisión. Los principiantes pueden pensar que pueden utilizar tipos de datos numéricos o de cadena para codificar este tipo de información. Sin embargo, hacerlo puede causar problemas posteriores con el análisis de datos. El uso de un tipo de datos de calendario específico puede facilitar mucho las cosas.
Los tres tipos más utilizados son:
-
DATE, que codifica el año, el mes y el día, -
TIME, que almacena la hora, los minutos y los segundos, -
y
DATETIMEoTIMESTAMP, que almacenan una fecha y hora combinadas.
Las bases de datos modernas pueden incluso admitir fracciones de segundo o tipos de datos que tienen en cuenta la zona horaria, como TIMESTAMPTZ en PostgreSQL, que almacena marcas de tiempo en UTC y las convierte automáticamente a la zona horaria de tu sesión al recuperarlas.
|
Categoría |
Tipo(s) de datos |
Finalidad / Qué almacena |
Valor(es) de ejemplo |
|
Fecha / Hora |
|
Fechas del calendario (año, mes, día) |
'2025-11-26' |
|
Fecha / Hora |
|
Hora del día (hora, minuto, segundo) |
«09:30:00», «18:45:30» |
|
Fecha / Hora |
|
Fecha y hora combinadas |
«2025-11-20 14:15:00», «2025-11-21 09:00:00» |
|
Fecha / Hora |
|
Fecha y hora combinadas con zona horaria (PostgreSQL) |
«21/11/2025 09:00:00+00» |
Creemos una tabla sencilla paramostrar estos tipos de datos temporales:
CREATE TABLE events (
event_id INT,
event_date DATE,
start_time TIME,
created_at DATETIME
);
INSERT INTO events VALUES
(1, '2025-11-26', '09:30:00', '2025-11-20 14:15:00'),
(2, '2025-12-01', '18:45:30', '2025-11-21 09:00:00');
SELECT * FROM events;
Esto es lo que la tablase :
|
event_id |
event_date |
start_time |
created_at |
|
1 |
2025-11-26 |
09:30:00 |
2025-11-20 14:15:00 |
|
2 |
2025-12-01 |
18:45:30 |
2025-11-21 09:00:00 |
Puedesver cómo la elección del tipo de fecha o marca de tiempo adecuado puede afectar al tipo de datos que puedes almacenar.
Tipos de datos booleanos y otros tipos especiales
No todos los tipos de datos pueden encajar perfectamente en una de las categorías anteriores. Para ello, SQL incluye un conjunto de tipos especiales para casos de uso específicos. Algunos de los más comunes que puedes encontrar son:
-
Valores booleanos (
BOOLEAN,BOOLoBIT, dependiendo del sistema) para registrar verdadero o falso. -
Datos binarios (
BLOB) para imágenes, archivos u objetos serializados. -
Texto grande (
CLOB) para documentos a tamaño completo. -
JSON(en MySQL y PostgreSQL) para datos sin esquema o anidados -
ARRAY(solo en PostgreSQL) para listas -
UUIDpara identificadores únicos que no dependen de secuencias numéricas, como un token de sesión o un código de seguimiento global.
Los tipos especiales te permiten almacenar datos más ricos o flexibles cuando las tablas tradicionales por sí solas no capturan la estructura.
|
Categoría |
Tipo(s) de datos |
Finalidad / Qué almacena |
Valor(es) de ejemplo |
|
Especial / Booleano / Otro |
|
Valores verdaderos o falsos |
VERDADERO, FALSO |
|
Especial / Booleano / Otro |
|
Objetos binarios de gran tamaño (imágenes, archivos) |
[datos de imagen binaria] |
|
Especial / Booleano / Otro |
|
Documentos de texto grandes |
Texto completo del contrato... |
|
Especial / Booleano / Otro |
|
Datos estructurados o anidados |
{"name": «Alice»} |
|
Especial / Booleano / Otro |
|
Listas de valores (solo PostgreSQL) |
[1,2,3] |
|
Especial / Booleano / Otro |
|
Identificadores únicos globales |
'550e8400-e29b-41d4-a716-446655440000' |
Tipos de datos SQL en diferentes sistemas
Los sistemas de gestión de bases de datos difieren en los detalles sobre cómo utilizan estos tipos de datos. Aunque las categorías generales siguen siendo las mismas, los nombres y comportamientos exactos varían según el sistema.
Los diferentes sistemas diseñan sus tipos de datos con sus propias prioridades, por lo que sus comportamientos difieren. Algunas diferencias son pequeñas, como la palabra clave exacta utilizada. Otros cambian el comportamiento de los datos en la práctica, como los límites en la longitud del texto, la forma en que se almacenan los booleanos o si el sistema admite formatos especializados.
MySQL hace hincapié en la velocidad y la simplicidad, por lo que utiliza opciones prácticas y ligeras, como TINYINT (que técnicamente se almacena como números) para los valores booleanos. Da prioridad al rendimiento y a la amplia compatibilidad frente a una semántica de tipos estricta.
PostgreSQL tiene como objetivo cumplir con los estándares y ser extensible. Esto se refleja en el hecho de que utiliza un tipo de datos verdadero ( BOOLEAN ) y tiene un conjunto más amplio de opciones de tipos de datos, como ARRAY y JSONB para almacenar datos estructurados o anidados directamente en una columna.
SQL Server está diseñado para ofrecer un rendimiento predecible en entornos empresariales y una profunda integración con el ecosistema de Microsoft. Por eso ofrece tipos bien definidos como BIT para valores booleanos y VARCHAR(MAX) para texto extenso.
La siguiente tabla muestra una comparación entre cómo tres sistemas SQL principales implementan conceptos comunes.
|
Concepto |
MySQL |
PostgreSQL |
SQL Server |
|
Numéricos (números enteros) |
Utiliza |
Utiliza |
Utiliza |
|
Números decimales / de precisión fija |
Utiliza |
Utiliza |
Utiliza |
|
Cadenas de texto de longitud estándar |
Utiliza |
Utiliza |
Utiliza |
|
Gran capacidad de almacenamiento de texto |
Utiliza |
Utiliza |
Utiliza |
|
Valores booleanos |
Almacena valores booleanos como |
Utiliza valores nativos de |
Utiliza |
|
Claves primarias con autoincremento |
Utiliza la palabra clave « |
Utiliza |
Utiliza |
|
Cadenas de caracteres muy largas |
Utiliza |
Permite un tamaño de archivo muy grande ( |
Utiliza |
|
Almacenamiento JSON |
Admite |
Compatible con |
Admite |
|
Almacenamiento en arreglo |
No admite tipos de arreglo. |
Admite |
No admite tipos de arreglo. |
Lo que esto significa en la práctica
Los objetivos de diseño subyacentes de cada sistema y los tipos de cargas de trabajo para los que están optimizados influyen directamente en la forma en que están construidos para funcionar.
Estas diferencias significan que, aunque muchas habilidades comunes de SQL se transfieren fácilmente entre sistemas, detalles como el tamaño máximo de texto, las palabras clave de autoincremento o la compatibilidad con estructuras complejas pueden variar.
Si solo utilizas un sistema, es fácil convertirse en un experto en los detalles de tu sistema de gestión de bases de datos. Sin embargo, cambiar de trabajo o de departamento puede requerir que te adaptes a un sistema de gestión de bases de datos diferente con reglas distintas.
Por este motivo, al aprender SQL, resulta útil reconocer los conceptos comunes que subyacen a los tipos de datos, en lugar de limitarse a confiar en las particularidades de un único sistema.
Elegir el tipo de datos adecuado
En ocasiones, seleccionar un tipo de datos resulta muy sencillo. Pero a veces hay que pensarlo un poco. Una buena elección facilita la consulta de tus datos, mantiene el almacenamiento optimizado y ayuda a evitar errores posteriores. La categoría general probablemente vendrá determinada por el tipo de datos que tengas.
Datos numéricos
Por ejemplo, supongamos que estás almacenando datos de medición. Obviamente, vas a querer algún tipo de dato numérico, no un calendario ni una cadena. Pero, ¿qué grado de precisión tienen las mediciones que deseas almacenar? ¿Te valen los números enteros o necesitas decimales? ¿Quieres un número fijo de dígitos significativos?
Entonces debes tener en cuenta el almacenamiento y la eficiencia. Elegir el tipo de entero más pequeño que pueda almacenar tus datos de forma segura te ayudará a mantener la eficiencia de tus tablas. Los tipos más pequeños utilizan menos almacenamiento y pueden mejorar el rendimiento, especialmente en tablas grandes. Por lo general, te recomendamos elegir un tipo lo suficientemente grande para el rango previsto, sin exceder en exceso lo que realmente necesitas.
Cuando un número entero no funciona, puedes elegir entre un DECIMAL o un FLOAT. Los tipos de punto flotante aproximan los valores en lugar de almacenarlos con exactitud, lo que puede provocar errores de redondeo en trabajos financieros, científicos o de otro tipo en los que la precisión es importante.
DECIMAL y NUMERIC almacenan valores exactos, lo que los hace más adecuados para cualquier cosa relacionada con precios o ratios. Sin embargo, los números de tipo ` DECIMAL` suelen tener mayores requisitos de almacenamiento que los de tipo ` FLOAT`, dependiendo del número de decimales que guardes.
Datos de caracteres y cadenas
Para los datos de cadena, debes pensar en el tamaño que deseas que tenga cada entrada.
Por lo general, es preferible establecer un tamaño realista para los campos de tipo « VARCHAR » en lugar de utilizar la longitud máxima predeterminada. Los límites excesivamente amplios no suelen mejorar la flexibilidad, pero pueden confundir a los futuros programadores sobre el tamaño previsto de los datos.
Piensa en los datos que esperas introducir, ya sean nombres, correos electrónicos o títulos de productos, y ajusta el tamaño de la columna en consecuencia.
Datos de fecha y hora
En cuanto a los datos del calendario, es útil ser preciso sobre lo que se almacena.
Si solo necesitas una fecha o solo necesitas una hora, normalmente es mejor utilizar DATE o TIME en lugar de DATETIME. Estas opciones dejan claras tus intenciones y reducen las posibilidades de que se produzcan confusiones más adelante. También proporcionan a la base de datos un poco más de espacio para optimizar las consultas que solo incluyen fecha o solo incluyen hora.
Datos booleanos
Siempre que sea posible, utiliza tipos adecuados para el dominio, como BOOLEAN, en lugar de soluciones alternativas como números enteros o cadenas de caracteres. Los tipos nativos incluyen validación integrada, semántica más clara y compatibilidad con funciones de bases de datos que esperan tipos específicos de datos.
A continuación se muestra un resumen de los objetivos comunes del almacenamiento de datos y los tipos de datos SQL recomendados para alcanzarlos.
|
Objetivo |
Tipo de datos recomendado |
¿Por qué? |
|
Almacenar valores numéricos exactos (dinero, medidas) |
|
Almacena valores precisos sin problemas de redondeo de coma flotante. |
|
Almacenar texto corto o medio |
|
Almacenamiento eficiente con tamaño predecible y longitud flexible. |
|
Almacenar texto largo y sin estructura |
|
Diseñado para bloques de texto, como descripciones o documentos. |
|
Almacenar información solo de fecha o solo de hora. |
|
Evita la complejidad innecesaria y refleja el verdadero significado de los datos. |
|
Almacena valores flexibles, similares a documentos. |
|
Útil para estructuras anidadas o en evolución que no se ajustan a columnas fijas. |
Paralos lectores que quieran refrescar sus conocimientos sobre agrupación y filtrado de datos, el SQL intermedio te enseña esas habilidades básicas.
Errores comunes y mejores prácticas
Incluso un esquema de base de datos sencillo puede presentar problemas si no se eligen cuidadosamente los tipos de datos.
Truncamiento
Por ejemplo, si tienes una columna para nombres que solo permite 5 caracteres, es posible que acabes con «Micha» en lugar de «Michael». Este es un problema común conocido como truncamiento.
Normalmente aparece en campos como nombres, direcciones o comentarios, donde la variación en el mundo real puede superar un límite optimista. Una forma de evitarlo es dimensionar los campos de texto basándose en ejemplos reales o pecar por exceso y dejarlos un poco más largos.
Errores de redondeo
Otro problema habitual es el redondeo inesperado cuando se utilizan valores de coma flotante para datos monetarios u otros datos que requieren precisión. Dado que FLOATalmacena valores aproximados, pueden acumularse pequeñas discrepancias que afecten a los informes, resúmenes o cálculos.
Puedes evitarlo seleccionando « DECIMAL » (Establecer como valor predeterminado) para cualquier elemento relacionado con divisas o valores decimales exactos. Esto garantizará que la base de datos mantenga los números estables.
Incompatibilidades de tipos
Las incompatibilidades de tipos también pueden provocar consultas lentas, especialmente en uniones o comparaciones.
Cuando una columna se almacena como una cadena y otra como un entero (o cuando cada tabla utiliza un tipo ligeramente diferente) y se intenta unirlas, es posible que la base de datos tenga que convertir los valores sobre la marcha. Esto puede provocar errores y añadir una sobrecarga innecesaria.
Mantener alineadas las columnas relacionadas en el tipo evita estas conversiones ocultas y ayuda a que las consultas se ejecuten con mayor fluidez.
Formato de fecha
Las fechas del calendario tienen su propia serie de problemas.
Las inconsistencias en el formato de las fechas son una de las principales fuentes de confusión cuando los sistemas mezclan convenciones locales o cuando los programadores almacenan las fechas como cadenas de caracteres en lugar de utilizar los tipos de fecha adecuados. Estas inconsistencias pueden provocar que las consultas funcionen mal o devuelvan resultados incorrectos de forma silenciosa.
La solución más sencilla es utilizar tipos de fecha reales y mantener un formato coherente y sin ambigüedades cuando se trabaja con fechas en formato de texto. Recomiendo encarecidamente nuestro curso« : Análisis de series temporales en SQL Server» para ayudarte a evitar los problemas de calendario más comunes en tus bases de datos.
Mejores prácticas
A continuación, se indican algunas prácticas recomendadas para garantizar el buen funcionamiento de tus bases de datos:
-
Rellena las tablas con datos de muestra al principio del proceso de diseño para detectar cualquier deficiencia en las opciones de tamaño o tipo.
-
Documenta el propósito y los rangos esperados de cada una de tus columnas para que los cambios futuros no introduzcan discrepancias.
-
Evita utilizar tipos genéricos cuando otros más específicos mejorarían la claridad.
Conclusión
Los tipos de datos definen cómo tu base de datos «entiende» los valores que almacenas. Influyen en todo, desde el almacenamiento hasta el rendimiento y la claridad. Aprender cómo funcionan hace que tus bases de datos sean más fiables y predecibles.
Para obtener más información sobre este tema, consulta Tutorial de introducción a las bases de datos SQL y Tipos de datos SQLite: Un análisis detallado de las clases de almacenamiento. También recomiendo el curso curso «Estadísticas resumidas y funciones de ventana de PostgreSQL», que muestra cómo calcular totales acumulados y estadísticas ordenadas.
Un tipo de datos en SQL define el tipo de datos que puede almacenar una columna y cómo se comportan esos datos cuando se consultan o procesan. Influye en el almacenamiento, la validación, la clasificación, la comparación y las operaciones matemáticas.
Preguntas frecuentes sobre los tipos de datos SQL
¿Qué es un tipo de datos en SQL?
Un tipo de datos en SQL es un conjunto de reglas que le indican a SQL qué tipo de información esperar dentro de la columna de tu base de datos. Es, básicamente, la forma en que tu sistema «entiende» tus datos.
¿Cómo se configura una columna para que tenga un tipo de datos específico en SQL?
Cuando definas una columna en SQL, definirás el tipo de datos justo después de asignarle un nombre a la columna. Tendrá un aspecto similar a este: name DATATYPE. También puedes utilizar el comando ALTER COLUMN para actualizar el tipo de datos en una columna que ya hayas definido.
¿Por qué es necesario elegir el tipo de datos adecuado?
Elegir el mejor tipo de datos para tus datos aclarará qué tipo de datos tienes, garantizará un almacenamiento y uso adecuados y evitará errores posteriores en tu código.
¿Cuál es la diferencia entre DECIMAL y FLOAT?
Un tipo de datos numérico de precisión ( DECIMAL ) es un tipo de datos numérico preciso que almacena el número con un número fijo de decimales. Por otro lado, un número de coma flotante ( FLOAT) es un tipo de datos que almacena una aproximación del número.
¿Todos los sistemas de gestión de bases de datos utilizan los mismos tipos de datos?
Sí y no. Cada sistema de gestión de bases de datos tiene tipos de datos similares para los tipos de datos numéricos, de caracteres y de calendario. Pero difieren en sus nombres específicos, en cómo se utilizan entre bastidores y en los tipos de datos especiales que admiten.

Soy doctor con 13 años de experiencia trabajando con datos en un entorno de investigación biológica. Creo software en varios lenguajes de programación, como Python, MATLAB y R. Me apasiona compartir mi amor por el aprendizaje con el mundo.

