linux——18数据库SQLite3

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

一、数据库基本概念

1.介绍

关系型数据库语言-----------类似EXECL
非关系型数据库--------------类似JSON,键值对
SQL (struct query language):结构化查询语言,
专业术语:

	ddl,data defination language 建表
	dml,新增,删除,删除一行  data modifty language 
	dql,查询 data query language 

2.分类

大型中型小型
ORACLEMYSQL/MSSQLSQLITE DBII powdb

3.名词

	DB    数据库
	DBMS  数据库管理系统
	MIS   管理信息系统
	OA    办公自动化

4.嵌入式数据库:

优点:

	1.开源,c语言开发
	2.代码量少1万行左右,总大小10M以内
	3.绿色软件无需安装
	4.文件类型数据库,可以行动
	5.数据库容量大2T

二、sqlite3安装

1.安装

1)在线安装
	sudo apt-get install sqlite3 
	sudo apt-get install libsqlite3-dev
	验证否安装成功:
	sqlite3 --version
	sqlite3 --help
	(2)源码安装
	1.将源码安装包放在指定路径下
	2.解压压缩包
	3../configure(脚本检查配置文件)生成makefile
	4.make生成可执行程序(编译)
	5.sudo make installl(安装)

2.创建数据库

数据库文件是以.db结尾

	1.touch xxx.db
	2.sqlite3 xxx.db

3.进入数据库

在这里插入图片描述

4.数据库配置命令

1.databse查看数据保存信息,如果没有退出重新创建
在这里插入图片描述
2.exit数据库退出
在这里插入图片描述
3.是否显示表头信息
在这里插入图片描述
4.查看数据库表,键值信息
在这里插入图片描述
5.查看数据库中所有表的信息
在这里插入图片描述

5.sql语句

		注意:所有的sql语句都以';'结尾。
		创建一个表:ddl
		显示表头:.header on
		数据类型:
		int char(短文本) text(长文本)real(浮点类型)blob(二进制数据)
(1)创建表:
	crate table 表名(数据名+数据类型);
	eg:
	create table user(id int  ,name char,age int);
	create table user1(id int,name char,pssswd char);2)删除表:
	drop table  表名;
	eg:drop table user;3)增:
	增加表内全部数据:
	insert into 表名 values(数据依次填入);
	增加表内部分数据:
	insert into 表名(变量名依次填入)values(数据依次填入);4)查:
	查询表中所有数据;
	select *from 表名;
	满足一定条件查询:
	select *from 表名where 或者 like;
	两个条件的组合用and
	通配符%0~任意多个字符
	通配符_,代表只有一个字符
	查找带顺序:
		select * from user order by age;
		select * from user order by age desc;
	eg:
	select id,name from user where not  age <30
		   where name   like '三一'   % _
(5)改:
	update 表名 set 表字段 = 值  满足条件:
	   eg: update user set id = 1 where name = 'li';
	   update user set id = 1 where name = "li" and passwd = "123";
	   update user set id = 2 where name = "li" or  name = "zhao";6)删:
	delect from表名 满足条件;
 	eg:delete from user ;  ///删除表中所有数据
	   	   delete from user where id  = 1; ///删除id=1 的数据;
		   delete from user where id =1 and name = "zhang";
		   delete from user where id = 1 or id  = 2;
(7)时间列
	datatime
	insert into user1 values(2,'lisi',datetime('now','+8 hours'));
	去年的时间:
	insert into user1 values(3,'lisi',datetime('now','+8 hours','-1 year'));
	查询一整年的数据:
	select * from user1 where dt >='2020-01-01 00:00:00' and dt <= '2020-12-31 23:59:59';
(8)自动增长列
	CREATE TABLE user3(id INTEGER PRIMARY KEY ASC,name char,age int,dt datetime);
	insert into user3 (NULL,'李四',23,datetime('now'));

5.数据库维护命令

	1.数据的导出
	sqlite3 xx.db  .dump > xx.sql 输出重定向。
	将数据库名称为xxx的数据库整体导出到脚本中
	2.数据的导出
	sqlite3 xxx.db < xxx.sql 输入重定向
	3.安装可视化工具
	sudo apt-get install sqliteman 
	

三、数据库编程函数

1.编程框架

	1.打开数据库
	2.读写数据库(增删改查)
	3.关闭数据库

2.函数接口

	1.打开数据库
	int sqlite3_open(char * path,sqlite3 ** db);
	功能:打开指定path路径+文件名称的数据库,并将
		  打开的地址指向db变量的句柄。
	参数:path 要打开的数据库路径+名称
		  db  要打开的数据库地址指针
	返回值:成功  0
			失败  -12.关闭数据库: sqlite3_close
	int sqlite3_close(sqlite3 *db);
	功能:关闭指定的数据库
	参数:要关闭的数据库地址
	返回值:成功  0
			失败  -13.数据库操作
	查询操作:sqlite3_get_table();  select 
	int sqlite3_get_table(sqlite3 *db,char *sql,
					char *** rest,int *nrow,int *ncol,
					char ** errmsg);

	功能:在db数据库上执行sql查询语句,并将执行的
		  结果集返回到rest地址上,同时返回查询的行和列。
	参数:db 要执行查询语句的数据库
	      sql  要执行的select查询语句
		  rest 查询的结果集是一个三级指针
		  nrow 查询的结果的行数
		  ncol 查询的结果的列数
		  errmsg 如果执行有错误,则存储错误。
	返回值:成功 0
			失败 非0;
	执行sql语句:sqlite3_exec();   insert delete update

	int sqlite3_exec(sqlite3 *db,char *sql,callback fun,
					void * arg,char ** errmsg);

	功能:在db数据库上执行sql 非查询语句。
		  并将结果返回。
	参数:db 要执行sql的数据库
		  sql  要执行的非查询sql语句。
		  fun  如果该函数要执行查询语句,则该回调函数
		  	   用来回收查询的结果。
		  arg  回调函数的参数,如果没有回调函数则该参数为NULL;
		  errmsg  执行过程中的错误信息。
	返回值:执行成功  0
			失败  非0 ;
	回调函数:为了将反馈结果	
	int fun(void *arg ,int f_num,char ** f_value,
	        char ** f_name)
	
	功能:该函数用于sqlite3_exec执行select语句的
		  结果集返回数据。
	参数:arg 由sqlite3_exec传入的参数
		  f_num 执行该命令所返回测结果集的字段个数。
		  f_value 查询结果集中的字段的值。
		  f_name  查询结果集中的字段的名称。
	返回值:成功 0
			失败 非0
	注意:该回调函数必须有返回值,否则可能导致查询异常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值