SQLite驅動支持的SQL 列類型
類型描述
TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB,
BYTEA
不限制長度的字符串類型. 二進制數據必須安全地編碼存儲, 見text類型.
CHAR(), VARCHAR(), TINYTEXT,
TEXT, MEDIUMTEXT, LONGTEXT
不限制長度的字符串類型. 不會被截斷或者填充
ENUM
不限制長度的字符串類型. 不像
MySQL, 使用 ENUM代替 VARCHAR不會節省存儲空間.
SET
不限制長度的字符串類型. In contrast to MySQL,
the input is not checked against the list of allowed
values.
YEAR
不限制長度的字符串類型. MySQL 用1個字節 存儲 2 個或者 4 個數字年份, 而SQLite
存爲一個字符串.
TINYINT, INT1, CHAR
A 1 byte type used to store one character, a
signed integer between -128 and 127, or an unsigned integer between 0 and
255.
SMALLINT, INT2
2 byte (short) integer type used to store a signed
integer between -32768 and 32767 or an unsigned integer between 0 and
65535.
MEDIUMINT
3 byte integer type used to store a signed integer
between -8388608 and 8388607 or an unsigned integer between 0 and
16777215.
INT, INTEGER, INT4
4字節 (long)整數類型,用來存儲一個有符號的整數,範圍從-2147483648 到
2147483647, 或者一個有符號的整數,範圍從 0到
4294967295.
BIGINT, INT8, INTEGER PRIMARY
KEY
8 字節 (long long) 整型,用來存儲有符號的整數,從
-9223372036854775808 到
9223372036854775807 , 或者無符號的整數,從0到 18446744073709551615. 請看下面關於
INTEGER
PRIMARY KEY的討論(哈哈,rowid就是8個字節的整數)
DECIMAL, NUMERIC
A string type of
unlimited length used to store floating-point numbers of arbitrary
precision.
TIMESTAMP, DATETIME
用來存儲日期/時間的不限制長度的字符串類型.
要求的格式是
‘YYYY-MM-DD HH:MM:SS’,其他的東西被忽略.
DATE
用來存儲日期的不限制長度的字符串類型.
要求的格式是
‘YYYY-MM-DD’, 別的格式的東西會被忽略.
TIME
用來存儲時間的不限制長度的字符串類型. 要求的格式是
‘HH:MM:SS’,其他格式的東西會被忽略.
FLOAT, FLOAT4, REAL
A
4 byte floating-point
number. The range is -3.402823466E+38 to
-1.175494351E-38, 0, and
1.175494351E-38 to 3.402823466E+38. Please
note that MySQL treats REAL as an
8 byte instead of a 4 byte float like
PostgreSQL.
DOUBLE, DOUBLE
PRECISION, FLOAT8
An
8 byte floating-point number. The range is
-1.7976931348623157E+308 to
-2.2250738585072014E-308, 0, and
2.2250738585072014E-308 to
1.7976931348623157E+308.
以上資料翻譯自 http://libdbi-drivers.sourceforge.net/docs/dbd_sqlite3/x123.html
關於
INTEGER PRIMARY KEY的討論,請參考http://zhiwei.li/text/
上關於SQLite的一些資料
__________________________________________________________________________________________
Sqlite3支持的數據類型
NULL
INTEGER
REAL
TEXT
BLOB
但實際上,sqlite3也接受如下的數據類型:
smallint
16 位元的整數。
interger 32 位元的整數。
decimal(p,s) p 精確值和 s
大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數點後有幾位數。如果沒有特別指定,則系統會設爲 p=5; s=0
。
float 32位元的實數。
double 64位元的實數。
char(n) n 長度的字串,n不能超過
254。
varchar(n) 長度不固定且其最大長度爲 n 的字串,n不能超過 4000。
graphic(n) 和 char(n)
一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態是爲了支援兩個字元長度的字體,例如中文字。
vargraphic(n)
可變長度且其最大長度爲 n 的雙字元字串,n不能超過 2000
date 包含了 年份、月份、日期。
time 包含了
小時、分鐘、秒。
timestamp 包含了 年、月、日、時、分、秒、千分之一秒。
SQLite包含了如下時間/日期函數:
datetime().......................產生日期和時間
date()...........................產生日期
time()...........................產生時間
strftime().......................對以上三個函數產生的日期和時間進行格式化
datetime()的用法是:datetime(日期/時間,修正符,修正符...)
date()和time()的語法與datetime()相同。
在時間/日期函數裏可以使用如下格式的字符串作爲參數:
YYYY-MM-DD
YYYY-MM-DD
HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD
HH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
其中now是產生現在的時間。
舉例(寫這個筆記的時間是2006年10月17日晚8點到10點,測試環境:SQLite
2.8.17,WinXP,北京時間):
例1.
select datetime('now');
結果:2006-10-17
12:55:54
例2.
select datetime('2006-10-17');
結果:2006-10-17
12:00:00
例3.
select datetime('2006-10-17 00:20:00','+1 hour','-12
minute');
結果:2006-10-17 01:08:00本篇文章來源於:開發學院 http://edu.codepub.com 原文鏈接:http://edu.codepub.com/2010/0121/19984.php
例4.
select date('2006-10-17','+1 day','+1
year');
結果:2007-10-18
例5.
select datetime('now','start of
year');
結果:2006-01-01 00:00:00
例6.
select datetime('now','start of
month');
結果:2006-10-01 00:00:00
例7.
select datetime('now','start of
day');
結果:2006-10-17 00:00:00
例8.
select datetime('now','+10
hour','start of day','+10 hour');
結果:2006-10-17 10:00:00
例9.
select
datetime('now','localtime');
結果:2006-10-17 21:21:47
例10.
select
datetime('now','+8 hour');
結果:2006-10-17 21:24:45
例3中的+1 hour和-12
minute表示可以在基本時間上(datetime函數的第一個參數)增加或減少一定時間。
例5中的start of
year表示一年開始的時間。
從例8可以看出,儘管第2個參數加上了10個小時,但是卻被第3個參數“start of
day”把時間歸零到00:00:00,隨後的第4個參數在00:00:00
的基礎上把時間增加了10個小時變成了10:00:00。
例9把格林威治時區轉換成本地時區。
例10把格林威治時區轉換成東八區。
strftime()函數可以把YYYY-MM-DD
HH:MM:SS格式的日期字符串轉換成其它形式的字符串。
strftime()的語法是strftime(格式, 日期/時間, 修正符, 修正符,
...)
它可以用以下的符號對日期和時間進行格式化:
%d 月份, 01-31
%f 小數形式的秒,SS.SSS
%H 小時,
00-23
%j 算出某一天是該年的第幾天,001-366
%m 月份,00-12
%M 分鐘, 00-59
%s
從1970年1月1日到現在的秒數
%S 秒, 00-59
%w 星期, 0-6 (0是星期天)
%W 算出某一天屬於該年的第幾周,
01-53
%Y 年, YYYY
%% 百分號
strftime()的用法舉例如下:
例11.
select
strftime('%Y.%m.%d %H:%M:%S','now','localtime');
結果:2006.10.17
21:41:09
函數篇:
算術函數
abs(X) 返回給定數字表達式的絕對值。
max(X,Y[,...]) 返回表達式的最大值。
min(X,Y[,...]) 返回表達式的最小值。
random(*) 返回隨機數。
round(X[,Y])
返回數字表達式並四捨五入爲指定的長度或精度。
字符處理函數
length(X) 返回給定字符串表達式的字符個數。
lower(X)
將大寫字符數據轉換爲小寫字符數據後返回字符表達式。
upper(X) 返回將小寫字符數據轉換爲大寫的字符表達式。
substr(X,Y,Z)
返回表達式的一部分。
randstr()
quote(A)
like(A,B) 確定給定的字符串是否與指定的模式匹配。
glob(A,B)
條件判斷函數
coalesce(X,Y[,...])
ifnull(X,Y)
nullif(X,Y)
集合函數
avg(X) 返回組中值的平均值。
count(X) 返回組中項目的數量。
max(X) 返回組中值的最大值。
min(X) 返回組中值的最小值。
sum(X) 返回表達式中所有值的和。
其他函數
typeof(X) 返回數據的類型。
last_insert_rowid() 返回最後插入的數據的ID。
sqlite_version(*) 返回SQLite的版本。
change_count() 返回受上一語句影響的行數。
last_statement_change_count()
管理工具:http://www.sqlitedeveloper.com/
SQLite :http://sqlite.phxsoftware.com/
本篇文章來源於:開發學院 http://edu.codepub.com
原文鏈接:http://edu.codepub.com/2010/0121/19984_2.php