《SQL经典例题及》PPT课件.ppt_第1页
《SQL经典例题及》PPT课件.ppt_第2页
《SQL经典例题及》PPT课件.ppt_第3页
《SQL经典例题及》PPT课件.ppt_第4页
《SQL经典例题及》PPT课件.ppt_第5页
已阅读5页,还剩276页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章 关系数据库的标准语言SQL Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.1 SQL概述 3.2 数据定义语言 3.3 数据更新语言 3.4 数据查询语言 3.5 数据控制语言 3.6 嵌入式SQL 小结 内 容 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.1 SQL概述 3.1.1 SQL的发展历程 3.1.2 SQL的组成与功能 3.1.3 SQL语言的特点 3.1.4 SQL基本知识 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 SQL语言1974年被提出,并首先在IBM公司研制的RDB原型系统 System R上实现。 它具有功能丰富、使用方式灵活、语言简洁易学等突出优点, 深受计算机工业界和计算机用户的欢迎。 1986年10月,美国国家标准局(ANSI)的DB委员会批准SQL作为 RDB语言的美国标准。同年公布了标准SQL文本。 1987年6月,国际标准化组织(ISO)将其采纳为国际标准(称 “SQL86”)。 此后出现了“SQL89”、“SQL2”(1992)和“SQL3”(1993)。 3.1.1 SQL的发展历程 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 SQL成为国际标准后,各个DB厂家纷纷推出各自的支持SQL的 软件或与SQL接口的软件。 趋势:各种计算机(微机、小型机、大型机)上的DBS,都采用 SQL作为共同的数据存取语言和标准接口。成为不同DBS间互 操作的基础。 SQL对DB以外的领域也产生了很大影响(软件产品将SQL语言的 数据查询功能与图形功能、软件工程工具、软件开发工具、 人工智能程序结合起来,开发出功能更强的软件产品)。 可预见,在未来一段相当长的时间内, SQL仍将是RDB的主流 语言,而且在知识发现、人工智能、软件工程等领域,也具 有广阔的应用前景。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.1.2 SQL的组成与功能 数据定义语言 数据操纵语言 数据控制语言 嵌入式SQL Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 数据定义语言 称为“SQL DDL”。 用来定义RDB的模式、外模式和内模式,以实现对 基本表、视图以及索引文件的定义、修改和删除 等操作。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 数据操纵语言 称为“SQL DML”。 包括数据查询和数据更新两类。 数据查询:对DB中的数据查询、统计、分组、排 序等操作; 数据更新:数据的插入、删除、修改等数据维护 操作。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 数据控制语言 数据控制语言(简称DCL)也称为“SQL DCL”。 数据控制包括对基本表和视图的授权,完整性规 则的描述,事务控制语句等。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 嵌入式SQL 规定了SQL语句嵌入在宿主语言程序中使用的各种 规则。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.1.3 SQL语言的特点 自含式和嵌入式两种形式 语言简洁、易学易用 高度非过程化 支持RDB三级模式结构 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 自含式和嵌入式两种形式 自含式SQL:能够独立地进行联机交互,用户只需在终端键 盘上直接键入SQL命令就可以对DB进行操作; 嵌入式SQL:能够嵌入到高级语言,如C、COBOL、 FORTRAN、PL/1程序中来实现对DB的数据存取操作,给程 序员设计应用程序提供了很大的方便。 在自含式SQL和嵌入式SQL不同的使用方式中,SQL的语法结 构基本上一致。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 语言简洁、易学易用 尽管SQL语言功能极强又有两种使用方式,但由于设计巧妙, 其语言十分简洁,完成核心功能的语句只用了9个动词。 SQL语法很简单,容易学习和使用。 SQL的命令动词表: Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 高度非过程化 SQL是一种第四代语言(4GL),用户只需要提出 “干什么”,无需具体指明“怎么干”; 像存取路径选择和具体处理操作等,均由系统 自动完成。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 支持RDB三级模式结构 全体基本表构成DB的概念模式 视图和部分基本表构成DB的外模式 DB的存储文件和它们的索引文件构成RDB的内模式 图 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 全体基本表构成DB的概念模式 基本表是本身独立的表; SQL中的一个关系对应一个基本表; 基本表按数据全局逻辑模式建立。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 视图:由一个或几个基本表导出的表。 视图不独立存储在DB中,DB中只存放视图的定义而不直接 存放视图对应的数据,这些数据仍存放在与视图相关的基本 表中。 视图是一个虚表,是根据外模式定义的,能满足用户和应用 程序的数据格式要求。当基本表不适合用户直接查询的操作 要求时,需要定义视图,以便于用户的查询操作。 在数据查询时,SQL对基本表和视图等同对待。 视图和部分基本表构成DB的外模式 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 在SQL中,基本表可以直接被用户操作,被直接使用的 基本表也是外模式的一部分。 基本表和视图构成了RDB的外模式,SQL支持RDB的外 模式结构。 用户可用SQL语言对视图和基本表进行查询。在用户眼 中,视图和基本表都是关系,而存储文件对用户是透明 的。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 一个关系对应一个表; 一个或多个表对应一个存储文件; 一个表可带若干个索引,索引也存放在存储文件中; 存储文件的逻辑结构组成RDB的内模式。 DB的存储文件和它们的索引文件构成RDB的内模式 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 SQL对RDB模式的支持 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.1.4 SQL基本知识 1. 数据类型 2. 表达式与运算符 3. 函数 4. 语法规定与约定 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 1. 数据类型 数值型 字符型 位串型 日期型 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 数据类型是数据自身的特点,它的属性被放在表的 列字段里。 数据类型用于给特定的列提供数据规则,它决定着 数据在列中的存储方式和给列分配的数据长度,并 且决定了此数据是字符、数字还是时间日期数据。 每一个具体的SQL的实施方案都有自己特有的数据类 型,因此有必要使用与具体的实施方案相关的数据 类型。 但所有的实施方案中的基本数据类型都是一样的。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 数值型 INT:长整数,也可写成INTEGER SMALLINT:短整数 REAL:取决于机器精度的浮点数 DOUBLE PRECISION:取决于机器精度的双精度浮点数 FLOAT(n):浮点数,精度至少为n位数字 NUMBERIC(p,q):定点数,由p位数字组成,但不包括符号、小数 点,小数点后面有q位数字,也可写成DECIMAL(p,q)或dec(p,q) Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 字符型 CHAR(n):长度为n的定长字符串,n是字符串中字符的个数 VARCHAR(n):具有最大长度为n的变长字符串 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 位串型 BIT(n):长度为n的二进制位串 BIT VARYING(n):最大长度为n的变长二进制位串 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 日期型 DATE:日期 包含年、月、日 格式为 YYYY-MM-DD TIME:时间 包含一日的时、分、秒 格式为 HHMMSS Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 有的系统可能还会提供货币型、文本型、图像型等 类型。 SQL支持空值的概念,空值是RDB中的一个重要概 念,与空(或空白)字符串、数值0具有不同的含义, 不能把它理解为任何意义的数据。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 2. 表达式与运算符 比较运算符 谓词 逻辑运算符 算术运算符 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 表达式: 由一个或多个值、运算符和函数组合而成,可计算出一个 值,其数据类型一般为它的成分的数据类型。 运算符: 是保留的字或字符,主要用于在子句中执行比较和数学运 算等操作。 在SQL语句中运算符用于确定条件和建立语句中多个条件之 间的连接。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 比较运算符 其在SQL语句中用于测试单个的值。包括: 、!或、 用于测试数据相等、不等、小于、大于、小于等于和大于等于 的各种情况。 当条件满足时,返回True,否则返回False。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 谓词 IS NULL和IS NOT NULL BETWEENAND和NOT BETWEENAND IN LIKE EXISTS和NOT EXISTS UNIQUE ALL和ANY Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 IS NULL 和 IS NOT NULL 用于判断字符串的值是否是空值。 例如:查询缺少成绩(CJ)的学生的学号。可在WHERE子句中 使用的表达式为: CJ IS NULL 注意:不能用“”来查找NULL值。若使用“”,则表 示要查找的是字符“NULL”,而不是NULL值。 例如:查找不属于任何部门的职工。错误的表达式为: BMHNULL Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 BETWEENAND 和 NOT BETWEENAND 谓词BETWEEN用于判断值是否在给定的两个值之间,注意包括 边值。 例如:查找成绩(CJ)在90分到100分之间的学生。可在WHERE 子句中使用表达式: CJ BETWEEN 90 AND 100 也可使用表达式: CJ90 AND CJ100 显然在可读性上谓词BETWEEN更好一些。 BETWEEN前面加上NOT表示否定。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 IN 用于判断值是否属于指定的集合。 例如:查找职工表中工资(GZ)是否为以下几个值中的一个 :4000,5000,6000。可在WHERE子句中使用表达式: GZ IN(4000,5000,6000) Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 LIKE 可以用来进行字符串的匹配。其一般语法格式如下: NOT LIKE ESCAPE 在指定的关系中查找指定属性列值与相匹配的元组。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 说明1: 中经常使用通配符(百分号)和_(下划线),且 可组合使用。其中: (百分号):代表任意长度(长度可能为0)的字符串; _(下划线):代表任意单个字符。 例如: A%B 以A开头,以B结尾的任意长度的字符串。 A_B 以A开头,以B结尾长度为3的任意字符串。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 说明2: 如果LIKE后面的匹配符中不含通配符,则可以 用“” 运算符取代谓词LIKE,用或! 运算符取代谓词NOT LIKE。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 说明3 : 若要查询的字符串本身就含有“%”或“_”,则需要使用 由ESCAPE指定的换码字符。 例如:在WHERE子句中的LIKE谓词为: LIKECOM_cn_ESCAPE (表示以COM_cn开始的最后一个字母任意的字符串) 指定的换码字符为,匹配串COM_cn_中的第一 个下划线前因为有换码字符,所以将其解释为下划线本身 ,而不再是通配符;第二个下划线则仍是通配符。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 EXISTS 和 NOT EXISTS 格式为:EXISTS(子查询)。 用于判断在指定的表中是否存在一行符合某种条件的数据。 带有EXISTS谓词的子查询不返回任何数据,当子查询结果非空, 返回逻辑真值“True”,否则,返回逻辑假值“False”。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 UNIQUE 用于在指定的表中判断每一行是否是惟一的。 ALL和ANY 用于将某个值同另一数据集中的每个值相比较 。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 逻辑运算符 NOT AND OR Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 NOT 将它使用的逻辑运算符的意义反转。 如NOT BETWEEN、NOT IN、NOT EXISTS、NOT LIKE、NOT UNIQUE等。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 OR 连接多个查询条件,表示至少有一个查询条件成立。 例如:查找年龄(NL)为20岁或25岁的学生。可使用表达式为 : NL20 OR NL25 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 AND 连接多个查询条件,表示所有的查询条件都成立。 例如:查找年龄(NL)为25岁,并且家庭住址(ZZ)住在 大连的女学生(XB表示性别)。可使用表达式为: NL25 AND ZZ大连AND XB女 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 算术运算符 用于执行数学运算的功能。 通常有四种操作符:+、*和。 可单独使用,也可组合使用。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3. 函数 单行函数 统计函数 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 单行函数 单行函数主要分为数值函数、字符函数、日期函数、转换函 数等; 它对查询的表或视图的每一行返回一个结果行。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 数值函数: 用于接受数值输入,返回数值。许多函数的返回值可精确到 38位十进制数字,三角函数精确到36位十进制数字。 单行字符函数: 用于接受字符输入,可返回字符值或数值。 日期函数: 是操作DATE数据类型的值,所有日期函数都返回一个DATE类 型的值。 转换函数: 是将一种数据类型的值转换成另一种数据类型的值。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 统计函数 统计函数是用来累加、合计和显示数据极限的函数,它主 要用于给SQL语句提供统计信息。 常用的统计函数有COUNT、SUM、MAX、MIN和AVG等。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 4.语法规定与约定 语句格式约定符号 3; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.5 数据控制语言 3.5.1 数据控制方法 3.5.2 数据控制语句 3.5.3 事务控制语句 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 数据控制也称数据保护。数据控制语言DCL是SQL语言的组成部分。 DB的完整性:DB中数据的正确性与相容性。(完整性约束条件的 定义和检查机制)。 并发控制:当多个用户并发地对DB进行操作时,对他们加以控制 、协调,以保证并发操作正确执行,并保持DB的一致性。 恢复:当发生各种类型的故障,使DB处于不一致状态时,将DB恢 复到一致状态的功能。 DB的安全性:保护DB,防止不合法的使用所造成的数据泄露和破 坏。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.5.1 数据控制方法 1. DB操作权限 2. 数据控制方法 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 1.DB操作权限 隐含特权:系统内置权限,是用户不需要进行授权就可拥有的 数据操作权。 系统特权(语句特权):相当于数据定义语言的语句权限。是允 许用户在DB内部实施管理行为的特权,它主要包括创建或删除DB 、创建或删除用户、删除或修改DB对象等。 对象特权:类似于DB操作语言的语句权限,它指用户对DB中的 表、视图、存储过程等对象的操作权限。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 2.数据控制方法 DBMS实现数据控制的步骤: 授权定义。首先由具有授权资格的DBA和DB对象的所有者进行授 权定义,即通过数据控制语言DCL,将授权决定告知DBMS。 存权处理。DBMS把授权的结果编译后存入DD中。DD是由系统自 动生成、维护的DB,由一组表组成,其中记录着用户标识、基本 表、视图和各表的属性描述及系统授权情况。 查权操作。当用户提出操作请求时,系统在DD中查找该用户的 数据操作权限,当用户拥有该操作权时才能执行其操作,否则系 统拒绝。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.5.2 数据控制语句 1. 授予权限 2. 撤消权限 3. 拒绝访问 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 1.授予权限 语句格式: GRANT , ON TO ,| PCBLIC WITH GRANT OPTION; 功能:将对指定操作对象的指定操作权限授予指定的用户。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 说明: 不同类型的操作对象具有不同的操作权限 对属性列和视图的操作权限:SELECT、INSERT、UPDATE、 DELETE、ALL PRIVILEGES(前4种权限的总和); 对基本表的操作权限:SELECT、INSERT、UPDATE、DELETE、 ALTER、INDEX、ALL PRIVILEGES(前6种权限的总和); 对DB的操作权限:CREATTAB(属于DBA),但可由DBA授予普通 用户。被授予此权限的普通用户可创建基本表,并拥有对该 基本表的一切操作权限。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 PUBLIC指DB的所有用户; 授予关于属性列的权限时,必须明确指出相应的属性列名; 若指定WITH GRANT OPTION子句,则获得某种权限的用户还可 把该权限再授予别的用户。否则获得某种权限的用户只能使用 该权限,不能传播该权限; 例3-45:将修改学生年龄和查询学生基本表的权限授予用户张三 。 grant update(年龄),select on 学生 to 张三; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 2. 撤消权限 语句格式: REVOKE , ON FROM ,|PUBLIC; 功能:将指定的用户对指定操作对象的指定操作权限撤消。 说明: PUBLIC指DB的所有用户; 撤消关于属性列的权限时,必须明确指出相应的属性列名; 当用户的某一手授权被撤消之后,若没有被再次授权,将不 能再对数据进行曾经拥有授权的操作。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 例3-46:撤消用户张三对学生基本表修改年龄的权限。 revoke update(年龄) on 学生 from 张三; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3. 拒绝访问 语句格式: DENY ALL PRIVILEGES | , ON TO ,|PUBLIC; 功能:拒绝被授予相应权限的用户对DB对象的访问。 说明: PUBLIC指DB的所有用户; 拒绝关于属性列的权限时,必须明确指出相应的属性列名; 当用户的某一手授权被拒绝之后,若没有被再次授权,将不 能再对数据进行曾经拥有授权的操作。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.5.3 事务控制语句 1. 事务 2. 定义事务语句 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 1.事务 事务是在DB上的一个或多个操作的序列。是基于DB的执行工 作单元(是一条DML语旬,或是一组DML语句)。当管理事务的 语句是一组时,事务组中的每条语句都必须作为一个整体被 执行,要么全部都做,要么全部都不做。也就是说事务必须 以原子的方式执行。 事务的属性: 所有的事务都有一个开始和结束; 一个事务可以被保存和被撤消; 若一个事务在执行过程中失败,则事务中的任何一部分 都不会保存到DB中; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 2.定义事务语句 事务的开始与结束可以由用户显式控制。若用户没有显式显 式地定义事务,则由DBMS按缺省自动划分事务。 事务开始 语句格式: BEGIN TRANSACTION; 功能:表示事务的开始。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 事务提交 语句格式: COMMIT; 功能:使事务成功地结束。 说明: 提交当前事务就是把当前事务开始以后SQL语句所造成的 DB的任何改变都写到磁盘上,使之永远存放在DB中。 在COMMIT语句执行之前,当前事务中SQL语句对DB造成的 改变都是暂时的。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 事务撤消 语句格式: ROLLBACK; 功能:使事务不成功地终止。 说明: 事务中对DB造成的任何改变都将撤消,也就是说DB不会发生 改变。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.6 嵌入式SQL 3.6.1 嵌入式SQL的形式及处理过程 3.6.2 SQL与宿主语言间的通信 3.6.3 嵌入式SQL的实现 3.6.4 游标 3.6.5 嵌入式SQL的使用技术 3.6.6 动态SQL Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 嵌入式SQL 嵌入式SQL(Embedded SQL,ESQL)是SQL语言 的一种使用方式。SQL语言的使用方式分为:交互 式SQL(Interactive SQL,ISQL)和嵌入式SQL两种 。 交互式SQL语言可以作为独立的数据库语言,在终 端上直接以交互方式使用;而嵌入式SQL则是将 SQL语言嵌入到某种高级语言中(如C、C+、Jvav 、PASCAL、COBOL等),和高 级语言混合使用。 嵌入了SQL语言的高级语言称为主语言或宿主语言 。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 SQL语言是面向集合的描述性语言,具有功能 强、效率高、使用灵活、易于掌握等特点。但 SQL语言是非过程性语言,本身缺少过程性结构 ,大多数语句都是独立执行,与上下文无关,而 绝大多数完整的应用都是过程性的,需要根据不 同的条件来执行不同的任务,因此,单纯用SQL 语言很难实现这样的应用。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 在交互式和嵌入式两种不同的使用方式下,SQL的语 法结构基本上是一致的,当然在程序设计的环境下,SQL 语句要作某些必要的扩充。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.6.1 嵌入式SQL的形式及处理过程 1嵌入式SQL的一般形式 2嵌入式SQL的处理过程 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 1嵌入式SQL的一般形式 在嵌入式SQL中,为了能够区分SQL语句与宿主语言 语句,所有SQL语句都必须加前缀EXEC SQL。SQL语句 的结束标志则随宿主语言的不同而不同。 嵌入式SQL的一般形式: EXEC SQL Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 嵌入SQL语句根据其作用的不同,可分为可执行语句 和说明性语句两类。可执行语句又分为数据定义、数据控 制、数据操纵三种。 在宿主程序中,任何允许出现可执行的高级语言语句 的地方,都可以写可执行的SQL语句;任何允许出现说明 性高级语言语句的地方,都可以写说明性的SQL语句。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 2嵌入式SQL的处理过程 对嵌入式SQL而言,DBMS一般采用两种方 法处理,一种是预编译,另一种是修改和扩充主 语言使之能处理SQL语句。目前采用较多的是预 编译的方法,即由DBMS的预处理程序对源程序 进行扫描,识别出SQL语句,把它们转换成主语 言调用语句,以使主语言编译程序能够识别它, 最后再由主语言的编译程序将整个源程序编译成 目标程序。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.6.2 SQL与宿主语言间的通信 1主要通信内容 2SQL通信区 3宿主变量 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 将SQL嵌入到高级语言中混合编程,SQL语句负责操 纵数据库,高级语言语句负责控制程序流程。嵌入式SQL 和宿主语言是两种不同计算模型的语言,一种是描述性的 面向集合的SQL语言,一种是过程性的高级语言语句,它 们之间为了协同工作,必须保证互相之间能够进行通信。 所谓通信是指数据库的工作单元与源程序工作单元之间进 行数据的传送。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 1主要通信内容 嵌入式SQL与宿主语言之间主要的通信内容为: 向宿主语言传递SQL语句的执行状态信息,使宿主语言能 够根据其控制程序流程,主要用SQL通信区(SQL Communication Area,SQLCA)实现; 宿主语言向SQL语句提供参数,主要用宿主变量(Host Variable,或称为共享变量)实现; 将SQL语句查询数据库的结果交宿主语言处理,主要用宿 主变量和游标实现。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 2SQL通信区 在嵌入式SQL中,SQL语句执行后,系统要 反馈给应用程序若干信息,主要包括描述系统当 前工作状态和运行环境的各种数据。这些信息将 送到SQLCA中。应用程序从SQLCA中取出这些状 态信息,以此决定接下来要执行的语句。 SQLCA在应用程序中的定义格式为: EXEC SQL INCLUDE SQLCA; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 SQLCA中有一个存放每次执行SQL语句后 返回代码的变量SQLCODE(不同版本该变量名称 有所不同),应用程序每执行完一条SQL语句之 后都应该测试一下SQLCODE的值,以了解该SQL 语句执行情况并做相应处理。如果SQLCODE等于 预先定义的表示成功的常量SUCCESS,则表示 SQL语句成功,否则SQL执行失败,在SQLCODE 中存放着错误代码。程序员可以根据错误代码查 找问题。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3宿主变量 嵌入式SQL语句可以使用宿主语言的程序变量来输入或输出 数据,SQL语句中使用的宿主语言程序变量称为宿主变量(或共享 变量)。 宿主变量根据其作用的不同,分为输入宿主变量和输出宿主 变量。输入宿主变量由应用程序对其赋值,SQL语句引用;输出宿 主变量由SQL语句对其复制或设置状态信息,返回给应用程序。 一个宿主变量可以附带一个任选的指示变量(Indicator Variable) 。指示变量是一个整型变量,用来“指示”所指宿主变量的值或条件 。指示变量可以指示输入宿主变量是否为空值,可以检测输出宿主 变量是否为空置,值是否被截断。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 所有宿主变量和指示变量必须在DECLARE SECTION中说明。说明的 格式是: EXEC SQL BEGIN DECLARE SECTION EXEC SQL END DECLARE SECTION; 宿主变量经过说明之后,可以在SQL语句中任何一个能够使用表 达式的地方出现,为了与数据库对象名(表名、视图名、列名)区别, SQL语句中的宿主变量名和指示变量前要加冒号(:)作为标志。宿主变 量用在宿主语言中时,和一般程序变量的使用方法是一样的。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.6.3 嵌入式SQL的实现 1说明部分的嵌入 2执行部分的嵌入 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 对于不同的DBMS和宿主语言,其实现嵌入 式SQL的方法基本相同,只是在一些特殊的地方 略有差异。实现嵌入式SQL语言主要是实现说明 部分的嵌入和执行部分的嵌入。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 1说明部分的嵌入 对于实现说明部分的嵌入,一般是通过宿主 变量来完成的。在SQL语句中引用宿主变量时, 一般要对宿主变量有所标记,比如前面加冒号“:” ,这一点不同系统有所区别。除此之外,不同系 统对宿主变量的数据类型和格式也有不同的要求 。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 2执行部分的嵌入 在说明部分,对宿主变量的定义对数据库不产生 任何作用,而在执行部分嵌入的可执行的SQL语 句将对数据库进行操作,如查询、插入、修改和 删除等。在执行部分嵌入的可执行的SQL语句与 ISQL语句的格式基本一致,只不过由于嵌入的需 要而增加了一些语法成分。另外,嵌入的SQL语 句还包括连接数据库系统的CONNECT语句以及 控制事务结束的语句等。 下面是一些嵌入式SQL语句的格式,具体使用某 一种嵌入式SQL语言时,请参见相应指南。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 插入语句 EXEC SQL INSERT INTO (,n) VALUES (,n); 修改语句 EXEC SQL UPDATE SET =,=,n WHERE ; 删除语句 EXEC SQL DELETE FROM WHERE; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 查询语句 当查询结果只有一个元组时,可以使用用INTO子句将结 果直接赋给 宿主变量。如下面的语句: EXEC SQL SELECT ,n INTO ,n FROM WHERE; 当查询结果有多个元组时,需要使用游标。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3.6.4 游标 1说明游标语句 2打开游标语句 3推进游标语句 4关闭游标语句 5滚动游标的定义和推进 6使用游标的SQL程序举例 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 作为数据库语言,SQL的优点之一是它的语句可以处理整个 表。因此,一个SELECT语句可以返回一个表,我们将之称为查 询结果或结果集。当以直接或交互模式而不是嵌入到一个应用程 序中来执行语句时,结果集以滚动方式在屏幕上输出。例如,下 面的SELECT语句返回指定学期中参加某门课程学习的所有学生 的Id和成绩 EXEC SQL SELECT T.Studld,T.Grade FROM TRANSCRIPT T WHERE T.Semester=:semester AND T.CrsCode=:crs_code; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 假设我们想要将这样一个语句包含进宿主语 言程序中。在语句执行之前,结果集中的行数都 是未知的,因此,我们面临的问题是在程序中为 未知数目的行分配存储空间。 这个问题指出了SQL和宿主语言之间的根本 差异。SQL语句处理的基本单元是元组集,而宿 主语言中的语句处理的基本单元是变量。这个差 异常常被称为阻抗失配(impedance mismatch), SQL用于解决这个问题的机制是游标,它允许应 用程序每次处理结果集中的一行数据。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 系统为用户开设了数据缓冲区,专门用来 存放嵌入式SQL语句的查询结果,然后从数据缓 冲区中逐一取出每行赋给宿主变量,再由宿主语 言对其进一步处理。为了实现逐个取出数据缓冲 区中的行,数据缓冲区需要一个指示器,以指示 行的位置。每当取出一行,指示器向前推进一个 位置。在嵌入式SQL语言中,称这种指示器为游 标。每个游标区都有一个名字,用户可以通过游 标逐一获取记录,并附给宿主变量,交由宿主语 言进一步处理。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 通过游标,变量只需分配给单个行。从数据 库模式中我们可以知道每行中值的类型,因此可 以为变量声明合适的类型。 利用游标进行查询需要四种语句:说明游标 、打开游标、推进游标和关闭游标语句。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 1说明游标语句 使用DECLARE语句定义游标。 语句格式: EXEC SQL DECLARE INSENSITIVE CURSOR FOR ORDER BY FOR READ ONLY | UPDATE OF ,n END_EXEC; 功能:定义游标名并将其与相应的子查询语句相联系。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 说明: 游标在定义时,DBMS并不执行其子查询,只是将其定义 内容记录下来,待打开游标时才按它的定义执行子查询; 游标应先定义后引用。一种查询只能使用一个游标名,同 一个游标名不允许有两次或两次以上的定义,否则会引起 游标定义的混乱; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 选项INSENSITIVE的作用是OPEN语句的执行将有效地创 建结果集中行的拷贝,且通过游标的所有访问都将指向该 拷贝,即这个拷贝可在以后的时间里通过游标进行浏览。 这种类型的返回数据有时被称为快照(snapshot)。由于 INSENSITIVE游标访问的是结果集的拷贝,在已经打开游 标之后,通过游标不会看到相同事务中其他语句对表的任 何修改(不通过游标)。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 如果没有指定INSENSITIVE,游标还没有被声明为READ ONLY,且游标声明中的SQL查询满足可更新视图中的条 件,则通过游标可以更新或删除基础表的当前行,这个游 标被称为“可更新的”。可以用UPDATE或DELETE语句做 到这一点,但WHERE子句要被WHERE CURRENT OF 语句代替,一般的语法是: UPDATE SET =,=,n WHERE CURRENT OF ; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 和 DELETE FROM WHERE CURRENT OF ; 由于INSENSITIVE游标指向结果集的一个拷贝,UPDATE 和DELETE语句将不会对计算结果集的表产生影响。因此 ,为了避免混淆,这些操作不能通过INSENSITIVE游标执 行。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 如果期望得到结果集中某个顺序的行,可以使用子句 ORDER BY。 例3.47 定义只按宿主变量DEPT查询班级的学生,不允许 修改当前元组的游标。语句为 EXEC SQL DECLARE SX CURSOR FOR SELECT * FROM 学生 WHERE 班级号:DEPT END_EXEC ; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 2打开游标语句 使用OPEN语句打开游标。 语句格式: EXEC SQL OPEN END_EXEC; 功能: 执行游标对应的查询语句,并将游标指向结果集的第一个元组前。 说明: 打开的游标处于活动状态,可以被推进; 打开游标时,游标指向的是第一个元组前,不能读出结果集中的数据 。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 例3.48 打开SX游标。使用的语句为 DEPT01001 EXEC SQL OPEN SX END_EXEC ; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 3推进游标语句 使用FETCH语句将游标向前(或称向下)推进一个元组。 语句格式: EXEC SQL FETCH INTO END_EXEC; 功能: 将游标下移一行,读出当前的元组,将当前元组的各数据 项值放到INTO后的共享变量组中。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 说明: 要恢复游标的初始位置,必须关闭游标后重新打开; 若元组已取完,再执行该语句,则系统将表示“SQL语句 已执行,但未找到元组”的代码存入由系统定义的、 DBMS向宿主语言程序报告SQL执行情况的共享变量中; Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 游标的移动方式一般是从查询结果集的第一个元组 开始,并按次序读取元组,直到结束。其特点是在关闭游 标前,每个元组只被扫描一次。但SQL2标准中,游标能 够以滚动的方式多次扫描元组,或者可以实现游标后退及 跳跃等功能,即游标可以根据需要被定位到任意位置上。 Date 数据库原理与应用第3章 关系数据库的标准语言SQL东北财经大学 李红 FETCH语句常用于宿主语言程序的循环结构中,并借助 于宿主语言的处理语句逐一处理查询结果中的一个个元组 。 例3.49 将打开的指向班级的游标向前推进。使用的语句为 EXEC SQL FETCH SX INTO :XH , :XM , :XB , :NL , :BJH ; Date 数据库原理与应用第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论