当前位置: 首页 > news >正文

Linux学习——sqlite3

1.sqlite3的使用

1.打开数据库

sqlite3 stu.db  //database

2.操作

输入 sqlite3,进入软件后,输入 sqlite3  软件自带的命令(.help,.databases,·quit,.exit)

3.增删改查

CREATE TABLE database_name.table_name(column1 datatype  PRIMARY KEY(one or more columns),column2 datatype,column3 datatype,.....columnN datatype,
);例子:
create table stu(name, sex, age, score);
create table stu1(name text, sex text, age int, score real);
创建一张表验证:.table //可以看到表的名字.schema//可以看到表的字段
//往表中添加信息
插入一条记录
语法:
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
VALUES (value1, value2, value3,...valueN);//全部列都给到
insert into stu values("tom", "male", 19, 88.5);
insert into stu1 values("ousca", "fmale", 18, 98.5);//给一部分列插入数据
insert into stu1(name, sex) values("jack", "male");

注意:sql语句后面必须以分号结尾

删除表中的数据
DELETE FROM table_name WHERE [condition];delete from 表名 where 条件;删除表
DROP TABLE database_name.table_name;drop table 表名;

添加字段
ALTER TABLE database_name.table_name RENAME TO new_table_name;
alter table 表名 add 列名;例子:
alter table stu add stuno;
name        sex         age         score       stuno     
----------  ----------  ----------  ----------  ----------
ousca       fmale       18          98.5                  
tom         male        19          88.5  
修改表的数据
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];update 表名 set 列1=值1 [,列2=值2,...][匹配条件];条件语句:
where 字句
where 列名 操作符 列值
where age    >     10update stu set stuno=110 where name="ousca"
name        sex         age         score       stuno     
----------  ----------  ----------  ----------  ----------
ousca       female      18          98.5        110       
tom         male        19          88.5        111 

//查询
SELECT column1, column2, columnN FROM table_name;select 列名1, 列名2,... from 表名;select * from 表名;//查看表的所有信息sqlite3命令:
.headers on //打开表头
.mode column //指定查询的输出格式, column是以列对齐的方式name        sex         age         score     
----------  ----------  ----------  ----------
ousca       female      18          98.5      
tom         male        19          88.5 
查询:
1.查询部分字段
select name from stu where score>80;
2.in语句
selectt * from stu where age in(18,19);
3.and语句//多个条件
select * from stu where age >18 and score > 80;
4.or语句
select * from stu where age > 18 or score > 80;
5.范围between...and ...
select * from stu where age between 19 and 20;
6. like
select * from stu where name like "tom";
select*from stuwhere name 1ike"&tom&";//%表示匹配任意多个字符
select * from stu where name like "_tom_";表示匹配任意一个字符

4.补充

//插入时间信息
create table user1(id int,name char,age int,dt datetime);
eg:insert into user1 values (1,'张三',18,datetime('now','+8 hours')); //utcid          name        age         dt                 
----------  ----------  ----------  -------------------
1           张三          18          2025-08-29 15:38:02
//自动增长列
create table user5 (id INTEGER PRIMARY KEY ASC,name char, age int);
PRIMARY KEY//主键
ASC//自动增长的顺序//int需要写成INTEGER才能实现自动增长
create table user4 (id int PRIMARY KEY ASC,name char, age int) ;id          name        age         dt                 
----------  ----------  ----------  -------------------
1           李四          21          2025-08-29 15:48:10
2           王二          22          2025-08-29 15:48:21
3           张三          25          2025-08-29 15:48:34

2.函数学习

类似于文件操作 ---- stu.db (单独的数据库文件)

1.打开

#include <sqlite3.h>
int sqlite3_open(char *db_name,sqlite3 **db);
功能:打开数据库。
参数:@db_name:数据库文件名,若文件名包含ASCII码表范围的之外的字符,则其必需是(UTF-8)编码。@db:数据库标识,此结构体为数据库操作句柄。通过此句柄可对数据库文件进行相应操作。
返回值:成功返回     SQLITE_OK失败返回     非SQLITE_OK

2.sql语句

sqlite3_exec 函数:
int sqlite3_exec(sqlite3*db,const char *sql,exechandler_t callback,void *arg,char **errmsg);功能:
执行sql指向的SQL 语句,若结果集不为空,函数会调用函数指针callback所指向的函数。参数:db:数据库的标识。sql:SQL语句(一条或多条),以';'结尾。callback:是回调函数指针,当这条语句执行之后,sqlite3会去调用你提供的这个函数。arg:当执行 sqlite3_exec 的时候传递给回调函数的参数。errmsg:存放错误信息的地址,执行失败后可以查阅这个指针。返回值:成功返回SQLITE_OK,失败返回 非SQLITE_OK。打印错误信息方法:printf("%s\n"errmsg);
回调函数指针:
typedef int(*exechandler_t)(void *para,int n_column,char **column_value,char **column_name);功能:此函数由用户定义,当sqlite3_exec函数执行sql查询语句后,结果集不为空时sqlite3_exec函数会自动调用此函数,每次调用此函数时会把结果集的一行信息传给此函数。参数:@para:sqlite3_exec传给此函数的参数,para为任意数据类型的地址。@n_column:结果集的列数。@column_value:指针数组的地址,其存放一行信息中各个列值的首地址。@column_name:指针数组的地址,其存放一行信息中各个列值对应列名的首地址。返回值:若为非0值,则通知 sqlite3_exec终止回调。

3.关闭

int sqlite3_close(sqlite3 *db);
功能:关闭数据库、释放打开数据库时申请的资源。 
参数:db:数据库的标识。
返回值:成功返回  SQLITE_OK。失败返回 非 SQLITE_OK。
http://www.dtcms.com/a/356229.html

相关文章:

  • 179-183动画
  • IntelliJ IDEA2025+启动项目提示 Failed to instantiate SLF4J LoggerFactory
  • 零基础json入门教程(基于vscode的json配置文件)
  • 【贪心算法】day4
  • HTML 核心标签全解析:从文本排版到媒体嵌入
  • 联想打印机2268w安装
  • 根据并发和响应延迟,实现语音识别接口自动切换需求
  • IP v 6
  • Linux下的软件编程——数据库
  • 编程与数学 03-004 数据库系统概论 06_需求分析
  • 【Flask】测试平台开发,初始化管理第一个页面开发-第三篇
  • Charles打开后,Pc电脑端浏览器显示Not implemented或没有网络
  • Linux Shell 脚本基础002
  • 使用 Java 替换和修改 PDF 文本的方法
  • 命令行操作:逻辑运算符、重定向与管道
  • TensorFlow 深度学习 | 使用子类 API 实现 Wide Deep 模型
  • 20250829_编写10.1.11.213MySQL8.0异地备份传输脚本+在服务器上创建cron任务+测试成功
  • MySQL-索引(下)
  • Linux -- 进程间通信【命名管道】
  • 基于博客系统的自动化测试项目
  • 使用TensorFlow Lite Mirco 跑mirco_speech语音识别yes/no
  • DVWA靶场通关笔记-命令执行(Impossible级别)
  • 大数据毕业设计选题推荐:基于北京市医保药品数据分析系统,Hadoop+Spark技术详解
  • 多线程网络数据接收与处理框架设计
  • 软考-系统架构设计师 专家系统(ES)详细讲解
  • 【深度学习计算机视觉】02:微调
  • SpringBoot整合Spring WebFlux弃用自带的logback,使用log4j2,并启动异步日志处理
  • Cesium 入门教程(十二):时间动画实例
  • undefined和null
  • MySQL數據庫開發教學(三) 子查詢、基礎SQL注入