Linux下数据库(sqlite3)学习笔记
?????????????????????????????????????????????????????????????????????? sqlite3 數(shù)據(jù)庫(kù)安裝
1. 本地安裝
sudo dpkg -i *.deb
2.在線安裝
sudo apt-get install sqlite3
3.使用壓縮包解壓
壓縮包下載路徑:鏈接:https://pan.baidu.com/s/1xHLZGObQODUGBReNEi3KKQ
提取碼:zjqv
?
?????????????????????????????????????????????????????????????????????? SQLITE3 基本命令
?
兩種命令
1.以 . 開頭的稱之為系統(tǒng)命令
.help 幫助
.quit 退出
.exit 退出
.databases 查看打開的數(shù)據(jù)庫(kù)(顯示數(shù)據(jù)庫(kù)的名字和路徑)
.table 查看當(dāng)前數(shù)據(jù)庫(kù)的表格
?
2. 以 , 結(jié)尾的 sql命令
創(chuàng)建一張數(shù)據(jù)庫(kù)表 stu :
creat table stu(Id Integer, name char, score Integer );
?
查看表的結(jié)構(gòu)圖:
.schema
?
在數(shù)據(jù)表中插入數(shù)據(jù)(完全插入 所有參數(shù)必須都有)
insert into +數(shù)據(jù)表名 values(相應(yīng)數(shù)據(jù))
?
在數(shù)據(jù)表中插入數(shù)據(jù)(部分插入 部分參數(shù)就行)
insert into +數(shù)據(jù)表名((參數(shù)名一,。。。。。, 參數(shù)名N)values(參數(shù)值一, 。。。。,參數(shù)值N))
?
查看數(shù)據(jù)表中的內(nèi)容(查詢?nèi)績(jī)?nèi)容)
select * from +數(shù)據(jù)表名
?
查詢數(shù)據(jù)表中的內(nèi)容 (查詢部分內(nèi)容)
select name, sroce from +數(shù)據(jù)表名
?
查詢數(shù)據(jù)表內(nèi)容 (查詢特定內(nèi)容)
select * from +數(shù)據(jù)表名 where 參數(shù)=?;(一個(gè)限定條件)
select * from +數(shù)據(jù)表名 where 參數(shù)1=? and 參數(shù)2=?;(兩個(gè)限定條件必須同時(shí)滿足)
select * from +數(shù)據(jù)表名 where 參數(shù)1=? or 參數(shù)2=?;(兩個(gè)限定條件滿足一個(gè)就行)
刪數(shù)據(jù)表中的內(nèi)容
delete frm +數(shù)據(jù)表名 ;(刪除整個(gè)數(shù)據(jù)表)
delete from +數(shù)據(jù)表名 where 參數(shù)=?;(刪除特定內(nèi)容)
其他和查詢內(nèi)容都一樣 依然可以使用and 和or
?
設(shè)置數(shù)據(jù)表中的內(nèi)容
update +數(shù)據(jù)表名 set 參數(shù)1=?where 參數(shù)2=?;
update +數(shù)據(jù)表名 set 參數(shù)1=?, 參數(shù)2=?where 參數(shù)3=? ;
?
刪除數(shù)據(jù)表
drop table 數(shù)據(jù)表名
?
給數(shù)據(jù)表重命名
alter table +原的數(shù)據(jù)表名 rename to 要改成的數(shù)據(jù)表名
給數(shù)據(jù)庫(kù)添加一列統(tǒng)計(jì)信息
alter table +數(shù)據(jù)表名 add column 要添加的統(tǒng)計(jì)信息 要添加的信息的類型;
?
sqlite不支持刪除一列信息
所以只能間接刪除 步驟如下:
1.創(chuàng)建一張新表
2.刪除原有的表
3.將新表的名字改成原來(lái)的表的名字
這樣舊表的內(nèi)容會(huì)自動(dòng)寫入到新表中
?
?
????????????????????????????????????????????????????????? API()
?
頭文件:#include <stdlib.h>
編譯指令·: gcc 文件名.c -lsqlite3
?
int sqlite3_open(const char *filename, sqlite3 **ppDb);
作用:打開一個(gè)數(shù)據(jù)庫(kù)
參數(shù):filename 數(shù)據(jù)庫(kù)路徑
ppDb 代表數(shù)據(jù)庫(kù)的操作句柄(指針)
返回值: 成功返回 SQLITE_OK 失敗返回錯(cuò)誤碼
?
int sqlite3_close(sqlite3 *db);
作用:關(guān)閉數(shù)據(jù)庫(kù)
參數(shù): db操作數(shù)據(jù)庫(kù)的指針
返回值:成功返回SQLITE_OK 失敗返回錯(cuò)誤碼
?
const char *sqlite3_errmsg(sqlite3 *db)
功能 :通過(guò)db句柄 得到數(shù)據(jù)庫(kù)操作的錯(cuò)誤信息
?
int sqlite3_exec{
sqlite3 *db;
const char *sql;
int (*callback)(void *, int char **, char **);
void *arg;
char **errmsg;
};
功能:執(zhí)行一條sql語(yǔ)句
參數(shù): db 數(shù)據(jù)庫(kù)操作句柄
sql:一條sql語(yǔ)句(末尾的分號(hào)可省略)
callback:回調(diào)函數(shù) 是一個(gè)函數(shù)指針類型 傳遞的參數(shù)是函數(shù)名(只有sql為查詢語(yǔ)句時(shí) 才會(huì)執(zhí)行回調(diào)函數(shù))
arg:表示給回調(diào)函數(shù)傳遞的參數(shù)
errmsg 錯(cuò)誤信息
?
返回值 成功SQLITE_OK
?
typedef int (*sqlite3_callback)(void *para, int f_num, char **f_value, char **f_name)
功能:每找到一條記錄自動(dòng)執(zhí)行一次回調(diào)函數(shù)
para:傳遞給回調(diào)函數(shù)的參數(shù)
f_num: 記錄中包含的字段數(shù)目
f_value:包含每個(gè)字段值的指針數(shù)組
f_name 包含每個(gè)字段名稱的指針數(shù)組
成功返回0 失敗返回-1
?
?
int sqlite3_get_table(sqlite3 *db, const char *sql, char ***resultp, int nrow, int *ncolum, char **errmsg)
?
db:數(shù)據(jù)庫(kù)句柄
resultp: 用來(lái)指向sql執(zhí)行結(jié)果的指針
nrow:滿足條件的記錄的數(shù)目
ncolumn: 每條記錄包含的字段數(shù)
errmsg:錯(cuò)誤信息指針的地址
返回值: 成功返回0 失敗返回錯(cuò)誤碼
?????????????????????????????????????????????????????? 代碼示例
?
功能: 建立一個(gè)數(shù)據(jù)庫(kù) 對(duì)其能進(jìn)行刪減改查的操作
?
總結(jié)
以上是生活随笔為你收集整理的Linux下数据库(sqlite3)学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 进程间通信————有名管道
- 下一篇: vue2.0 props 使用的问题