购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 SQL语言概述

SQL全称为Structured Query Language(结构化查询语言),它利用一些简单的句子构成基本语法来存取数据库内容。由于SQL简单易学,目前它已经成为关系数据库系统中使用最广泛的语言。

2.1.1 SQL语言的发展

SQL语言由Boyce和Chamberlin于 1974 年首先提出。1975—1979 年间,在IBM San Jose Research Lab的关系数据库管理系统原型System R中,最早使用了该语言。

为了避免各产品之间的SQL语法不兼容,因此由ANSI(American National Standards Institute,美国国家标准局)制定了SQL-92 标准(简称SQL2),定义出SQL的关键词与语法标准,以提高各家产品在SQL语法上的兼容性。

1999 年,SQL标准的最新版本SQL-99(SQL3)发布,在SQL-92 版本的基础上新增了一些特性,标志着SQL在满足用户需求方面又前进了一大步。

目前,SQL标准的最新版本为SQL-2011。大体而言,业界的产品都是在包含ANSI SQL的基础上,扩充自家产品的功能,以求能展现出本身的特色。

当前,大部分的数据库都支持SQL,它已成为操作数据库的标准语言。然而,各DBMS产品对SQL的支持程度也不尽相同。

2.1.2 SQL语言的功能

使用SQL语言可以创建、维护、保护数据库对象,并且可以操作对象中的数据。具体来讲,SQL可实现的功能如下。

数据定义语言(Data Definition Language,DDL) :主要用于创建、修改或删除数据库对象,如表、视图、索引等。具体功能如下:

●定义、删除、修改关系模式(基本表)。

●定义、删除视图(View)。

●定义、删除索引(Index)。

数据操纵语言(Data Manipulation Language,DML) :主要用于查询、添加、修改或删除存储在数据库对象中的数据。具体功能如下:

●数据库、表中数据的查询。

●数据的增、删、改等操作。

数据控制语言(Data Control Language,DCL) :可以控制访问数据库中特定对象的用户,还可以控制用户对数据库的访问类型。主要功能为用户访问权限的授予、收回。

2.1.3 SQL语言的执行方式

SQL语言最主要的执行方式有:交互式SQL、嵌入式SQL以及CLI(调用层接口)等。

1.交互式SQL

交互式SQL是直接执行SQL语句,一般DBMS都提供联机交互工具,可以从前端应用程序,如SQL Server中的Query Analyzer(查询分析器)、Oracle中的SQL*Plus Worksheet,直接与SQL服务器上的数据库进行通信。只要把查询输入到应用程序窗口,再执行SQL语句,就可以获取查询结果。通过这种方式可以迅速检查数据、验证连接和观察数据库对象。SQL语句由DBMS来进行解释。

2.嵌入式SQL

在这种方式中,将SQL语句嵌入到高级语言(宿主语言)中,使应用程序充分利用SQL访问数据库的能力、宿主语言的过程处理能力。例如,可以将SQL语句嵌入C应用程序代码中。在编译代码之前,预处理器将分析SQL语句,并把这些语句从C代码中分离出来。SQL代码被转换成能为RDMS理解的一种格式,其余的C代码则按照正常的方式进行编译。这种方式一般需要预编译,将嵌入的SQL语句转换为宿主语言编译器能处理的语句。

3.CLI(调用层接口)

CLI可以通过接口调用SQL语句。它定义了一套可以从宿主语言调用的公共函数,即提供一套API,通过函数调用实现对DBMS的操作。常用的CLI包括DBLib、OCI、ODBC、JDBC等,将逐步替代嵌入式SQL。

本书中,SQL代码实例的运行采用的是交互式,即在Oracle中的SQL*Plus工具下或等同该工具的其他工具下直接实现。

2.1.4 SQL语句结构

SQL语言由一些简单句子构成基本的语法,所有的SQL语句均有自己的格式,典型的SQL语句(查询语句)结构如图 2.1 所示。

图 2.1 典型的SQL语句结构

SQL语法的基础是子句(clause),子句中会包括一些关键词(keyword)。每条SQL语句均由一个关键词开始,该关键词描述这条语句要产生的动作。SQL中常用的关键词及其功能如表 2.1 所示。

表 2.1 SQL中常用的关键词及其功能

(续表)

2.1.5 SQL环境

SQL环境是指数据在其中可以存在、对数据的SQL操作可以执行的框架。实际上,可以把SQL环境看作运行在某个设备上的数据库管理系统。基本的数据库元素,比如基本表、视图等都是在SQL环境中定义的。SQL环境包含模式、目录等元素,其结构关系如图 2.2 所示。

图 2.2 SQL环境结构关系

1.模式对象

模式对象位于目录的底层,SQL数据就存储在这一层。通过使用SQL,就可以定义SQL对象,并可以修改、存储和操作对象中的数据。实际上,本书所介绍的大部分操作都直接影响到模式对象。

SQL-99 标准定义了表、视图、域、约束、触发器等 11 种类型的模式对象,这些对象构成了SQL环境的基础。

2.模式(Schema)

这里所说的模式是指数据库模式,而不是关系模式,是表、视图、域等数据库模式对象的聚集,它是整个SQL环境体系结构的基本单位。在SQL中,它的创建采用CREATE SCHEMA语句,其语法如下:

CREATE SCHEMA <模式名> <模式元素>

比如,创建一个图书管理模式,包括图书信息、读者信息两个关系(表)和不能再借图书的读者视图,其说明简要描述如下:

如果要把图书管理模式作为当前模式,则设置如下:

SET SCHEMA LibrarySchema

于是,随后定义的表、视图等模式元素均属于管理模式。

3.目录(Catalog)

SQL目录是对某一单个数据库的描述。它是模式的聚集,每个目录都有一个或多个模式,都包含INFORMATION-SCHEMA(信息模式)特殊模式,该模式包含此目录中所有模式的信息。

在目录中建立模式类似于在模式中建立表或视图之类的模式元素。可以用如下语句建立图书管理目录:

CREATE CATALOG LibraryCatalog

后面跟着属于图书管理目录的模式及模式说明。同样,可以用SET CATALOG(设置目录)语句设置当前目录。例如,要把图书管理目录作为当前目录,可进行如下设置:

SET CATALOG LibraryCatalog;

于是,随后定义的模式将属于管理目录。

本节主要对SQL环境涉及的概念做一下简单介绍,在SQL实际应用中,很少涉及模式、目录的创建和使用。

2.1.6 SQL DBMS的客户/服务器模型

在数据库的使用中,经常用到的是客户/服务器模型。关系DBMS模型和SQL都非常适合于使用该模型。其工作过程可简单描述如下。

◆运行在客户端的应用程序接收用户的输入并形成SQL语句,然后将其发送到服务器上的DBMS。

◆DBMS翻译并执行SQL命令,并将结果发送回客户端(工作站)。

◆运行在客户端的应用程序格式化向用户显示结果。

◆SQL的客户程序和服务程序与连接、会话、模块这三个概念紧密地联系在一起。

1.连接

在客户端上运行包含SQL的程序,则需要连接服务程序。可用如下的SQL连接语句,在客户程序和服务程序之间建立连接:

CONNECT TO <服务器名>

AS <连接名>

用户可以建立多个连接,但在任何时间只能有一个是活动的。可以采用如下语句切换连接:

Set Connection <连接名>

访问完毕需要断开连接,语法如下:

Disconnect <连接名>

2.会话

当连接激活时,所执行的SQL操作将在客户程序和服务程序之间形成请求-响应式的交往,这种操作序列称为会话(Session)。

会话与建立它的连接处于同一状态,当连接处于待用状态时,会话也处于待用状态;当连接被激活时,会话也被激活。每个会话都有当前目录和该目录中的当前模式。

3.模块

SQL实现至少为客户端用户提供如下 3 种类型的应用程序(称为模块,Module)之一。

◆通用SQL接口,如交互式SQL。

◆嵌入式SQL,如嵌入于宿主语言中。

◆实际模块,如存储过程等。 swfKJBtYLl6WbB77H13iYqrlL9yHGMbAukqbOXA3ZU3mfgcgs3K+/VL95WuEhgd9

点击中间区域
呼出菜单
上一章
目录
下一章
×