数据库是有一张一张的表构成的,而表示一个二维结构,表的每一列成为属性,每一行称为一个元祖
sqlite数据库管理系统的特点是:
1)小巧,快速,适用于嵌入式环境
2)数据库文件本身就是一个普通的磁盘文件,可通过数据库工具来读取文件内容
sqlite数据库的语法跟mysql是一样的,常见的语句如下:
1.显示所有数据库:show database;
2.建立数据库: create database 库名;
3.使用数据库: use 库名;
4.建立表:create table if not exists 表名(字段名 类型,字段名 类型,...);
5.列出库中所有的表:show tables ;
6.显示表属性:discribe 表名;
7.删除数据库:drop database 库名;
8.删除数据表: drop table 表名;
9.插入记录:
insert into 表名(字段1,字段2,...) value(值1,值2,...);
insert into 表名 value(值1,值2,...); //值与所有字段匹配时课省略字段名
insert into 表名 set 字段名1=‘值1’, 字段名2=‘值2’;
insert into 表名(字段1,字段2,...) value(值1,值2,...), (值1,值2,...); //插入多条记录
10.更新表中记录:
update 表名 set 字段名1=‘值1’, 字段名2=‘值2’ where 条件表达式; //没有条件表达式全部更新
11.插入及更新表中记录
replace 表名(字段1,字段2,...) values(值1,值2,...);
update语句和replace语句的区别在于,replace语句会判断该数据表中字段是否存在,如果存在等同于update,
如果表不存在效果等同于insert和update。
replace跟insert功能区别:replace首先常识插入数据到表中,如果发现表中已经有此行数据(根据主键或者唯一索引判断),则先、删除此行数据,然后插入新的数据,否则直接插入新数据。要注意的是,插入数据的表必须有主键或者唯一索引,否则replace会直接插入数据,导致表中出现重复数据。
12.字段修改:
alter table 表名 add column 字段名,字段类型 //添加一个系的字段及类型
如alter table db_version add column old_version int;
13.删除表中记录: delete from 表名 where 条件表达式; //没有条件表达式全部删除
14.查询:
select 列名称 from 表名称,其中列明可以是多个,中间用逗号隔开,如select LastName,FistName from Persons;
select * from 表名 ,表示查找表中所有内容,星号表示选择所有列
用where限定搜索范围,selcet 列名称 form 表名 where 列 运算符 值
运算符包括:
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内搜索
LIKE 搜索某种模式
示例:
1)select * from student where stu_id=267;
2)select * from student where stu_id<267;
3)select * from student where stu_id between 267 and 305;
空值检查:使用 NULL 关键字
select * from student where stu_id is null;
数据库在实际中使用总结:
在嵌入式设备中,会在设备目录下比如/home下存放数据库文件,可以通过挂载到设备,拷贝数据库文件到本地,通过软件打开数据库文件,查看表中数据内容
设备在启动中会生成一个数据库进程,设备启动时候,在main函数中会初始化数据库,从数据库中读取设备配置参数到一个全局配置结构体中,设备启动后,配置参数都是从全局配置接哦固体中获取,不在从数据库中读取。
设备启动后,通过客户端或者空间修改参数,点击保存,这个操作主要由以下两步:
(1) 修改配置结构体中的全局参数
(2)将配置结构体中修改过的参数保存到数据库中,一般是通过宏来调专门的接口实现,一个红对应一张表名
任何从全局配置结构体中取的配置变量或者通过函数引用全局配置结构体的变量,都属于从数据库读取的配置信息
写入数据库的时候,配置结构体所有字段都要写入,而从数据库获取参数,只需获取所需的字段就可以了