Linux的sqlite数据库

数据库(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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值