常用數據庫
關系型數據庫
將復雜的數據結構簡化為二維表格形式
大型:Oracle、DB2
中型:MySql、SQLServer
小型:Sqlite
非關系型數據庫
以鍵值對存儲,且結構不固定
JSON
Redis
MongoDB
sqlite數據庫
特點
開源免費,C語言開發
代碼量少,1萬行左右,總大小10M以內
文件型數據庫,可以移動,跨平臺移植性好
理論數據容量最大2T
安裝sqlite3數據庫
版本:sqlite3.22.0
安裝命令:
sudo apt-get install sqlite3
安裝相關庫:
sudo apt-get install libsqlite3-dev
測試:
sqlite3 xxx.db
sqlite3學習
支持的數據類型
NULL:空值
INTEGER:整形
REAL:浮點型
TEXT:字符串類型
BLOB:根據輸入進行存儲
sqlite3相關的命令
.help
:查看支持的命令
.tables
:查看當前數據庫中的表
.headers on/off
:打開或者隱藏表頭
.mode column
:設置列左對齊
.quit
:退出數據庫
sqlite3支持的SQL語句
注意事項
SQL語句后面必須要有分號
sqlite不區分大小寫
創建表
語法:
create table 表名(列名1 數據類型, 列名2 數據類型, 列名3 數據類型)
示例:
create table class1(id INTEGER, name TEXT, age INTEGER, score REAL)
數據插入
語法:
insert into 表名 values(值1, 值2, 值3)
示例:
insert into class1 values(1, "zhangsan", 19, 88.5)
查詢數據
查詢所有列數據:
select * from 表名
查詢指定列數據:
select 列名1, 列名2, 列名n from 表名
條件查詢:
select * from 表名 where 列 條件
關系運算符:>
, <
, >=
, <=
, =
, !=
, and (&&)
, or (||)
模糊查找(字符串):
select * from 表名 where 列 like "%梅"
select * from 表名 where 列 like "__梅"
%
:可以模糊匹配多個
字符_
:只能模糊匹配一個字符
排序查找:
升序排序:
select * from 表名 order by 列名 ASC
降序排序:select * from 表名 order by 列名 DESC
刪除數據
語法:
delete from 表名 where 刪除的條件
示例:
delete from class1 where score < 80
修改數據
語法:
update 表名 set 列 = 新值 where 條件
示例:
update class1 set score = 100 where name = "wanger"
刪除一張表
語法:
drop table 表名
設置主鍵值自動增長列
注意:
主鍵值自動增長列必須是INTEGER類型
在創建表時,主鍵值自動增長列要增加:PRIMARY KEY AUTOINCREMENT
示例:
create table class2(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score REAL)
插入數據時,主鍵值自動增長列給NULL,讓其自動增長
示例:
insert into class2 values(NULL, "張三", 90)
時間相關
date("now")
:年-月-日
datetime("now", "+8 hours")
:年-月-日 時:分:秒
sqlite的可視化工具
安裝命令:
sudo apt-get install sqlitebrowser
使用方法:
sqlitebrowser xxx.db
sqliite3提供的C/C++ API(應用程序接口)
sqlite3_open
int sqlite3_open(const char *filename, /* Database filename (UTF-8) */sqlite3 **ppDb /* OUT: SQLite db handle */);
功能:打開一個數據庫文件
參數:
filename
:數據庫名稱
ppDb
:保存數據庫句柄的指針的地址
返回值:
成功:SQLITE_OK
失敗:錯誤碼
sqlite3_close
int sqlite3_close(sqlite3*);
功能:關閉數據庫
sqlite3_exec
int sqlite3_exec(sqlite3*pdb, /* An open database */const char *sql, /* SQL to be evaluated */int (*callback)(void*,int,char**,char**), /* Callback function */void *arg, /* 1st argument to callback */char **errmsg /* Error msg written here */);
功能:執行SQL語句
參數:
pdb
:數據庫句柄
sql
:要執行的sql語句
callback
:執行select語句時使用的回調函數
arg
:給回調函數傳遞的參數(實參)
errmsg
:保存出錯信息
返回值:
成功:SQLITE_OK
失敗:錯誤碼
回調函數
功能:執行select語句時調用的回調函數
參數:
arg
:sqlite3_exec傳遞的第四個參數
column
:查詢到的數據的列數
column_values
:指針數組,多個指針分別指向每一列數據的字符串
column_name
:指針數組,多個指針指向每一列的列名
注意:回調函數成功的話必須要有返回值,返回0
從數據庫查詢出來的數據,統統是字符串類型
從數據庫中查詢數據,查到幾條,回調函數就會被執行幾次