【手写数据库内核系列】02数据库操作语言SQL介绍

一、概述


上一节通过一个简单的C语言程序来模拟数据库的行为,从处理能力来看,也有创建表,插入、删除、更新、查询等操作,但是与大家认为的数据库差距很大。

关系型数据库的一个很明显的特点,就是有标准的操纵数据库的语言,它就是常用的SQL。我们来开发的数据库内核支持这一标准SQL,这样才能符合数据库的一个审美。

说到语言,就不得不做语言的解析了,类似于自然语经过人脑分析后,转换为一系列人的动作行为;而数据库中的解析模块要把用户的SQL表达的意图经过词法和语法分析,转换成程序可处理的数据结构。

这听起来还是很有意思的,那么我们现在就开始这第一步吧。

在开始之前再补充一些内容,整个开发过程主要使用C语言开发,在解析中会用到正则表达式和上下文无关语法,它们占比非常小。

开发所用的系统是CentOS 8.2,当然其它linux版本可能命令会有差异,Centos系列还是比较一致,可以看到后面都会使用Makefile、gcc等编译工具;

源码编辑器可以使用流行的VScode,支持跨平台,当然也可以使用Eclipse,或者自己熟悉的其它工具,不同编辑器之间的默认字符集可能不同,最好设置为UTF-8,Linux下的换行模式,统一的格式避免一些奇妙的问题。

二、SQL简述


SQL,全称为Structured Query Language,即结构化查询语言,是一种专门用来与数据库进行通信的语言。

2.1 发展历史

  • SQL语言的发展始于1974年,由IBM公司的Boyce和Chamberlin提出,并在IBM研制的关系数据库系统System R上实现。SQL的设计初衷是为了提高数据库查询效率,但随着时间的发展,SQL的功能已经扩展到数据的插入、更新和删除等操作。
  • 1986年,SQL成为美国国家标准(ANSI)和国际标准化组织(ISO)的标准,随后在1987年成为国际标准。

2.2 SQL的功能

按功能的不同,将SQL划分为DQL,DDL,DML,DCL等类型,经常使用的查询,插入更新等就属于DQL和DML范围。

[图片上传失败...(image-37a79c-1734821884814)]

<figcaption style="margin-top: 5px; text-align: center; display: block; font-size: 13px; color: #2b2b2b;">SQLT分类</figcaption>

  • 「数据查询(DQL)」:Data Query Language, 使用SELECT语句从数据库中检索数据。查询操作的灵活性体现在能够根据需要选择特定的列或行,使用WHERE子句进行条件筛选,以及通过ORDER BY进行排序等。
  • 「数据定义(DDL)」:Data Definition Language, 使用CREATE、ALTER和DROP等语句来定义数据库结构,如创建新表或修改、删除表。CREATE语句用于生成新的数据库对象、视图或索引;ALTER用于修改现有结构,如添加或删除列;DROP语句则用于删除数据库对象。
  • 「数据操纵(DML)」:Data Manipulation Language, 使用INSERT、UPDATE和DELETE等语句来插入、更新或删除数据库中的数据。
  • 「数据控制(DCL)」:Data Control Language, 使用GRANT和REVOKE等语句来控制数据库的访问权限。
  • 「事务控制(TCL)」:Transaction Control Language, 提供BEGIN TRANSACTION、COMMIT和ROLLBACK等语句用于管理事务,确保数据库操作的原子性、一致性、隔离性和持久性(ACID属性)。
  • 「存储过程和触发器」:允许创建存储过程和触发器,这些数据库对象可以在特定事件或条件下自动执行一系列预定义的SQL语句。
  • 「嵌入式SQL和SQL API」:SQL的嵌入式实现允许它被直接嵌入到高级编程语言中,如Java、C#等,通过特定的API调用来执行数据库操作。

2.3 SQL标准的发展

SQL标准的发展是一个不断演进的过程,旨在提高数据库的互操作性、可扩展性和性能。

  1. 「早期发展」

    • 1970年代初,IBM公司的埃德加·科德提出了关系数据库的概念,为SQL的诞生奠定了基础。
    • 1974年,IBM的D.D.Chamberlin和R.F.Boyce在研制关系数据库管理系统System R时,研制出一套规范语言SEQUEL(Structured English QUEry Language),并在1976年11月的IBM Journal of R&D上公布新版本的SQL(叫SEQUEL/2)。1980年改名为SQL。
  2. 「标准化过程」

    • 1986年,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3.135-1986),后为国际标准化组织(ISO)采纳为国际标准。
    • 1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89,该标准替代ANSI X3.135-1986版本。
  3. 「持续更新」

    • 自1989年以来,SQL标准经历了多次更新和完善,如SQL-92、SQL-99等版本。
    • 这些更新旨在添加新功能、提高性能、增强与其他技术的集成等。
  4. 「最新标准」

    • 国际标准化组织ISO于2023年6月1日正式发布了最新SQL标准,即SQL:2023。

    • SQL:2023标准包含了多个部分,涵盖了SQL语言的基本框架、基本原则、调用级接口、持久存储模块、外部数据管理、对象语言绑定、信息与定义概要等多个方面。

    • 新增了第16部分SQL/PGQ,支持图形查询语言GQL,增强了SQL对图形数据处理的能力。

    • 强化了SQL语言和JSON功能,以更好地支持现代应用的需求。

SQL标准的发展经历了多个阶段,并持续得到更新和完善。最新SQL标准(SQL:2023)的发布为数据库技术的发展注入了新的活力,并推动了数据库系统的不断创新和进步。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,313评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,369评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,916评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,333评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,425评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,481评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,491评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,268评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,719评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,004评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,179评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,832评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,510评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,153评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,402评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,045评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,071评论 2 352

推荐阅读更多精彩内容