嵌入式基礎知識 2

sqlite數據庫===>SQLlinux

0、介紹sql


一、數據庫的安裝數據庫

1.1 拷貝壓縮包 sqlite-autoconf-3080500.tar 到linux虛擬機中
1.2 解開壓縮包 ===》 tar -zxvf sqlite-autoconf-3080500.tar.gz
1.3 進入到解開的目錄 sqlite-autoconf-3080500 中,cd sqlite-autoconf-3080500
1.4 ./configure
1.5 make
1.6 suduo make install編程

驗證是否安裝成功: 在命令行輸入 sqlite3 回車 出現sqlite>表示安裝成功。
能夠用 .q 退出數據庫系統
若是屏幕出現 ....> 輸入 ; 在輸入 .q 退出函數

若是沒有以上提示,或者出現兩行很長的MD5值,意味着安裝過程當中版本異常
whereis sqlite3工具

cp ./sqlite3 /usr/bin/
cp ./sqlite3 /usr/sbin/ui

chmod 777 /usr/local/bin/sqlite3命令行

以後再次驗證是否能成功啓動:在命令行輸入 sqlite3 回車 出現sqlite>表示安裝成功。
能夠用 .q退出數據庫系統設計


注意:數據庫中的基本單位是表,能夠在數據庫中建立多個表,每一個表能夠單獨在,也能夠互相之間有關聯。指針

每一個表的基本單位是行和列
數據庫的設計三範式:
第一範式: 全部的列惟一
第二範式: 所欲的行惟一
第三範式: 數據內容的無冗餘

 

二、數據庫的常規使用 ====>全部的sqlite數據庫管理命令都是以: . 開始

常規數據庫管理命令;===》只針對sqlite數據庫有效。

2.0 首先在啓動數據庫系統過程當中建立數據庫
===》sqlite3 xxx.db ===>表示手工建立一個名稱爲xxx.db的數據庫

2.1 .help 來查看當前系統支持的全部管理命令
2.2 .quit = .q 表示退出當前系統
2.3 .database 顯示當前打開的數據庫文件
2.4 .tables 顯示數據庫中全部的表名====》若是沒有任何記錄表示數據庫中無表
2.5 .schema xxx 顯示當前數據庫中xxx表的表結構

常規的數據庫操做命令:====》使用SQL 語言操做,兼容全部支持SQL語言的數據庫
注意:全部的該部分的操做都必須以 ; 結尾,不然程序會繼續等待輸入知道出現 ;

0、建立一個數據庫 ===》touch test.db ===》建立一個數據庫文件
====》sqlite3 test.db ===》建立的同時打開數據庫

 

注意:全部的sql語句都支持 -- 開頭的註釋,表示一行無效
/* */ 表示多行註釋,相似C 語言

一、建立表
create table xxx (f1 types, f2 type2,....);
eg: create table test (id int, name txt,class int);
其中:列字段的類型有以下幾種:
int 整形 txt 字符串 blob 二進制類型 real 數字

二、刪除表:
drop table xxx;

三、增長記錄
insert into xxx (f1,f2....) values (v1,v2,v3...);
eg: insert into test (id,name) values (1,"abc");

insert into xxx values(v1,v2...);
eg:insert into test values (2,"def",3);


四、刪除記錄
delete from xxx ;=====》刪除xxx表中全部數據。
delete from xxx where id = x; ====>根據id的值來指定刪除
delete from xxx where id = x and name = "zhang";

五、查詢記錄
select * from xxx; ====>查詢xxx表中全部數據
select id from xxx; ===>只查詢xxx表中的id列數據
select id,name from xxx; ===>查詢xxx表中指定的id和name列數據。


六、改變記錄 = 刪除記錄+增長記錄


練習:要求 手工建立一個數據庫,並設計一個獨立的用戶表t_user,該表的字段必須包含 id,name,age

依次插入5個不一樣身份的用戶到表中,並用selelct查詢顯示。

刪除其中id爲 奇數的記錄,並最後顯示其餘剩餘的用戶信息。

可視化的工具


批量導入導出

導入: sqlite3 test.db < test.sql
導出: sqlite3 test.db .dump > test2.sql

 

三、數據庫編程接口

頭文件:sqlite3.h
編譯過程: -lsqlite3


打開數據庫 ====》操做數據庫(查詢動做,插入刪除動做) =====》關閉數據庫


3.1 打開數據庫
int sqlite3_open(char * path, sqlite3 **db)
功能:打開指定的path路徑下的數據庫
參數:path 數據庫文件所在的路徑+文件名
db 數據庫類型指針,打開以後與該數據庫關聯
返回值:成功0
失敗 非0

3.2 關閉數據庫
int sqlite3_close(sqltie3 *db);
參數: db 要關閉的數據庫指針
返回值:成功 0 失敗 非0


3.3 操做數據庫

查詢動做: sqlite3_get_table()
int sqltie3_get_table(sqlite3 *db ,const char *sql,char ***rest,
int * row, int * col,char **errmsg);
功能:經過以上函數能夠從指定的db數據庫中根據sql所表示的sql語句執行。
並將結果rest返回,row表示最終查詢的結果行數,col表示最終查詢
的結果列,errmsg 若是錯誤則存儲錯誤信息。

參數:db 要查詢的數據庫
sql 要執行的查詢sql語句,通常用select開始
rest 返回的結果集指針
row 返回的結果中的行數
col 返回的結果中的列數
errmsg 存儲錯誤信息
返回值:成功 0
失敗 錯誤碼



修改動做: sqlite3_exec()
int sqlite3_exec(sqlite3 *db,const char *sql,slqite3_callback callback,
void *arg, char ** errmsg);
功能:該函數能夠執行任何針對數據庫操做的sql語句。
參數: db 要操做的數據庫指針
sql 要執行的sql語句 ===》注意:若是該語句是select 查詢語句則callback有效
若是該語句是insert 或者delete則callback能夠不用。
callback 回調函數
arg 回調函數的 參數
errmsg 存儲錯誤信息

返回值:成功 0
失敗 非0


回調函數:typedef int (*sqlite3_callback)(void * arg,int n,char **f_value,char **f_name);
功能:當該函數被調用的時候表示有數據執行結果返回並存儲到f_value和f_name中。
參數:arg 從外部傳入的參數
n 查詢結果中包含的列的個數
f_value 行的值
f_name 列的值

返回值:成功 0
失敗 -1

 

練習:手工建立一個數據庫並設計一個t_user 表。 用代碼方式插入5 條記錄 並最後的全部信息打印輸出到終端。

相關文章
相關標籤/搜索