勿忘初心做自己 发表于 2024-8-13 20:48:30

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

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)       https://i-blog.csdnimg.cn/blog_migrate/ae5490566b18cc6f582614115397f329.png      sqlite3:分两种语言:       sqlite3应用步伐的选项语言,一样平常以.开头       输入 .开头的命令(非sql语句命令)         .help:查看帮助         .tables :查看数据库有哪些表         .quit :退出sqlite         还有一种命令不是以   .开头的,这种叫sql语句,sql语句以    ; 竣事         总结:       sqlite3 以 . 开头的命令是 sqlite3命令       不是以 . 开头的是 sql语句,一定以   ;竣事   

   1.2数据库中的概念

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

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的记录          create table score_info (number varchar(20), math integer, ch integer, en
integer);

insert into score_info values ('1001', 100, 90, 80); //所有字段全都填入值
insert into score_info values ('1002', 80, 90, 80); //所有字段全都填入值
insert into score_info values ('1003', 90, 90, 80); //所有字段全都填入值

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);       #include <stdio.h>
#include <sqlite3.h>
int main()
{
    sqlite3 *p; //如果打开成功,将指向数据库的指针赋值给p
    if(sqlite3_open("my.db", &p) == 0) //如果数据库不存在,就创建
    {
      printf("database open success\n");
    sqlite3_close(p);
    }
}
   编译:gcc test.c -lsqlite3
   3.2 执行数据库操作的sql语句

   (只用于insert into, create table, update, delete)
   int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback callback,
void *, char **errmsg);
参数
db , sqlite3_open 的第二个参数
sql, 要执行的sql语句
NULL 默认为NULL (非NULL值用在查询中)
NULL 默认为NULL
errmsg: [出参] 如果sql语句执行错误,errmsg中保存错误字符串
返回值:成功返回0,不成功返回其他   #include <stdio.h>
#include <sqlite3.h>
int main()
{
    sqlite3 *p;
    if(sqlite3_open("my.db", &p) == 0) //如果数据库不存在,就创建
    {
      printf("database open success\n");
      if(sqlite3_exec(p, "delete from stu_info where name = 'zhangsan'", NULL,
      NULL, NULL) == 0)
      {
            printf("delete success\n");
      }
    }
}   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,失败返回错误码
    示例:
    #include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
int main()
{
    sqlite3 *db;
    char *errmsg;
    char **q;
    int nrow, ncolumn, i, j, index = 0;
    if(sqlite3_open("my.db", &db) == 0)
    {
      if(sqlite3_get_table(db, "select * from stu_info", &q, &nrow,
      &ncolumn, &errmsg) != 0)
      {
            printf("error : %s\n", errmsg);
            exit(-1);
      }
      else
      {
            for (i=0; i < nrow + 1; i++) //nrow 是行, 如果有1条记录,那么值为1
            {
                for (j=0; j<ncolumn; j++)
                {
                  printf("%10s", q); //printf("%10s",
                  q);
                }
                printf("\n");
            }
      }
    }
}          4.结语

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: SQLite数据库在Linux系统上的使用