sqlite3数据库的使用

sqlite3的使用

//存储在外存中。
//数据库软件的使用方法。
数据库:大量数据的时候。数据库软件。
//数据库使用方法。

1.以记录的形式发生。
2.嵌入式数据库:关系数据路库。
3.数据类型:字符,整型,浮点型,日期,二进制数据。
//-------------------------------------------------------------------//
//数据库软件 +:数据库命令 + 数据库函数。
//命令:
//whereis sqlite3 :查看数据库文件在哪。
//点 + 命令的形式。

一:数据库相关命令 //sqlite3这个软件的使用方法。

1. sqlite3 :打开数据库软件,单独一个命令。

sqlite3 + 数据库文件   与vim是一样的。
sqlite3 *.db  //打开具体的数据库文件。
安装数据库软件:sudo apt-get install sqlite3: 
安装编译工具包:sudo apt-get install libsqlite3-dev  安装数据库安装包。
//头文件 <sqlite3.h>
//gcc sqlite3.c -lsqlite3   -lpthread -lm
//安装数据库软件。
//数据库软件的使用方法。

2.退出数据库软件命令:.quit .q .e

3.软件内部帮助文档.help

4.查询sqlite3软件中有多少个数据库文件。

.databases:查看数据库软件中有多少个数据库文件。

5查询某个数据库中有多少记录表

.dbinfo main   :结果是空的。数据库文件中没有表格。

6.把文件中的数据导入到表格中: .import 文件名 表名

//命令以点开头
//语句以分号结束。

二:文件相关命令操作 都是以点开头 语句没有点 要有分号结束

1.打开文件:.open

2.保存文件:.save

3.备份文件:.backup 数据库名 文件名(*.db)

//数据库 》文件 》表

三:表格相关命令 数据库文件中的表格。

1.tables :显示当前数据库中的表格有哪些 例如:.tables stu .table 也可以。

2.schema 表名 :查询某个表格的结构 例如: .schema stu .schema 查询所有表的结构

3.dump 表名:把指定表的表结构显示出来 例如:.dump stu

4.mode 模式名 设定查询是显示的格式 例如:.mode stu

四 :退出相关命令

.quit .q
.exit .e

//-------------------------------------------------------------//
一 DDL://在软件内部使用相关命令来创建数据库文件。

1.创建表 create table 表名(列名1 类型,列名2 类型); //加上分号。为结束语句。

类型:整型int 字符串:text 浮点型:float
//例如 :建立一个学生表格 表格名称。
//学生的学号 姓名 年龄 成绩 //前面是变量名称,后面是数据类型。
//create table stu(stuno text,stuname text,stuage int,stugrade float); //别忘了加分号
//命令是点开头。命令和语句不同。
//语句是没有点的,但是要用分号结束。

2.如果不保存,那么软件内就没有表格。 //保存也没有。

//.tables :用来查询数据库文件中有多少个表格。

3.删除表格命令

drop table stu; //要加上分号才行。 drop是语句不用点,用分号。

4.清屏命令 ctrl + l

//-------------------------//

5.建表的约束:5种约束。约束就是数据的条件,必须满足条件。

//1.主键约束---唯一:设置主键约束。约束就是限定条件。(主键只能有一个)primary key
//2.非空约束--数据不能为空。not null
//3.唯一约束--:数据不能重复。unique
//4.检查约束:数据必须符合条件。check(stuage > 18 and stuage < 26)
//5.缺省约束:默认数据是什么。default 默认值

//------------------------//

6.建表的限定条件。
例如: //将sid设定成主键。 不能创建两个一样的数据表格。
create table student(sid text primary key,sname text,sage int,classno text);

7.非空约束。
create table stu(sid text,sname text not null);
//限定姓名不能为空

8.唯一约束:数据项不能重复
create table stu3(sid text unique,sname text ,classno text);

9.检查约束:限定条件是check后面的范围。
create table stu4(stuno int,stuage int check(stuage > 18 and stuage < 26));
create table stu5(stusex text check(stusex int (‘M’,‘F’)));

10缺省约束:在没有输入数据的条件下,使用默认数值。
create table stu6(stuname text default ‘no name’);
create table stu7(stuage int default 22);
//classroom classnum classname;

11.练习:
学生表(学号 主键 ,姓名,年龄,性别,班级)
科目表(科目号主键,科目名,教师姓名)
成绩表(学号,科目号,成绩,学号)

12.备份 .backup stu3.db 或者 .save stu3.db

	//下次打开的时候,用sqlite3 stu3.db
//用数据库软件编写数据库文件。

13.添加列数据

//在表格中增加一列数据信息。
alter table student add column cardid text;
.schema student:查看一下,内容是否被添加进去了。
//就是每一列的限定条件。

14.插入数据

insert into 表名 values(值1,值2);//所有列都是对应值,顺序不能乱。
insert into 表名 (列名1,列名2)
insert into stu(sid,sname,age,sex)values(1,“zhagnsan”,21,‘F’);
//插入结果如何查看?
//用select来查看。
select * from stu; //用星号作为通配符,查看表中所有内容。

15.DQL查询

1.select sname from student; 在学生表中查询名字的内容。
	select sid from stu;  //可以把表格中的内容全部查询出来。
	select sid,sname,age from stu;  //每一句用分号结束。

2.用where子句
	select * from stu where age >= 20;
	//在任意表中查询年龄大于20的数据;

16.删除数据

	delete from 表名; //一个是表格结构,一个是数据部分。
	delete from student where stuno = 100; 

10. 查询命令:

//从哪个表中查询什么内容
select sname from student;
//如果有内容就显示内容,如果没有这个列就提示没有。
//如果什么都没有,就什么都不显示。
.header on
.mode column
格式化输出	

select sid,sname,age from stu ; //从这个表中查询所有内容。
  1. .mode column :以列的形式显示。
    
  2. //有些内容一头雾水,就讲解最简单的内容就行。能讲什么就讲什么。	
    
  3. 基本概念说明 + 命令 + 函数;
    

14:表 + 记录。
//数据库 - 数据库列表 - 数据库记录 -

常用API接口函数

1、打开/创建一个数据库

 int sqlite3_open(const char *filename,  sqlite3 **ppDb );
功能:打开数据库链接
参数:filename:数据库的路径和文件名
ppdb:数据库句柄。
返回:成功  SQLITE_OK (值为0),否则返回其他值。

2、回调函数执行sql语句

int sqlite3_exec(sqlite3* pDB, const char *sql, sqlite_callback callback, void*para, char** errMsg);
功能:编译和执行零个或多个SQL 语句,查询的结果返回给回调函数callback
参数:
pDB,数据库句柄。
sql,待执行的SQL 语句字符串,以’\0’结尾。
callback,回调函数,用来处理查询结果,如果不需要回调(比如做insert 或者delete 操作时),可以输入NULL。
para,要传入回调函数的指针参数,没有可以置为NULL。
errMsg,返回错误信息,注意是指针的指针。

返回值:执行成功返回SQLITE_OK,否则返回其他值

3、回调函数

 typedef int (*sqlite_callback)(void* para,  int columnCount,  char** columnValue,
 char** columnName);
功能:由用户处理查询的结果
参数:
para,从sqlite3_exec()传入的参数指针;
columnCount, 查询到的这一条记录有多少个字段(即这条记录有多少列);
columnValue,查询出来的数据都保存在这里,它实际上是个1 维数组(不要以为是	2 维数组),每一个元素都是一个char * 值,是一个字段内容(用字符串来表示,以‘\0’结尾);
columnName,与columnValue 是对应的,表示这个字段的字段名称。
返回值:执行成功返回SQLITE_OK,否则返回其他值

4、关闭

  int sqlite3_close(sqlite3 *ppDb);
功能:关闭数据库。
参数:ppdb:数据库句柄。

5、释放

void sqlite3_free(void * errMsg );
功能:释放存放错误信息的内存空间
参数:errMsg: 返回错误信息

6、 非回调来执行sql语句

int sqlite3_get_table(
  sqlite3 *db,          /* An open database */
  const char *zSql,     /* SQL to be evaluated */
  char ***pazResult,    /* Results of the query */
  int *pnRow,           /* Number of result rows written here */
  int *pnColumn,        /* Number of result columns written here */
  char **pzErrmsg       /* Error msg written here */
);

功能:非回调来执行sql语句
db:数据库句柄
zSql:要执行的SQL语句
pazResult:查询结果,一维数组
pnRow:查询出多少条记录(查出多少行)
pnColumn:多少个字段(查出多少列)
pzErrmsg:错误信息

返回值:执行成功返回SQLITE_OK,否则返回其他值

注:pazResult的字段值是连续的,是以为数组不是二维数组,从第0索引到第 pnColumn- 1索引都是字段名称,从第 pnColumn索引开始,后面都是字段。

7、释放pazResult查询结果

 sqlite3_free_table(char ***pazResult);

参数:pazResult:查询结果,一维数组

常用函数的介绍

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值