嵌入式数据库SQLite基础使用

来源:互联网 发布:资管新规 知乎 编辑:程序博客网 时间:2024/05/18 14:22
SQLite数据库
一、SQLite下载安装
下载网站http://www.sqlite.org/sqlite-3.6.18.tar.gz
解压缩:tar zxvf sqlite-3.6.18.tar.gz
cd sqlite-3.6.18
./configure –disable-tcl
sudo make & sudo make install


二、命令行模式下:
1、创建数据库:sqlite3 test.db
      删除数据库:rm test.db


2、创建表: create table infor(name varchar(10),id int primary key not null);// primary key主键
      删除表:drop table infor;


3、插入数据: insert into infor values('wang',24);


4、查询数据: select * from infor;
            Select id,name from infor;
            Select * from infor where id > 10;
                Select * from infor where id > 10 and name=’wang’;
            Select * from infor where name like ‘w%’;//以w开头
             Select * from infor where name like ‘_?_’;//三个字符,中间为?
            Select * from infor where name glob ‘w*’; //以w开头
            Select * from infor where name glob ‘?-?’;//三个字符,中间为-


5、删除数据: delete from infor where name like 'wei';
                        delete from infor where name='wei';


6、更新数据: update infor set age=18 where name='wei';


7、导出数据库:
      方法一:.output xxxdb.sql
                           .dump
      方法二:sqlite3 xxx.db .dump > xxx.sql


     导出数据表:
     方法一:.output xxx.sql//或者文件名xxx.txt
   .dump 表名
     方法二:sqlite3 xxx.db > xxx.sql


8、导入数据库:.read xxx.sql
      导入数据表:.separator ","
     .import data.txt 表名
9、算术运算符
       Select 10+20;  //+、-、*、、、%


10、排序 order by 
    Select * from infor order by id asc;//按id升序排序
    Select * from infor order by id desc;//按id降序排序


11、GROUP BY 
子句用于与 SELECT 语句一起使用,来对相同的数据进行分组
在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。
假设数据表中有同名:
Select name,sum(salary) from company group by name order by name;


12、distinct

与 SELECT 语句一起使用,来消除所有重复的记录

         Select distinct name from company;


13、触发器(trigger)
是数据库的回调函数,它会在指定的数据库事件发生时自动执行/调用
可以指定在特定的数据库表发生 DELETE、INSERT 或 UPDATE 时触发
Create trigger test_trigger after insert on company
Begin
Insert into infor values(‘wang’,24);
End;
当数据表company有insert语句时,便会触发。


14、alter
用来在已有的表中添加一个新的列
        Alter table infor add column sex char(1);


15、事务(transaction)
        Begin;

        Select from infor where id=10;

Commit;



16、日期 & 时间
       Date(‘now’);
       Time(‘now’);
       Datetime(‘now’);


17、常用函数
 




三、c/c++接口API
 



四、其它命令
    退出sqlite提示符:.quit
    查看表的结构:.schema 表名  //后面不用分号


like:(%)代表零个、一个或多个数字或字符
          (_)代表一个单一的数字或字

glob: GLOB 是大小写敏感的
 (*)代表零个、一个或多个数字或字符
 (?)代表一个单一的数字或字符


五、附加程序
#include <stdio.h>
#include <sqlite3.h>


int main()
{
sqlite3 *pdb = NULL;
char *szErrMsg = NULL;
int rc,i = 0;
char *sql = "create table test_table(ID integer primary key,name varchar(12));";
int nrow=0,ncolumn=0;
char **presult;//二维数组存放结果
//打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
rc = sqlite3_open("test.db",&pdb);
if(rc)
{
fprintf(stderr,"can't open database %s\n",sqlite3_errmsg(pdb));
sqlite3_close(pdb);
return -1;
}

//创建一张新的数据表
sqlite3_exec(pdb,sql,0,0,&szErrMsg);
sql = "insert into test_table values(1,'wang');";
sqlite3_exec(pdb,sql,0,0,&szErrMsg);
sql = "insert into test_table values(2,'tom');";
sqlite3_exec(pdb,sql,0,0,&szErrMsg);

//查询所有记录
sql = "select * from test_table";
sqlite3_get_table(pdb,sql,&presult,&nrow,&ncolumn,&szErrMsg);
//printf("query recond %d\n ID NAME:\n",nrow);
for(i = 0; i < (nrow+1)*ncolumn; i++)
{
printf("%s",presult[i]);
if(i%2 == 0)
{
printf("\n");
}
}
//释放presult空间
sqlite3_free_table(presult);
sqlite3_close(pdb);//关闭数据库
return 0;


}


六、编译
gcc date.c -o date -lsqlite3
gcc testdate.c -o testdate -lsqlite3 -L/usr/local/lib -I/usr/local/include -static –lpthread

原创粉丝点击