Linux的sqlite数据库

来源:互联网 发布:淘宝客返利网址 编辑:程序博客网 时间:2024/05/22 04:34

数据库(sqlite3)

(一)、基础知识
sqlite3:数据管理系统软件(oracle也是,sqlserve也是)

数据库实际上就是一个文件,比较特殊,文件后缀为.db


数据库如何储存文件:
1、关系型数据库:二维表(主流)
2、层次性数据库:查找麻烦
3、网状结构模型:数据有重余


数据库系统结构类型:
1、数据库文件DBMS在同一台机器上:本地数据库
2、数据库与DBMS不在一台机器上(两台):主从式数据库
3、数据库分布开(一个DBMS,多个数据库):分布式数据库
4、客户机/服务器数据库:通过网络


常见数据库管理办法:
1、Oracle:第一个数据库管理系统
2、SQL server:微软,支持客户机/服务器结构的数据库管理系统
3、DB2
以上三个为大型数据库
4、ACCESS:自动生成SQL


关系型数据库相关知识点
关系:二维表    元组:一行    属性:一列为一个属性(也称字段)
域:每个属性的取值范围
integer:整型    text:字符串    bool    real:实型    null    image:图片


主键:该属性可以唯一标识一个元组。


(二)、sqlite3
1、特点:1>体积适当    2>可移植性    3>编程接口简单    4>代码开源
与此相近的数据库系统有:sybase 、SQL Anywhere  、  Oracle TimeTen
2、例子
create table student(id integer, name text, age integer,); 
insert into student(id, name, age) values(1, zhangsan, 14);
3、select:
语法:select id from where name = 'zhangsan';
4、create:
语法:create table 表名(字段1,字段2,……);
5、看数据库中有几张表:.schema
6、insert into student(id,age) values(1,12);
7、select * from student;
8、设定主键:create table student1(id integer primary key,name text);
此后id不可重复,且id没有赋值会自动增值赋值
9、更新:update student3 setname = 'lisi' where id = 2;
10、删除:delete from student3 where id = 1;删除整个表:drop table student1;
11、修改表
重命名表:alter table student rename to stu222;
添加属性:alter table student add column sex text;
12、select:
select <目标序列名>
from <数据源>
where <检索条件表达式>
group by<分组依据列>
13、例子:

#include <sqlite3.h>int main(){    int ret;    sqlite3 *db;        ret = sqlite3_open("student.db",&db);        if(ret != SQLITE_OK)    {        printf("……");        exit(1);    }        sqlite3_close(db);    return 0;}


14、执行语句:
sqlite3 *db;
char *errmsg;
char sql[1024] = "create table student(id integer, name text, age integer)";
sqlite3_exec(db,sql,NULL,NULL,&errmsg);


调试:gcc sqlite_demo.c -lsqlite3    添加链接库


15、sqlite3_get_table:
例子:
#include <stdio.h>#include <sqlite3.h>static  sqlite3 *db=NULL;static char **Result=NULL;static char *errmsg=NULL;int main(){   int rc, i, j;   int nrow;   int ncolumn;   rc= sqlite3_open("test.db", &db);   rc= sqlite3_get_table(db, "select * from test_table", &Result, &nrow, &ncolumn,   &errmsg);    if(rc)    {       printf("query fail!\n");    }    else    {       printf("query success!\n");       for(i = 1; i <= nrow; i++)       {          for(j = 0; j < ncolumn; j++)          {             printf("%s | ", Result[i * ncolumn + j]);          }          printf("\n");       }    }    sqlite3_free_table(Result);    sqlite3_close(db);    return 0;}




16、sqlite3详例:
int main(){    char name[20];    int age;    int id;    int ret;    sqlite3 *db;    char sql[1024] = "create table student3(no integer,name text,age integer);";    char *errmsg;    ret = sqlite3_open("student3.db",&db);    if(ret != SQLITE_OK)    {        printf("open db error!\n"); exit(1);    }    sqlite3_exec(db,sql,NULL,NULL,&errmsg);    memset(sql,0,sizeof(sql));    scanf("%d",&id);    scanf("%s",name);    scanf("%d",&age);    sprintf(sql,"insert into student3(no,name,age) values(%d,'%s',%d);",id,name,age);    sqlite3_exec(db,sql,NULL,NULL,&errmsg);    sqlite3_exec(db,"select no,name,age from student3;",print_result,"hello",&errmsg);    sqlite3_exec(db,sql,NULL,NULL,&errmsg);    sqlite3_close(db);    return 0;}


0 0