4.3 SQL概述
SQL(Structured Query Language)语言,即结构化查询语言,是由Boyce和Chamberlin于1974年提出的。
SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来得到了广泛的应用。Oracle、Sybase、Informix、SQL Server、DB2等大型的数据库管理系统实现了SQL语言;Visual FoxPro、Acces等PC机数据库管理系统部分实现了SQL语言;也可以在HTML中嵌入SQL语句,通过WWW访问数据库;在VC、VB、DEPHI、CB程序中也可嵌入SQL语句。
★ 说明 ★
各种DBMS厂商的SQL语言并不完全相同,但总的倾向是向国际标准靠拢。本书仅介绍SQL的基础,在实际开发中,读者可以参考所使用的DBMS厂商对自身SQL语言的说明。
4.3.1 SQL语言的特点
SQL语言之所以能够成为关系数据库的标准语言和数据库领域的主流语言,是因为它是一个综合的、功能强大的语言,同时又是一种易学的语言。SQL语言的特点如下:
1.高度非过程化的语言
SQL语言是一种非过程化的语言,所谓非过程化就是说,用户只需说明需要什么数据,至于如何获得这些数据则不必说明,而是由系统实现。
关系数据模型的抽象级别比较高,数据模型本身也比较简单。用户只须了解逻辑数据模式,而不必关心物理存储的细节。所以为非过程化语言提供了良好的基础。
2.综合统一的语言
SQL可用于所有用户的数据库活动,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其他类型的终端用户。
SQL语言集数据定义、数据查询、数据操纵和数据控制功能于一体,语言风格统一。而在SQL语言之前,数据库语言会为以上各种功能提供一个语言。
3.面向集合的操作方式
非关系的数据模型采用面向记录的操作方式,操作对象是一条记录。
SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果可作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法。这种特性使用户更易集中精力于要得到的结果。
4.语言简洁,易学易用
SQL语言完成核心功能只用了9个动词,如表4-1所示。
表4-1 SQL语言动词
4.3.2 基本概念和数据类型
在学习SQL语言的语法和用法之前,本节先说明在SQL中用到的一些基本概念以及SQL中的数据类型。
如前所述,关系模型中的关系可以看作一个二维表,在关系数据库中表和关系是等价的,表是关系数据库的基本组成单位。在SQL中,表分为两种,一种叫基表(base table),另一种叫视图(view)。
● 基表的数据是存储在数据库中的,一些基表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。
● 视图是一种虚表,它仅有逻辑定义,可以根据定义从其他表(包括视图)导出。视图本身不独立存储在数据库中。
● 存储文件的逻辑结构组成了关系数据库的内模式。存储文件的物理文件结构是任意的,对用户是透明的。
在同样的基表上,视图可以为不同的用户提供不同的数据模式,以适应不同的需要;同时定义不同的视图,也可控制用户对数据的访问,有利于数据库的安全。
SQL语言支持关系数据库三级模式结构,如图4-3所示。其中,外模式对应于视图和部分基表,模式对应于基表,内模式对应于存储文件。使用SQL语言可以对视图或基表进行操作。
图4-3 SQL对三层模式的支持
一个表中的每个字段都要说明它的数据类型,SQL的数据类型决定了一个字段的内容在数据库中会被如何处理、存储和显示。不同的数据库管理系统支持的数据类型并不完全相同,但这些数据类型都是以ANSI SQL标准为基础的,下面介绍的数据类型是最常用的,也是大部分数据库管理系统都会支持的。在SQL中常用的数据类型如表4-2所示。
表4-2 SQL常用数据类型
4.3.3 SQL语言的分类
SQL语言按其功能可以分为四大类:
1.数据定义语言(Data Definition Language,简称DDL)
DDL能够完成定义数据库结构的功能,DDL用来定义、撤销和修改表、视图以及索引。
2.查询语言(Query Language,简称QL)
QL完成数据的查询功能,查询语言能够进行单表查询、连接查询、嵌套查询以及集合查询等各种复杂程度不同的数据查询操作。
3.数据操纵语言(Data Manipulation Language,简称DML)
DML完成在数据库中修改、添加、删除数据以及更新数据库的任务。
4.数据控制语言(Data Control Language,简称DCL)
DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。
在下面的小节中会分别介绍SQL这四类语言的使用。