一個既小又好用的關(guān)系型數(shù)據(jù)庫,代替MySql。已經(jīng)捆綁到了PHP5.0上,使用就像ASP和ACCESS結(jié)合一樣方便。
SQLite是一款輕型的數(shù)據(jù)庫,它的設(shè)計目標是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如Tcl、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。
現(xiàn)在好多程序的配置文件等都是采用這個SQLite來存儲的,比如大名鼎鼎的FireFox....
SQLITE操作入門:
sqlite提供的是一些C函數(shù)接口,你可以用這些函數(shù)操作數(shù)據(jù)庫。通過使用這些接口,傳遞一些標準 sql 語句(以 char * 類型)給 sqlite 函數(shù),sqlite 就會為你操作數(shù)據(jù)庫。
sqlite 跟MS的access一樣是文件型數(shù)據(jù)庫,就是說,一個數(shù)據(jù)庫就是一個文件,此數(shù)據(jù)庫里可以建立很多的表,可以建立索引、觸發(fā)器等等,但是,它實際上得到的就是一個文件。備份這個文件就備份了整個數(shù)據(jù)庫。
sqlite 不需要任何數(shù)據(jù)庫引擎,這意味著如果你需要 sqlite 來保存一些用戶數(shù)據(jù),甚至都不需要安裝數(shù)據(jù)庫(如果你做個小軟件還要求人家必須裝了sqlserver 才能運行,那也太黑心了)。
sqlite3一些常用Sql語句操作:
創(chuàng)建表: create table 表名(元素名 類型,…);
刪除表: drop table 表名;
插入數(shù)據(jù): insert into 表名 values(, , ,) ;
創(chuàng)建索引: create [unique] index 索引名on 表名(col….);
刪除索引: drop index 索引名(索引是不可更改的,想更改必須刪除重新建)
刪除數(shù)據(jù): delete from 表名;
更新數(shù)據(jù): update 表名 set 字段=’修改后的內(nèi)容’ where 條件;
增加一個列: Alter table 表名 add column 字段 數(shù)據(jù)類型;
選擇查詢: select 字段(以”,”隔開) from 表名 where 條件;
日期和時間: Select datetime('now')
日期: select date('now');
時間: select time('now');
總數(shù):select count(*) from table1;
求和:select sum(field1) from table1;
平均:select avg(field1) from table1;
最大:select max(field1) from table1;
最。簊elect min(field1) from table1;
排序:select 字段 from table1 order by 字段(desc或asc) ;(降序或升序)
分組:select 字段 from table1 group by 字段,字段… ;
限制輸出:select 字段 from table1 limit x offset y;
= select 字段 from table1 limit y , x;
(備注:跳過y行,取x行數(shù)據(jù))
(操作仍待完善)…
SQLite支持哪些數(shù)據(jù)類型些?
NULL 值為NULL
INTEGER 值為帶符號的整型,根據(jù)類別用1,2,3,4,6,8字節(jié)存儲
REAL 值為浮點型,8字節(jié)存儲
TEXT 值為text字符串,使用數(shù)據(jù)庫編碼(UTF-8, UTF-16BE or UTF-16-LE)存儲
BLOB 值為二進制數(shù)據(jù),具體看實際輸入
但實際上,sqlite3也接受如下的數(shù)據(jù)類型:
smallint 16 位元的整數(shù)
interger 32 位元的整數(shù)
decimal(p,s) p 精確值和 s 大小的十進位整數(shù),精確值p是指全部有幾個數(shù)(digits)大小值 ,s是指小數(shù)點後有幾位數(shù)。如果沒有特別指定,則系統(tǒng)會設(shè)為 p=5; s=0 。
float 32位元的實數(shù)。
double 64位元的實數(shù)。
char(n) n 長度的字串,n不能超過 254。
varchar(n) 長度不固定且其最大長度為 n 的字串,n不能超過 4000。
graphic(n) 和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態(tài)是為了支援兩個字元長度的字體,例如中文字。
vargraphic(n) 可變長度且其最大長度為 n 的雙字元字串,n不能超過 2000。
date 包含了 年份、月份、日期。
time 包含了 小時、分鐘、秒。
timestamp 包含了 年、月、日、時、分、秒、千分之一秒。
如果將聲明表的一列設(shè)置為 INTEGER PRIMARY KEY,則具有:
1.每當你在該列上插入一NULL值時, NULL自動被轉(zhuǎn)換為一個比該列中最大值大1的一個整數(shù);
2.如果表是空的, 將會是1;
算術(shù)函數(shù)
abs(X)返回給定數(shù)字表達式的絕對值。
max(X,Y[,...])返回表達式的最大值。
min(X,Y[,...])返回表達式的最小值。
random(*)返回隨機數(shù)。
round(X[,Y])返回數(shù)字表達式并四舍五入為指定的長度或精度。
字符處理函數(shù)
length(X)返回給定字符串表達式的字符個數(shù)。
lower(X)將大寫字符數(shù)據(jù)轉(zhuǎn)換為小寫字符數(shù)據(jù)后返回字符表達式。
upper(X)返回將小寫字符數(shù)據(jù)轉(zhuǎn)換為大寫的字符表達式。
substr(X,Y,Z)返回表達式的一部分。
randstr()
quote(A)
like(A,B)
確定給定的字符串是否與指定的模式匹配。
glob(A,B)
條件判斷函數(shù)
coalesce(X,Y[,...])
ifnull(X,Y)
nullif(X,Y)
集合函數(shù)
avg(X)返回組中值的平均值。
count(X)返回組中項目的數(shù)量。
max(X)返回組中值的最大值。
min(X)返回組中值的最小值。
sum(X)返回表達式中所有值的和。
其他函數(shù)
typeof(X)返回數(shù)據(jù)的類型。
last_insert_rowid()返回最后插入的數(shù)據(jù)的 ID 。
sqlite_version(*)返回 SQLite 的版本。
change_count()返回受上一語句影響的行數(shù)。
last_statement_change_count()
二.有關(guān)事務的操作
(成批操作的時候,啟動事務,比不啟動事務快n倍)
開始事物處理
BEGIN TRANSACTION;
…………..
進行對數(shù)據(jù)庫操作
…………..
事物提交
COMMIT;
具體事例如下:
假設(shè)有一個 t1 表,其中有 "a", "b", "c" 三列, 如果要刪除列 c ,以下過程描述如何做:
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;
更新日志:
A command-line shell for accessing and modifying SQLite databases. This program is compatible with all versions of SQLite through 3.7.15.2 and beyond.