嵌入式数据库
一.数据库综述
数据库(DataBase,简记为DB)就是一个有结构的、集成的、可共享的统一管理的数据集合。它不仅包括数据本身,而且包括相关数据之间的联系。数据库技术主要研究如何存储、使用和管理数据;
* 有结构的,指的是数据是按一定的模型组织起来的。
* 集成的指的是数据库中集中存放着企业各种各样的数据,集中存放的好处是:一个数据只需一个备份,重复存储少,即消除了数据的冗余。
* 可共享是指数据库中的数据可以被不同的用户使用。
* 统一管理的,指的是数据库由DBMS统一管理,任何数据访问都是通过DBMS来完成的。
数据库特点:
数据结构化
*共享性高,冗余度低,易扩充
*数据独立性高
*数据有DBMS统一管理和控制
数据模型的组成要素:数据结构、 数据操作及数据的完整性约束
数据模型:层次型 网状 关系 面向对象
二.数据库系统简述
1.数据库系统的三级模式
* 外模式(子模式或用户模式):数据库用户(包括应用程序员和最终用户)看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式一般是模式的子集。一个模式可以有多个外模式。一个应用程序只能使用一个外模式。外模式是保证数据库安全性的一个有力措施。
* 模式(逻辑模式或概念模式):数据库中全体数据的逻辑结构和特征的描述,一个数据库只有一个模式。
* 内模式(存储模式):数据库在物理存储器上具体实现的描述,是数据在数据库内部的表示方法,也是数据物理结构和存储方式的描述。一个数据库只有一个内模式
2.关系术语及定义: 关系:一个关系就是一张二维表 元组:表中的行称为元组
属性:关系中的一列称为一个属性 域:属性的取值范围
4.关系的候选键与主键
候选键:表中某一列(或若干列的最小组合)的值能惟一标识一个行,称该列或列组为候选键。(候选键取决于应用范围,如没有重复的学生姓名,则姓名是学生基本情况表的一个候选键)
主键:候选键其中之一作为区分行的惟一性标识符,称为主键(
外键:若一个表R1中的一个列或列组对应另一个表R2的主键,那么该列或列组称为表R1的外键
三、sqlite3数据库命令
1、创建数据库:数据库的文件格式 .db文件
① 创建库 :sqlite3 DB.db
② 创建关系:sqlite> create [TEMP] table table_name (column_definitions [constraints]);
其中table_name为关系名,column_definitions为各个属性
例如:create table test(id integer primary key,value text);创建了一个test关系,属性为id号(主键)和value值,为一字符串类型,但用' str '而不用“str”,这与C语言有些区别.
2、插入数据
格式:INSERT INTO table_name { [ ( column_list ) ] { VALUES ( { expression } [ ,...n] ) } }
*table_name:将要接收数据的表或 table 变量的名称。
* (column_list):要在其中插入数据的一列或多列的列表。必须用圆括号将column_list括起来,并且用逗号进行分隔。
*VALUES:引入要插入的数据值的列表。对于column_list(如果已指定)中或者表中的每个列,都必须有一个数据值。必须用圆括号将值列表括起来。如果 VALUES 列表中的值与表中列的顺序不相同,或者未包含表中所有列的值,那么必须使用column_list明确地指定存储每个传入值的列。
例如:insert into test (id,value) values(2,'xiaoming');
3、查询数据
格式:select <目标列名序列> from <表名序列> where <查询条件>
(1)查询指定列
SELECT Sno,Sname FROM Student
例如:以上面为例,在test表中查询'xiaoming'的value值
select value from test where value='xiaoming';
(2)查询全部列
SELECT * FROM Student
例如: select * from test where value='xiaoming';
(3)有条件的查询(比如说性别女的信息或者年龄小于17)
SELECT Sname FROM Student WHERE Sdept=’CS’
例如: select value from test where id<=6;
(4)有范围的查询
BETWEEN … AND … 包括临界值
NOT BETWEEN… AND …不包括临界值
BETWEEN后是范围的下限(低值)
AND后是范围的上限(高值)
查找属性值在或不在指定范围内的元组
例:
SELECT Sname, Sdept, Sage FROM Student WHERE Sage >=20 AND Sage<=23
SELECT Sname, Sdept, Sage FROM Student WHERE Sage <20 OR Sage>23
5)字符匹配
一般形式为: 列名 [NOT ] LIKE 匹配串
作用:查找指定列名与匹配串常量匹配的元组。
%(百分号):匹配0个或多个字符。
_(下划线):匹配一个字符。
[ ]:匹配括号中的字符
[∧ ]:不匹配括号中的字符
Delete From <表名>[Where <条件>]
例如: 删除id为2的所有记录
Delete From test Where id=2;
5、修改数据
格式:Update <表名> Set <列名>=<表达式>[{, <列名>=<表达式>}] Set 列名 表达式 [{, 列名 表达式 }] [Where <条件>]
例如:修改value为'xiaoming'的id为4
update test set id=4 where value='xiaoming';
6、退出:
sqlite> .exit