当前位置:首页 > 问答 > 正文

迷茫的时候别慌,跟着这条路慢慢摸索数据库学习的门道

整理自知乎用户“萧井陌”关于编程学习路径的高赞回答、阮一峰的网络日志中对技术学习的思考、以及《软技能:代码之外的生存指南》一书中的核心理念,并结合常见的自学经验进行阐述。)

迷茫的时候别慌,跟着这条路慢慢摸索数据库学习的门道

当你决定要学习数据库,却感觉像面对一片浩瀚的海洋,不知从何下脚时,这种感觉非常正常,别急着去背那些让人头大的复杂概念,也别被网上各种高深莫测的教程吓倒,学习任何新东西,尤其是像数据库这种看似“底层”又“重要”的技术,最关键的不是一开始就追求精通,而是先找到一条能让你走下去的路,慢慢积累手感和小小的成就感。

最忌讳的事情就是捧起一本厚厚的、满是专业术语的“数据库系统概论”就开始硬啃,那本书可能很好,但它更像是给已经入门的人梳理知识体系的,或者是为应付考试准备的,对于初学者,它大概率会成为你学习热情的头号杀手,你应该做的第一件事,是让数据库“动起来”

从哪里动起来?从一个最简单的、几乎零配置的数据库软件开始,很多人会推荐MySQL或者PostgreSQL,它们固然强大,但初始设置对新手可能仍有一点点门槛,或许,你可以从一个更轻量级的开始,比如SQLite,它不需要安装一个庞大的服务器,它的数据库就是一个简单的文件,就像你电脑上的一个Excel表格文件一样,你可以先找一个简单的SQLite可视化工具(比如DB Browser for SQLite),然后自己动手创建一个.db文件。

迷茫的时候别慌,跟着这条路慢慢摸索数据库学习的门道

别急着去研究什么“范式理论”、“事务隔离级别”,你就做最朴实无华的事情:创建一张表,想象一下,你要管理一个通讯录,这张表就叫“friends”吧,它需要哪些列呢?可能有“id”(编号)、“name”(名字)、“phone”(电话)、“email”(邮箱),用工具里的图形界面点点鼠标,把这些列创建出来,你会发现,你需要为每个列指定一个“数据类型”,比如id是整数,name是文本,这时候,你自然而然就接触到了最核心的概念之一:数据类型,你不用死记硬背所有类型,只知道常见的几种(整数、文本、小数)就够了。

表创建好了,是空的,学习你的第一条SQL语句INSERT(插入),在工具的SQL输入框里,敲入:INSERT INTO friends (name, phone) VALUES ('小明', '13800138000'); 然后执行它,再打开表的数据视图,你会惊喜地发现,表里多了一行数据!你刚刚完成了向数据库“写入”数据的操作,这种即时的反馈非常宝贵。

学习SELECT(查询),输入SELECT * FROM friends;,你会看到刚才插入的那条记录,你可以试试SELECT name FROM friends WHERE name = '小明';,看看结果有什么不同,你看,你已经会“读”数据了,然后UPDATE(更新)和DELETE(删除)也如法炮制,试着把小明的电话改掉,或者把这条记录删掉。增删改查,这四项是数据库最最基础的操作,几乎所有复杂的应用都是建立在这四件事之上的,在这个阶段,你的目标不是理解它们背后的复杂原理,而是熟练地用它们来“玩转”你那张小小的friends表。

迷茫的时候别慌,跟着这条路慢慢摸索数据库学习的门道

当你对这些基本操作有点手感了,可能会遇到问题:如果我想记录每个朋友的多条爱好怎么办?在friends表里加“hobby1”、“hobby2”……的列吗?这听起来就很笨拙,这时候,你自然而然地会遇到“数据冗余”和“设计不合理”的问题,恭喜你,你碰到了学习数据库的第一个深水区,也是精髓所在,再去了解“关系型数据库”和“表关联”的概念,就变得顺理成章了,你可以创建第二张表“hobbies”,用来专门存储所有可能的爱好,然后通过一个“朋友id”来关联回friends表,这个过程,其实就是数据库设计范式的雏形,通过解决实际遇到的问题来理解理论,远比空谈理论要深刻得多。

在这个自己“瞎鼓捣”的过程中,你一定会出错,比如输错SQL语句导致报错,或者删掉了不想删的数据,这太好了!错误是最好的老师,耐心看错误信息(虽然一开始可能看不懂),去网上搜索这个错误提示,十个有九个和你遇到同样问题的人已经在论坛里问过了。学会排查和解决错误,是比学会写正确代码更重要的能力。

把单张表玩熟,再把两张有关联的表玩熟,你对数据库的感觉就已经超越了大多数停留在理论空谈的初学者,这时,你再回过头去看那些当初觉得晦涩的概念,或者去尝试安装MySQL这样的“真正”的数据库服务器,你会发现底气足了很多,你知道它们无非是提供了更强大的功能(比如同时处理多个用户的请求、更高的安全性、更完善的备份机制),但核心的“增删改查”和“表关联”思想是相通的。

学习数据库,或者说学习任何实践性强的技术,就像学骑自行车,你看再多讲解平衡原理的书,也不如亲自上车蹬几下,摔两跤来得有效,先追求“会骑”,能晃晃悠悠地上路,再追求“骑得好”,研究变速器、骑行技巧,这条路就是:从最简单的工具入手,从最直接的操作开始,在不断的动手和试错中,让知识自然地生长出来。 迷茫是常态,但只要你动手做了第一步,脚下的路就会一点点变得清晰。