ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SQL的前世今生的庖丁解牛

SQL的前世今生的庖丁解牛 SQL的前世今生核心主线先有关系模型理论再诞生SQL原型走向商业化再标准化持续迭代至今。SQL不是数据库产品是一套声明式查询语言它打败老旧层次/网状数据库成为整个行业事实标准但各个数据库厂商又发展出各自方言。第一部分前世SQL诞生之前60‑70年代初在SQL出现之前主流数据库是层次数据库、网状数据库。特点数据是树形、网状的链表结构程序员写查询必须知道数据物理存储路径要手动写遍历逻辑改存储结构上层业务代码就要大规模修改数据独立性很差开发门槛极高。1970年IBM研究员E.F.Codd科德关系数据库之父发表划时代论文《A Relational Model of Data for Large Shared Data Banks》提出关系模型把数据全部存放于二维表格行、列用数学集合论做运算。用户只描述“我要什么数据”不用关心数据存在磁盘哪个位置数据库内部自己去规划查找路径实现数据独立性。1981年科德拿到图灵奖。当时很多工程师质疑关系模型只是漂亮数学性能会很差无法落地生产。IBM内部启动System R科研项目目标把关系模型真正做成可运行的原型系统。第二部分诞生从SEQUEL到SQL1974‑19791974年IBM两位研究员Donald D. Chamberlin、Raymond F. Boyce为System R原型设计查询语言命名SEQUELStructured English Query Language模仿英语句式降低上手门槛。后期因为 SEQUEL 这个名字被英国一家公司商标占用被迫改名为SQL Structured Query Language。行业两种读法读字母 S‑Q‑L也很多人延续历史习惯读 “sequel”续集。重点SQL是声明式语言。selectnamefromuserwhereid1;你告诉数据库我要id1的name不需要写循环、遍历指针数据库优化器自己决定怎么查、走不走索引。1979年Relational Software后来Oracle公司发布Oracle V2世界第一款商用SQL数据库产品比IBM自家商业产品更早推向市场。IBM后续推出DB2正式把SQL带入商业主机领域。第三部分标准化时代80‑90年代各个厂商各自实现SQL语法五花八门同样的查询在不同数据库写法不一样移植成本巨大行业迫切需要统一标准。SQL‑861986 ANSI第一个正式标准内容很少基础CRUD、建表一共不到100页1987年ISO接纳为国际标准ISO‑9075。SQL‑89小幅更新增加主键、外键、NULL完整性约束。SQL‑92SQL21992——里程碑版本至今绝大多数数据库的基准。标准化LEFT JOIN / RIGHT JOIN / FULL JOIN外连接语法结束各家私有连接写法增强子查询、集合运算、日期时间类型完善事务、视图、约束。MySQL、Oracle、PostgreSQL都大量兼容SQL‑92标准。现实痛点标准只规定“应该支持什么”不强制全部实现。厂商可以选实现子集同时增加自己独有的扩展语法也就是数据库方言。示例MySQL的LIMIT、Oracle的ROWNUM不属于SQL‑92标准。第四部分现代SQL持续进化1999至今SQL:1999SQL3重大升级递归CTE递归查询、触发器、存储过程、面向对象关系扩展。很多数据库很晚才完整落地这套特性。SQL:2003引入窗口函数window function数据分析神器标准化序列、XML支持。SQL:2016原生JSON数据类型支持适配互联网半结构化数据。SQL:2023 当前最新标准增加图查询SQL/PGQSQL可以直接做图数据库查询打通关系库与图场景。一个现实几乎没有任何一款数据库完整实现全部ISO标准。MySQL、Oracle、PostgreSQL都是实现标准子集叠加自家方言。第五部分SQL的辉煌与现实困境✅为什么SQL统治数据库半个世纪声明式贴近自然语言学习成本低建立在严谨集合数学之上主键、外键、事务、约束保证数据一致性跨业务通用业务开发、数据分析、运维都使用同一套语言标准持续迭代不断拥抱新场景JSON、窗口函数、图查询。❌现实局限标准更新慢厂商实现进度参差不齐大量方言MySQL迁移Oracle会遇到大量语法不兼容面向结构化表格对海量非结构化、超大规模分布式场景原生能力有限于是诞生NoSQL、NewSQL。注意NoSQL不是完全抛弃SQL。MongoDB、Elasticsearch、TiDB都提供SQL接口SQL依然是主流交互语言。MySQL实现了绝大部分SQL‑92标准同时大量扩展自己方言AUTO_INCREMENT自增不属于SQL标准LIMIT分页是MySQL特有InnoDB实现事务、MVCC、行锁、主键/唯一索引、外键遵循SQL标准约束MySQL对SQL标准有部分偏离比如UNIQUE允许多个NULL就是遵循SQL三值逻辑标准。SQL定义“应该怎么做”MySQL、Oracle是软件去落地这套标准再加自己的扩展。SQL的理论源头来自1970年E.F.Codd提出的关系模型。IBM在System R项目中开发出原型语言SEQUEL后因商标改名为SQL。1979年Oracle推出第一款商用SQL数据库。1986年ANSI发布第一个SQL标准SQL‑86SQL‑92是影响最深远的基准版本标准化JOIN、子查询、事务等核心能力。后续SQL:1999、2003、2016、2023持续迭代新增递归CTE、窗口函数、JSON、图查询等能力。SQL是声明式语言用户只描述需要什么数据不用关心底层存储路径。各数据库只实现标准子集同时发展出私有方言造成迁移成本。MySQL等RDBMS遵循SQL标准同时扩展自身特有语法。记忆口诀科德论文奠基理SystemR出SEQUEL商标改名唤SQLOracle开启商用期八六首定ANSI九二标准立根基标准不断做迭代各家方言要谨记。
返回列表