【Linux数据库操作】

数据库操作

1.数据库概念

​ 数据库就是英文的“database”翻译来的,data + base,故名思义就是数据的根源,数据的基础,存放数据的库就叫数据库,通常在数据库中进行增删改查操作。

​ SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足、无服务器、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这就体现出来SQLite与其他数据库的最大的区别:SQLite不需要在系统中配置,直接可以使用。且SQLite不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite可直接访问其存储文件。
相对于其它数据库,SQLite具有以下优势:
1.不需要配置,不需要安装和管理
2.不需要一个单独的服务器进程或操作的系统(无服务器的)
3.一个完整的SQLite数据库存储在一个单一的跨平台的磁盘文件上
4.非常小,轻量级的数据库,完全配置时小于400KiB,省略可选功能配置时小于250KiB
5.自给自足,不需要任何外部的依赖
6.完全兼容ACID,允许从多个进程或线程安全访问
7.支持SQL92(SQL2)标准的大多数查询语言的功能
8.使用ANSI-C编写的,并提供了简单和易于使用的API
9.可在UINX(Linux,Max OS-X,Android,iOS)和Windows(Win32,WinCE,WinRT)中运行.

2.shell命令操作数据库

2.1安装sqlite3

详情转载:https://blog.csdn.net/qq_39872252/article/details/132967625
常用命令:
    .help    打开帮助手册
    .exit    退出数据库程序
    .quit    数据库程序 或者  .q 也可以
    .open    打开数据库文件
    .schema  查看当前数据库文件中的建表语句(表的结构)
    .tables  查看当前数据库文件中有哪些表
    .headers  on/off  查询的结果是否显示表头

2.1创建数据库

sqlite3 作为第三方库编译的时候要加链接 gcc sql.c -lsqlite3
sqlite3 my.db
sqlite3 中数据只有三种类型 
    1.text: 可以是字符也可以是字符串
    2.int : 整数型
    3.float :浮点型

2.2创建表

流程:
    1.创建表-->2.执行sql语句-->3.关流
//每条sql语句后面都要加分号
create table user (name text,age int,score float);

2.3添加数据

insert into user values("cxk"18,59.9);

2.4删除数据

delete from user where name="cxk";

2.5查询数据

//1.根据指定条件查询
select * from user where name="cxk";
sqlite> select * from user name="cxk";
cxk|18|59.9
//2.查询数据库中所有数据
select * from user
sqlite> select * from user;             
cxk|18|88.8
wyf|20|38.5

2.6修改数据库中已有数据

update user set name="wbq" where age=18;

2.7删除表

drop table user

3.c编程操作数据库

3.1创建数据库

//1.打开数据库
sqlite3 *db;
sqlite3_open("./my.db",&db);

3.2创建表

//sql语句
char sql[128]="create table is not exists user (name text primary key,psw int)";
//错误信息
char *msg;
//执行sql语句
sqlite3_exec(db,sql,NULL,NULL,&msg);
3.3添加
strcpy(sql,"insert into stu values(1,'caixukun',59.5);");
3.4删除
strcpy(sql,"delete from stu where name='xiba';");
3.5修改
strcpy(sql,"update stu set name='xiba' where id=1;");
3.6查询表中所有数据
/*===============================================
*   文件名称:findAll.c
*   创 建 者:     
*   创建日期:2024年01月09日
*   描    述:
================================================*/
#include <stdio.h>
#include <sqlite3.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ 
    //1.打开数据库
    sqlite3 *db;
    int ret=sqlite3_open("./lzh.db",&db);
    if(ret != SQLITE_OK){
        perror("open\n");
        return-1;
    }
    printf("打开成功\n");
    //2.执行sql语句
    char sql[256]="select * from user;";
    char **list;
    int row;
    int column;
    char *msg;
    ret=sqlite3_get_table(db,sql,&list,&row,&column,&msg);
    if(ret !=0){
        perror("get_table");
        return-1;
    }
    int index=0;
    for(int i=0;i<=row;i++){
            printf("%s %s\n",list[index],list[index+1]);
            index+=2;
    }
    return 0;
} 

4.源码

/*===============================================
*   文件名称:sql.c
*   创 建 者:     
*   创建日期:2024年01月08日
*   描    述:
================================================*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlite3.h>
void findAll(sqlite3* db){

    //1.sql
    char sql [256]="select * from stu;";
    char *arr[213];
    int row;
    int cloumn;
    int ret;
    //int ret=sqlite3_get_table(db,sql,&arr,&row,,&cloumn,NULL);

}
int main(int argc, char *argv[])
{ 
    sqlite3 *db;
    //1.创建数据库
    int ret=sqlite3_open("./lzh.db",&db);
    if(ret !=SQLITE_OK){
        printf("创建失败\n");
        return -1;
    }
    char *msg;
    //2.创建表
    char sql[256]="create table if not exists stu (id int primary key,name text,score float);";
    //3.执行sql语句
    ret=sqlite3_exec(db,sql,NULL,NULL,&msg);
    if(ret !=0){
        printf("执行失败\n");
        return-1;
    }
    //5.添加1
    strcpy(sql,"insert into stu values(1,'caixukun',59.5);");
    ret=sqlite3_exec(db,sql,NULL,NULL,&msg);
    if(ret !=0){
        printf("添加失败1\n");
        goto insert2;
    }
insert2:
    //5.添加2
    strcpy(sql,"insert into stu values(2,'wang',69.5);");
    ret=sqlite3_exec(db,sql,NULL,NULL,&msg);
    if(ret !=0){
        printf("添加失败2\n");
        goto insert3;
    }
insert3:
    //5.添加3
    strcpy(sql,"insert into stu values(3,'xukun',79.5);");
    ret=sqlite3_exec(db,sql,NULL,NULL,&msg);
    if(ret !=0){
        printf("添加失败3\n");
        goto update;
    }
update:    
    //6.修改
    strcpy(sql,"update stu set name='xiba' where id=1;");
    ret=sqlite3_exec(db,sql,NULL,NULL,&msg);
    if(ret !=0){
        printf("修改失败\n");
        return -1;
    }
    
    //7.删除
    //strcpy(sql,  "delete from  stu  where name='xukun';");
    strcpy(sql,"delete from stu where name='xiba';");
    ret=sqlite3_exec(db,sql,NULL,NULL,&msg);
    if(ret !=0){
        printf("删除失败\n");
        return-1;
    }
    printf("删除成功\n");
#if 1
    strcpy(sql,"drop table stu;");
    printf("1111");
    ret=sqlite3_exec(db,sql,NULL,NULL,&msg);
    if(ret !=0){
        printf("清空失败\n");
        return-1;
    }
    printf("删除表成功\n");
#endif
    //7.关闭
    sqlite3_close(db);
    return 0;
}
  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值