首页数据库数据库知识点(数据库基本知识)

数据库知识点(数据库基本知识)

编程之家2026-05-221046次浏览

老铁们,大家好,相信还有很多朋友对于数据库知识点和数据库基本知识的相关问题不太懂,没关系,今天就由我来为大家分享分享数据库知识点以及数据库基本知识的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

数据库知识点(数据库基本知识)

数据库春考知识点

数据库春考核心知识点涵盖基础理论、SQL语言、优化维护、Access操作及NoSQL数据库五大模块,具体内容如下:

一、数据库基础理论

数据库模型:包括层次模型(适合表示层级关系,如组织结构)、关系模型(以二维表存储数据,应用最广泛)、网状模型(支持复杂关系)及面向对象模型(支持对象属性与方法的封装)。数据库设计:范式理论:1NF要求属性不可再分;2NF消除部分依赖(非主键字段需完全依赖主键);3NF消除传递依赖(非主键字段间无依赖);BCNF进一步约束主键内依赖。

E-R图:实体用矩形表示,属性用椭圆,关系用菱形,用于抽象描述数据结构。

关系类型:一对一(如身份证与个人)、一对多(如部门与员工)、多对多(如学生与课程)、自关联(如员工与其管理者)。

事务管理:ACID特性:原子性(事务不可分割)、一致性(数据状态合法)、隔离性(并发事务互不干扰)、持久性(提交后永久保存)。

数据库知识点(数据库基本知识)

隔离级别:读未提交(可能脏读)、读已提交(避免脏读)、可重复读(避免不可重复读)、串行化(最高隔离,性能最低)。

二、SQL语言

数据操作命令:查询:SELECT语句支持条件筛选(WHERE)、分组(GROUP BY)及排序(ORDER BY)。

插入:INSERT INTO表名 VALUES(值)或指定字段插入。

更新:UPDATE表名 SET字段=值 WHERE条件。

删除:DELETE FROM表名 WHERE条件(删除数据)或DROP TABLE表名(删除表结构)。

数据库知识点(数据库基本知识)

约束与索引:约束:主键(唯一标识记录)、外键(维护表间关联)、唯一(字段值唯一)、检查(限制字段取值范围)。

索引类型:主键索引(自动创建)、唯一索引(保证唯一性)、复合索引(多字段组合)、全文索引(文本搜索优化)、B树索引(范围查询高效)、哈希索引(精确匹配快速)。

三、数据库优化与维护

查询优化:通过EXPLAIN分析执行计划,识别全表扫描等低效操作;索引优化需根据查询类型选择B树(范围查询)或哈希(精确匹配)。备份与恢复:策略:完全备份(全量数据)、增量备份(仅备份变化部分)、差异备份(备份自上次完全备份后的变化)、冷备份(需停机)、热备份(在线备份)。

目的:防止数据丢失、支持灾难恢复。

分布式数据库:数据分片:水平分片(按行拆分)或垂直分片(按列拆分),减少单节点负载。

CAP定理:一致性(数据同步)、可用性(服务可访问)、分区容忍性(网络分区时仍运行),三者不可兼得,需权衡设计。

四、Access数据库操作(山东春考特色)

窗体设计:窗体提供比数据表更灵活的数据展示与编辑界面,支持快速创建、窗体向导及布局调整。核心概念:主键用于唯一标识记录;信息传递需物质载体(如数据库文件),且依赖能量(如电力支持服务器运行)。五、NoSQL数据库

键值存储模型:以Redis为代表,支持快速读写,但复杂查询能力有限,适合缓存等场景。数据一致性:通过CAP定理或最终一致性模型(允许短暂不一致,最终达成一致)保证。

计算机三级数据库必背知识点

计算机三级数据库必背知识点如下:

一、数据库基本概念与生命周期需掌握数据库核心概念及数据库应用系统生命周期,包括项目规划、需求分析、系统设计、实现与部署、运行与维护五个阶段。系统设计分为概念设计(E-R图绘制)、逻辑设计(E-R图转关系模式、规范化处理)和物理设计(文件组织形式、索引设计策略)三个步骤,是构建数据库的基础框架。

二、SQL语言与数据操作重点掌握复杂查询实现,如集合运算(UNION/INTERSECT/EXCEPT)、子查询(嵌套查询、相关子查询)及扩展功能(窗口函数、递归查询)。需理解INSERTED表和DELETED表的作用,二者分别存储INSERT/UPDATE/DELETE操作影响的新值副本和旧值副本,是触发器实现数据变更跟踪的关键。

三、数据库对象与编程技术需掌握分区表(水平/垂直分区)、索引(B树/哈希索引)的创建方法,理解存储过程(预编译SQL块)、用户定义函数(标量/表值函数)、触发器(事件驱动自动执行)和游标(逐行处理结果集)的核心概念及定义语法,这些对象是数据库功能扩展的核心工具。

四、数据库管理与维护安全管理需掌握权限控制(GRANT/REVOKE语句);性能优化需监控数据缓冲区命中率、索引使用率等指标,通过调整内存参数、优化SQL语句提升性能;故障管理需掌握备份与恢复技术(完全/差异备份、时间点恢复);维护内容包括数据转储、安全性审计、性能检测与改善、数据重组与重构。

五、数据库性能与优化需理解锁与等待(行锁/表锁)、回滚段使用情况等监控指标,掌握事务隔离级别设置(READ UNCOMMITTED/READ COMMITTED/REPEATABLE READ/SERIALIZABLE)和索引调整(添加/删除索引、索引选择性分析)等优化方法。

六、高级数据库技术需理解数据仓库的四大特征(面向主题、集成、稳定、反映历史变化)及数据挖掘基本流程,了解分布式数据库(数据分片与透明访问)、XML数据库(半结构化数据存储)、并行数据库(多处理器协同处理)和空间数据库(地理信息存储)等新技术架构。

七、数据模型与独立性掌握物理独立性(通过外模式/模式映像实现)和逻辑独立性(通过模式/内模式映像实现)的概念,理解关系模型中通过外键约束实现表间关联的机制,这是保障数据结构灵活性的关键。

八、数据库管理员(DBA)职责需明确DBA的核心任务,包括数据库结构规划、存储策略制定、安全性要求定义、运行状态监控及性能改进,是数据库系统稳定运行的保障角色。

九、考试重点章节与题型分布第三章数据库结构设计是应用题核心,重点考察E-R图绘制、关系模式转换及范式判断(1NF-BCNF);第二章需求分析需掌握数据字典和数据流图概念;第一章开发方法需区分生命周期阶段任务及结构化/面向对象开发方法的差异。考试形式为上机操作,满分100分,包含单项选择题(40分)、填空题(30分)、设计与应用题(30分),建议以2025年版《全国计算机等级考试三级教程——数据库技术》为复习依据。

MySQL知识点总结

只要字段值还可以继续拆分,就不满足第一范式。

范式设计得越详细,对某些实际操作可能会更好,但并非都有好处,需要对项目的实际情况进行设定。

在满足第一范式的前提下,其他列都必须完全依赖于主键列。如果出现不完全依赖,只可能发生在联合主键的情况下:

实际上,在这张订单表中,product_name只依赖于 product_id,customer_name只依赖于 customer_id。也就是说,product_name和 customer_id是没用关系的,customer_name和 product_id也是没有关系的。

这就不满足第二范式:其他列都必须完全依赖于主键列!

拆分之后,myorder表中的 product_id和 customer_id完全依赖于 order_id主键,而 product和 customer表中的其他字段又完全依赖于主键。满足了第二范式的设计!

在满足第二范式的前提下,除了主键列之外,其他列之间不能有传递依赖关系。

表中的 customer_phone有可能依赖于 order_id、 customer_id两列,也就不满足了第三范式的设计:其他列之间不能有传递依赖关系。

修改后就不存在其他列之间的传递依赖关系,其他列都只依赖于主键列,满足了第三范式的设计!

查询每门课的平均成绩。

查询 score表中至少有 2名学生选修,并以 3开头的课程的平均分数。

分析表发现,至少有 2名学生选修的课程是 3-105、3-245、6-166,以 3开头的课程是 3-105、3-245。也就是说,我们要查询所有 3-105和 3-245的 degree平均分。

查询所有学生的 name,以及该学生在 score表中对应的 c_no和 degree。

通过分析可以发现,只要把 score表中的 s_no字段值替换成 student表中对应的 name字段值就可以了,如何做呢?

查询所有学生的 no、课程名称( course表中的 name)和成绩( score表中的 degree)列。

只有 score关联学生的 no,因此只要查询 score表,就能找出所有和学生相关的 no和 degree:

然后查询 course表:

只要把 score表中的 c_no替换成 course表中对应的 name字段值就可以了。

查询所有学生的 name、课程名( course表中的 name)和 degree。

只有 score表中关联学生的学号和课堂号,我们只要围绕着 score这张表查询就好了。

只要把 s_no和 c_no替换成 student和 srouse表中对应的 name字段值就好了。

首先把 s_no替换成 student表中的 name字段:

再把 c_no替换成 course表中的 name字段:

查询 95031班学生每门课程的平均成绩。

在 score表中根据 student表的学生编号筛选出学生的课堂号和成绩:

这时只要将 c_no分组一下就能得出 95031班学生每门课的平均成绩:

查询在 3-105课程中,所有成绩高于 109号同学的记录。

首先筛选出课堂号为 3-105,在找出所有成绩高于 109号同学的的行。

查询所有成绩高于 109号同学的 3-105课程成绩记录。

查询所有和 101、108号学生同年出生的 no、name、birthday列。

查询'张旭'教师任课的学生成绩表。

首先找到教师编号:

通过 sourse表找到该教师课程号:

通过筛选出的课程号查询成绩表:

查询某选修课程多于5个同学的教师姓名。

首先在 teacher表中,根据 no字段来判断该教师的同一门课程是否有至少5名学员选修:

查看和教师编号有有关的表的信息:

我们已经找到和教师编号有关的字段就在 course表中,但是还无法知道哪门课程至少有5名学生选修,所以还需要根据 score表来查询:

根据筛选出来的课程号,找出在某课程中,拥有至少5名学员的教师编号:

在 teacher表中,根据筛选出来的教师编号找到教师姓名:

查询“计算机系”课程的成绩表。

思路是,先找出 course表中所有计算机系课程的编号,然后根据这个编号查询 score表。

查询计算机系与电子工程系中的不同职称的教师。

查询课程 3-105且成绩至少高于 3-245的 score表。

查询课程 3-105且成绩高于 3-245的 score表。

查询某课程成绩比该课程平均成绩低的 score表。

查询所有任课(在 course表里有课程)教师的 name和 department。

查询 student表中至少有 2名男生的 class。

查询 student表中不姓"王"的同学记录。

查询 student表中每个学生的姓名和年龄。

查询 student表中最大和最小的 birthday值。

以 class和 birthday从大到小的顺序查询 student表。

查询"男"教师及其所上的课程。

查询最高分同学的 score表。

查询和"李军"同性别的所有同学 name。

查询和"李军"同性别且同班的同学 name。

查询所有选修"计算机导论"课程的"男"同学成绩表。

需要的"计算机导论"和性别为"男"的编号可以在 course和 student表中找到。

建立一个 grade表代表学生的成绩等级,并插入数据:

查询所有学生的 s_no、c_no和 grade列。

思路是,使用区间( BETWEEN)查询,判断学生的成绩( degree)在 grade表的 low和 upp之间。

准备用于测试连接查询的数据:

分析两张表发现,person表并没有为 cardId字段设置一个在 card表中对应的 id外键。如果设置了的话,person中 cardId字段值为 6的行就插不进去,因为该 cardId值在 card表中并没有。

要查询这两张表中有关系的数据,可以使用 INNER JOIN(内连接)将它们连接在一起。

完整显示左边的表( person),右边的表如果符合条件就显示,不符合则补 NULL。

完整显示右边的表( card),左边的表如果符合条件就显示,不符合则补 NULL。

完整显示两张表的全部数据。

在 MySQL中,事务其实是一个最小的不可分割的工作单元。事务能够保证一个业务的完整性。

比如我们的银行转账:

在实际项目中,假设只有一条 SQL语句执行成功,而另外一条执行失败了,就会出现数据前后不一致。

因此,在执行多条有关联 SQL语句时,事务可能会要求这些 SQL语句要么同时执行成功,要么就都执行失败。

在 MySQL中,事务的自动提交状态默认是开启的。

自动提交的作用:当我们执行一条 SQL语句的时候,其产生的效果就会立即体现出来,且不能回滚。

什么是回滚?举个例子:

可以看到,在执行插入语句后数据立刻生效,原因是 MySQL中的事务自动将它提交到了数据库中。那么所谓回滚的意思就是,撤销执行过的所有 SQL语句,使其回滚到最后一次提交数据时的状态。

在 MySQL中使用 ROLLBACK执行回滚:

由于所有执行过的 SQL语句都已经被提交过了,所以数据并没有发生回滚。那如何让数据可以发生回滚?

将自动提交关闭后,测试数据回滚:

那如何将虚拟的数据真正提交到数据库中?使用 COMMIT:

事务的实际应用,让我们再回到银行转账项目:

这时假设在转账时发生了意外,就可以使用 ROLLBACK回滚到最后一次提交的状态:

这时我们又回到了发生意外之前的状态,也就是说,事务给我们提供了一个可以反悔的机会。假设数据没有发生意外,这时可以手动将数据真正提交到数据表中:COMMIT。

事务的默认提交被开启(@@AUTOCOMMIT= 1)后,此时就不能使用事务回滚了。但是我们还可以手动开启一个事务处理事件,使其可以发生回滚:

仍然使用 COMMIT提交数据,提交后无法再发生本次事务的回滚。

事务的四大特征:

事务的隔离性可分为四种(性能从低到高):

查看当前数据库的默认隔离级别:

修改隔离级别:

测试 READ UNCOMMITTED(读取未提交)的隔离性:

由于小明的转账是在新开启的事务上进行操作的,而该操作的结果是可以被其他事务(另一方的淘宝店)看见的,因此淘宝店的查询结果是正确的,淘宝店确认到账。但就在这时,如果小明在它所处的事务上又执行了 ROLLBACK命令,会发生什么?

这就是所谓的脏读,一个事务读取到另外一个事务还未提交的数据。这在实际开发中是不允许出现的。

把隔离级别设置为 READ COMMITTED:

这样,再有新的事务连接进来时,它们就只能查询到已经提交过的事务数据了。但是对于当前事务来说,它们看到的还是未提交的数据,例如:

但是这样还有问题,那就是假设一个事务在操作数据时,其他事务干扰了这个事务的数据。例如:

虽然 READ COMMITTED让我们只能读取到其他事务已经提交的数据,但还是会出现问题,就是在读取同一个表的数据时,可能会发生前后不一致的情况。*这被称为*不可重复读现象( READ COMMITTED)。

将隔离级别设置为 REPEATABLE READ(可被重复读取):

测试 REPEATABLE READ,假设在两个不同的连接上分别执行 START TRANSACTION:

当前事务开启后,没提交之前,查询不到,提交后可以被查询到。但是,在提交之前其他事务被开启了,那么在这条事务线上,就不会查询到当前有操作事务的连接。相当于开辟出一条单独的线程。

无论小张是否执行过 COMMIT,在小王这边,都不会查询到小张的事务记录,而是只会查询到自己所处事务的记录:

这是因为小王在此之前开启了一个新的事务( START TRANSACTION)*,那么*在他的这条新事务的线上,跟其他事务是没有联系的,也就是说,此时如果其他事务正在操作数据,它是不知道的。

然而事实是,在真实的数据表中,小张已经插入了一条数据。但是小王此时并不知道,也插入了同一条数据,会发生什么呢?

报错了,操作被告知已存在主键为 6的字段。这种现象也被称为幻读,一个事务提交的数据,不能被其他事务读取到。

顾名思义,就是所有事务的写入操作全都是串行化的。什么意思?把隔离级别修改成 SERIALIZABLE:

还是拿小张和小王来举例:

此时会发生什么呢?由于现在的隔离级别是 SERIALIZABLE(串行化),串行化的意思就是:假设把所有的事务都放在一个串行的队列中,那么所有的事务都会按照固定顺序执行,执行完一个事务后再继续执行下一个事务的写入操作(这意味着队列中同时只能执行一个事务的写入操作)。

根据这个解释,小王在插入数据时,会出现等待状态,直到小张执行 COMMIT结束它所处的事务,或者出现等待超时。

转载:

好了,关于数据库知识点和数据库基本知识的问题到这里结束啦,希望可以解决您的问题哈!

最近的编程培训班(it培训班)怎样进入c语言编程?c语言教程