多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > SQLite數據庫使用

SQLite數據庫使用

來源:程序員人生   發布時間:2014-10-06 08:00:01 閱讀次數:3081次

一、安裝SQLite3方法

      1、字符界面

            sudo apt-get install sqlite3

      2、圖形界面

            sudo apt-get install sqliteman

二、SQLite數據類型

      SQLite具有以下五種基本數據類型:

      1、integer:帶符號的整型(最多64位)。

      2、real:8字節表示的浮點類型。

      3、text:字符類型,支持多種編碼(如UTF-8、UTF-16),大小無限制。

      4、blob:任意類型的數據,大小無限制。

      5、null:表示空值。

三、SQLite命令使用

      1、創建、打開數據庫:

            sqlite3 *.db

            提示:當*.db文件不存在時,sqlite會創建并打開數據庫文件。當*.db文件存在時,sqlite會打開數據庫文件。

      2、退出數據庫命令:

            .quit 或 .exit

            注意:SQL的語句格式:所有的SQL語句都是以分號結尾的,SQL語句不區分大小寫。兩個減號“--”則代表注釋。

      3、創建表:create 語句語法:

            create table 表名稱 (列名稱1 數據類型, 列名稱2 數據類型, 列名稱3 數據類型, ...);創建一表格該表包含3列,列名分別是:“id”、“name”、“addr”。

            在終端下輸入:create  table  persons  (id  integer, name  text, addr  text);

      4、創建表:create 語句 (設置主鍵)

             在用sqlite設計表時,每個表都可以通過primary key手動設置主鍵(整型),設置為主鍵的列數據不可以重復。語法:

             create table 表名稱 (列名稱1 數據類型 primary key, 列名稱2 數據類型, 列名稱3 數據類型, ...);

             在終端下輸入:create  table  persons  (id  integer  primary  key, name  text, addr  text);

      5、查看表: .tables                   查看數據表的結構:  .schema       

      6、修改表:alter語句

             在已有的表中添加或刪除列。語法:(添加、刪除-sqlite3暫不支持)

             alter table 表名 add 列名 數據類型;

             在終端下輸入:alter  table  persons  add  sex  text ;    

      7、刪除表:drop table語句

            用于刪除表(表的結構、屬性以及表的索引也會被刪除)語法:drop table 表名稱;

            在終端輸入:drop  table  persons ;

      8、插入新行:inser into 語句(全部賦值)給一行中的所有列賦值。語法:insert into 表名 values (列值1, 列值2,列值3,列值4, ...);

            注意:當列值為字符串時要加上‘’號。

            在終端下輸入:create  table  persons  (id  integer, name  text, addr  text);

                                   insert  into  persons  values  (1, 'lucy', 'beijing');

      9、插入新行:inser into 語句(部分賦值) 給一行中的部分列賦值。語法:insert into 表名 (列名1, 列名2, ...) values(列值1, 列值2, ...);

            在終端下輸入:insert  into  persons  (id, name)  values  (1, 'peter');

      10、修改表中的數據:update 語句

            使用where根據匹配條件,查找一行或多行,根據查找的結果修改表中相應行的列值(修改哪一列由列名指定)。

            語法:update 表名 set 列1 = 值1 [, 列2 = 值2, ...] [匹配條件];

            注意:當表中有多列、多行符合匹配條件時會修改相應的多行。當匹配條件為空時則匹配所有。

      11、匹配:where 子句

             where 子句用于規定匹配的條件:等于(=)、不等于(<>)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)。

             匹配條件語法:(基礎)  where 列名 操作符 列值

             在終端輸入:update  persons  set  id=2,  addr='tianjing'  where  name='peter';

      12、刪除表中的數據:delete 語句

            使用where根據匹配條件,查找一行或多行,根據查找的結果刪除表中的查找到的行。語法:delete from 表名 [匹配條件];

            注意:當表中有多列、多行符合匹配條件時會刪除相應的多行。

            在終端輸入:delete  from  persons  where  name='peter';

      13、查詢:select 語句(基礎)

            于從表中選取數據,結果被存儲在一個結果表中(稱為結果集)。語法:

            1、select * from 表名 [匹配條件];

            2、select 列名1[, 列名2, ...] from 表名 [匹配條件];

            提示:星號(*)是選取所有列的通配符。

            在終端輸入:insert  into  persons  values  (1, 'peter', 'tianjing');

                                insert  into  persons  values  (3, 'bob', 'hebei');

                                select  *  from  persons;

                                select  *  from  persons  where  id=1;

                                select  name  from  persons;

                                select  name  from  persons  where  id=1;

      14、in 允許我們在 where 子句中規定多個值。匹配條件語法:where 列名 in (列值1, 列值2, ...)例:

            1、select * from 表名 where 列名 in (值1, 值2, ...);

            2、select 列名1[,列名2,...] from 表名 where列名 in (列值1, 列值2, ...)

            在終端輸入:select  *  from  persons  where  id  in  (1, 2);

                                select  name  from  persons  where  id  in  (1, 2);

      15、and 可在 where 子語句中把兩個或多個條件結合起來(多個條件之間是與的關系)。匹配條件語法:where 列1 = 值1 [and 列2 = 值2 and ...]例:

            1、select * from 表名 where 列1 = 值1 [and列2 = 值2 and ...];

            2、select 列名1[, 列名2, ...] from 表名where 列1 = 值1 [and 列2 = 值2 and ...];

            在終端輸入:select  *  from  persons  where  id=1  and  addr='beijing';

                                select  name  from  persons  where  id=1  and  addr='beijing';

      16、or 可在 where 子語句中把兩個或多個條件結合起來(多個條件之間是或的關系)。匹配條件語法:where 列1 = 值1 [or 列2 = 值2 or ...]例:

            1、select * from 表名 where 列1 = 值1 [or 列2 = 值2 or ...];

            2、select 列名1[,列名2,...] from 表名 列1 = 值1 [or 列2 = 值2 or ...];

            在終端輸入:select  * from  persons  where  addr='beijing'  or  addr='hebei';

      17、操作符 between A and B 會選取介于A、B之間的數據范圍。這些值可以是數值、文本或者日期。匹配條件語法:where 列名 between A and B例:

            1、select * from 表名 where 列名 between A and B;

            2、select 列名1[,列名2,...] from 表名 where列名 between A and B;

            注:匹配字符串時會以ascii順序匹配。

            在終端輸入:select  * from  persons  where  id  between  1  and  3;

                                select  * from  persons  where  addr  between  'a'  and  'c';

      18、like 用于模糊查找。匹配條件語法:where 列名 like 列值

            1、若列值為數字相當于列名=列值。

            2、若列值為字符串可以用通配符“%”代表缺少的字符(一個或多個)。

            在終端輸入:select  *  from  persons  where  id  like  3;

                                select  *  from  persons  where  addr  like  '%jing%';

      19、not 可取出原結果集的補集。匹配條件語法:例:

             1、where 列名 not in (列值1, 列值2, ...)

             2、 where not (列1 = 值1 [and 列2 = 值2 and...])

             3、where not (列1 = 值1 [or 列2 = 值2 or ...])

             4、where 列名 not between A and B

             5、where 列名 not like 列值

             在終端輸入:select  *  from  persons  where  id  not  in  ( 1 );

                                 select  *  from  persons  where  addr  not  like  '%jing%';

      20、order by 語句根據指定的列對結果集進行排序。默認按照升序對結果集進行排序,可使用 desc 關鍵字按照降序對結果集進行排序。例:

              升序 : select * from 表名 order by 列名;

              降序 : select * from 表名 order by 列名 desc;

              在終端輸入:select  *  from  persons  order  by  name;

                                  select  *  from  persons  order  by  id;

                                  select  *  from  persons  order  by  id  desc;

四、SQLite  C語言編程

      1、int sqlite3_open(char *db_name,sqlite3 **db);

            功能:打開數據庫。

            參數:db_name:數據庫文件名,若文件名包含ASCII碼表范圍的之外的字符,則其必需是(UTF-8)編碼。

                      sqlite3:數據庫標識,此結構體為數據庫操作句柄。通過此句柄可對數據庫文件進行相應操作。

            返回值:成功返回SQLITE_OK,失敗返回非 SQLITE_OK。

      2、int sqlite3_close(sqlite3 *db);

            功能:關閉數據庫、釋放打開數據庫時申請的資源。

            參數:db:數據庫的標識。

            返回值:成功返回 SQLITE_OK。失敗返回非 SQLITE_OK。

            注意:sqlite3使用了兩個庫:pthread、dl,故鏈接時應加上 -lpthread和 -ldl。

      3、sqlite3_exec函數:int sqlite3_exec(sqlite3 *db, const char *sql,exechandler_t callback,void *arg, char **errmsg);

            功能:執行sql指向的SQL語句,若結果集不為空,函數會調用函數指針callback所指向的函數。

            參數:db:數據庫的標識。

                      sql:SQL語句(一條或多條),以’;’結尾。

                      callback:是回調函數指針,當這條語句執行之后,sqlite3會去調用你提供的這個函數。

                      arg:當執行sqlite3_exec的時候傳遞給回調函數的參數。

                     errmsg:存放錯誤信息的地址,執行失敗后可以查閱這個指針。

            打印錯誤信息方法:printf("%s ", errmsg);

      4、回調函數指針:typedef int (*exechandler_t)(void *para, int n_column, char **column_value,char **column_name);

            功能:此函數由用戶定義,當sqlite3_exec函數執行sql語句后,結果集不為空時sqlite3_exec函數會自動調用此函數,每次調用此函數時會把結果集的一行信息傳給此函數。

            參數:para:sqlite3_exec傳給此函數的參數,para為任意 數據類型的地址。

                      n_column:結果集的列數。

                      column_value:指針數組的地址,其存放一行信息中 各個列值的首地址。

                      column_name:指針數組的地址,其存放一行信息中各 個列值對應列名的首地址。

            返回值:若為非0值,則通知sqlite3_exec終止回調。

      5、sqlite3_get_table函數:int sqlite3_get_table(sqlite3 *db, const char *sql,char ***resultp, int *nrow,int *ncolumn,char **errmsg);

            功能:執行sql指向的SQL語句,函數將結果集相關的數據的地址保存在函數的參數中。

            參數:db:數據庫的標識。

                     sql:SQL語句(一條或多條),以’;’結尾。

                     resultp:指針數組的地址,其記錄了結果集的數據。內存布局:先依次存放各列的列名,然后是每一行各列的值。

                     nrow:結果集的行數(不包含列名)。

                     ncolumn:結果集的列數。

                     errmsg:錯誤信息。

      6、sqlite3_free_table函數:void sqlite3_free_table(char **resultp);

            功能:釋放sqlite3_get_table分配的內存。

            參數:結果集數據的首地址。

 

 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 91第一页 | 亚洲欧美另类日本久久影院 | 三级全黄在线观看www桃花 | 人善交zzzxxx另类 | 日韩高清一级 | 99re66热这里只有精品17 | 最近的中文字幕大全免费8 最近的中文字幕大全免费版 | 波多野结衣视频在线 | 91精品国产福利在线观看性色 | 国产精品反差婊在线观看 | 在线精品国产成人综合第一页 | 老司机午夜精品视频 | 婷婷我也去 | 性猛交╳xxx乱大交 性猛交xxxxx按摩 | 久久国产精品一区 | babes性欧美高清 | 国产成人亚洲精品影院 | 国产v片成人影院在线观看 国产v片在线观看 | 欧美一级毛片欧美毛片视频 | 日韩一区国产二区欧美三区 | 欧洲成人在线视频 | 亚洲欧美手机在线观看 | 国产免费不卡v片在线观看 国产免费叼嘿视频 | 国产成人高清亚洲一区91 | 国产女乱淫真高清免费视频 | 2022在线精品视频网站 | jizz中国妇女 | 影音先锋成人影院 | 妇欲欢公爽公妇高h欲 | 最近中文字幕免费版在线 | 欧美一级高清片欧美国产欧美 | 亚洲国产日韩综合久久精品 | 中文字幕欧美日韩高清 | 福利视频欧美一区二区三区 | 在线成人小视频 | 国产精品欧美一区二区三区不卡 | 亚洲三级图 | 羞羞动漫网页 | 国产69精品久久久久9999 | 国产成人资源 | 美女牲交视频一级毛片 |