来自:amtath > 馆藏分类
配色: 字号:
03 SQL语言基础
2012-06-26 | 阅:  转:  |  分享 
  
























































SQL概述

SQL语言的组成

探索SQL环境

SQL是StructuredQueryLanguage的缩写,其中文含义为“结构化查询语言”。

SQL虽然被称为查询语言,但其功能不仅仅是查询,也有很多其他功能。目前流行的所

有数据库系统几乎都支持SQL语言,换句话说,学会SQL语言后,便可以操作当前流

行的所有数据库系统。这也是为什么要学习SQL语言的原因。

SQL语言基础

第章

SQL技术与网络数据库开发详解



·24·

3.1SQL概述

人与人交互必须使用某种人类的自然语言,如英语、汉语和蒙语等。人与数据库交互就不能使用

人类的自然语言了,而需要使用SQL语言。人们使用SQL语言可以告诉具体的数据库系统要干什么

工作,让其返回什么数据等。

3.1.1SQL的历史

SQL语言是20世纪70年代由Boyce和Chamberlin提出的。1979年,IBM公司第一个开发出SQL

语言,并将其作为IBM关系数据库原型SystemR的关系语言,实现了关系数据库中的信息检索。20

世纪80年代初,美国国家标准局(ANSI)开始着手制定SQL标准,并在1986年10月公布了最早的

SQL标准。标准的出台使SQL作为标准的关系数据库语言的地位得到加强。扩展的标准版本是1989

年发表的SQL-89,之后还有1992年制定的版本SQL-92和1999年ISO发布的版本SQL-99。

SQL标准几经修改和完善,其功能更加强大,但目前很多数据库系统只支持SQL-99的部分特征,

而大部分数据库系统都能支持1992年制定的SQL-92。

3.1.2SQL的特点

目前,SQL语言已经成为几乎所有主流数据库管理系统的标准语言,所以其魅力是可想而知的。

SQL语言不仅功能强大,而且容易掌握。下面是其最主要的5个特点。

1.具有综合统一性

SQL语言格式统一,能够独立完成数据库系统使用过程中的数据录入、关系模式的定义、数据库

的建立,以及数据查询、插入、删除、更新、数据库重构与数据库安全性控制等一系列操作的要求,

为用户提供了开发数据库应用系统的良好环境。用户在数据库投入运行后,还可根据需要随时修改数

据模式,而不影响数据库的运行,使系统具有良好的可扩充性。

2.非过程化语言

SQL语言与C、COBOL、Basic等语言不同,它不是一种完全的语言。SQL语言并不能编写通用

的程序,因为它没有普通过程化语言中的IF和FOR等语句,只是一种操作数据库的语言,属于非过

程化语言。

3.语言简洁,用户容易接受

SQL语言十分简洁,完成主要功能只需使用9个动词,如表3.1所示。虽然SQL只使用9个动词,

但其功能强大、设计精巧、语言语句简洁,使用户非常容易接受。

4.以一种语法结构提供两种使用方式

SQL语言既是自含式语言,又是嵌入式语言,且在两种不同的使用方式下,SQL语言的语法结构

基本上是一致的。作为自含式语言,能够独立地用于联机交互的使用方式,用户可以在终端键盘上直

第3章SQL语言基础



·25·

接输入SQL命令对数据库进行操作。作为嵌入式语言,SQL语句能够嵌入到高级语言中,为程序员的

程序设计提供了方便。

表3.1SQL的9个核心动词

SQL功能动词

数据定义DDCREATE、DROP、ALTER

数据查询DQSELECT

数据更新DMINSERT、UPDATE、DELETE

数据控制DCGRANT、REVOKE



5.面向集合的操作方式

非关系数据模型采用的是面向记录的操作方式,任何一个操作其对象都是一条记录。SQL语言采

用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是

元组的集合。

3.1.3SQL的功能

虽然查询是SQL语言最主要的功能,但并不是其全部,SQL还包含数据定义、数据操纵和数据控

制等功能。下面列出了SQL的4个主要功能及其解释。

1.数据定义

用DDL语言定义关系数据库的逻辑结构,即模式、内模式、外模式,可以实现对表、视图、索引

文件的定义、修改与删除等操作。

2.数据操作

用DML语言可实现数据查询与数据更新操作。数据查询包括对数据的查询、分类、排序、统计与

检索等操作,数据更新包括对数据的插入、删除与修改等操作。

3.数据控制

用DCL语言可控制数据的安全性、完整性与事物控制等内容。SQL语言通过对数据库用户的授权

与收回授权语句来实现有关数据的存取控制,以确保数据库的安全性与完整性。

4.支持嵌入式SQL语句的使用

在几乎全部编程语言中都可以直接使用SQL语句操作数据库。

3.2SQL语言的组成

SQL语言集数据定义语言DDL(DataDefinitionLanguage)、数据查询语言DQL(DataQuery

Language)、数据操纵语言DML(DataManipulationLanguage)和数据控制语言DCL(DataControl

Language)的功能于一体,可以完成数据库系统的所有操作。

SQL技术与网络数据库开发详解



·26·

1.数据定义语言——DDL

数据定义语言DDL用于创建、删除和管理数据库、数据表以及视图与索引。DDL语句通常包括

对每个对象的创建(CREATE)、修改(ALTER)以及删除(DROP)等命令,表3.2中列出了DDL

语言的主体语句及其功能。

表3.2DDL的主体语句

操作对象语句功能

CREATETABLE新建数据表

ALTERTABLE修改数据表表

DROPTABLE删除数据表

CREATEVIEW新建视图

视图

DROPVIEW删除视图

CREATEINDEX新建索引

索引

DROPINDEX删除索引

CREATESCHEMA新建模式

模式

DROPSCHEMA删除模式

CREATEDOMAIN新建数据值域

ALTERDOMAIN修改域定义域

DROPDOMAIN删除域

CREATEPROCEDURE新建存储过程

存储过程

DROPPROCEDURE删除存储过程

CREATETRIGGER新建触发器

触发器

DROPTRIGGER删除触发器



2.数据查询语言——DQL

数据查询语言DQL用于查询检索数据库中的数据。该语言使用SELECT语句达到查询数据的目的。

使用SELECT语句除了可以简单的查询数据外,还可以排序数据、连接多个数据表、统计汇总数据等。

SELECT语句由一系列必选或可选的子句组成,例如,FROM子句、WHERE子句、ORDERBY子句、

GROUPBY子句和HAVING子句等。

3.数据操纵语言——DML

数据操纵语言DML用于插入数据、修改数据和删除数据。该语言由3种不同的语句组成,分别是

INSERT、UPDATE和DELETE语句。INSERT语句用于向表插入数据,UPDATE语句用于修改表中

的数据,而DELETE语句用于删除表中的数据。

4.数据控制语言——DCL

数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、

DENY和REVOKE等语句。其中,GRANT用于授予用户访问权限,DENY用于拒绝用户访问,而

REVOKE用于解除用户访问权限。

第3章SQL语言基础



·27·

3.3探索SQL环境

由于SQL语言的强大功能及其通用性,当前流行的所有数据库系统、大部分高级编程语言都支持

SQL语言。

3.3.1了解SQL执行环境

SQL语言提供了两种不同的执行方式:一种是联机交互式执行,就是用户在某数据库系统的SQL

执行工具中把SQL作为独立语言交互式执行,例如,在SQLServer的查询分析器中、Oracle的SQLPlus

中等;另一种执行方式是将SQL语言融入到某中高级语言(例如,VB、VC、Delphi、Java等)中使

用,这样便可利用高级语言的过程结构弥补SQL语言在实现复杂应用方面的不足。

1.联机交互式执行

几乎所有数据库系统中都有专门或可以执行SQL语句的工具,例如,VisualFoxPro的命令窗口、

SQLServer的查询分析器、Oracle的SQLPlus等。在这些工具中用户可以直接编写并执行SQL命令,

此时,数据库会马上给出相应执行结果,例如,本书第2章中介绍的执行SQL语句的方法。

2.嵌入式执行

在一些编程语言中,可以将SQL语句嵌入到程序中执行,例如,在C语言中嵌入SQL语句。在

这种方式下使用的SQL语句被称为嵌入式SQL,而嵌入SQL的高级语言被称为主语言或宿主语言。

由于SQL语言是基于关系数据模型的语言,而高级语言基于整型数值、实型数值、字符、记录与数组

等数据类型,两者之间有很大的差别,因此必须做一些规定使得能在高级语言的程序中嵌入SQL语句。

SQL语言和宿主语言之间通过设定公共变量来传递信息,这些公共变量先由宿主语言定义,再用

SQL语言的DECLEAR语句声明后程序就可以引用这些变量了。嵌入式SQL有以下语法规定(假设宿

主语言为C语言):

null为了能区分SQL语言语句与宿主语言语句,所有SQL语句都加前缀EXECSQL,以“;”为结

束标记。

null在嵌入式SQL中可以引用宿主语言的程序变量,但所有变量必须在SQL语句BEGIN

DECLEARSECTION与ENDDECLEARSECTION之间进行说明,并且在SQL语句中引用宿

主语言的程序变量时宿主语言的变量前加冒号(:);使用自身变量,则不需要加冒号。

null处理多条记录时可以使用游标。游标的操作有:声明游标、打开游标、滚动游标并提取当前记

录值和关闭游标等。

3.3.2了解SQL数据库的层次结构

SQL语言支持关系数据库三级模式结构,其层次结构如图3.1所示。

所有基本表构成了数据库的模式。视图与部分基本表构成了数据库的外模式。数据库的存储文件

SQL技术与网络数据库开发详解



·28·

与其索引文件构成了关系数据库的内模式。



图3.1SQL数据库层次结构

在SQL中,关系模式(对应模式)称为“基本表”,存储模式(对应内模式)称为“存储文件”,

子模式(外模式)称为“视图”,元组(或记录)称为“行”,属性(或字段)称为“字段”。

基本表是独立存在的,在SQL中一个关系对应一个表。一个或多个基本表对应一个存储文件,每

个表有若干索引,索引也存放在存储文件中。视图是从一个或多个基本表导出的虚拟表,视图本身不

独立存储在数据库中,数据库中只存储视图的定义而不存储对应的数据,视图对应的数据被存放在基

本表中。用户可以用SQL语句对视图和基本表进行查询等操作。存储文件的逻辑结构组成了关系数据

库的内模式,所以其物理结构是任意的,对用户是透明的。

3.3.3在SQL环境中命名对象

在SQL环境中命名对象要遵循一定的规则,例如,对象名称不允许超过128个字符等。除此之外,

SQL-99标准中还制定了两类不同的命名规则,即正则标识符规则和定界标识符规则。其中,首选采用

的命名规则是正则标识符规则,其规定的约束如下。

null标识符名(对象名)不区分英文字母的大小写,例如,id和ID是相同的。

null标识符只允许使用字母、数字和下划线(_),例如,stu_id、vw_computer_boy等都是合法的

标识符。

null不允许使用SQL保留的关键字。

说明:正则标识符规则中不区分大小写的原因是,所有名称在存储时都被SQL自动修改成大写。

命名对象时,除可以采用正则标识符规则外,也可以采用定界标识符规则,不过需要注意的是,

当选择了一种命名规则后就应该从始至终都坚持这一命名规则,而不是混合使用两种命名规则。下面

是定界标识符规则的约束。

null标识符必须放在一组双引号中,例如“id”。

null引号不会被存入数据库,而其他所有字符都按原样存入数据库。

null名称区分大小写,例如“id”和“ID”是不同的。

null允许使用大部分字符,其中还包括空格。

null可以使用SQL保留的关键字。

献花(0)
+1
(本文系amtath首藏)