sql语言是什么语言

说起SQL语言啊,这玩意儿真是数据库界的“瑞士军刀”。
我混迹问答论坛这么多年,关于SQL的问题真是多到数不清。

用途嘛,简单来说,SQL就像是数据库的“说明书”,你想要存数据、查数据、改数据,甚至是管理数据库,全靠它。
我最早接触SQL是在2 005 年,那时候还是个新手,就记得那会儿用SQL去查个数据,那叫一个慢啊,得等个几分钟。

说到它非过程化的特点,这就好比你是用电脑玩游戏,不用自己写代码去控制游戏角色,直接操作界面就能玩。
2 008 年,我第一次接触到SQL的这种高级用法,当时也没想明白,怎么感觉这么方便呢。

数据库独立性这块儿,说实话,这就是SQL的“高明之处”。
不管数据库是啥样子的,SQL都能玩得转。
我2 01 0年在一家公司做项目,那时候用的是Oracle数据库,后来又换成MySQL,切换起来毫无压力,全是靠SQL。

嵌套和灵活性嘛,这就像你用SQL可以像搭积木一样,把简单的语句拼成复杂的查询。
我记得2 01 2 年有一次,我们用SQL写了个复杂的查询,嵌套了好几层,结果还特别快,那时候真是对SQL佩服得五体投地。

总之,SQL语言啊,就是专为数据库操作设计的,用的人多了,自然就越来越强大,越来越灵活。
就像我刚才说的,它就像是数据库界的“瑞士军刀”,啥都能干。

Vastbase编程利器:PL/pgSQL原理简介

PL/pgSQL是PostgreSQL的过程语言。
说白了就是SQL加编程功能。
上周刚处理一个函数,效率高得很。

编译阶段:
源码转内核能懂的格式。

变量、命名空间、语句节点是重点。

编译上下文保存这些信息。

变量:
支持各种类型,普通、数组啥的。

通过PLpgSQL_datum结构抽象。

函数参数、内置变量都是来源。

命名空间:
PLpgSQL_nsitem结构表示。

链表形式存储,查找方便。

运行时通过命名空间找变量。

语法解析:
独立词法/语法分析器。

DECLARE块声明变量。

BEGIN块执行语句。

嵌套可以,外层可见内层。

编译缓存:
Vastbase缓存编译结果。

函数定义不变就不用重编译。

运行阶段:
依赖SPI机制。

SPI_connect到内核。

SPI_execute_plan执行语句。

执行语句块:
遍历语句节点链表。

调用不同处理函数。

异常处理:
PG_TRY/PG_CATCH实现。

捕获异常并处理。

参数处理:
引用变量或函数入参。

钩子函数识别值替换。

总结:
支持赋值、分支、循环。

编译转内核格式。

运行靠SPI机制。

参数靠钩子函数。

数据我记不清了,但大概是这样。
你自己看。