关系数据库标准语言SQL,SQL发音考证

图片 7

 

 

据我观察,中国的开发者创造了一种独特的SQL发音:/’sɜːkl/,既好听,又好读,挺好的。但是今年我开始做数据库相关的工作,作为一个专业人士,决定对SQL发音进行一些考证。

     
SQL是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询。SQL是一个通用的、功能极强的关系数据库语言。SQL(Structured
Query Language)结构化查询语言,1974年Boyce和Chamberlin提出,首先在IBM
公司的关系数据库系统System
R上实现。1986年,ANSI数据库委员会X3H2批准了SQL作为数据库语言的美国标准,ISO随后也提出了同样的决定。特点:功能丰富、使用方便、灵活、语言简洁易学,而且
应用系统范围广,统一标准。

直接说结论吧,很多人沿用了/ˈsiːkwəl/这个读音,因为这门语言以前叫做“SEQUEL”。但更官方一些的读音应该是ISO标准规定的/ˌɛsˌkjuːˈɛl/。这个说法的依据是,有好事者给Don
Chamberlin(SQL语言发明者之一[1])发邮件[2],内容如下:

       1.1 SQL发展过程

图片 1

     
 1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI
X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。

 

不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

Hello Don,

I’m sorry to waste your time with such a silly question, but I’ve
often heard SQL pronounced S-Q-L or as Sequel. I’ve also seen the
official pronunciation listed both ways. According to wikipedia, you
and Raymond Boyce created the language and it was shortened to SQL
after some legal dispute. So my question is, is there an official
pronunciation to SQL? Thank you for your time.

– Pat

  1. 1976年由Chamberlin D D等人描述的 SQL的最早版本SEQUEL2
  2. 1986年ANSI就制订了美国国家标准SQL-86
  3. 1989年ANSI制订官方标准SQL-89
  4. 1992年制订SQL标准SQL-92
  5. 1999年制订SQL标准SQL-99
  6. 2003年制订SQL最新版本SQL2003

  Hello Don,
很抱歉浪费你的时间问这样一个愚蠢的问题,但是我经常听到SQL被发音成S-Q-L或者Sequel。我看到一些官方的发音包含了以上两种。根据维基百科,你和Raymond
Boyce创立了这个被称为SQL的语言。我的问题是,究竟是否有一个官方的SQL发音?非常感谢。

      虽然有多个版本 ,但是大部分数据库遵守ANSI SQL89标准。

To my delight, he replied back:

      1.2 SQL的特点

Hi Pat,

Since the language was originally named SEQUEL, many people continued
to pronounce the name that way after it was shortened to SQL. Both
pronunciations are widely used and recognized. As to which is more
“official”, I guess the authority would be the ISO Standard, which is
spelled (and presumably pronounced) S-Q-L.

Thanks for your interest,
Don Chamberlin

       
SQL语言之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言。SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,主要特点包括:

   Hi Pat,
因为这个语言最初被命名为SEQUEL,所以即使在被简写为SQL后,很多人还继续沿用这个发音。这两个发音都被广泛的使用和认可。至于哪个更“官方”,我猜权威应该是ISO标准,规定这样拼写(大概也是这么读的)S-Q-L。

     
 a.综合统一,SQL语言集数据定义语言、数据操纵语言、数据控制语言的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,为数据库应用系统提供了良好的环境。用户在数据库系统投入运行后,还可以根据需要随时地逐步地修改模式,且并不影响数据库的运行,从而使系统具有良好的可扩展性。另外,在关系模式中实体和实体的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一,从而克服了非关系系统由于信息表示方式的多样性带来的操作复杂性。

 

     
 b.高度非过程化,SQL语言高度非过程化,只要提出“做什么”,而无须指明“怎么做”,因此无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。大大减轻了用户的负担,也有利于提高数据独立性。

看到Don的邮件后,我好像也感受到了一点Pat当时的激动心情。于是在wiki上找到了ISO
9075的下载地址,然而在翻个底朝天后,并没有找到规定发音的内容。

      c.面向集合的操作方式,
每一个SQL的操作对象是一个或多个关系,操作的结果也是一个关系。

首先就怀疑是标准的版本不对,事实果然如此,因为又在网上发现了这句话:”The
1986 ANSI SQL standard declared the official pronunciation of SQL to be
“es queue el”.” [3]。说是在1986年,还是ANSI标准的时候规定的读音。

      d.以同一种语法结构提供两种使用方式,
SQL语言既是自含式语言,又是嵌入式语言。

图片 2

      e.语言简捷、易学易用
,SQL语言功能极强,但语言十分简捷,完成核心功能只用了9个动词。

 

图片 3

这个86版的古董并不好找,首先wiki上的dialects里SQL-86的连接是灰的,然后又听到了一个不幸的传闻:”Being
unable to find a copy and having ANSI unwilling to sell a copy, it seems
that SQL-86 is lost in the age of the
internet.”[4]。网上找不到,ANSI又不肯卖,看来SQL-86是失传了。

        1.3 SQL的基本概念

最后我实在没办法放弃了找SQL-86这条路,还是放在博客上,借助网友的力量一起搜寻吧。如果没有这个标准,其实以上的考据全是站不住脚的,比如Don的邮件可能是杜撰的,网上的只言片语更是不能作为依据。

     
 SQL语言支持关系数据库三级模式结构。其中外模式对应于视图和部分基本表,模式对应于基本表,内模式对应于存储文件。

不过不要伤心,在找到SQL-86之前,我们还是可以通过官方资料来“证明”SQL的发音的。打开这个页面,它是ISO/IEC
9075-1:2016标准官方的销售页面,大概1160元,[提示]不要点”Buy”。

SQL支持关系数据库三级模式结构,如下:

继续往下看商品介绍,第一段的最后,写的是”an SQL-implementation”而不是”a
SQL-implementation”,这基本说明官方发音应该是/ˌɛsˌkjuːˈɛl/。

图片 4

 

  • 基本表:独立存储于数据库中的数据表(关系),可有若干个索引。
  • 索引:对表中的属性组进行逻辑上排序,可以加快检索速度。
  • 视图:由基表导出的虚表,数据库中只保存视图的定义。
  • 存储文件:以OS文件的形式保存数据库的表、视图、索引等数据库对象。

 后记

MySQL的读音是遵守ISO标准的,”The official way to pronounce “MySQL” is “My Ess Que Ell” (not “my sequel”), but we do not mind if you pronounce it
as “my sequel” or in some other
localized
way.”。[5]

而Oracle依然是复古发音/ˈsiːkwəl/。”SEQUEL later became SQL (still
pronounced “sequel”).”。[6]

启荣老大提供的PostgreSQL发音:

[Warning]
去Oracle面试的话,千万不要用ISO发音,因为有人因此被拒了(10年前):”If
you can’t pronounce it correctly, then I have doubts as to your ability
to use it correctly.”[7]

 

参考资料:

[1] 

[2]

[3]

[4]

[5]

[6]

[7] 

       举一个最为简单的例子,学生-选课数据库

学生-课程模式 S-T :

学生表:Student(Sno,Sname,Ssex,Sage,Sdept)

课程表:Course(Cno,Cname,Cpno,Ccredit)

学生选课表:SC(Sno,Cno,Grade)

Student表

图片 5

Course表

图片 6

SC表

图片 7

 

Leave a Comment.