SQLite-基本概念
关系型数据库(RDBMS)
关系型数据库使用 数据表 来存储数据,这些表之间通过 关系 连接,数据库基于关系模型设计
关系型数据库的核心特性是能够对数据进行组织、查询、更新、删除等操作,并且确保数据一致性、完整性、持久性和隔离性。典型的关系型数据库系统有 MySQL、PostgreSQL、Oracle、SQL Server 等
这里学习的 SQLite 也是一种关系型数据库
数据表(Table)
关系型数据库的基本单位,类比于Excel表格,数据表的 行 代表 数据记录 ,而 列 代表 数据属性
| 姓名 | 班级 | 成绩 |
|---|---|---|
| 张三 | 高三(1)班 | 630 |
| 李四 | 高三(3)班 | 619 |
| 王五 | 高三(3)班 | 617 |
以上面的成绩表为例,表中的每一列(如姓名)表示了该列中 应该是什么数据 ,而每一行 记录了该列中的每一条数据 (比如“张三”),而 单元格内的具体内容 才是数据本身
此外,数据表还有以下两个概念:
- 主键 :对于数据表中的每一行记录,它都有一个唯一标识,这个唯一标识就是主键
- 外键 :就是指向另一个表的键,一般是另一个表主键的引用,用于在不同的数据表之间建立关系
再以成绩表为例,我们在上文的表中增加“排名”列,并将“班级”列改成“学号”:
| 排名 | 姓名 | 学号 | 成绩 |
|---|---|---|---|
| 1 | 李相赫 | C0101 | 630 |
| 2 | 简自豪 | C0313 | 619 |
| 3 | 姜程璐 | C0310 | 617 |
然后再给出一个C01班的部分学生表:
| 学号 | 姓名 | 班级 |
|---|---|---|
| C0101 | 李相赫 | 高三(1)班 |
| C0102 | 卢本伟 | 高三(1)班 |
| C0103 | 禹景曦 | 高三(1)班 |
| C0104 | 郑智勋 | 高三(1)班 |
在学生表中和成绩表中,它们的主键分别是 学号 和 排名 ,而成绩表中也出现了学号列,这时 成绩表中 的学号列就作为外键,与学生表建立了关系
主键与外键有以下区别:
- 主键在表中只能出现一次(因为主键是数据表中数据的唯一标识),而外键可以重复出现(表中可能有多个数据对应到同一个对象上,如表中既有张三的数学成绩也有张三的物理成绩)
- 主键必须存在(不允许为空),而外键可以为空(表中的数据不会对应到其他表中的数据对象,如考试时卷子没写名字,那么这张卷子的成绩就没人对应了)
- 如果主键被其他的数据表引用,那么这个主键就不能随意修改,而外键不能引用不存在的主键
关系模型(Relational Model)
关系型数据库的核心是关系模型,所有的数据都以关系的形式组织
关系的数学定义比较复杂,这里做如下类比(但有较大偏差):
我们可以将 关系 理解为增加以下规则的 Excel 表格,这些规则同时也应用在数据表上:
- 每一列的名称与数据类型都是唯一的(如某一列的名称为“年龄”,数据类型为int,那么这一列只能存储int类型的数据)
- 不能有完全相同的两行,如下表的数据是不允许的:
| 学号 | 姓名 | 年龄 |
|---|---|---|
| 14 | 张三 | 19 |
| 14 | 张三 | 19 |
行和列的顺序可以随意打乱
每个单元格内只能存放数据值,而不能存放集合等结构
表的列被称为 属性 ,表示允许的值的集合(比如学号是6位数字,姓名是长度不超过10的字符串)
表的行被称为 元组 ,比如(14, “张三”, 19)就是一个元组
关系模型具有以下特点:
- 结构化:数据存储在二维表格中,列定义了数据的类型和约束,行表示具体的数据。
- 规范化:通过规范化(Normalization)将数据拆分成多个表,减少数据冗余,消除不必要的数据重复。
- 数据完整性:数据库设计通过约束(如主键、外键、唯一约束、非空约束等)来保证数据的完整性。
结构化查询语言(SQL)
操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准
程序员在通过SQL语言操作数据库管理系统,并通过管理系统管理数据,根据功能不同,可以分为以下四种类型:
- 数据定义语言(DDL):定义和修改数据库结构,如创建和删除数据表,修改字段类型等
- 数据操作语言(DML):操作数据,如插入、更新和删除数据
- 数据查询语言(DQL):从一个或多个表中检索数据
- 数据控制语言(DCL):控制数据访问权限
索引(Index)
索引是一种数据结构,用于加速数据库查询。索引通常是基于某一列或多列字段创建的,它可以显著提高查询性能,尤其是在进行大量数据检索时
常见的索引类型:
- B-树:多路平衡搜索树,所有数据记录都存储在叶子节点,叶子节点之间通过指针形成有序链表
- 哈希表:通过哈希函数将 key 映射到值
- 位图索引:为每个可能的键值使用一个位图(bitmap),位长度等于行数,对应行有该值则置1
事务(Transactions)
事务是关系型数据库中的一个重要概念,它是指一组操作,要么全部成功(提交),要么全部失败(回滚)。事务的作用是确保数据的一致性和可靠性
隔离级别:事务之间的隔离级别控制了它们在并发执行时的行为,常见的隔离级别有:
- 读未提交(Read Uncommitted):一个事务可以读取到另一个尚未提交的事务所做的修改
- 读已提交(Read Committed):一个事务只能读取到已经提交的事务所做的修改
- 可重复读(Repeatable Read):同一事务内多次读取同一数据行,结果始终一致
- 串行化(Serializable):事务完全隔离,看起来就像串行执行
表连接(Join)
关系型数据库通过 表连接(Join) 来处理不同表之间的关系。常见的连接类型包括:
- 内连接(INNER JOIN):返回两个表中匹配的记录。
- 左连接(LEFT JOIN):返回左表所有记录和右表匹配的记录,右表没有匹配时返回 NULL。
- 右连接(RIGHT JOIN):返回右表所有记录和左表匹配的记录,左表没有匹配时返回 NULL。
- 全外连接(FULL OUTER JOIN):返回两个表中所有的记录,无论是否匹配。
连接操作可以跨越多个表,帮助我们获取复杂的关系数据。
- 标题: SQLite-基本概念
- 作者: kk3TWT
- 创建于 : 2026-05-04 15:52:07
- 更新于 : 2026-05-04 15:53:57
- 链接: https://kk-is-very-happy.online/posts/bd5078f8/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。