赞
踩
参考引用
数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)
数据库软件应称为 DBMS(数据库管理系统),数据库是通过 DBMS 创建和操纵的容器
因为应用程序需要保存用户的数据,比如 Word 需要把用户文档保存起来,以便下次继续编辑或者拷贝到另一台电脑。要保存用户的数据,一个最简单的方法是把用户数据写入文件
但是,随着应用程序的功能越来越复杂,数据量越来越大,如何管理这些数据就成了大问题
如果每个应用程序都各自写自己的读写数据的代码,一方面效率低,容易出错,另一方面,每个应用程序访问数据的接口都不相同,数据难以复用
所以,数据库作为一种专门管理数据的软件就出现了。应用程序不需要自己管理数据,而是通过数据库软件提供的接口来读写数据。至于数据本身如何存储到文件,那是数据库软件的事情,应用程序自己并不关心
表(table):某种特定类型数据的结构化清单
表名
模式(schema):关于数据库和表的布局及特性的信息
列(column):表中的一个字段,所有表都是由一个或多个列组成的
数据类型(datatype):所容许的数据的类型
主键(primary key):一列(或一组列),其值能够唯一区分表中每个行
业务场景中选取主键的一个基本原则是:不使用任何业务相关的字段作为主键。作为主键最好是完全业务无关的字段,一般把这个字段命名为 id,常见的可作为 id 字段的类型有:
通常,自增类型的主键就能满足需求。上表 students 中定义的主键也是 BIGINT NOT NULL AUTO_INCREMENT 类型
关系型数据库还允许通过多个字段唯一标识记录,即两个或更多的字段都设置为主键,这种主键被称为联合主键
如果把上表的 id_num 和 id_type 这两列作为联合主键,那么上面的 3 条记录都是允许的,因为没有两列主键组合起来是相同的
主键的最好习惯
- 不更新主键列中的值
- 不重用主键列的值
- 不在主键列中使用可能会更改的值
这样,就可以根据 class_id 这个列直接定位出一个 students 表的记录应该对应到 classes 的哪条记录
外键并不是通过列名实现的,而是通过定义外键约束实现的
ALTER TABLE students
ADD CONSTRAINT fk_class_id // 外键约束名称,可随意指定
FOREIGN KEY (class_id) // 指定 class_id 作为外键
REFERENCES classes (id) // 指定这个外键将关联到 classes 表的 id 列(即 classes 表的主键)
DROP FOREIGN KEY fk_class_id // 删除外键约束 fk_class_id,删除外键约束并没有删除外键这一列
通过中间表 teacher_class 可知 teachers 到 classes 的关系
同理可知 classes 到 teachers 的关系
在关系数据库中,如果有上万甚至上亿条记录,在查找记录的时候,想要获得非常快的速度,就需要使用索引
例如,对于 students 表,如果要经常根据 score 列进行查询,就可以对 score 列创建索引
ALTER TABLE students
ADD INDEX idx_score (score);
//ADD INDEX idx_name_score (name, score); // 索引名称是任意的,索引如果有多列,可以在括号里依次写上
ALTER TABLE students
ADD UNIQUE INDEX uni_name (name); // 通过 UNIQUE 关键字就添加了一个唯一索引
SQL(发音为字母 S-Q-L 或 sequel)是结构化查询语言(Structured Query Language)的缩写
SQL 的优点
SQL 语言定义 3 种操作数据库的能力
任意两个 DBMS(数据库管理系统)实现的 SQL 都不完全相同,无法完全直接移植
SQLite 是一款开源的、嵌入式关系型数据库
数据库服务器和客户端运行在同一个进程中的好处是:不需要网络配置或管理
从下图可知,一个 Perl 脚本、一个标准 C/C++ 程序和一个 Apache 托管的 PHP 脚本都使用 SQLite
接口
编译器
虚拟机
后端
并发性要求低、数据小于 1TB、本地存储的应用场景下可以考虑使用 SQLite
在 Qt 中新建 C 项目
将第 1 步下载的源码解压后全部拷贝到第 2 步中创建的 C 项目中(与 main.c 同级),并删除原有 main.c 文件(因为源码 shell.c 中也有 main 函数,会产生冲突)
勾选下图所示选项
编译成功如下
安装 SQLite
$ sudo apt-get install sqlite3
运行 SQLite
安装数据库查看工具 SQLite Browser
$ sudo apt install sqlitebrowser -y
linux 下通过 gcc 编译 sqlite3
- gcc -o sqlite3 sqlite3.c shell.c -lpthread -ldl
linux下通过arm-linux-gcc交叉编译sqlite3
- arm-linux-gcc -o sqlite3 sqlite3.c shell.c -lpthread -ldl
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。