Sqlite3(小型關(guān)系型數(shù)據(jù)庫(kù))官方版
詳情介紹
開發(fā)軟件的用戶對(duì)于數(shù)據(jù)庫(kù)都不會(huì)陌生,這款sqlite3官方版就是一款小巧切好用的關(guān)系型數(shù)據(jù)庫(kù),也是一款能夠代替MySql的數(shù)據(jù)庫(kù),目前已經(jīng)綁定到了PHP5.0上,就像我們的ASP和access結(jié)合一樣。如果你是一位網(wǎng)頁(yè)P(yáng)HP開發(fā)人員,那么這個(gè)sqlite3就是你必須掌握使用的東西,并且這款軟件的設(shè)計(jì)目標(biāo)是嵌入式的設(shè)計(jì),所以目前已經(jīng)有很多嵌入式產(chǎn)品在使用這個(gè)數(shù)據(jù)庫(kù),而且由于軟件的資源占用非常低,所以諸多嵌入設(shè)備都開始使用這個(gè)數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù),讓我們的嵌入式設(shè)備有更多的資源運(yùn)行。
sqlite3是目前世界最棒的小型數(shù)據(jù)庫(kù),大名鼎鼎的瀏覽器Firefox就是使用這個(gè)數(shù)據(jù)庫(kù),所以大家可不要小看這個(gè)數(shù)據(jù)庫(kù)的潛力,而且還能夠和眾多的程序語(yǔ)言相結(jié)合,比如Tcl、PHP、JAVA等等。
sqlite 跟MS的access一樣是文件型數(shù)據(jù)庫(kù),就是說(shuō),一個(gè)數(shù)據(jù)庫(kù)就是一個(gè)文件,此數(shù)據(jù)庫(kù)里可以建立很多的表,可以建立索引、觸發(fā)器等等,但是,它實(shí)際上得到的就是一個(gè)文件。備份這個(gè)文件就備份了整個(gè)數(shù)據(jù)庫(kù)。
sqlite 不需要任何數(shù)據(jù)庫(kù)引擎,這意味著如果你需要 sqlite 來(lái)保存一些用戶數(shù)據(jù),甚至都不需要安裝數(shù)據(jù)庫(kù)(如果你做個(gè)小軟件還要求人家必須裝了sqlserver 才能運(yùn)行,那也太黑心了)。
刪除表: 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 條件;
增加一個(gè)列: Alter table 表名 add column 字段 數(shù)據(jù)類型;
選擇查詢: select 字段(以”,”隔開) from 表名 where 條件;
日期和時(shí)間: Select datetime('now')
日期: select date('now');
時(shí)間: select time('now');
總數(shù):select count(*) from table1;
求和:select sum(field1) from table1;
平均:select avg(field1) from table1;
最大:select max(field1) from table1;
最小:select 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;
(備注:跳過(guò)y行,取x行數(shù)據(jù))
(操作仍待完善)…
INTEGER 值為帶符號(hào)的整型,根據(jù)類別用1,2,3,4,6,8字節(jié)存儲(chǔ)
REAL 值為浮點(diǎn)型,8字節(jié)存儲(chǔ)
TEXT 值為text字符串,使用數(shù)據(jù)庫(kù)編碼(UTF-8, UTF-16BE or UTF-16-LE)存儲(chǔ)
BLOB 值為二進(jìn)制數(shù)據(jù),具體看實(shí)際輸入
但實(shí)際上,sqlite3也接受如下的數(shù)據(jù)類型:
smallint 16 位元的整數(shù)
interger 32 位元的整數(shù)
decimal(p,s) p 精確值和 s 大小的十進(jìn)位整數(shù),精確值p是指全部有幾個(gè)數(shù)(digits)大小值 ,s是指小數(shù)點(diǎn)後有幾位數(shù)。如果沒(méi)有特別指定,則系統(tǒng)會(huì)設(shè)為 p=5; s=0 。
float 32位元的實(shí)數(shù)。
double 64位元的實(shí)數(shù)。
char(n) n 長(zhǎng)度的字串,n不能超過(guò) 254。
varchar(n) 長(zhǎng)度不固定且其最大長(zhǎng)度為 n 的字串,n不能超過(guò) 4000。
graphic(n) 和 char(n) 一樣,不過(guò)其單位是兩個(gè)字元 double-bytes, n不能超過(guò)127。這個(gè)形態(tài)是為了支援兩個(gè)字元長(zhǎng)度的字體,例如中文字。
vargraphic(n) 可變長(zhǎng)度且其最大長(zhǎng)度為 n 的雙字元字串,n不能超過(guò) 2000。
date 包含了 年份、月份、日期。
time 包含了 小時(shí)、分鐘、秒。
timestamp 包含了 年、月、日、時(shí)、分、秒、千分之一秒。
如果將聲明表的一列設(shè)置為 INTEGER PRIMARY KEY,則具有:
1.每當(dāng)你在該列上插入一NULL值時(shí), NULL自動(dòng)被轉(zhuǎn)換為一個(gè)比該列中最大值大1的一個(gè)整數(shù);
2.如果表是空的, 將會(huì)是1;
算術(shù)函數(shù)
abs(X)返回給定數(shù)字表達(dá)式的絕對(duì)值。
max(X,Y[,...])返回表達(dá)式的最大值。
min(X,Y[,...])返回表達(dá)式的最小值。
random(*)返回隨機(jī)數(shù)。
round(X[,Y])返回?cái)?shù)字表達(dá)式并四舍五入為指定的長(zhǎng)度或精度。
字符處理函數(shù)
length(X)返回給定字符串表達(dá)式的字符個(gè)數(shù)。
lower(X)將大寫字符數(shù)據(jù)轉(zhuǎn)換為小寫字符數(shù)據(jù)后返回字符表達(dá)式。
upper(X)返回將小寫字符數(shù)據(jù)轉(zhuǎn)換為大寫的字符表達(dá)式。
substr(X,Y,Z)返回表達(dá)式的一部分。
randstr()
quote(A)
like(A,B)
確定給定的字符串是否與指定的模式匹配。
glob(A,B)
條件判斷函數(shù)
coalesce(X,Y[,...])
ifnull(X,Y)
nullif(X,Y)
集合函數(shù)
avg(X)返回組中值的平均值。
count(X)返回組中項(xiàng)目的數(shù)量。
max(X)返回組中值的最大值。
min(X)返回組中值的最小值。
sum(X)返回表達(dá)式中所有值的和。
其他函數(shù)
typeof(X)返回?cái)?shù)據(jù)的類型。
last_insert_rowid()返回最后插入的數(shù)據(jù)的 ID 。
sqlite_version(*)返回 SQLite 的版本。
change_count()返回受上一語(yǔ)句影響的行數(shù)。
last_statement_change_count()
二.有關(guān)事務(wù)的操作
(成批操作的時(shí)候,啟動(dòng)事務(wù),比不啟動(dòng)事務(wù)快n倍)
開始事物處理
BEGIN TRANSACTION;
…………..
進(jìn)行對(duì)數(shù)據(jù)庫(kù)操作
…………..
事物提交
COMMIT;
具體事例如下:
假設(shè)有一個(gè) t1 表,其中有 "a", "b", "c" 三列, 如果要?jiǎng)h除列 c ,以下過(guò)程描述如何做:
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;
R-Tree擴(kuò)展提高了25%的性能。
在可用時(shí)使用編譯器內(nèi)置函數(shù)(例如:__builtin_bswap32()或_byteswap_ulong())進(jìn)行字節(jié)交換。
使用sqlite3_blob鍵/值訪問(wèn)對(duì)象而不是SQL從R-Tree節(jié)點(diǎn)中拉出內(nèi)容
其他各種增強(qiáng)功能,如循環(huán)展開。
添加SQLITE_DEFAULT_LOOKASIDE編譯時(shí)選項(xiàng)。
將默認(rèn)后備大小從512,125增加到1200,100,因?yàn)檫@樣可以提供更好的性能,而每個(gè)連接只添加56KB的額外內(nèi)存。對(duì)內(nèi)存敏感的應(yīng)用程序可以在編譯時(shí),啟動(dòng)時(shí)或運(yùn)行時(shí)恢復(fù)舊的默認(rèn)值。
使用編譯器內(nèi)置__builtin_sub_overflow(),__builtin_add_overflow()和__builtin_mul_overflow()(如果可用)。(使用SQLITE_DISABLE_INTRINSIC編譯時(shí)選項(xiàng)可以省略所有編譯器內(nèi)建函數(shù)。)
添加了SQLITE_ENABLE_NULL_TRIM編譯時(shí)選項(xiàng),這可能會(huì)導(dǎo)致某些應(yīng)用程序的數(shù)據(jù)庫(kù)文件大大減小,從而有可能與舊版本的SQLite不兼容。
將SQLITE_DEFAULT_PCACHE_INITSZ從100更改為20,以提高性能。
添加了SQLITE_UINT64_TYPE編譯時(shí)選項(xiàng)作為SQLITE_INT64_TYPE的模擬。
在單遍而不是兩遍中執(zhí)行一些UPDATE操作。
增強(qiáng)會(huì)話擴(kuò)展以支持WITHOUTROWID表。
修復(fù)了具有數(shù)十萬(wàn)行的多行VALUES子句創(chuàng)建視圖時(shí)的性能問(wèn)題和潛在的堆棧溢出。
添加了sha1.c擴(kuò)展。
在命令行shell中,增強(qiáng)“.mode”命令,以便它恢復(fù)模式“l(fā)ine”,“l(fā)ist”,“column”和“tcl”的默認(rèn)列和行分隔符。
增強(qiáng)SQLITE_DIRECT_OVERFLOW_READ選項(xiàng),以便它在WAL模式下工作,只要正在讀取的頁(yè)面不在WAL文件中。
增強(qiáng)LEMON解析器生成器,以便它可以將解析器對(duì)象存儲(chǔ)為堆棧變量,而不是從堆分配空間,并利用合并中的增強(qiáng)。
其他性能改進(jìn)。使用大約6.5%的CPU周期。
sqlite3是目前世界最棒的小型數(shù)據(jù)庫(kù),大名鼎鼎的瀏覽器Firefox就是使用這個(gè)數(shù)據(jù)庫(kù),所以大家可不要小看這個(gè)數(shù)據(jù)庫(kù)的潛力,而且還能夠和眾多的程序語(yǔ)言相結(jié)合,比如Tcl、PHP、JAVA等等。
sqlite3官方版操作入門
sqlite提供的是一些C函數(shù)接口,你可以用這些函數(shù)操作數(shù)據(jù)庫(kù)。通過(guò)使用這些接口,傳遞一些標(biāo)準(zhǔn) sql 語(yǔ)句(以 char * 類型)給 sqlite 函數(shù),sqlite 就會(huì)為你操作數(shù)據(jù)庫(kù)。sqlite 跟MS的access一樣是文件型數(shù)據(jù)庫(kù),就是說(shuō),一個(gè)數(shù)據(jù)庫(kù)就是一個(gè)文件,此數(shù)據(jù)庫(kù)里可以建立很多的表,可以建立索引、觸發(fā)器等等,但是,它實(shí)際上得到的就是一個(gè)文件。備份這個(gè)文件就備份了整個(gè)數(shù)據(jù)庫(kù)。
sqlite 不需要任何數(shù)據(jù)庫(kù)引擎,這意味著如果你需要 sqlite 來(lái)保存一些用戶數(shù)據(jù),甚至都不需要安裝數(shù)據(jù)庫(kù)(如果你做個(gè)小軟件還要求人家必須裝了sqlserver 才能運(yùn)行,那也太黑心了)。
常用SQL語(yǔ)句
創(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 條件;
增加一個(gè)列: Alter table 表名 add column 字段 數(shù)據(jù)類型;
選擇查詢: select 字段(以”,”隔開) from 表名 where 條件;
日期和時(shí)間: Select datetime('now')
日期: select date('now');
時(shí)間: select time('now');
總數(shù):select count(*) from table1;
求和:select sum(field1) from table1;
平均:select avg(field1) from table1;
最大:select max(field1) from table1;
最小:select 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;
(備注:跳過(guò)y行,取x行數(shù)據(jù))
(操作仍待完善)…
支持的數(shù)據(jù)類型介紹
NULL 值為NULLINTEGER 值為帶符號(hào)的整型,根據(jù)類別用1,2,3,4,6,8字節(jié)存儲(chǔ)
REAL 值為浮點(diǎn)型,8字節(jié)存儲(chǔ)
TEXT 值為text字符串,使用數(shù)據(jù)庫(kù)編碼(UTF-8, UTF-16BE or UTF-16-LE)存儲(chǔ)
BLOB 值為二進(jìn)制數(shù)據(jù),具體看實(shí)際輸入
但實(shí)際上,sqlite3也接受如下的數(shù)據(jù)類型:
smallint 16 位元的整數(shù)
interger 32 位元的整數(shù)
decimal(p,s) p 精確值和 s 大小的十進(jìn)位整數(shù),精確值p是指全部有幾個(gè)數(shù)(digits)大小值 ,s是指小數(shù)點(diǎn)後有幾位數(shù)。如果沒(méi)有特別指定,則系統(tǒng)會(huì)設(shè)為 p=5; s=0 。
float 32位元的實(shí)數(shù)。
double 64位元的實(shí)數(shù)。
char(n) n 長(zhǎng)度的字串,n不能超過(guò) 254。
varchar(n) 長(zhǎng)度不固定且其最大長(zhǎng)度為 n 的字串,n不能超過(guò) 4000。
graphic(n) 和 char(n) 一樣,不過(guò)其單位是兩個(gè)字元 double-bytes, n不能超過(guò)127。這個(gè)形態(tài)是為了支援兩個(gè)字元長(zhǎng)度的字體,例如中文字。
vargraphic(n) 可變長(zhǎng)度且其最大長(zhǎng)度為 n 的雙字元字串,n不能超過(guò) 2000。
date 包含了 年份、月份、日期。
time 包含了 小時(shí)、分鐘、秒。
timestamp 包含了 年、月、日、時(shí)、分、秒、千分之一秒。
如果將聲明表的一列設(shè)置為 INTEGER PRIMARY KEY,則具有:
1.每當(dāng)你在該列上插入一NULL值時(shí), NULL自動(dòng)被轉(zhuǎn)換為一個(gè)比該列中最大值大1的一個(gè)整數(shù);
2.如果表是空的, 將會(huì)是1;
算術(shù)函數(shù)
abs(X)返回給定數(shù)字表達(dá)式的絕對(duì)值。
max(X,Y[,...])返回表達(dá)式的最大值。
min(X,Y[,...])返回表達(dá)式的最小值。
random(*)返回隨機(jī)數(shù)。
round(X[,Y])返回?cái)?shù)字表達(dá)式并四舍五入為指定的長(zhǎng)度或精度。
字符處理函數(shù)
length(X)返回給定字符串表達(dá)式的字符個(gè)數(shù)。
lower(X)將大寫字符數(shù)據(jù)轉(zhuǎn)換為小寫字符數(shù)據(jù)后返回字符表達(dá)式。
upper(X)返回將小寫字符數(shù)據(jù)轉(zhuǎn)換為大寫的字符表達(dá)式。
substr(X,Y,Z)返回表達(dá)式的一部分。
randstr()
quote(A)
like(A,B)
確定給定的字符串是否與指定的模式匹配。
glob(A,B)
條件判斷函數(shù)
coalesce(X,Y[,...])
ifnull(X,Y)
nullif(X,Y)
集合函數(shù)
avg(X)返回組中值的平均值。
count(X)返回組中項(xiàng)目的數(shù)量。
max(X)返回組中值的最大值。
min(X)返回組中值的最小值。
sum(X)返回表達(dá)式中所有值的和。
其他函數(shù)
typeof(X)返回?cái)?shù)據(jù)的類型。
last_insert_rowid()返回最后插入的數(shù)據(jù)的 ID 。
sqlite_version(*)返回 SQLite 的版本。
change_count()返回受上一語(yǔ)句影響的行數(shù)。
last_statement_change_count()
二.有關(guān)事務(wù)的操作
(成批操作的時(shí)候,啟動(dòng)事務(wù),比不啟動(dòng)事務(wù)快n倍)
開始事物處理
BEGIN TRANSACTION;
…………..
進(jìn)行對(duì)數(shù)據(jù)庫(kù)操作
…………..
事物提交
COMMIT;
具體事例如下:
假設(shè)有一個(gè) t1 表,其中有 "a", "b", "c" 三列, 如果要?jiǎng)h除列 c ,以下過(guò)程描述如何做:
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;
更新日志
v3.17.0版本R-Tree擴(kuò)展提高了25%的性能。
在可用時(shí)使用編譯器內(nèi)置函數(shù)(例如:__builtin_bswap32()或_byteswap_ulong())進(jìn)行字節(jié)交換。
使用sqlite3_blob鍵/值訪問(wèn)對(duì)象而不是SQL從R-Tree節(jié)點(diǎn)中拉出內(nèi)容
其他各種增強(qiáng)功能,如循環(huán)展開。
添加SQLITE_DEFAULT_LOOKASIDE編譯時(shí)選項(xiàng)。
將默認(rèn)后備大小從512,125增加到1200,100,因?yàn)檫@樣可以提供更好的性能,而每個(gè)連接只添加56KB的額外內(nèi)存。對(duì)內(nèi)存敏感的應(yīng)用程序可以在編譯時(shí),啟動(dòng)時(shí)或運(yùn)行時(shí)恢復(fù)舊的默認(rèn)值。
使用編譯器內(nèi)置__builtin_sub_overflow(),__builtin_add_overflow()和__builtin_mul_overflow()(如果可用)。(使用SQLITE_DISABLE_INTRINSIC編譯時(shí)選項(xiàng)可以省略所有編譯器內(nèi)建函數(shù)。)
添加了SQLITE_ENABLE_NULL_TRIM編譯時(shí)選項(xiàng),這可能會(huì)導(dǎo)致某些應(yīng)用程序的數(shù)據(jù)庫(kù)文件大大減小,從而有可能與舊版本的SQLite不兼容。
將SQLITE_DEFAULT_PCACHE_INITSZ從100更改為20,以提高性能。
添加了SQLITE_UINT64_TYPE編譯時(shí)選項(xiàng)作為SQLITE_INT64_TYPE的模擬。
在單遍而不是兩遍中執(zhí)行一些UPDATE操作。
增強(qiáng)會(huì)話擴(kuò)展以支持WITHOUTROWID表。
修復(fù)了具有數(shù)十萬(wàn)行的多行VALUES子句創(chuàng)建視圖時(shí)的性能問(wèn)題和潛在的堆棧溢出。
添加了sha1.c擴(kuò)展。
在命令行shell中,增強(qiáng)“.mode”命令,以便它恢復(fù)模式“l(fā)ine”,“l(fā)ist”,“column”和“tcl”的默認(rèn)列和行分隔符。
增強(qiáng)SQLITE_DIRECT_OVERFLOW_READ選項(xiàng),以便它在WAL模式下工作,只要正在讀取的頁(yè)面不在WAL文件中。
增強(qiáng)LEMON解析器生成器,以便它可以將解析器對(duì)象存儲(chǔ)為堆棧變量,而不是從堆分配空間,并利用合并中的增強(qiáng)。
其他性能改進(jìn)。使用大約6.5%的CPU周期。
下載地址
- 電腦版
Sqlite3(小型關(guān)系型數(shù)據(jù)庫(kù))官方版 v3.17.0綠色版
- 本地下載通道:
- 浙江電信下載
- 北京聯(lián)通下載
- 江蘇電信下載
- 廣東電信下載
同類軟件
網(wǎng)友評(píng)論
共0條評(píng)論(您的評(píng)論需要經(jīng)過(guò)審核才能顯示)