SQL是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询。SQL是一个通用的、功能极强的关系数据库语言。SQL(Structured Query Language)结构化查询语言,1974年Boyce和Chamberlin提出,首先在IBM 公司的关系数据库系统System R上实现。1986年,ANSI数据库委员会X3H2批准了SQL作为数据库语言的美国标准,ISO随后也提出了同样的决定。特点:功能丰富、使用方便、灵活、语言简洁易学,而且 应用系统范围广,统一标准。
1.1 SQL发展过程
1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。
不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。
- 1976年由Chamberlin D D等人描述的 SQL的最早版本SEQUEL2
- 1986年ANSI就制订了美国国家标准SQL-86
- 1989年ANSI制订官方标准SQL-89
- 1992年制订SQL标准SQL-92
- 1999年制订SQL标准SQL-99
- 2003年制订SQL最新版本SQL2003
虽然有多个版本 ,但是大部分数据库遵守ANSI SQL89标准。
1.2 SQL的特点
SQL语言之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言。SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,主要特点包括:
a.综合统一,SQL语言集数据定义语言、数据操纵语言、数据控制语言的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,为数据库应用系统提供了良好的环境。用户在数据库系统投入运行后,还可以根据需要随时地逐步地修改模式,且并不影响数据库的运行,从而使系统具有良好的可扩展性。另外,在关系模式中实体和实体的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一,从而克服了非关系系统由于信息表示方式的多样性带来的操作复杂性。
b.高度非过程化,SQL语言高度非过程化,只要提出“做什么”,而无须指明“怎么做”,因此无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。大大减轻了用户的负担,也有利于提高数据独立性。
c.面向集合的操作方式, 每一个SQL的操作对象是一个或多个关系,操作的结果也是一个关系。
d.以同一种语法结构提供两种使用方式, SQL语言既是自含式语言,又是嵌入式语言。
e.语言简捷、易学易用 ,SQL语言功能极强,但语言十分简捷,完成核心功能只用了9个动词。
1.3 SQL的基本概念
SQL语言支持关系数据库三级模式结构。其中外模式对应于视图和部分基本表,模式对应于基本表,内模式对应于存储文件。
SQL支持关系数据库三级模式结构,如下:
- 基本表:独立存储于数据库中的数据表(关系),可有若干个索引。
- 索引:对表中的属性组进行逻辑上排序,可以加快检索速度。
- 视图:由基表导出的虚表,数据库中只保存视图的定义。
- 存储文件:以OS文件的形式保存数据库的表、视图、索引等数据库对象。
举一个最为简单的例子,学生-选课数据库
学生-课程模式 S-T :
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
Student表
Course表
SC表