常用數據庫:
1.關系型數據庫:
將復雜的數據結構簡化為二維表格形式
大型:0racle、DB2
中型:MySq1、sQLServer? ? 小型:Sqlite
2.非關系型數據庫以鍵值對存儲,且結構不固定。//JSON
Redis? ? ? ? ?MongoDB
數據存儲:
? 變量、數組、鏈表? ? ? ? ? ? ? ? ? ? ? ?內存 :程序運行結束、掉電數據丟失
? 文件 : ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?外存:程序運行結束、掉電數據不丟失
? 數據庫: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 外存:程序運行結束、掉電數據不丟失;專業的管理數據? ? ? ? ? ? ? ? ?
sqlite3:
1.開源免費,c語言開發
2.代碼量少,1萬行左右,總大小10M以內
3.文件型數據庫,可以移動
4.數據容量最大2T
sqlite3 xxx.db
1. ?sqlite的命令
.help ? 查詢手冊
.tables ? 查看數據庫中的表
.headers on/off ?打開/關閉表頭
.mode column ? 設置左對齊
.quit ? ? ? ? ? 退出數據庫
2. ?sqlite支持的SQL(結構化序列語言)語言
? ? ? 數據類型:
INTEGER(INT): 整形
REAL(FLOAT):浮點型
TEXT:文本字符串類型
NULL :空
? ? ?(1) 創建一張表
create table 表名(列名1 數據類型, 列名2 ?數據類型, ....);
? ? (2)?插入表格
insert into 表名 values(值1, 值2, 值3, ...);
? ? ?(3)查詢數據庫中的表?
查詢表中的所有數據:select * from 表名;
查找指定列:?select 列名1,列名2 ?from 表名;
? ? ? ?條件查找:?select * from 表名 where 列名 關系運算符 值;
關系運算符:?=?>? <? ?!=? >=? <=? or ?(||)? and (&&)??
模糊查找:?select * from 表名 where 列名 like "%梅";
% : 可以匹配多個字符
_ ?: ? 只能匹配一個字符
有序查找:
升序查找:select * from 表名 order by 列名 ASC;
降序查找:select * from 表名 order by 列名 DESC;
? ? (4)刪除數據
delete from 表名 where 條件;
(5)修改數據
update 表名 set 列名=新值,列名=新值 where 條件;
(6)?刪除表
drop table 表名;
? ? (7)獲取時間? ??datetime();
? ? ? ?(8)主鍵值自動增長列(INTEGER)
create table class2(num INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score REAL);
3. sqlite提供的C--- API接口
int sqlite3_open(const char *fliename,sqlite3 **ppDb);
功能:打開一個數據庫文件
參數:filename:文件名
ppDb:數據庫句柄的地址
返回值:
成功:SQLITE_OK
失敗:錯誤碼
?const char *sqlite3_errmsg(sqliite3 *pdb);
功能:打印一個出錯的錯誤信息
參數:pdb:數據庫句柄
返回值:錯誤碼字符串
int *sqlite3_exec(sqliite3 *pdb,const chat *sql,int(*callback)(void *,int,char **,char **),void *,char **errmsg);
功能:執行sql語句
參數:pdb:被執行的數據庫
sql:要執行的sql語句
callback:回調函數(函數的指針)
int (*callback)(void* arg,int colum_n,char **column_value,char **column_name);
當使用select查詢數據時,誤觸回調函數執行
參數:arg:sqlite3_exrc傳遞的第四個參數
column_n:查詢到的數據的列數
column_value:保存找到的每一列的元素的值
column_name:每一列的元素的名稱。
注意:
回調函數一定要有一個返回值
有幾條數據回調函數被觸發幾次 ?
arg:參數
errmsg:保存錯誤信息
返回值:
成功:SQLITE_OK
失敗:錯誤碼