elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Servidor TeamSpeak 3 crea canales gratuitos


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Tipos de Datos de SQLite (ayuda!!)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Tipos de Datos de SQLite (ayuda!!)  (Leído 18,044 veces)
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Tipos de Datos de SQLite (ayuda!!)
« en: 12 Octubre 2009, 23:03 »

Hola gente.. Resulta que en un psot de por allí, se me planteó un problema con el tema de los datos BOOLEAN y de DATE en SQLite ( http://www.sqlite.org/ )


Alguien sabe, conoce exactamente cuales son los tipos de datos de SQLite??? y cuanto ocupa cada uno??
Estaria bueno que pasen alguna tabla :D

Y en caso de que alguien utilice mucho sqlite, y conozca sobre que como conviene guardar fechas, le comento que estoy guardando en un campo: CURRENT_DATE las fechas (las ingreso así: YYYY-MM-DD)
Vi por ahí que hay diferentes tipos, estaba el DATE, CUrrent_date y otros cuantos mas... El Current_date es el mejor?? (no m convence el nombre)

Ya que cuando creé una columna de valores DATE, y le mandé: "YYYY-MM-DD" me devolvió esos valores, mas el horario (00:00:00)

Saludos!


En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #1 en: 13 Octubre 2009, 22:19 »

Las bases de datos relacionales utilizan el mismo tipo de datos primitivos que vemos en programacion + los 'extras' desarrollados por cada DB llamados tipos de datos ANSI SQL.

Pero te hablare de los generales y comunes en todas:

CHAR - 1 byte en memoria
VARCHAR - 2 byte + 1 en memoria
FLOAT - 4 bytes en memoria
INTEGER - 4 bytes en memoria
DOUBLE/REAL - 8 bytes en memoria
DATE - 3 bytes en memoria
TIME - 3 bytes en memoria
YEAR - 1 byte en memoria
DATETIME - 8 bytes en memoria
TIMESTAMP - 4 bytes en memoria
BOOLEAN - 1 byte en memoria

No confundas cantidad de memoria que ocupa un tipo de dato, a tamanio de almacenamiento de un campo. Por ejemplo el siguiente campo:

nombre char(20)

el tipo de dato al ser CHAR en memoria fisica (memoria ram) ocupa 1 byte, sin embargo los registros que insertes ocuparan 20 bytes en cache y disco duro  ;) (sobretodo porque CHAR es un tipo de dato estatico no dinamico) Y lo mismo ocurre con cualquier tipo de dato.

No conozco que tipo de dato maneja CURRENT_DATE (ya que en otras DB es una funcion) pero por lo que muestras, pareciese que es o DATETIME o TIMESTAMP, yo te recomendaria que utilizes y definas tu mismo el campo con tu tipo de dato fecha.


En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #2 en: 13 Octubre 2009, 22:33 »

Entonces tengo cualquier cosa guardada como FECHA...
Como me recomiendan guardar las fechas entonces??'
Como u campo TEXT y listo???
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #3 en: 13 Octubre 2009, 22:43 »

No dije especificamente que tienes cualquier cosa guardada como fecha, sino que yo particularmente desconozco en SQLite si la funcion CURRENT_DATE maneja los datos como DATETIME o TIMESTAMP (fisicamente los datos son mostrados iguales, pero internamente un tipo de dato ocupa 8 bytes el otro 4 bytes)

No puedes ingresar una fecha en tipo de dato TEXT (no hice mencion de TEXT ya que no todas las DB tienen este personalizado tipo de dato ANSI, esto hazta lo que se es de MySQL) Yo solo hice mencion de los tipos de datos globales que se que todas las DB relacionales ANSI SQL compatibles utilizan. No es que no puedas insertar una fecha en el tipo de dato TEXT porque puedes (aunque tu mismo tendrias que ponerle la sintaxis 00-00-000) sino porke este tipo de datos maneja caracteres no binarios. Deberias utilizar depende tus necesidades, pero podrias considerar el tipo de dato DATE.
En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.586



Ver Perfil WWW
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #4 en: 14 Octubre 2009, 04:53 »

he estado viendo algo de SQLlite y vi que no se puede hacer algo como dijo ^TiFa^  :-*..... de hacer nombre char(20) en la misma pagina oficial lo dice, que por mas que pongas nombre char(20) podes escribir lo que quieras...es eso verdad? o estoy equivocado? pero si la pagina lo dice.
« Última modificación: 14 Octubre 2009, 05:59 por seba123neo » En línea

La idea de que Dios es un hombre blanco más grande de lo normal con una barba flameante que se sienta en el cielo y cuenta la caída de cada gorrión es ridícula. Pero si por Dios uno quiere decir el conjunto de leyes físicas que gobiernan el Universo, entonces claramente hay un Dios así. Este Dios es emocionalmente insatisfactorio, no tiene mucho sentido rezarle a la ley de gravedad.

Carl
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #5 en: 14 Octubre 2009, 05:47 »

Bueno, pero.. y al final.. que "VARIABLE" me conviene para guardar Fechas que le paso como parametro como STRING.. o sea.. sin metodos apra obtener la fecha actual... yo mismo le digo desde un campo (textarea) que la fecha es 2009-10-20

En que variable tendria que guardarla?? en una de texto comun?? en una de DATE..?? diganme.. que me recomiendan :)
En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.586



Ver Perfil WWW
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #6 en: 14 Octubre 2009, 06:19 »

guardala en cualquiera de las 2, yo te diria en un string por ejemplo, total despues si necesitas hacer operaciones de fecha, la convertis con CDate() y listo, pero para cuando quieras guardar en la base la fecha, guardarla desde en una string...formateada al formato correspondiente...

saludos.
En línea

La idea de que Dios es un hombre blanco más grande de lo normal con una barba flameante que se sienta en el cielo y cuenta la caída de cada gorrión es ridícula. Pero si por Dios uno quiere decir el conjunto de leyes físicas que gobiernan el Universo, entonces claramente hay un Dios así. Este Dios es emocionalmente insatisfactorio, no tiene mucho sentido rezarle a la ley de gravedad.

Carl
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #7 en: 14 Octubre 2009, 06:30 »

Perefcto...

Al fin y al cabo, no se ha respondido la pregunta numero 1..
Cuales son lso tipos de datos que se guardan en SQLite
No creo que sean SOLAMENTE: http://www.sqlite.org/datatype3.html
Esos pocos que aparecen ahí..
O será así?!?!?
Nada de VARCHAR, ni nada de eso.. TEXT, REAL, BLOB, e INTEGER.. y nada mas.. Será realmente así?
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #8 en: 14 Octubre 2009, 14:12 »

Todas las bases de datos relacionales y compatibles al ANSI SQL poseen los siguientes tipos de datos (Esto es general en todas):

Citar
CHAR - 1 byte en memoria
VARCHAR - 2 byte + 1 en memoria
FLOAT - 4 bytes en memoria
INTEGER - 4 bytes en memoria
DOUBLE/REAL - 8 bytes en memoria
DATE - 3 bytes en memoria
TIME - 3 bytes en memoria
YEAR - 1 byte en memoria
DATETIME - 8 bytes en memoria
TIMESTAMP - 4 bytes en memoria
BOOLEAN - 1 byte en memoria


Citar
Al fin y al cabo, no se ha respondido la pregunta numero 1..
Cuales son lso tipos de datos que se guardan en SQLite

Ya te respondi, y vuelvo y te lo pego en esta respuesta mas arriba. Inclusive te hice una explicacion ligera sobre cuanto bytes en memoria ram ocupan cada tipo de datos. Y te hice una clarificacion de cual te convenia, pero aparentase que no comprendes del todo lo que intento exponerte.


Citar
Nada de VARCHAR, ni nada de eso.. TEXT, REAL, BLOB, e INTEGER.. y nada mas.. Será realmente así?

SQLite posee CHAR, VARCHAR esos dos tipos de datos son primitivos, todas las bases de datos relacionales y compatibles al ANSI SQL lo poseen.

Citar
he estado viendo algo de SQLlite y vi que no se puede hacer algo como dijo ^TiFa^  :-*..... de hacer nombre char(20) en la misma pagina oficial lo dice, que por mas que pongas nombre char(20) podes escribir lo que quieras...es eso verdad? o estoy equivocado? pero si la pagina lo dice.

Porsupuesto que se puede. Si yo hago:

CREATE TABLE TABLA(
nombre char(20));

Y en mi programa o script puedo insertar 50 caracteres y alegrarme y decir yupi :D engane a la base de datos, le puse de almacenamiento a dicho campo nombre solo 20 y inserte 50 soy un genio !!!   ;-)  Y cuando ingreses a la base de datos y hagas un SELECT nombre from TABLA veras algo muy curioso.... y diras pero que paso??? yo inserte 50 caracteres y esta cosa me lo corto a 20 caracteres  :(   :(  Sinceramente.... no voy a opinar en un tema tan simple como son los tipos de datos y como el motor maneja la cantidad de almacenamiento.

Citar
guardala en cualquiera de las 2, yo te diria en un string por ejemplo, total despues si necesitas hacer operaciones de fecha, la convertis con CDate() y listo, pero para cuando quieras guardar en la base la fecha, guardarla desde en una string...formateada al formato correspondiente...

Eso es irrelevante, porque tiene que convertir tipos de datos cuando YA EXISTE un tipo de dato fecha en las base de datos relacionales??? como le dije anteriormente y vuelvo y le repito amigo para el campo fecha utilize el tipo de datos DATE si solamente desea insertar el año utilize YEAR y si solo quiere la hora utilize TIME... es tan complicado entender esto???

En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #9 en: 14 Octubre 2009, 14:23 »

y otra cosilla el tipo de dato TEXT que aunque maneje caracterescomo VARCHAR o CHAR, tiene caracteristicas que lo limitan entre estas:

1 - Si algun dia quieres portar tus tablas a otro motor de base de datos como ORACLE por ponerte un ejemplo, tendras que alterar el campo tipo TEXT a CHAR o VARCHAR ya que TEXT no va en ORACLE. (No es portable digamos)

2 - TEXT no soporta datos DEFAULT como CHAR o VARCHAR si

3 - (No se aca como SQLite maneje este punto) pero hasta lo que conozco en otras DB, para crear indices  en tipo de datos TEXT hay que especificarle un tamanio (cosa que no aplica en CHAR o VARCHAR).

Creo que leer un poco sobre introduccion a lenguaje SQL no caeria nada mal.
« Última modificación: 14 Octubre 2009, 14:39 por ^TiFa^ » En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #10 en: 15 Octubre 2009, 02:15 »

Ahh.. ok. perfecto, me quedo claro..
Son las que nombraste, mas las que aparecen en la documentacion de SQLite...
Gracias amigo..
En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.586



Ver Perfil WWW
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #11 en: 15 Octubre 2009, 02:27 »

Porsupuesto que se puede. Si yo hago:

CREATE TABLE TABLA(
nombre char(20));

Y en mi programa o script puedo insertar 50 caracteres y alegrarme y decir yupi :D engane a la base de datos, le puse de almacenamiento a dicho campo nombre solo 20 y inserte 50 soy un genio !!!   ;-)  Y cuando ingreses a la base de datos y hagas un SELECT nombre from TABLA veras algo muy curioso.... y diras pero que paso??? yo inserte 50 caracteres y esta cosa me lo corto a 20 caracteres  :(   :(  Sinceramente.... no voy a opinar en un tema tan simple como son los tipos de datos y como el motor maneja la cantidad de almacenamiento.

en la pagina dice esto:

Código:
SQLite does not enforce the length of a VARCHAR. You can declare a VARCHAR(10) and SQLite will be happy to let you put 500 characters in it. And it will keep all 500 characters intact - it never truncates.

te digo lo que hice, cree una tabla con un campo varchar(50), le agrege 100 caracteres por lo menos...hice un select y me trajo tal cual los 100.
En línea

La idea de que Dios es un hombre blanco más grande de lo normal con una barba flameante que se sienta en el cielo y cuenta la caída de cada gorrión es ridícula. Pero si por Dios uno quiere decir el conjunto de leyes físicas que gobiernan el Universo, entonces claramente hay un Dios así. Este Dios es emocionalmente insatisfactorio, no tiene mucho sentido rezarle a la ley de gravedad.

Carl
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #12 en: 15 Octubre 2009, 02:33 »

Miren:
Para aclarar algunas dudas:

En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: Tipos de Datos de SQLite (ayuda!!)
« Respuesta #13 en: 15 Octubre 2009, 02:38 »

Perfecto si SQLite maneja el asunto de esa manera. No es lo estandar que conste (Lo estandar es que trunque hasta el limite de almacenamiento definido) al menos la teoria de truncar hasta el limite aplica en la mayoria de base de datos relacionales existentes. Inconvenientes que ese funcionamiento de SQLite con varchar puede causar? bueno, hay que ver a la hora de migrar datos de SQLite donde se definan varchar(20) inserten 100 caracteres, y esta misma tabla pase a MySQL, MySQL bastante probable trunquee los caracteres hasta 20 ya que el tipo de datos CHAR asi funciona en la mayoria de DB relacionales populares del mercado, no estoy muy al tanto de SQLite no lo utilizo, solo hice una referencia de los tipos de datos comunes en todas las DB (nisiquiera mencione TEXT puesto que no aplica en todas las DB) y de la forma como los motores trabajan con ellos, ahora que SQLite haya personalizado el tipo de dato VARCHAR o haya hecho una copia de TEXT como VARCHAR ya es otra cosa, pero eso no aplica en otras DB de nivel profesional.

Citar

  Insertar Cita
Miren:
Para aclarar algunas dudas:

Por cierto cuales dudas aclaras???? no me hagas repetir en un copy + paste los tipos de datos otra vez  :-\  que son los mismos que mencione, a excepcion de unos cuantos mas que no quize mencionar porque no aplican en todas las base de datos y yo quize ser mas general.
« Última modificación: 15 Octubre 2009, 02:40 por ^TiFa^ » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Conectar Bv.Net con Sqlite
.NET
proteus8 11 5,503 Último mensaje 14 Enero 2011, 04:01
por proteus8
Base de datos embebidas como sqlite pero NoSQL
Programación General
edmond.duke.developer 1 2,189 Último mensaje 13 Agosto 2011, 20:09
por madpitbull_99
problema con SQlite
Java
imaginawireless 1 991 Último mensaje 8 Mayo 2012, 14:21
por ELMED
[AYUDA] Modificadores de tipos
Programación C/C++
Dipirona 4 676 Último mensaje 12 Abril 2013, 01:57
por 85
ayuda con editar un dato en tabla con sqlite
Java
clupin 0 95 Último mensaje 27 Julio 2014, 22:02
por clupin
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines