SQL的全称是Structured Query Language,即结构化查询语句。
其最早诞生于1974年,IBM研究员发布的一篇论文"SEQUEL:一门结构化的英语查询语言"。这几十年里,太多的语言诞生,太多的语言消失,但是SQL的发展却愈久弥坚,甚至都没有发生过太大的变化,可以说,它的半衰期是很长的。
SQL作为与数据直接打交道的语言,是与各种前端后端语言进行交互的"中台"语言。
技术人员或多或少都会使用SQL,但是不同的人编写的SQL效率是不一样的,比如说一份好的SQL执行计划就会尽量减少IO操作,因为IO是DBMS最容易出现瓶颈的地方,可以说数据库操作中大量的时间都花在了IO上。
相比其他编程语言,SQL语言是非常直观的,即使没有SQL基础,也能凭借英语基础猜出大致意思。
按照功能的不同,我们可以把SQL语言划分成4部分:
SQL是我们与DBMS交流的语言,我们在创建DBMS之前,还需要对它进行设计,对于RDBMS(对象关系型数据库管理系统)来说,是采用ER图(Entity Relationship Diagram),即实体 - 关系图的方式进行设计。
ER图评审通过后,我们再使用SQL或者其他可视化管理工具,来创建数据表。
实体 - 关系图是我们用来描述现实世界的概念模型,在这个模型里有3个要素:实体,属性和关系。
实体就是我们要管理的对象,属性是标识每个实体的属性,关系则是指实体对象之间的关系。比如客户这个实体,有姓名、性别和证件号等属性。
关系型数据库中最重要的一种数据结构就是数据表,这些数据表的组成都是结构化的。你可以把关系模型理解成一个二维表格模型。
SQL自诞生后已经发行了很多版本的标准规范,不同规范下的SQL操作是有区别的。
SQL有两个主要的标准,分别是SQL92和SQL99。数字代表了它们提出的年份。除了这两种标准以外,还存在SQL-86、SQL-89、SQL:2003、SQL:2008、SQL:2011和SQL:2016等其他的标准,但最重要且应用最广泛的还是SQL92和SQL99。
SQL92和SQL99各有各自的特点。SQL92标准更简单,但是写出的SQL可读性差,可能会比较长。而SQL99语法稍微复杂,但是可读性更强。从这两个标准发布的页数中也可窥一斑,92版本有500页,但是99标准超过了1000页。(这两个标准我们日常其实都在使用
)
SQL92和SQL99是最经典的SQL标准,也被称为是SQL-2、SQL-3标准。从这两个标准发布后,SQL的影响力越来越大,逐渐超脱了数据库领域,在信息处理等方面崭露头角。
此外,我们所使用的DBMS,即MySQL、DB2等,都支持SQL语言,但是它们只符合大部分的SQL标准,因为它们大都在常用SQL标准的基础上,根据自身产品的特点做出了拓展(方言化)。
目前oracle仍然支持92标准,但是MySQL已经不支持92标准的连接语句了。
SQL语言跟其他语言不同,它的半衰期是很长的。SQL92标准发布于1992年,同期也发布了Windows3.1,但是现在我们早已经不适用windows3.1了,而92标准却持续使用至今。