SQL简介
结构化查询语言(SQL,Structured Query Language)是一种关系型数据库的操作语言,用于数据存取、数据查询、数据处理和关系型数据库系统管理。SQL提供一个操作关系型数据库的接口,且内置了安全访问机制检查。所有应用都可以使用SQL语句访问YashanDB数据库中的数据。
SQL语言一种非过程化的声明性语言,只需描述语句的目的(做什么样的数据操作),无需提供实现的过程。因此,YashanDB在处理SQL时,需要先使用SQL编译器生成基于SQL目标的过程结构-执行计划,再操作数据库,最终执行算子得到对应结果集。
SQL语言的存在可以帮助用户只需聚焦于数据处理本身无需过于关注实现过程,例如统计一个公司所有部门下转正员工的平均工资,SQL语句示例如下:
SELECT DEPARTMENT_ID,AVG(SALARY) FROM EMPLOYEE E GROUP BY DEPARTMENT_ID HAVING E.ATTR = "已转正" ORDER BY DEPARTMENT_ID
Copied!
该查询语句中,GROUP BY完成部门分组操作,HAVING完成转正员工过滤,AVG完成平均工资求值,ORDER BY实现按部门排序。执行该语句时,数据库将自动组织EMPLOYEE基表的数据,按行进行分组、过滤、排序、聚集、投影操作,最终返回语句预期的结果集。
所有SQL语句都是由优化器依据YanshanDB特定的代价模型生成最优的执行计划,该计划受统计信息、代价计算公式、HINT、OUTLINE等功能影响。
所有计划的执行都是由YashanDB的执行引擎完成,包括火山执行引擎和向量化执行引擎,执行对象为执行计划定义的各个执行算子。
SQL标准
SQL语言是由美国国家标准化协会和国际标准化组织共同定义的一种标准化语言,行业中最主要的标准为SQL92
和SQL99
。2023年,发布了ISO/IEC 9075:2023
SQL标准。从表的定义、数据类型、各类查询功能等不断演化,到最新纳入JSON半结构化数据标准。
但业界主流的各大数据库,在SQL实现上均有差异,所以业界又常用“方言”来代指在标准外、因数据库具体实现带来差别的SQL语言。
SQL语句
在YashanDB数据库中,SQL语句是进行数据处理的主要途径。SQL语句是一种承载数据操作目的的声明性语句,由关键字、标识符、绑定参数、字面量等组成。
-
关键字
指在SQL语句中用于定界语法位置或标识数据类型等特殊用途,不能被随意使用的词语。关键字组成SQL语句的语法目的。例如,INTEGER是关键字,表示整数的数据类型,不能被用作列名。
-
标识符
指在SQL语句中用于标识某种资源,用于命名的词语。标识符表示SQL语句的语法处理对象。
例如,如下建表语句中,EMPLOYEE是