2011-12-07 10 views
9

Soy bastante nuevo en SQLITE y noté que solo hay 4 tipos de datos, pero veo ejemplos en línea donde las personas ponen sus propios tipos de datos. Realmente no entiendo esto y me preguntaba si alguien podría explicarme eso. Por ejemplo, veo una columna que contendrá una fecha y el tipo de datos que se dio fue la marca de tiempo que no existe. ¿Qué es lo predeterminado? ¿Tiene un texto predeterminado cuando haces el tuyo?SQLITE Custom DataTypes?

Respuesta

14

sqlite3 utiliza un sistema de tipo dinámico. Solo hay cinco clases de almacenamiento: NULL, entero, real, texto y blob. (Fuente:. Datatypes In SQLite Version 3)

Y, para citar a esa página:

Cualquier columna en una base de datos SQLite versión 3, excepto una columna PRIMARIA clave entera, se puede utilizar para almacenar un valor de cualquier clase de almacenamiento .

Aparte de la excepción integer primary key, SQLite no aplica los tipos en absoluto. Lo que significa que el nombre de tipo que coloque en su create table es puramente informativo.

create table mytab (a apples, b bananas); 

es una declaración válida create table. Puede insertar marcas de tiempo, texto, blobs en ambas columnas (sin decir que debe, pero puede hacerlo).

Para obtener más información, consulte la documentación de referencia vinculada para el sistema de tipos.

sqlite> create table mytab (a apples, b bananas); 
sqlite> insert into mytab values (CURRENT_TIME, NULL); 
sqlite> insert into mytab values ('hello', 3.14159); 
sqlite> select * from mytab; 
14:59:18| 
hello|3.14159 

Para responder a su pregunta directamente: no hay un valor predeterminado. Un tipo de almacenamiento está asociado a cada valor almacenado en la base de datos, no a columnas de una tabla.

+0

Gracias Mat, eso es exactamente lo que estaba buscando – Pittfall