Tipos de datos SQLite

Bilal Shahid 21 junio 2023
  1. Importancia de los tipos de datos
  2. Tipos de datos en SQLite
  3. Tipos de afinidad en SQLite
  4. Usar tipos de datos de SQLite
Tipos de datos SQLite

Para comenzar a crear consultas complejas a través de procedimientos y funciones en SQLite, debemos conocer los diferentes tipos de datos para evitar cualquier pérdida o manipulación incorrecta de datos.

Importancia de los tipos de datos

Los tipos de datos están directamente vinculados a las variables necesarias para definir conjuntos de datos específicos dentro de un procedimiento o función. El objetivo principal de un tipo de datos es decirle al sistema qué tipo de datos se almacenarán dentro de una variable.

Esto es crucial ya que la manipulación de datos se basará en los datos almacenados. Por ejemplo, si está almacenando texto en una variable, agregar un cierto número aumentaría el valor ASCII del carácter y devolvería uno nuevo.

Si almacenó la letra A como un carácter y le agregó 1, incrementaría el valor ASCII y devolvería B. De la misma forma, si tuvieras que almacenar el número 65 en una variable de carácter, se almacenaría A, y al sumar uno daría el valor 66, que corresponde a la letra B.

Esto muestra la importancia de los tipos de datos al crear funciones o incluso dentro de las columnas de una tabla. Si almacenó un número en un tipo de datos de texto y tenía la intención de agregar números, terminaría con caracteres y viceversa.

Como resultado, es crucial tener una buena comprensión de los tipos de datos en SQLite y la forma correcta de usarlos.

Tipos de datos en SQLite

Hay varios tipos de datos que encontrará en SQLite. Para almacenarlo y manipularlo correctamente, debe estar familiarizado con cada uno de los siguientes:

  • Blob: Los datos almacenados en un blob pueden considerarse dinámicos. Se almacena tal como se ingresó sin alteraciones.
  • Nulo: como sugiere el nombre, está destinado a valores nulos. Es mejor optar por nulo cuando no desea almacenar nada porque los espacios o los retornos de carro tienen sus valores ASCII y el sistema los considera caracteres independientes.
  • Texto: se utiliza para todas las cadenas que deben guardarse; estos pueden tener cualquier longitud siempre y cuando esté dentro de la capacidad máxima de almacenamiento diseñada por su versión de SQLite. En la mayoría de los casos, las cadenas se almacenan mediante codificaciones de bases de datos comunes, como UTF-8, UTF-16BE o UTF-16LE.
  • Entero: Se utiliza para todos los valores enteros. Se pueden almacenar todos los números enteros positivos y negativos, incluido el cero. La cantidad de bytes utilizados para almacenar datos depende de qué tan grande sea el valor.
  • Real: el tipo de dato entero solo atiende a números enteros, por lo que el tipo de dato real se utiliza para valores de coma flotante. Estos son números, tanto positivos como negativos, que también tienen valores decimales.

Tipos de afinidad en SQLite

Vale la pena analizar los tipos de afinidad mientras analizamos los tipos de datos. Los tipos de datos mencionados anteriormente también pueden denominarse clases de almacenamiento.

Una subdivisión de estos son los tipos de afinidad, una clase de almacenamiento preferida diseñada para una columna. El objetivo principal es maximizar la compatibilidad entre SQLite y otras bases de datos.

Los tipos de afinidad en SQLite incluyen lo siguiente:

  • Texto: almacena datos que contienen valores nulos, de texto o de blob.
  • Numérico: esto es excelente si desea un tipo de afinidad que pueda almacenar las cinco clases de almacenamiento.
  • Entero: Esto funciona de manera muy similar a Numérico, pero la expresión moldeada hace que surjan diferencias.
  • Real: es similar a los números enteros, excepto que convierte los números enteros regulares en valores de coma flotante.
  • Ninguno: Si utiliza Ninguno, ninguna clase de almacenamiento tendrá prioridad. Por lo tanto, no habrá intentos de convertir un tipo de datos a otro y permanecerá como está.

Tipos de datos reales frente a numéricos

Dado que los tipos de datos reales y numéricos se superponen bastante, es mejor ofrecer algunas aclaraciones para que puedan usarse correctamente. Esencialmente, real se usa para datos numéricos con un componente decimal, como números de coma flotante.

Otros números sin decimales se usan a menudo con el entero. Esto es bastante sencillo, pero las afinidades lo hacen un poco complicado de entender.

Numérico es una afinidad que se introdujo para afiliarse a los siguientes tipos de datos:

  • Numeric
  • Decimal (10,5)
  • Boolean
  • Date
  • Datetime

Dado que real no es un componente de esta lista, se puede concluir que todos los tipos de números de punto flotante no se atenderán en un tipo numérico. Como resultado, si planea almacenar un número entero normal o un decimal (10,5), numérico funcionará.

Para cualquier otro número de punto flotante, numérico es la mejor opción.

Tenga en cuenta que el propósito de las afinidades es mejorar la compatibilidad entre SQLite y otras bases de datos. Como resultado, es posible que algunas afiliaciones a ciertas afinidades no estén disponibles directamente en SQLite.

Usar tipos de datos de SQLite

Ahora que tiene una comprensión detallada de los diferentes tipos de datos en SQLite, debe saber cómo usarlos.

Usar tipos de datos de SQLite en tablas

Puede usar tipos de datos directamente en columnas mientras crea tablas. Esto puede hacerse de la siguiente manera:

CREATE TABLE table_name(a INT, b TEXT, c REAL);

Esto crea una tabla con tres columnas de diferentes tipos de datos.

Nota: Asegúrese de seleccionar los tipos de datos correctos al crear la tabla. Es posible cambiarlos, pero esto implica una consulta compleja, o la tabla existente debe eliminarse y volver a crearse.

Usar tipos de datos de SQLite en funciones o procedimientos

Crear una variable con tipos de datos en SQLite es un poco complicado. Primero debe crear una tabla de mapa de memoria temporal para almacenar valores en las variables correctamente.

Aquí hay un ejemplo:

BEGIN
PRAGMA temp_store = 2;
CREATE TEMP TABLE table_name(Name TEXT, Age INTEGER);
INSERT INTO table_name (Name) VALUES ('abc');
END
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub