220 likes | 567 Views
4.1 SQL 概述 4.2 SQL 表达式 4.3 SQL 数据定义 4.4 SQL 数据查询 4.5 SQL 数据操纵 4.6 SQL 数据控制. 第 4 章 关系数据库标准语言 SQL. 引言 SQL 语言的确立、发展、标准化及其应用可称之为数据库的一场革命。 SQL 作为关系数据库的标准语言,促使各大数据库厂家纷纷利用 SQL 作为共同的数据存取语言和标准接口,迅速推出各自的 SQL 软件或与 SQL 的接口软件,由此实现了以 SQL 为共同基础的不同数据库间的互操作。
E N D
4.1 SQL概述 4.2 SQL表达式 4.3 SQL数据定义 4.4 SQL数据查询 4.5 SQL数据操纵 4.6 SQL数据控制 第4章 关系数据库标准语言SQL
引言 SQL语言的确立、发展、标准化及其应用可称之为数据库的一场革命。SQL作为关系数据库的标准语言,促使各大数据库厂家纷纷利用SQL作为共同的数据存取语言和标准接口,迅速推出各自的SQL软件或与SQL的接口软件,由此实现了以SQL为共同基础的不同数据库间的互操作。 SQL语言对数据库以外的领域也产生了很大影响。有不少软件产品将SQL语言的数据定义功能与图形功能、软件工程工具、软件开发工具、人工智能程序等结合起来,以发挥更强大的功能。 第4章 关系数据库标准语言SQL
通过本章学习,可以了解(或掌握): SQL语言基本概况; SQL数据定义功能; SQL数据查询功能; SQL数据操纵功能; SQL数据控制功能; SQL语言视图应用。 第4章 关系数据库标准语言SQL
4.1.1 SQL语言的发展 4.1.2 SQL的特点 4.1.3 SQL语言基本概念 4.1.4 SQL的支持特性 4.1.5 SQL的语句类型 4.1 SQL概述
SQL语言原名SEQUEL(读作[si:kwl]),是一个通用的、功能极强的关系数据库语言。同时也是一种介于关系代数与关系演算之间的结构化查询语言(Structured Query Language),其功能包括数据定义、数据查询、数据操纵和数据控制。 4.1 SQL概述
SQL语言是一种面向关系数据库的国际标准语言,在当前数据库领域中应用最为广泛和成功,其近三十年的发展历程主要有以下几个阶段: (1)1974年由Boyce和Chamberlin提出,当时称为SEQUEL(Structured English Query Language)。 (2)1975~1979年IBM公司对SEQUEL进行了修改,并由San Jose Research Laboratory研制了著名的关系数据库管理系统原型System R,实现了这种语言。 4.1.1 SQL语言的发展
(3)1981年IBM推出了商用关系数据库SQL/DS,并将其改名为SQL,由于它功能丰富,语言简洁,因此倍受用户及计算机工业界欢迎,被众多计算机公司和软件公司所采用。(3)1981年IBM推出了商用关系数据库SQL/DS,并将其改名为SQL,由于它功能丰富,语言简洁,因此倍受用户及计算机工业界欢迎,被众多计算机公司和软件公司所采用。 (4)目前SQL语言不仅用于小型数据库如Foxpro、Access,而且更广泛用于各种大型数据库,如Sysbase、SQL Server、Oracle、Informix、DB2、Ingres等。 4.1.1 SQL语言的发展
SQL成为国际标准,即意味着它在发展中经历了一系列标准化过程: (1) 1982年美国国家标准局(American National Standard Institute,简称ANSI)开始制订SQL标准。 (2)1986年10月ANSI的数据库委员会X3H2批准了SQL作为关系数据库语言的美国标准;同年ANSI公布SQL语言的第一个标准SQL-86,并于次年由国际标准化组织(International Standardization Organization,简称ISO)通过SQL-86标准。 (3)1989年ISO对SQL-86进行补充,推出SQL-89标准。 (4)1992年ISO又推出SQL-92标准,亦称SQL2。 4.1.1 SQL语言的发展
(5)1999年起ANSI陆续公布增加了面向对象功能的新标准SQL-99(亦称SQL3)的12个标准文本。(5)1999年起ANSI陆续公布增加了面向对象功能的新标准SQL-99(亦称SQL3)的12个标准文本。 目前大多数数据库管理系统均支持SQL-92(SQL2),有少部分支持SQL3。 4.1.1 SQL语言的发展
1.综合统一 数据库系统的主要功能是通过数据库支持的数据语言来实现的。 非关系模型的数据语言一般都分为模式数据定义语言(Schema Data Definition Language,简称模式DDL)、外模式数据定义语言(Subschema Data Definition Language,简称外模式DDL或子模式DDL)、与数据存储有关的描述语言(Data Storage Description Language,简称DSDL)及数据操纵语言(Data Manipulation Language,简称DML),分别用于定义模式、外模式、内模式和进行数据的存取与处置。 4.1.2 SQL的特点
当用户数据库投入运行后,如果需要修改模式,必须停止现行数据库的运行,转储数据,修改模式并编译后重装数据库,十分麻烦。当用户数据库投入运行后,如果需要修改模式,必须停止现行数据库的运行,转储数据,修改模式并编译后重装数据库,十分麻烦。 SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、建立数据库、插入数据、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统的开发提供了良好的环境。用户在数据库系统投入运行后,还可根据需要随时修改模式,且不影响数据库的运行,从而使系统具有良好的可扩展性。 4.1.2 SQL的特点
2.高度非过程化 SQL是一种非过程语言,用其进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需了解存取路径,只要指明所需的数据即可,具体的SQL语句操作过程由系统自动完成。这不但大大减轻了用户负担,降低了出错率,而且有利于提高数据的独立性。 3.面向集合的操作方式 SQL是一种面向集合的语言,与面向记录的方式截然不同,每个命令的操作对象是一个或多个表,结果也是一个表。这种采用集合的操作方式不仅操作对象、查找结果可以是记录的集合,而且一次插入、删除、更新操作的对象也可以是记录的集合。 4.1.2 SQL的特点
4.同一种语法结构,两种使用方式 SQL语言既是自含式语言,又是嵌入式语言,或独立使用也可嵌入到宿主语言中。作为自含式语言它能够独立地用于联机交互方式,即在终端机上进行数据库操作,这适用于终端用户、应用程序员和DBA。作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C、COBOL、FORTRAN、PL/1)程序中,供开发使用。在这两种方式下,SQL语法结构基本一致,为用户提供了极大的灵活性和方便性。 5.语言简洁易用 SQL语言设计巧妙,以简洁的语句实现强大的功能,9个动词即可完成核心功能,见表4-1(下页)。另外语言本身接近英语自然语言,易学易懂。 4.1.2 SQL的特点
SQL功能 动词 数据查询DQ SELECT 数据定义DD CREATE,DROP,ALTER 数据操纵DM INSERT,UPDATE,DELETE 数据控制DC GTANT,REVOKE 4.1.2 SQL的特点 表4-1 SQL语言的动词
4.1.3 SQL语言基本概念 • 根据E.F.Codd的定义,关系数据模型中关系(Relation)与表(Table)同义,关系数据库是表的集合,表是关系数据库的基本组成单位,数据库操作即是对表的操作。 • 第1章已指出,表的有关概念在关系模型术语中分别对应为:表—关系,行—元组、记录,列—属性、字段。这些术语经常混合使用。 • 关系示例:物资当前库存关系 • Wzkcb(Wzbm,Wzckbm,Price,Wzkcl) • 其中Wzbm、Wzckbm、Price、Wzkcl分别表示物资编码、物资仓库编码、物资价格、物资库存量。
4.1.3 SQL语言基本概念 • SQL中,表分为基表(Base Table)和视图(View)。 • (1)基表 基表是独立存在的表,不由其他表导出,其数据显式地存储于数据库中。一个关系对应一个基表,一个或多个基表对应一个存储文件,一个表可带若干索引,索引也存放于存储文件中。表4-2为一个基表,表中Rq表示日期,其它字段名的含义与前面相同。 表4-2 每月物资库存表Months_Wzkcb
4.1.3 SQL语言基本概念 • (2)视图 视图是一种虚表,即数据库里一个物理上不存在,但用户看起来却存在的表。与之相比,基表则在物理存储中的确物理地存放着表中每一行的内容。视图由一个或几个基表(或视图)导出,它没有自身的、物理上可区分的存储区,即不能作为一个表显式地独立存储在数据库中。实际上,系统只是把视图的定义存放在系统表里的某个地方。视图就像加在其基表上的过滤器。同基表一样,它也由一组命名字段和记录行组成,但其中的数据在视图被引用时才动态生成。视图定义的查询语句可以引用一个或多个表,也可以引用当前数据库或其他数据库中的视图。另外,用户可以在视图上再定义视图。表4-3为表4-2的一个视图。 表4-3 每月物资库存视图Months_Wzkcb_view
SQL语言支持关系数据库三级模式结构,如图4.1所示。其中外模式对应于视图和部分基表,模式对应于基表,内模式对应于存储文件。SQL语言支持关系数据库三级模式结构,如图4.1所示。其中外模式对应于视图和部分基表,模式对应于基表,内模式对应于存储文件。 SQL SQL 视图1 视图1 视图2 视图2 外模式 外模式 基本表1 基本表1 基本表2 基本表2 基本表3 基本表3 基本表4 基本表4 模 式 模 式 存储文件1 存储文件1 存储文件2 存储文件2 内模式 内模式 图4.1 SQL对关系数 据库三级模式的支持 图4.1 SQL对关系数 据库三级模式的支持 4.1.4 SQL的支持特性 • SQL语言支持关系数据库三级模式结构,如图4.1所示。其中外模式对应于视图和部分基表,模式对应于基表,内模式对应于存储文件。
1.四种基本语句 SQL有四大主要功能,相应有四类语句: (1) 数据查询语言DQL (2) 数据定义语言DDL (3) 数据操纵语言DML (4) 数据控制语言DCL 4.1.5 SQL的语句类型
2.扩展语句 新标准SQL2和SQL3极大地扩充、丰富了SQL语言,SQL3按照语句功能把SQL语句分为七类:SQL模式语句、SQL数据语句、SQL事务语句、SQL控制语句、SQL连接语句、SQL会话语句、SQL诊断语句。 SQL语句由动词、SQL对象、限定词等组成。SQL3规定的SQL对象(Object)有:簇集(Cluster)、授权ID、特权(Privilege)、目录(Catalog)、模式(Schema)、表(Table)、字段(Column)、SQL域(Domain)和UDT、约束和断言(Constraint and Assertion)、字符集(Character Set)、聚合(Collation)、翻译(Translation)、触发器(Trigger)、模块 4.1.5 SQL的语句类型
(Module)、调用例程(SQL-invoked Routine)等。 目前尚没有一个数据库产品完全支持SQL2和SQL3定义的这七类语句和SQL对象,因而本章后面各节仅针对SQL核心部分的基本概念和常用的一些SQL数据类型及语句展开介绍。 4.1.5 SQL的语句类型
3.符号约定 SQL语法定义中使用了变型的巴科斯范式(Backus-Naur Form,BNF)标记,本章叙述遵循此规定中的相关约定符号。 ::= 定义运算符,把所定义的语法元素与定义分开,从左至右阅读定义。 { } 表示必须选择其中的一项或多项。 [ ] 表示其中内容可任选。 < > 表示其中是语法元素的名称。 | 竖直线把语法元素组分开,表示或者的意思,在构造SQL语句时必须选其中一个元素。 … 表示前面的内容可重复多次。 SQL和其他计算机语言一样,保留一些字作为专用,用户只能按SQL规定使用保留字,而不能用它们作为表名、字段名或其他事物。 4.1.5 SQL的语句类型