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 條記錄 並最後的全部信息打印輸出到終端。