数据库操作
文章目录
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;
}