欢迎您访问南华自考网!

为什么你精通CRUD,却搞不懂数据库的基本原理?

更新时间:2023-12-03 20:21:29作者:51data

作者:黄来源:

作为程序员,本文中的思维导图数据库和关系数据库都不知道一个数据库是如何工作的,那么什么是数据库呢?作为一名Java工程师,我平时会和很多数据库打交道,所谓的CRUD其实就是对数据库进行添加、删除、检查的操作。

根据百度百科,数据库是“按照数据结构组织、存储和管理数据的仓库”。它是一个有组织、共享和管理的数据集,长期存储在计算机中。

为什么你精通CRUD,却搞不懂数据库的基本原理?

数据库是以某种方式存储在一起的数据的集合,可以被多个用户共享,具有尽可能最小的冗余,并且独立于应用程序。它可以被认为是电子文件柜3354存储电子文件的地方。用户可以添加,查询,更新和删除文件中的数据。

你不明白吗?嗯,简单来说,MySQL这样的数据库是用来存储结构化数据的,比如一个学生的信息数据,一个商品的数据,或者一个学生购买商品时的消费数据。

想到我们平时经常用的Excel,其实和数据库挺像的。数据库实际上是一个有很多数据类型的表,比如字符串、数字、长文本等等。

这种数据库也叫关系数据库,典型代表就是MySQL。

看看百度百科的介绍。关系数据库是指使用关系模型组织数据的数据库。它以行和列的形式存储数据,以便用户能够容易地理解它。关系数据库的一系列行和列称为表,一组表构成一个数据库。用户通过查询检索数据库中的数据,查询是用来定义数据库中某些区域的执行代码。关系模型可以简单理解为二维表模型,关系数据库是由二维表及其关系组成的数据组织。

除了关系型数据库,近几年还有很多nosql(不仅仅是sql)数据库不断涌现,比如MongoDB、图数据库、列数据库等。这些数据库不是程序员新手用的,所以本文只讨论关系数据库的内容。

关系数据库是我们的程序员最常用的数据库类型,也是最简单和最容易使用的。所以学习数据库一般从MySQL这样的关系型数据库开始。一是简单易学,二是免费。

我的数据库学习课程我第一次听到“数据库”这个词是在大学的时候。当时大家都在找工作,有个同学跟我们分享了他的求职经历。据他说,每个公司都会考察你的数据库知识,学好数据库,不怕面试任何公司。

当时觉得挺玄乎的,但是我们学校真的没有什么大公司。我对此持怀疑态度。至于是真是假,我也没有再追究。

第二次接触数据库是在学Java的时候。我记得我跟着一个小教程,下载安装了MySQL,然后从网上下载了演示代码。我用当时比较先进的开发工具eclipse来运行别人的代码,其实就是增删查。

但是,当时我对这些事情一无所知。后来,我下载了一个db可视化工具,它可以更容易地知道我的数据库中有什么。

后来开始接触实际项目,使用数据库的人数时间越来越长。我以为我对数据库的理解还可以。直到真正接触到数据库相关的面试问题,才发现自己对数据库的理解是多么的肤浅。

那时候我只知道写一些简单的crud,甚至不知道一些简单的sql用法比如内外联接,group by,count。此外,我对数据库的一些基本内容几乎一无所知,如数据库的索引、事务和锁定机制。我对他们并不了解,更不用说如何回答相关的面试问题了。

于是,我开始意识到学习数据库原理有多重要。我开始看数据库方面书籍。从最基础的数据库教材,到MySQL的原理内容,再到mybatis等orm框架的实现,我逐渐开始学习和理解,直到可以掌握大部分的数据库面试题目。

现在,我在一家每天都要处理海量数据的公司工作。对数据的研究不仅仅是在数据库中,还包括数据仓库、分布式数据库以及大数据的各种应用场景。看来学数据知识的路很短时间我学不完。

学习数据库,要从sql开始,先说MySQL,所以不得不说SQL。SQL,按百科来说就是这样的。

结构化查询语言(简称SQL)是一种特殊用途的编程语言。它是一个数据库查询和编程语言,用于访问数据和查询,更新和管理关系数据库系统。

对于不同的数据库,sql的写法可能会有一些差异,但大体上都是一样的。以MySQL为例,我们通常使用最多的是选择、更新、删除和插入。这些操作统称为DML(数据操作语言),用户通过它可以实现数据库的基本操作。

当然也有一些操作数据库和表的ddl。数据库模式定义语言(DDL)是一种用于描述要存储在数据库中的真实世界实体的语言。简单来说,ddl实际上是用来创建表、删除表、改变表结构的。

以前没怎么写过sql。毕竟简单的增删改查不需要复杂的sql技能。最多我只是做表连接。

后来开始做一些项目,接触了一些ORM框架,比如hibernate,mybatis。这些框架甚至可以让你根本不用写sql,只需要调用一些API进行添加、删除和检查,这让我很长一段时间都忽略了SQL的重要性时间。

其实学习sql最复杂的部分不是一些高级用法,而是实际场景中的应用和优化。两个sql,可能因为简单的差异,性能差距很大。不同之处可能是,例如,是否有索引,是否有全表扫描,或者有哪个索引,这样的性能分析只有在实际场景中才有意义。

当然,对于初学者来说,学习sql语法是第一要务,之后才能逐渐过渡到使用、优化、分析。

那些关于数据库的面试问题想要真正学好数据库,解决面试问题中的相关问题,那么你必须了解数据库的基本原理。

不信我给你一些面试问题中常见的问题,比如“数据库事务中的ACID是什么意思”“数据库中有哪些锁”“数据库索引用的是什么数据结构”

以上问题都是简单版本,在普通面试中经常可以看到。即使只是背答案,也有可能得到一些正确的答案。如果再进一步考察数据库的基础知识,恐怕就没那么简单了。

举个例子:“如何实现数据库事务的ACID”,“数据库中有哪些锁,如何实现,如何使用”,“如何实现数据库中的索引,何时命中索引,何时不命中,为什么”

是不是觉得一下子上来很难?毕竟深入原理,懂的人越来越少。另外还有很多高级面试题,经常结合实际场景进行考查。

比如考察你对Mysql存储引擎innodb的理解,对sql优化的理解,分布式场景下数据库能力的应用,比如分布式锁,分布式事务,数据库和表分离的一些问题。

在知道了面试问题是关于什么的之后,接下来我们需要做的就是找到问题的症结所在,然后逐一击破。

数据库基本原理学习数据库,需要先打好基础。数据库原理是计算机课程的必修课,非学科课程我选择了自学。我也是用那本大学教材《数据库系统概论》自学的。

这种教材肯定有点理论化,我们需要了解的内容主要包括几个方面。

1.数据库模型有哪些:层次模型、网格模型和关系模型。我们使用的关系数据库是基于关系模型的。

2.关系数据库和sql基础:了解关系数据库的基本概念和sql的基本用法,至少了解CRUD和一些常见用法。

3.数据库的安全性和完整性。这两部分理论上其实很枯燥,但实际上对应的是实际场景。安全性是保护数据安全,包括访问控制和数据备份,完整性是通过一些约定和规范来限制数据库的存储内容。例如,我们可以使用主键、唯一键、非空等要求来限制字段的值。

4.关系数据理论的这一部分非常有趣和复杂。论述了数据库的范式理论,从一个范式到四个范式都有自己的用法和要求。一家互联网公司的“第四范式”就是以这个概念命名的。

5.事务和锁(内容的最后一部分)是数据库的两个重要组成部分。事务可以保证一组数据库操作的ACID特性,非常适合需要数据一致性的场景。数据库锁不仅是事务的基础,而且可以灵活地适用于不同的数据库应用场景。我们还可以通过sql语句完成锁定和释放,特别是对于并发场景。

学完数据库基础,就该学MySQL了。毕竟我们大部分的数据库应用都是MySQL。

其实MySQL里面很多知识点都和上面说的数据库基础差不多。当我们回到MySQL的实现层时,我们不得不看看MySQL的存储引擎。

MySQL的存储引擎分为innodb和myisam。相信你看过很多关于这两个引擎区别的面试问题。例如,innodb支持事务和行级锁,但myisam不支持。

由于现在innodb基本是主流,所以我们讨论MySQL的时候,基本都是在讨论innodb。至于MySQL的实现原理,我觉得有些东西是我们需要学习的。

首先,我们知道Mysql中有哪些数据类型,以及它们的常用方式。然后,我们尝试使用MySQL运行一些SQL语句,构建数据库和表,添加索引和主键。总之,这些做法可以帮助你更好地学习以上内容。

为了更好的理解MySQL的原理,我们必须了解MySQL的整体架构。一般来说,MySQL从上到下可以分为这几层。

客户端就是我们经常使用的可视化工具,比如Navicat for MySQL。

服务器是我们安装的MySQL程序。其实打开它就是一个MySQL服务器的过程。

Sql执行层sql执行层主要负责解析和执行sql,包含很多复杂的组件,比如解释器、分析器、优化器等。执行层会生成sql执行计划,这往往是我们分析sql性能的重要参考。

存储引擎层存储引擎层是innodb。比如如何组织和存储数据,如何建立和管理索引等。如何加锁,如何实现事务,都是这一层要考虑的事情。

文件存储引擎的下一层是文件系统。数据库的数据如何与文件系统交互是这一层需要做的事情。

不得不说,索引绝对是数据库中访问量最大的内容,测试站点最多。

比如给你一段sql,它能命中索引吗,能命中哪些索引?如果要命中某个指标,应该怎么修改?这种问题在面试中经常见到吗?有很多类型的问题会发生变化。其实面试官只是想考察你对指数的理解。

此外,索引的数据结构是最受欢迎的测试网站之一。索引实际上是基于B树的。我不知道B树是什么。请回过头来看看数据结构。

简单来说就是多路径搜索树,专用于较短的时间来完成数据检索,因为其高度低于二叉树。与普通的B树相比,它的非叶节点只作为索引,而叶节点是顺序串联的,非常适合做搜索树。

明白了这一点,面对这样的面试问题,你就能更加坦然。面试官只是想知道你对B-tree了解多少。

除了索引,事务和锁可能是数据库中最复杂的内容。

以事务的ACID特性为例,你需要知道每个大写字母背后的实现原理,比如原子性是如何实现的,一致性是如何保证的,背后的原理是什么。

我们平时的交易可能就是春天的交易模板。同一个数据库中的所有数据库操作不是成功就是失败,这就是原子性。

两个事务互不影响,这就是隔离。当然,这里涉及到了事务隔离级别。

事务隔离级别包括未提交读、提交读、可重复读和序列化。每个事务隔离级别都适用于特定的数据库读写场景。很多时候,我们需要理解隔离级别背后的原理,以便更好地应用它。

默认情况下,MySQL使用可重复隔离级别,这基本上可以确保我们的事务按预期执行。在MySQL中,这种事务隔离级别甚至可以解决幻影读取的问题。

MySQL的事务背后,其实隐藏着一个boss,就是数据库的锁。许多事务的隔离级别是通过锁实现的。例如,可重复读取可以通过添加行锁来实现,而幻像读取需要通过添加间隙锁next-key锁来实现。

行级锁和表级锁是MySQL中的两种锁。顾名思义,表级锁直接锁定表,一次只能有一个事务访问它。在MySQL中,这个锁是加在索引上的,这个索引对应的数据往往不止一行,所以这个行级锁只是理论上的‘行级锁’

说了这么多,要了解MySQL的事务和锁,还是要多看相关文章书籍,了解它的内部实现原理,知道为什么。

熟悉的资源推荐链接来了。

推荐资源书籍数据库

0 《数据库系统概论》

数据库原理应该是教科书。这本书可以作为数据库入门。毕竟不是专门给DB的。读又大又厚的书用处不大。这本书已经完成了数据库的所有基本概念。

1必须知道sql。

这本书主要讲解如何编写sql语句。毕竟数据库最重要的一点就是熟练使用sql语句。当然,这本书也可以作为参考书。

2简单的MySQL

这本书适合学习MySQL书籍。等你有了一些使用MySQL的经验,你可以去看看。本书从数据库基础、开发、优化、管理维护、架构五个方面详细介绍了MySQL。不是特别深,但是足够我们用了。这本书我只读了一部分。

3 MySQL技术内幕:innodb存储引擎

看了上面的书,对MySQL比较熟悉了。不过对于面试中经常考的innodb引擎,我推荐这本书,里面专门讲解了innodb存储引擎的相关内容。我没有细看,但是内容足够你学好innodb了。

4高性能Mysql

这本书可以说是很厚了,比较适合DBA阅读。太详细了。不好意思。如需获取这些书籍的PDF版本,可在转发本文后关注私信【文档】免费获取。

相关文章

为您推荐

考研政治史纲重点(考研政治大纲解析)

【史纲篇】辛亥革命的意义、局限性、失败原因及教训仍是重点,注意把握中华人民共和国和中国共产党成立的意义,重复命题的可能性很大,最后要注意一下抗日民族统一战线的形成、发展以及共产党所作的努力。【选择题所含知识点】1、帝国主义对中国的侵略:军事

2023-12-03 19:52

让货币走下神坛(货币的神奇之处在于)

货币是手段而不是目的 打破坚冰走向新天地 人们应该尊重物质世界客观规律,尊重经济规律,但不能因循守旧,墨守成规,固步自封。在尊重规律的前提下,与时俱进,跟上时代的需要,发挥人们主观能动性,科技创新,只有这样了,人类世界才能打破常规,促进人类

2023-12-03 19:52

礼花(礼和听的草书)

“礼”是表示敬意的通称,在古代,“礼”是制度、规则和一种社会意识观念。在人际交往中,人们用“礼”来约束自己的行为以示对他人的尊敬。 孟子曰:“恭敬之心,礼也”(《孟子·告子上》),是说恭敬之心就是“礼”,以礼待人,恭敬之心足矣。古人对“礼

2023-12-03 19:52

决定社会经济制度变更的经济规律是(股市牛熊分界线)

一、深度逻辑——经济规律是如何决定股市牛熊的(2022-12-9)1、股市里面要想做强者,必须把一些基本的规律搞懂,经济规律是如何决定股市牛熊的?必须要深刻的理解,股市是跟经济相关联的,经济增速越高,股市表现就越强。反之,经济增速下降,下降

2023-12-03 19:52

迎新年文案简短(迎新年文案开场白)

视频加载中...姚景源(国务院参事室特约研究员、国家统计局原总经济师):我特别赞成这点,我们现在的主要矛盾,已经变成了要满足人民群众对美好生活日益增长的需要,我们千万不要把人民群众对美好生活的需要,看作是一个文学描述,它是一个实实在在的存在

2023-12-03 19:52

好家风好家训经典诵读(经典美文诵读)

——新时代大学生价值引领新路径家国,国家——家是最小国,国是千万家。家风是一种精神的传承,是历经千年淬炼的精华,是中华民族传统美德源远流长的重要载体。无数的优秀家风汇聚成整个社会的良好的风气。我国历史长河中那些关于家风陶冶的金句典籍塑造着社

2023-12-03 19:23

加载中...