Thank you so much for the detail explanation about datatype.
Big thanks,
JP


----- Original Message ----
From: "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
To: General Discussion of SQLite Database <sqlite-users@sqlite.org>
Cc: [EMAIL PROTECTED]
Sent: Wednesday, May 7, 2008 12:27:21 PM
Subject: Re: [sqlite] SQLITE3 datatype

On Wed, 7 May 2008, Joanne Pham wrote:

> I was wondering what is the different in size between int(8) and INTEGER
> datatype.
> Thanks,

In the sense you are asking, there is no difference, but more importantly, 
the question reflects a misunderstanding of how SQLite is designed. Most 
database applcations use datatypes as part of the column definitions; 
SQLite does not, it uses 'affinities' instead. In other database apps you 
assign a datatype to a column; the database engine will then reject (or 
convert) data which does not conform to the declared datatype.

In SQLite, any column can store any kind of data. When you create a table, 
you are not creating 'datatypes, you are defining column 'affintities'. 
Affinities govern the algorithms SQLite uses when processing inserts & 
updates. This is clearly discussed in:


  http://sqlite.org/datatype3.html


To illustrate it for yourself, try this:

CREATE TABLE ztemp (col1 INTEGER, col2 TEXT);
INSERT INTO ztemp VALUES(1234, "abcd");
INSERT INTO ztemp VALUES("abcd", 1234);
SELECT * FROM ztemp;

output from above:
-----------------
1234,abcd
abcd,1234

Notice the second insert. I inserted the text value 'abc' into 'col1', 
which I had defined with an integer affinity. You can see from the output 
that the first column contains both data elements, integer and text, 
because SQLite columns do not have datatypes.

Note that in above I could also define the table as:

  CREATE TABLE ztemp (col1, col2);

and the result with be the same. The database creates the same table with 
or without affinities.

The key sentence in the SQLite docs, in section "2. Column Affinity" is:

"In SQLite version 3, the type of a value is associated with the value 
itself, not with the column or variable in which the value is stored. 
(This is sometimes called manifest typing.) All other SQL databases 
engines that we are aware of use the more restrictive system of static 
typing where the type is associated with the container, not the value."

You need to re-read that section closely and you will see that the answer 
to the question you are asking ("What is the differnce between int(8) and 
INTEGER?") is that there is no difference; the question is not applicable 
in the context of SQLite because SQLite does not use datatypes.

Chris

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Christopher F. Martin
School of Medicine
Center for Digestive Diseases & Nutrition
CB# 7555, 4104 Bioinformatics Bldg.
University of North Carolina at Chapel Hill
Chapel Hill, North Carolina 27599-7555
Phone: 919.966.9340      Fax: 919.966.7592
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

On Wed, 7 May 2008, Joanne Pham wrote:

> Hi ,
>> "Can you direct us where you find out that "SQLITE3 has bigint and int"
>> as datatypes?"
>
> Not on any website but one of another project in my company using sqlite 
and
> they created one of the using bigint, boolean, int(1)
> as the datatype and I have tried these datatype to create the table and 
the
> table is created sucessfully without any problem. So
> I was wondering what is the different in size between int(8) and INTEGER
> datatype.
> Thanks,
> JP
>
>
> ----- Original Message ----
> From: P Kishor <[EMAIL PROTECTED]>
> To: General Discussion of SQLite Database <sqlite-users@sqlite.org>
> Sent: Wednesday, May 7, 2008 10:08:54 AM
> Subject: Re: [sqlite] SQLITE3 datatype
>
> On 5/7/08, Joanne Pham <[EMAIL PROTECTED]> wrote:
>> Hi All,
>>   I have read online document regarding SQLITE3 data type and below is 
list
>> of these datatypes:
                                        [ Mark Set ]
>>         * TEXT
>>         * NUMERIC
>>         * INTEGER
>>         * REAL
>>         * NONE
>>   But just now I found out SQLITE3 has bigint and int as another 
datatype.
>>   Can you direct me where I can find out the complete list of SQLITE
>> datatypes and the size of each datatype.
>
> Can you direct us where you find out that "SQLITE3 has bigint and int"
> as datatypes?
>
>
>>   Thanks,
>>   JP
>>
>>
>>   _______________________________________________
>>   sqlite-users mailing list
>>   sqlite-users@sqlite.org
>>   http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
>>
>>
>>
>>      
>> 
____________________________________________________________________________________
>>   Be a better friend, newshound, and
>>   know-it-all with Yahoo! Mobile.  Try it now. 
>> http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
>>   _______________________________________________
>>   sqlite-users mailing list
>>   sqlite-users@sqlite.org
>>   http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
>
>
> --
> Puneet Kishor http://punkish.eidesis.org/
> Nelson Institute for Environmental Studies http://www.nelson.wisc.edu/
> Open Source Geospatial Foundation (OSGeo) http://www.osgeo.org/
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
> 
____________________________________________________________________________________
> Be a better friend, newshound, and
> know-it-all with Yahoo! Mobile.  Try it now.
> http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


      
____________________________________________________________________________________
Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.  
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to