第四讲 结构化查询语言SQL

 

1 SQL发展简史

    SQL是用于对存放在计算机数据库中的数据进行组织、管理和检索的工具。"SQL"是Structured Query Language的缩写。

     SQL是和关系数据库交织在一起发展起来的。

                                          表4.1 SQL发展里程碑
日期 事                  件
1970 Codd定义关系数据库模式
1974 IBM开始其System/R计划
1974 首篇文章描述SEQUEL语言
1978 System/R用户试验
1979 Oracle首次引入商用RDBMS
1981 关系技术引入Ingres
1981 IBM公布SQL/DS
1982 ANSI成立SQL标准委员会
1983 IBM公布DB2
1986 批准ANSI SQL标准
1986 Sybase引入用于事务处理的RDBMS
1987 批准ISO SQL标准
1988 Ashton-Tate和Microsoft公布用于OS/2的SQL Server
1988 IBM公布DB2 Version 2
1989 首次提供用于OS/2的SQL数据库服务器
1989 成立SQL
1991 公布SQL Access Group规程
1992 Microsoft公布ODBC规程
1992 首次提供用于Netware的SQL数据库服务器
1992 批准ANSI SQL2标准
1993 首次提供ODBC产品

2 SQL语言特点

    图4.1描述了SQL的工作机理。

图4.1 用SQL进行数据存取

    结构化查询语言这一名称实际上有些不贴切。

    首先,尽管查询是设计SQL的最初目的,检索数据也仍然是其最重要的功能之一,但SQL决不仅仅是一个查询工具。SQL用于控制DBMS提供给用户的所有功能,包括:

    第二,SQL并不是一种像COBOL,FORTRAN和C语言等那样完整的计算机语言。SQL没有用于条件测试的IF语句,没有用于程序分支的GOTO语句,也没有用于循环的DO或FOR语句。

    确切地说,SQL是一种数据库子语言(sublanguage)。也称为第四代语言(4GL),一种非过程语言。

    SQL语言简洁,为完成其核心功能只用了6个动词:SELECT、CREATE、INSERT、UPDATE、DELETE、GRANT(REVOKE)

ANSI SQL的类型

    目前的ANSI SQL标准认可四种SQL语句的方法。采用何种方法依赖于应用程序编程环境:

SQL的作用

    SQL本身不是一个数据库管理系统,也不是独立的产品。事实上,SQL是数据库管理系统的一个组成部分,是用户和DBMS通信的语言和工具。

图4.2 典型DBMS的组成

SQL有下列作用:

3 SQL语言应用

3.1 数据定义(DDL)

(1)基表定义:CREATE TABLE

CREATE TABLE 表名
(域名1 数据类型1 [列完整性约束条件][, 域名2 数据类型2 [列完整性约束条件]]…)[in 数据库空间]

例:定义书中图17.8的关系STU
CREATE TABLE STU
    (S CHAR(6) NOT NULL, SN CHAR(10) NOT NULL, SA INTEGER NOT NULL, SD CHAR(8) NOT NULL)

(2)视图定义:CREATE VIEW,Access数据库目前不支持

CREATE VIEW  视图名 [(域名表)] AS (SELECT语句)

(3)索引定义:CREATE [UNIQUE] INDEX,用于对基表建立索引以提供对基表的存取路径

    索引可以加快数据库中有关数据的存取速度。

CREATE [UNIQUE] INDEX 索引名 ON [(域名表)] AS (SELECT语句)

例:对书中图17.8的关系STU的S域创建名为SNO的索引

CREATE UNIQUE INDEX SNO ON STU(S)

(4)基表删除:DROP TABLE

DROP TABLE 基表名

例:DROP TABLE STU

(5)视图删除:DROP VIEW

DROP VIEW 视图名

(6)索引删除:DROP INDEX

DROP INDEX 索引名 ON 基表名

例:DROP INDEX SNO ON STU

(7)基表修改:ALTER TABLE

ALTER TABLE 表名 ADD(OR MODIFY) 域名 数据类型

例:在表STU上增加一个域名为性别(SE),其数据类型为CHAR(4)

     ALTER TABLE STU ADD SE CHAR(4)

例:将表STU上的S域的字符串长度改为10。

     ALTER TABLE STU MODIFY S CHAR(10)        !Access数据库不支持MODIFY

3.2 数据操作(DML)

    数据操作包括数据的查询、插入、删除、修改。命令分别为SELECT、INSERT、DELETE、UPDATE

3.3 数据控制(DCL)

    SQL的数据控制功能包括存取控制和完整性控制,为了防止非法用户对数据的使用和破坏,提供了GRANTREVOKE语句,是对操作的授权控制语句。