从SQL入门到逻辑层面理解DBMS
1. 一种思维
计算机语言的核心,是关键字,正确并灵活使用一门计算机语言有两个前提:
- 清楚语言的最佳用途,把握语言的思维和特点
- 充分理解、正确使用关键字(掌握语法)
根据笔者学习若干不同计算机语言的经验,我认为只要具有以下思维,便可以很好的达成上述两个前提,从而较快较好地掌握一门计算机语言,并对该语言实现的机制有抽象层面的认识——即通过比较关键字的理论作用与实际行为的差异,同时把握语言特性与不同IDE的实现逻辑。
1.1 理论支撑
这种思维的理论支撑是:
- 计算机语言规范与其实现存在差异。
- 计算机语言的功能与编码思维由关键字的功能实现。
1.2 分析
例如,笔者转战数据科学接触SQL、Python等计算机语言1,如果使用以上思维进行语言的学习,便能比较好的掌握它们。
首先,我们需要对SQL、Python有一个大概认识,例如:
- 最初设计用途
- 当前用途
并提出问题:
- 语言核心
- 语言特点
带着这样的问题,选择比较经典的入门书籍或技术手册进行阅读(大致了解关键字的理论作用),并在有需要时,进行足够的实操练习(大致了解关键字在你选用的编码环境中的实现),最后,在对关键字有一定熟悉度时,进行复杂度贴近现实的语言练习(在复杂情况下,语言解释器对关键字的实现逻辑会清晰表现出来)。
1.3 重要说明
- 语言更偏向于实践,而非理论,一种学习思维必须通过实现才能起作用
- 在语言的实际学习和使用情景中,才能真正掌握它
2 实例演示:SQL学习
2.1 演示的主题
以上关键字涉及到的一切SQL理论设定都在演示内,接下来的演示包括:
- 关键字的理论设定
- 选取DMBS的实现
- 通过DBMS的行为了解其逻辑层面实现SQL的方式
演示使用MYSQL,版本号mysql-community-8.0.28.0,操作环境MYSQL Workbench 8.0 CE,代码规范遵循:(1)驼峰命名法(2)层次缩进表示
SELECT
(1)理论
作用:从表中检索信息
语法:关键字+待检索项+(检索源)
说明:该关键字的基本使用形式,只需要额外提供带检索项,如果待检索项无需从特定检索源中检索,则无需检索源;
如下:
SELECT 3*2;
得:
或:
SELECT CURDATE();
得:
如果待检索项存在于特定检索源,则必须添加检索源。
那么,如何添加检索源?我们已经提到,语言的功能由关键字提供,SQL也是如此,检索功能无法由SELECT一个关键字完整提供,那么我们需要引入提供‘添加检索源’功能的关键字,用于补完SELECT关键字功能的关键字,我们将它称为SELECT语句的子句。
(2)MYSQL对关键字在逻辑上的实现机制
我们知道,SQL是面向数据库的,其主要用途是检索存储在表中的数据,但是没有引入其他关键字时,SELECT语句依旧能够工作,这样我们能够知道,在MYSQL中SELECT也可用于执行。
广义上来说,凡是与依赖计算机概念而存在的事物进行沟通的语言,都可以称之为计算机语言。 ↩︎