04 - Tipos de datos en SQLite

Video

#SQL #SQLite

🔙 Previous Part | Next Part 🔜

↩️ Go Back

Table of Contents:


1 - Introducción a los Tipos de Datos de SQL Lite

Puedes revisar la documentación oficial aca:

Vamos a revisar las diferencias entre los sistemas de tipos de datos utilizados por SQLite y otros motores de bases de datos SQL, como Microsoft SQL Server o PostgreSQL.

1.1 - Comparación de Datos Estáticos vs. Dinámicos

  1. Sistemas de Tipos de Datos Estáticos vs. Dinámicos: La mayoría de los motores de bases de datos SQL utilizan un sistema de tipos de datos estático y rígido. Esto significa que cada columna en una base de datos tiene un tipo de dato predefinido y fijo, como texto, número entero, número decimal, etc. En cambio, SQLite utiliza un sistema de tipos de datos más dinámico y flexible.

  2. Flexibilidad de SQLite: En el sistema de SQLite, los tipos de datos están asociados con los valores en sí mismos, no con las columnas donde se almacenan. Esto permite que una misma columna pueda almacenar diferentes tipos de datos, lo que lo hace más flexible y fácil de usar, especialmente para los principiantes.

  3. Comparación con Otros Motores de Bases de Datos: Mientras que en otros motores como Microsoft SQL Server o PostgreSQL existen muchos tipos de datos específicos (por ejemplo, diferentes tipos para texto corto y largo), SQLite simplifica este aspecto. Esta simplificación es especialmente útil para desarrolladores y administradores de bases de datos en etapas iniciales de aprendizaje.

  4. Retrocompatibilidad de SQLite: A pesar de su flexibilidad, el sistema de tipos de datos de SQLite es retrocompatible con los sistemas más rígidos y estáticos de otros motores. Esto significa que puede manejar y trabajar con datos que provienen de sistemas con estructuras más estrictas sin problemas.

En resumen, podemos ver que SQLite, mediante su sistema de tipos de datos dinámico, ofrece una manera más sencilla y flexible de manejar los datos en comparación con otros motores de bases de datos que utilizan sistemas de tipos de datos más estáticos y rígidos.

1.2 - Clases de almacenamiento y tipos de datos

SQL utilliza las siguientes clases de almacenamiento:

Estas clases de almacenamiento definen cómo SQLite maneja y almacena los diferentes tipos de datos, permitiendo un uso eficiente del espacio y la flexibilidad en el tipo de información que se puede guardar en la base de datos

1.3 - Tipos de Afinidad

En SQLite, un tipo de afinidad se refiere a las reglas que determinan cómo la base de datos trata los datos ingresados en una columna en función del tipo de dato declarado para dicha columna. La afinidad de tipo no es el tipo de dato real de la columna, sino más bien una sugerencia sobre cómo SQLite debe manejar los datos insertados en la tabla. Cuando se insertan datos en una columna, SQLite aplica estas reglas de afinidad para convertir los datos al tipo que considera más apropiado, si es necesario.

Hay cinco afinidades de tipo en SQLite:

  1. TEXT
  2. NUMERIC
  3. INTEGER
  4. REAL
  5. BLOB

La afinidad se determina por el tipo de dato que se declara en la definición de la columna. Por ejemplo, si defines una columna con el tipo VARCHAR, SQLite aplicará la afinidad de tipo TEXT a esa columna. Si defines una columna como INT, SQLite aplicará la afinidad INTEGER.

SQLite utiliza estas afinidades para realizar conversiones automáticas de tipos. Por ejemplo, si intentas insertar un valor de texto en una columna con afinidad INTEGER, SQLite intentará convertir ese texto en un número entero. Si no puede, el valor se almacenará como texto. Esto permite que SQLite sea flexible con los tipos de datos, pero también puede causar confusión si no se entienden bien las reglas de afinidad.

Tipo de afinidad NUMERIC

En SQLite, el tipo de afinidad NUMERIC es un tipo de dato flexible que puede almacenar diferentes clases de valores numéricos. A diferencia de los otros tipos de datos, como INTEGER, REAL, TEXT, y BLOB, que tienden a ser más específicos en cuanto al tipo de dato que almacenan, NUMERIC es más versátil. Aquí tienes una explicación más detallada:

  • NUMERIC: Este tipo de afinidad es bastante único porque SQLite trata de adivinar el tipo de dato numérico basándose en la entrada. Por ejemplo, si ingresas un número sin una fracción decimal, SQLite lo manejará como un INTEGER. Si el número tiene una fracción decimal o contiene la letra "E" (indicando notación científica), entonces se tratará como REAL. Además, SQLite también puede almacenar valores NUMERIC como texto si la entrada parece ser más adecuada para almacenamiento de texto (por ejemplo, si introduces un número con ceros iniciales). Esta afinidad es particularmente útil cuando los datos numéricos que se van a almacenar pueden ser de diferentes tipos y no se quiere perder precisión, como puede ser el caso de números de identificación, precios que pueden o no tener decimales, etc.

En resumen, la afinidad NUMERIC puede considerarse como un tipo de dato "camaleónico" que adapta su comportamiento al valor concreto que se está almacenando, lo cual es diferente de los otros tipos de datos que tienen un comportamiento fijo e inmutable independientemente del valor específico que almacenan.

En la siguiente tabla podemos ver como SQLite aplica las reglas del tipo de afinidad para determinar el tipo de dato a utilizar.


Z) Glossary

File Definition

🔙 Previous Part | Next Part 🔜

↩️ Go Back