SQL(结构化查询语言)是一门用于管理关系型数据库和对数据库中数据执行多种操作的标准化编程语言。SQL创建于20世纪70年代,它由数据库管理员使用,开发人员在书写数据集成脚本和数据分析的时候也用它来建立并执行分析查询。
SQL的使用包括修改数据库表和索引结构;增加,更新和删除数据记录;以及为事务处理和分析应用程序恢复数据库信息子集。查询和其他SQL操作采用的是将命令书写为语句的形式。常用的SQL语句有选择,增加,插入,更新,删除,创建,修改和截断。
SQL在1970年代末到1980年代初成为关系型数据库事实上的标准编程语言,也被称为SQL数据库。关系型系统包含一组有行和列的表。表中的每列对应与一个数据类别,如客户名称和地址,而每行则包含了交叉列的一个数据值。
American National Standards Institute(ANSI美国国家标准协会)在1986年采用了正式的SQL标准,并且紧接着于1987年被International Organization for Standardization(ISO国际标准化组织)采用。从那时起,这两家标准制定实体对此标准发布了超过六项联合更新;***的版本SQL 2011于今年批准。
专有的和开源关系型数据库管理系统都围绕着SQL而构建,它们都可供企业使用。它们包括Microsoft SQL Server,Oracle Database,IBM DB2,SAP HANA,SAP Adaptive Server,MySQL (如今由Oracle拥有) 以及PostgreSQL。但是,这些数据库产品中的很多是通过专有扩展来支持SQL的,而这些扩展是专门针对用于过程编程和其他功能的标准语言的。例如,Microsoft提供了一组名为Transart-SQL(T-SQL)的扩展,而Oracle对于该标准的扩展版本是PL/SQL。因此,供应商所提供的SQL的不同变体并不能互相完全兼容。
SQL命令分为几种不同的类型,其中有数据操纵语言(DML)和数据定义语言(DDL)语句,事务控制和安全措施。DML词汇用于恢复和操作数据,而DDL语句则是用于对数据库结构进行定义和修改。事务控制有助于管理事务处理,确保事务要么完成,要么在错误或问题发生的时候进行回滚。而安全语句是用于控制数据库访问以及创建用户角色和权限的。
SQL语法是在书写语句时候的编码格式。图1给出了一个用Microsoft的T-SQL书写的DDL语句例子,它是用来对SQL Server 2016中的一个数据库表进行修改的。
SQL Server 2016中的T-SQL代码示例
图1. SQL Server 2016中的T-SQL代码示例。这是针对ALTER TABLE WITH (ONLINE = ON | OFF)选项的代码。
SQL-on-Hadoop查询引擎是SQL的一个较新的分支,它可以让有围绕Hadoop系统而构建的大数据架构的企业对其进行利用从而不必使用更为复杂且生疏的语言。特别是用于开发批处理应用程序的MapReduce编程环境。通过Hadoop分销商和其他供应商已有十多款SQL-on-Hadoop工具可供使用了。其中很多是开源软件或是这些技术的商业版本。此外,Apache Spark处理引擎通常用于连接Hadoop,包括一个Spark SQL模型,它同样支持基于SQL的编程。
一般来说,SQL-on-Hadoop仍是一项新兴技术,而且大多数可用的工具并不支持SQL关系型实现中所提供的所有功能。但随着各个公司寻求获得拥有大数据应用程序编程SQL技能的开发和分析人员,它们正逐渐成为Hadoop部署的固定组件。