SQLite数据库在Linux系统上的使用

打印 上一主题 下一主题

主题 577|帖子 577|积分 1731

SQLite是一个轻量级的数据库办理方案,它是一个嵌入式的数据库管理系统。SQLite的特点是无需独立的服务器进程,可以直接嵌入到使用它的应用步伐中。由于其设置简朴、支持跨平台、服务器零管理,以及不需要复杂的设置和操作,SQLite非常适用于移动应用、小型项目和桌面应用步伐。

1.安装数据库

   可以在官网(http://www.sqlite.org/)下载安装包(我的安装包有点老就不给大家了)     libsqlite3-0_3.7.2-1ubuntu0.1_i386.deb (.deb的安装包可以用dpkg -i 来进行安装)     .deb 是linux 系统的应用步伐的安装包文件    安装.deb文件: dpkg -i deb文件名 (dpkg -i :安装应用步伐)   1.1 打开数据库

      打开/新建数据库命令:   sqlite3 my.db        (假如my.db 存在就打开,不存在就新建),创建乐成后,当前目录会有一个my.db的文件       数据库 一样平常 扩展名是.db(database)      
        sqlite3:分两种语言:       sqlite3应用步伐的选项语言,一样平常以.开头       输入 .开头的命令(非sql语句命令)         .help:查看帮助         .tables :查看数据库有哪些表         .quit :退出sqlite         还有一种命令不是以   .开头的,这种叫sql语句,sql语句以    ; 竣事         总结:       sqlite3 以 . 开头的命令是 sqlite3命令       不是以 . 开头的是 sql语句,一定以   ;竣事   

     1.2数据库中的概念

       数据库           将所有的数据,各种类型,形貌各种事物的数据放到一起, 如:my.db文件,就是一个数据库文件             数据表           形貌某一个事物的根本信息的表                   学生信息表 (stu_info)   编号 姓名 性别 年龄 班级 爱好                 图书信息表 (book_info)   图书编号 书名 出版社 作者 分类                 记录              表里面的一条信息                 字段              列名            
           

2.sql语句(重点)

   sql语句: 是一个尺度的数据库语言,提供了对数据库操作的各种命令, 而且sql语句是所有数据库通用的。   2.1创建数据表

   语句:create table stu_info (number varchar(20), name varchar(50), age integer, sex varchar(10));     //背面会用到这个表,大家了解一下    create table :关键字, 用来创建表    stu_info :自定义的表名    number name age sex :字段    varchar :可变字符串(数据类型) (默认50)    integer :整数数据类型    2.2 删除表

drop table +表名;     //执行前记得加分号
   示例:drop table stu_info;  //删除stu_info表     2.3 插入记录到表中(重点)

  1)字段全部添加的语句:insert into 表名 values(填入所有字段);   //留意结尾有分号
    insert into stu_info values ('1001', 'zhangsan', 25, 'nan'); //所有字段全都填入值     2)只给某些字段添加值的语句:insert into stu_info (age,number) values (26, '1002');   //age,number是不添加值的字段。   2.4查询表中的记录(重点)

   select * from stu_info; //   * 是查看stu_info表里的所有字段     select age from stu_info; //查看age字段     select age,number from stu_info; //查看多个字段间用逗号隔开     sql命令:    .header on :表现字段名    .mode column :列对齐   按一个条件查询

   select * from stu_info where name = 'lisi';  //查询表里name='lisi'的记录     按多个条件查询

     select * from stu_info where name = 'lisi'   and age = 25;            select * from stu_info where name = 'lisi'   or age = 25;      其他各种查询

         1 查询年龄 > 25的记录          select * from stu_info where age > 25;             2 查询记录 只想看编号、姓名字段          select number, age from stu_info where age = 25;       //查询age=25的记录,只看number,age字段             3 按顺序输出所有记录             select * from stu_info order by age; //按年龄顺序输出,默认环境是升序分列             select * from stu_info order by age desc; //降序分列                  4 暗昧查询(假设有一个人名我记不住了,但能记住名字中的一个字, 就可以用暗昧查询)                 示例:查询名字当中带li字符的人(like)             select * from stu_info where name like '%li%';  // % 代替后续大概前面的内容                 5 多条件查询                 select * from stu_info where age > 25 and number > 1001;      //(查询年龄大于 25, 编号 > 1001 的学生信息)                 6 统计记录条数             select count(*) from stu_info;                  select count(*) from stu_info where age = 25;                练习:       1. 创建学生成绩表(字段如下)          学生编号(number) 数学(math) 语文(ch) 英语(en)          2. 向学生成绩中添加三条记录          1001 100 90 80          1002 80 90 80          1003 90 90 80          3. 查询出编号1003的记录         
  1. create table score_info (number varchar(20), math integer, ch integer, en
  2. integer);
  3. insert into score_info values ('1001', 100, 90, 80); //所有字段全都填入值
  4. insert into score_info values ('1002', 80, 90, 80); //所有字段全都填入值
  5. insert into score_info values ('1003', 90, 90, 80); //所有字段全都填入值
  6. select * from score_info where number = '1003';
复制代码
   2.5 删除表中记录(重点)

         示例:  delete from stu_info; //删除所有记录     delete from stu_info where number = '1002'; //删除number = '1002的记录    2.6修改表中记录(重点)

示例:把字段number为1004 的记录,该记录中name改成wangwu
   update stu_info set name = 'wangwu' where number = '1004';     2.7多表团结查询

   学生根本信息表:    number name age sex      成绩表:    nubmer math ch en       两个表number字段类似         示例:查询数学成绩 > 90的所有学生的根本信息和成绩       select   stu_info.*,   score_info.math from   stu_info, score_info where   score_info.math > 90 and stu_info.number = score_info.number;     //表现的字段有score_info1的math字段,还有stu_info整个表的字段   (必须有一个字段是类似的)        3.c语言操作数据库

  3.1 打开数据库

     头文件:#include <sqlite3.h>       函数:   int sqlite3_open(char *path, sqlite3 **db);        功能: 打开数据库,假如数据不存在,则新建       参数:       path [入参] :打开的数据库名称(路径)       db [出参] :打开数据库后,它将指向数据库的指针给db       返回值:       执行乐成返回SQLITE_OK(0),否则返回其他值         例如:       sqlite3* db;//FILE* fp       sqlite3_open("my.db", &db);      
  1. #include <stdio.h>
  2. #include <sqlite3.h>
  3. int main()
  4. {
  5.     sqlite3 *p; //如果打开成功,将指向数据库的指针赋值给p
  6.     if(sqlite3_open("my.db", &p) == 0) //如果数据库不存在,就创建
  7.     {
  8.         printf("database open success\n");
  9.     sqlite3_close(p);
  10.     }
  11. }
复制代码
  编译:gcc test.c -lsqlite3
   3.2 执行数据库操作的sql语句

   (只用于insert into, create table, update, delete)
  
  1. int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback callback,
  2. void *, char **errmsg);
  3. 参数
  4. db , sqlite3_open 的第二个参数
  5. sql, 要执行的sql语句
  6. NULL 默认为NULL (非NULL值用在查询中)
  7. NULL 默认为NULL
  8. errmsg: [出参] 如果sql语句执行错误,errmsg中保存错误字符串
  9. 返回值:成功返回0,不成功返回其他
复制代码
  1. #include <stdio.h>
  2. #include <sqlite3.h>
  3. int main()
  4. {
  5.     sqlite3 *p;
  6.     if(sqlite3_open("my.db", &p) == 0) //如果数据库不存在,就创建
  7.     {
  8.         printf("database open success\n");
  9.         if(sqlite3_exec(p, "delete from stu_info where name = 'zhangsan'", NULL,
  10.         NULL, NULL) == 0)
  11.         {
  12.             printf("delete success\n");
  13.         }
  14.     }
  15. }
复制代码
  3.3查询语句

       函数:    int sqlite3_get_table(sqlite3 *db, const char *sql, char ***resultp,     int*nrow, int *ncolumn, char **errmsg);              功能:执行SQL查询操作。             参数:          db:指向数据库指针(数据库句柄), open的第二个参数             sql:SQL语句, (select * from stu_info)             resultp[出参]:用来指向sql执行效果的指针 (跟errmsg类似)             nrow[出参]:满足条件的记录的数量, 包括字段名,相当于行数(表头会返回出来,但表头不计入行 数,以是打印时需要打印nrow+1行)             ncolumn[出参]:每条记录包罗的字段数量,相当于列数             errmsg:错误信息指针的地点, 假如语句执行出错,那么errmsg中是错误信息 返回值:乐成返回0,失败返回错误码
    示例:
   
  1. #include <stdio.h>
  2. #include <sqlite3.h>
  3. #include <stdlib.h>
  4. int main()
  5. {
  6.     sqlite3 *db;
  7.     char *errmsg;
  8.     char **q;
  9.     int nrow, ncolumn, i, j, index = 0;
  10.     if(sqlite3_open("my.db", &db) == 0)
  11.     {
  12.         if(sqlite3_get_table(db, "select * from stu_info", &q, &nrow,
  13.         &ncolumn, &errmsg) != 0)
  14.         {
  15.             printf("error : %s\n", errmsg);
  16.             exit(-1);
  17.         }
  18.         else
  19.         {
  20.             for (i=0; i < nrow + 1; i++) //nrow 是行, 如果有1条记录,那么值为1
  21.             {
  22.                 for (j=0; j<ncolumn; j++)
  23.                 {
  24.                     printf("%10s", q[index++]); //printf("%10s",
  25.                     q[i*ncolumn + j]);
  26.                 }
  27.                 printf("\n");
  28.             }
  29.         }
  30.     }
  31. }
复制代码
         4.结语

这就是sqlite数据库在Linux上使用教程,感谢大家的观看,希望大家点点赞,点点关注,后续会出用到sqlite的项目,谢谢!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表