数据库总结

第一章数据库绪论

1.1数据库系统概述

1.1.1数据库的四个基本概念

· 数据(data)

-定义 描述事物的符号记录。

-语义 数据的含义称为数据的语义。

-记录 记录是计算机中表示和存储数据的一种格式和一种方法。

· 数据库(DataBase,DB)

-定义 长期存储、有组织的、可共享的大量数据的集合,其中的数 据按照一定的数据模型组织、描述和存储。

-特点 永久存储、有组织、可共享。

· 数据库管理系统(DataBase Management System,DBMS)

-定义 数据库管理系统是位于用户和操作系统之间的一层数据管理 软件,用于科学地组织和存储数据,高效地获取和维护数据。

-功能 > 数据定义功能 数据定义语言(Data Definition Language, DDL)对数据对象的组成和结构定义。

数据组织、存储和管理

数据库的事务管理和运行管理

数据库的建立和维护功能

其他功能 通信功能、数据转换功能、异构数据库互访和互 操作。

· 数据库系统(DataBase System,DBS)

-定义 数据库系统是由数据库、数据库管理系统(及应用开发工具)、 应用程序和数据库管理员(DataBase Administrator,DBA) 组成的存储、管理、处理和维护数据的系统。

1.1.2数据库管理技术的产生和发展

· 人工管理阶段

-数据不保存

-应用程序管理数据

-数据不共享

-数据不具有独立性

· 文件系统阶段

-数据可以长期保存 批处理

-由文件系统管理数据

-数据共享性差、冗余度大

-数据独立性差

· 数据库系统阶段

1.1.3数据库系统的特点

· 数据结构化 整体结构化

· 数据共享度高、冗余度低且易扩充

· 数据独立性高

-物理独立性 应用程序与数据的物理存储相互独立

-逻辑独立性 应用程序和数据库逻辑结构相互独立

· 数据由数据库管理系统统一管理和控制

-数据的安全性保护

-数据的完整性保护

-并发控制

-数据库恢复

1.2数据模型

· 定义:对现实世界数据特征的抽象,用来描述数据、组织数据和对数据进行操作的。

1.2.1两类数据模型

· 概念模型

· 逻辑模型和物理模型

1.2.2概念模型

· 定义 现实世界到信息世界的第一层抽象。

· 信息世界中的基本概念

-实体 客观存在并可相互区别的事物

-属性 实体所具有的某一特性

-码 唯一标识实体的属性集

-实体型 实体名及其属性集的组合

-实体集 同一类型实体的集合

-实体集间联系 一对一、一对多、多对多

· 概念模型的一种表示方法:实体-联系方法(Entity-Relationship)

1.2.3数据模型的组成要素

· 数据结构 数据结构描述数据库的组成对象以及对象之间的联系

· 数据操作 数据操作是指对数据库中各种对象(型)的实例(值)允 许执行的操作的集合,包括操作及有关的操作规则

· 数据的完整性约束条件 数据的完整性约束条件是一组完整性规则, 是给定的数据模型中数据及其联系所具有 的制约和依存规则

1.2.4常用的数据模型

· 层次模型

· 网状模型

· 关系模型

· 面向对象数据模型

· 对象关系数据模型

· 半结构化数据模型

1.2.5层次模型

· 定义:层次模型用树形结构来表示各类实体及实体间的关系。

· 层次模型的数据结构

-有且只有一个结点没有双亲结点,为根节点

-根以外结点有且只有一个双亲结点

-每一个结点为一个记录类型

-记录类型之间用连线表示结点间的联系

-每个记录类型可以包含若干个字段

-记录类型描述实体,字段描述属性

-同一双亲的子女节点为兄弟节点

-没有子女节点的结点为叶子节点

-任何给定的记录值只能按其层次路径查看

-子女结点不能脱离双亲结点独立存在

· 层次模型的数据操纵与完整性约束

-数据操纵

查询

插入

删除

更新

-完整性约束

若没有相应的双亲结点就不能插入它的子女值

删除双亲结点后相应的子女节点值也删除

· 层次模型的优缺点

-优点

数据结构比较简单清晰

查询效率高

提供良好的完整性支持

-缺点

不能表示非层次性的联系

查询子女节点必须通过双亲结点

层次命令趋于程序化

1.2.6网状模型

· DBTG系统(CODASYL系统)

· 网状模型的数据结构

-允许一个以上的结点无双亲

-一个结点可以有多个双亲

-两个结点间可以有多种联系(复合联系)

-每个结点表示一个记录类型(实体)

-每个记录类型可以包含若干字段(属性)

· 网状模型的数据操纵和完整性约束

-支持码的概念

-保证一个联系中双亲记录和子女之间是一对多的联系

-可以支持双亲记录和子女记录之间的某些约束条件

· 网状模型的优缺点

-优点

结点间可以有多种联系

良好的性能,存取率较高

-缺点

结构比较复杂

用户不容易掌握网状模型的DDL,DML

用户必须了解系统结构的细节,加重编写应用程序的负担

1.2.7关系模型

· 关系模型的数据结构

-关系 一张表

-元组 一行

-属性 一列

-码 唯一标识

-域 取值范围

-分量 元组的一个属性值

-关系模式 对关系的描述

-关系模型要求关系必须是规范化的,即满足一定的规范条件

· 关系模型的数据操纵和完整性约束

-数据操纵

查询

插入

删除

更新

-完整性约束

实体完整性

参照完整性

用户定义的完整性

数据操作是集合操作

操作对象和操作结果都是关系(若干元组的集合)

· 关系模型的优缺点

-优点

建立在严格的数学概念上

概念单一,数据结构简单、清晰、用户易懂易用

更高的数据独立性、更好的安全保密性,简化程序员工作

-缺点

效率不如格式化模型

1.3数据库系统的结构

· 单用户结构

· 主从式结构

· 分布式结构

· 客户-服务器、浏览器-应用服务器/数据库服务器多层结构

1.3.1数据库模式系统的概念

· 数据库系统模式的概念

-型 某一类数据的结构和属性的说明

-值 型的具体赋值

-模式 数据库中全体数据的逻辑结构和特征的描述

-模式是相对稳定的,而实例是相对变动的

1.3.2数据库系统的三级模式结构

· 逻辑模式 数据库中全体数据的逻辑结构和特征的描述,所有用户的 公共数据视图

· 外模式 数据库用户能够看见和使用的局部数据的逻辑结构和特征的 描述,是数据库用的数据视图,是与某一应用有关的数据的 逻辑表示

· 内模式 数据物理结构和存储方式的描述,是数据在数据库内部的组 织方式

1.3.3数据库的二级映像功能与数据独立性

· 两层映像

-作用 在系统内部实现三个抽象层次的联系和转换,使数据保持较 高的逻辑独立性和物理独立性

-外模式/模式映像

映像定义外模式与内模式的对应关系

一个模式可以有任意多个外模式

模式改变时,对各个映像作相应改变,可使外模式保持不变

-模式/内模式映像

模式只有一个,内模式只有一个,映像唯一

映像定义了数据全局逻辑与存储结构之间的对应关系

存储结构改变,对映像作相应改变,可使模式保持不变

1.4数据库系统的组成

· 硬件平台及数据库

-硬件要求

内存足够大

磁盘或磁盘阵列足够大

系统具有较高的通道能力

· 软件

-数据库管理系统

-支持数据库管理系统运行的操作系统

-具有与数据库结构的高级语言及其编译系统

-以数据库管理系统为核心的应用开发工具

-为特定应用环境开发的数据库应用系统

· 人员

-数据库管理员(DataBase Administrator,DBA)

职责

①决定数据库中的信息内容和结构

②决定数据库的存储结构和存取策略

③定义数据安全性要求和完整性约束条件

④监控数据库的使用和运行

⑤数据库的改进和重组、重构

-系统分析员

职责

①应用系统的需求分析和规范说明

②确定系统的硬件软件配置,参与数据库的概要设计

-数据库设计人员

职责

①数据库中数据的确定及数据库各级模式的设计

②参加用户需求调查和系统分析

-应用程序员

职责

①设计和编写应用系统的程序模块并进行调试和安装

-用户

用户通过系统的用户接口使用数据库

用户分类

①偶然用户 不经常访问数据库

②简单用户 经常访问数据库的人员

③复杂用户 具有较高科学技术背景的人员

第二章关系数据库

2.1关系数据结构及形式化定义

· 关系数据结构

· 关系操作集合

· 关系完整性约束

2.1.1关系

· 定义 关系模型中的数据结构

· 域 一组具有相同数据类型的值的集合

· 笛卡尔积

-元组 笛卡尔积中的单个元素

-分量 单个元素中的每一个值

-基数 一个域中允许的不同取值个数

-定义 一个域中每一个分量与另一个域中所有分量的组合

· 关系

-定义 域和域的笛卡尔积的子集

-元组 行

-属性 列

-候选码 某一组属性的值能唯一标识一个元组,其子集则不能

-主码 从多个候选码中选择一个

-主属性 候选码中的诸属性

-非主属性 不包含在任何候选码中的属性

-全码 所有属性都是候选码

-类型

基本关系(基本表) 实际存在,存储数据的逻辑表示

查询表 查询结果对应的表

视图表 由基本表或其他视图导出,不对应实际存储数据

-限定与扩充

无限关系在数据库系统中无意义

通过附加一个属性名来取消属性的有序性

-基本关系的六条性质

列是同质的,即列中的每一个分量来自同一个域

不同列可以同质

列的顺序无所谓

任意两个元组的候选码不能取相同的值

行的顺序无所谓,即行的顺序可以任意交换

分量需取原子值,即不可分的数据项

2.1.2关系模式

· 定义 关系的描述 R(U,D,DOM,F)关系名(属性集合,域,属性 向域的映像集合,属性间数据的依赖关系集合)

2.1.3关系数据库

· 在关系模型中,实体以及实体之间的联系都是用关系来表示的

· 所有关系的集合构成一个关系数据库

· 关系数据库的型 对关系数据库的描述

· 关系数据库的值 关系模式在某一时刻对应的关系的集合

2.1.4关系模型的存储结构

· 表是关系数据的逻辑模型

· 关系数据库管理系统中的一个表对应一个操作系统文件,将物理数据 组织交给操作系统完成

· 关系数据库管理系统从操作系统那里申请若干个大的文件,然后自己 划分文件空间,组织表、索引等存储结构,并进行存储管理

2.2关系操作

2.2.1基本的关系操作

· 查询

选择

投影

连接

笛卡尔积

· 插入

· 删除

· 修改

2.2.2关系数据语言的分类

· 结构化查询语言(Structured Query Language,SQL)

· 关系代数语言

· 关系演算语言

元组关系演算语言

域关系演算语言

· 关系操作能力表示

代数方式 关系代数 对关系的运算

逻辑方式 关系逻辑 用谓词表达 分元组关系演算、域关系演算

· 关系完备性 具有完备的表达能力

2.3关系的完整性

2.3.1实体完整性

· 定义 关系数据库中的每个元组应该是可分的,是唯一的

· 实体完整性规则 若属性A是主属性,则A不能取空值(不知道、不 存在、无意义)。

·说明

-实体完整性针对基本表关系而言

-现实世界实体是可区分的

-关系模型中主码作为唯一性标识

-主码属性不可取空值

2.3.2参照完整性

· 外码

-定义 F为基本关系R的一个或一组属性,但不是码,Ks是基本关 系S的主码,如果F与Ks相对应,则F为R的外码,R为参 照关系,S为被参照关系

· 参照完整性规则 若属性F是基本关系R的外码,它与基本关系S的 主码Ks相对应,则对于R中每个元组在F上的值必 须或者取空值或者等于S中某个元组中的主码值

2.3.3用户定义的完整性

2.4关系代数

· 三大要素

-运算对象 关系

-运算符 集合运算符和专门的关系运算符

-运算结果 关系

2.4.1传统的集合运算

· 并 关系由属于R或属于S的元组组成

· 差 关系由属于R而不属于S的所有元组组成

· 交 关系由既属于R又属于S的所有元组组成

· 笛卡尔积 n目k1行关系和m目k2行关系组成n+m目k1×k2行关系

2.4.2专门的关系运算

· 选择 在关系R中选择满足给定条件的诸元组

· 投影 从R中选择若干属性列组成新的关系

· 连接 从两个关系的笛卡尔积中选取属性间满足一定条件的元组

-等值连接 从两个关系的笛卡尔积中选取属性组属性值相等的元组

自然连接 两个关系中比较的属性组必须同名,结果去重

①悬浮元组 自然连接时被舍弃的元组(R某元组不存在公共 属性上和S值相等的元组)

-外连接 悬浮元组也保存在结果中,其他属性填空值

左外连接 保留左边关系的悬浮元组

右外连接 保留右边关系的悬浮元组

· 除运算 关系R和关系S的除结果为T,则T包含所有在R但不在S 中的属性及其值,且T的元组与S的元组的所有组合都在R 中

-象集

2.5 关系演算

2.5.1元组关系演算语言ALPHA

2.5.2元组关系演算

2.5.3域关系演算语言QBE

第三章关系数据库标准语言SQL

3.1 SQL概述

3.1.1 SQL的产生与发展

· 1974年由Boyce和Chamberlin提出,最初名为Sequel

· 1986年批准SQL作为关系数据库语言的美国标准

· SQL/86 1986年

· SQL/89(FIPS 127-1)1989年

· SQL/92 1992年

· SQL99(SQL3)1999年

· SQL2003 2003年

· SQL2008 2008年

· SQL2011 2011年

3.1.2 SQL的特点

· 综合统一

-操作要求

定义和修改、删除关系模式,定义和删除视图,插入数据,建 立数据库

对数据库中的数据进行查询和更新

数据库重构和维护

数据库安全性、完整性控制,以及事务控制

嵌入式SQL和动态SQL定义

· 高度非过程化 无需了解存取路径

· 面向集合的操作方式

· 以一种语法结构提供多种使用方式 独立使用和嵌入使用语法一致

·语法简洁,易学易用

3.1.3 SQL的基本概念

· 三级模式结构

-外模式 对应视图

-模式 对应基本表

-内模式 对应存储文件

3.2 学生-课程数据库

3.3 数据定义

3.3.1模式的定义与删除

· 定义模式

-CREATE SCHEMA <模式名> AUTHORIZATION <用户名>;

-CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义语 句>|<视图定义语句>|<授权定义子句>];

· 删除模式

-DROP SCHEMA <模式名><CASCADE(联级)|RESTRICT(限制)>;

-联级CASCADE 删除模式的同时删除模式下所有数据库对象

-限制RESTRICT如果该模式下已经定义了数据库对象,则拒绝该删 除语句的执行

3.3.2基本表的定义、删除与修改

· 定义基本表

-CREATE TABLE <表名> (<列名><数据类型>[列级完整性约束条 件][,<列名><数据类型>[列级完整性约 束条件]] …[,<表级完整性约束条 件>]);

· 数据类型

-CHAR(n),CHARACTER(n) 长度为n的定长字符串

-VARCHAR(n),CHARACTERVARYING(n) 最大长度为n的变长字符 串

-CLOB 字符串大对象

-BLOB 二进制大对象

-INT,INTEGER 长整数(4字节)

-SMALLINT 短整数(2字节)

-BIGINT 大整数(8字节)

-NUMERIC(p,d) 定点数,p位数字组成,小数点后有d位

-DECIMAL(p,d),DEC(p,d) 同NUMERIC

-REAL 取决于机器精度的单精度浮点数

-DOUBLE PRECISION 取决于机器精度的双精度浮点数

-FLOAT(n) 可选精度的浮点数,精度至少为n位数字

-BOOLEAN 逻辑布尔量

-DATA 日期,年月日格式为YYYY-MM-DD

-TIME 时间,时分秒格式为HH:MM:SS

-TIMESTAMP 时间戳类型

-INTERVAL 时间间隔类型

· 模式与表

-定义表所属模式的方法

在创建表时表名中明显给出模式名 模式名.表名

在创建模式语句中同时创建表

设置所属的模式

·修改基本表

-ALTER TABLE <表名>
[ADD[COLUMN] <新列名><数据类型>[完整性约束]]
[ADD <表级完整性约束>]
[DROP[COLUMN] <列名>[CASCADE|RESTRICT]]
[DROP CONSTRAINT <完整性约束名>[RESTRICT|CASCADE]]
[ALTER COLUM <列名><数据类型>]

· 删除基本表

-DROP TABLE <表名> [RESTRICT|CASCADE]

3.3.3索引的建立与删除

· 索引 由指定属性值和相应的元组指针组成

-顺序文件索引

-B+树索引

-散列索引

-位图索引

· 建立索引

-CREATE [UNIQUE][CLUSTER]INDEX <表名> ON <表名>(<表名>([< 次序>][,<列名>[次序]]…);

-ASC 升序

-DESC 降序

-UNIQUE 索引的每一个索引值只对应唯一的数据记录

-CLUSTER 聚簇索引

· 修改索引

-ALTER INDEX <旧索引名> RENAME TO <新索引名>;

· 删除索引

-DROP INDEX <索引名>;

3.3.4数据字典

· 定义

-数据库管理系统内部一组系统表

-记录数据库中所有定义信息(各种定义)

3.4 数据查询

· 格式

-SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]…
FROM <表名或视图名>[,<表名或视图名>…]|(<SELECT语句>[AS]<别 名>
[WHERE<条件表达式>]
[GROUP BY<列名1>[HAVING<条件表达式>]]
[ORDER BY<列名2>[ASC|DESC]];

3.4.1单表查询

· 选择表中的若干列

-查询指定列

-查询全部列 *

-查询经过计算的值

· 选择表中的若干元组

-消除取值重复的行 DISTINCT

-查询满足条件的元组

比较 =,>,<,>=,<=,!=,<>,!>,!<,NOT

确定范围 BETWEEN AND,NOT BETEWEEN AND

确定集合 IN,NOT IN

字符匹配 LIKE,NOT LIKE

①% 通配符 代表任意长度的字符串

②_ 通配符 代表任意单个字符

空值 IS NULL,IS NOT NULL

多重条件(逻辑运算) AND,OR,NOT

· ORDER BY子句 对查询结果按照一个或多个属性列升或降排序

· 聚集函数

-COUNT(*) 统计元组个数

-COUNT([DISTINCT|ALL]<列名>) 统计一列中值的个数

-SUM([DISTINCT|ALL]<列名>) 计算一列值的总和(需为数字型列)

-AVG([DISTINCT|ALL]<列名>) 计算一列值的平均值

-MAX([DISTINCT|ALL]<列名>) 求一列中最大值

-MIN([DISTINCT|ALL]<列名>) 求一列中最小值

· GROUP BY子句 将查询结果按某一列或多列的值分组,值相等为一组

3.4.2连接查询

· 等值连接和非等值连接

-[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>

-等值连接 比较运算符为 =

-非等值连接 比较运算符不为 =

-连接字段 连接谓词中列名

-自然连接 在等值连接中把目标列重复的属性列去掉

· 自身连接 表与自己连接

· 外连接 把悬浮元组保存在结果关系中,其他属性值填NULL

· 多表连接

3.4.3嵌套查询

· 查询块 一个SELECT-FROM-WHERE语句

· 定义

-一个查询块嵌套在另一个查询块中

· 外层查询(父查询)

· 内层查询(子查询)

· 带有IN谓词的子查询

-不相关子查询 子查询查询条件不依赖于父查询

-相关子查询 子查询查询条件依赖于父查询

· 带有比较运算符的子查询

·带有ANY(SOME)或ALL谓词的子查询

->ANY 大于子查询结果中的某个值

->ALL 大于子查询结果中的所有值

-<ANY 小于子查询结果中的某个值

-<ALL 小于子查询结果中的所有值

->=ANY 大于等于子查询结果中的某个值

->=ALL 大于等于子查询结果中的所有值

-<=ANY 小于等于子查询结果中的某个值

-<=ALL 小于等于子查询结果中的所有值

-=ANY 等于子查询结果中的某个值

-=ALL 等于子查询结果中的所有值

-!=(<>)ANY 不等于子查询结果中的某个值

-!=(<>)ALL 不等于子查询结果中的所有值

· 带有EXISTS谓词的子查询 代表存在量词,返回true或false

3.4.4集合查询

· 并操作(UNION)

· 交操作(INTERSECT)

· 差操作(EXCEPT)

3.4.5基于派生表的查询

· 派生表 子查询出现在FROM子句中生成的临时表

3.4.6 SELECT语句的一般格式

· 目标列表达式的可选格式

· 聚集函数的一般格式

· WHERE子句的条件表达式的可选格式

3.5 数据更新

3.5.1插入数据

· 插入元组

-INSERT INTO<表名>[(<属性列1>[,<属性列2>]…)] VALUE(< 常量1>[,<常量2>]…);

· 插入子查询结果

-INSERT INTO <表名> [(<属性列1>[,<属性列2>…])]
子查询;

3.5.2修改数据

· 更新操作

-UPDATE<表名>
SET<列名>=<表达式> [,<列名>=<表达式>]…
[WHERE<条件>];

· 修改某一个元组的值

· 修改多个元组的值

· 带子查询的修改语句

3.5.3删除数据

· 格式

-DELETE
FROM<表名>
[WHERE<条件>];

-删除满足指定条件的元组或删除全部元组

-表的定义仍在字典中

· 删除某一个元组的值

· 删除多个元组的值

· 带子查询的删除语句

3.6 空值的处理

· 允许取空值的情况

-该属性有值但目前不知道具体值

-该属性不应该有值

-由于某种原因不便于填写

· 空值的产生

· 空值的判断

-IS NULL

-IS NOT NULL

· 空值的约束条件

-NOT NULL

-UNIQUE限制的属性不能取空值

-码属性不能取空值

· 空值的算数运算、比较运算和逻辑运算

-空值与另一个值的算数运算的结果为空值

-空值与另一个值的比较运算的结果为UNKNOWN

-二值逻辑扩展成三值逻辑

3.7视图

· 定义 视图是从一个或几个基本表导出的表,为虚表

3.7.1定义视图

· 建立视图

-CREATE VIEW <视图名>[(<列名>[,<列名>]…)]
AS <子查询>
[WITH CHECK OPTION];

-WITH CHECK OPTION 对视图进行增删改操作要保证行满足视图定义 中的谓词条件

-组成视图的属性列名或者全部省略或者全部指定

-必须明确指定所有列名的情况

某个目标列不是单纯的属性名,而是聚集函数或列表达式

多表连接时选出了几个同名列作为视图的字段

需要在视图中为某个列启用新的更合适的名字

-行列子集视图 由单个基本表导出,去掉某些行某些列但保留了主 码

-分组视图 带有聚集函数和GROUP BY子句的查询来定义的视图

· 删除视图

-DROP VIEW <视图名> [CASCADE];

-CASCADE 联级

3.7.2查询视图

· 视图消解 把视图中定义的子查询和用户的查询结合起来,转换成等 价的对基本表的查询

3.7.3更新视图

· 对视图的更新最终要转换为对基本表的更新

· 并不是所有的视图都是可更新的

3.7.4视图的作用

· 视图能简化用户的操作

· 视图使用户能以多种角度看待数据

· 视图对重构数据库提供了一定程度的逻辑独立性

· 视图能够对机密数据提供安全保护 对不同用户定义不同视图

· 适当利用视图可以更清晰地表达查询

第四章数据库安全性

4.1 数据库安全性概述

· 定义

-数据库的安全性是指保护数据库以防止不合法使用所造成额数据泄露、 更改或破坏

4.1.1数据库的不安全因素

· 非授权用户对数据库的恶意存取和破坏

· 数据库中重要或敏感的数据被泄露

· 安全环境的脆弱性

4.1.2安全标准简介

· 《可信计算机系统评估准则关于可信数据库系统的解释》
(TCSEC/Trusted Database Interpretation,TCSEC/TDI,紫皮书)

-安全性级别划分指标

安全策略

责任

保证

文档

-4组7等级

D级 具有操作系统的基本功能

C1级 能够实现对用户和数据的分离,进行自主存取控制(DAC)

C2级 提供受控的存取保护

B1级 标记安全保护,对标记的主体和客体实施强制存取控制 (MAC)以及审计等安全机制

B2级 结构化保护,建立形式化的安全策略模型

B3级 安全域,该级的TCB(Trusted Computing Base)必须 满足访问监控器的要求,审计跟踪能力更强,并提供系 统恢复过程

A1级 验证设计,即提供B3级保护同时给出系统的形式化设 计说明和验证

· 通用准则项目(Common Criteria,CC)

-文本

简介和一般模型 介绍有关属于、基本概念和一般模型以及与 评估有关的一些框架

安全功能要求 列出了一系列类、子类和组件

安全保证要求 列出了一系列保证类、子类和组件

-评估保证级

EAL1 功能测试(functionally tested)

EAL2 结构测试(structurally tested)

EAL3 系统地测试和检查(methodically tested and checked)

EAL4系统地设计、测试和复查(methodically designed, tested and reviewed)

EAL5 半形式化设计和测试(semiformally designed and tested)

EAL6 半形式化验证的设计和测试(semiformally verified design and tested)

EAL7 形式化验证的设计和测试(formally verified design and tested)

4.2 数据库安全性控制

4.2.1用户身份鉴别

· 静态口令鉴别

· 动态口令鉴别 一次一密

· 生物特征鉴别 指纹、虹膜、掌纹

· 智能卡鉴别

4.2.2存取控制

· 定义用户权限 将权限登记到数据字典中

· 合法权限检查

· 自主存取控制(DAC)

-用户对于不同的数据库对象有不同的存取权限

-不同用户对同一对象也有不同的存取权限

-用户可将其拥有的存取权限转授给其他用户

· 强制存取控制(MAC)

-每一个数据库对象标以一定的密级

-每一个用户也被授予某一个级别的许可证

-对任意一个对象,只有具有合法许可证的用户才可以存取

4.2.3自主存取控制方法

· SQL的自主存取控制

-GRANT语句 授予

GRANT <权限>[,<权限>]…
ON <对象类型><对象名>[,<对象类型><对象名>]…
TO <用户>[,<用户>]…
[WITH GRANT OPTION];

-REVOKE语句 回收

REVOKE <权限> [,<权限>]…
ON <对象类型><对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]…[CASCADE|RESTRICT];

· 用户权限

-数据库对象

-操作类型

· 存取控制的对象

-数据库模式

模式

基本表

视图

索引

-数据

基本表和视图

属性列

4.2.4授权:授予与收回

· GRANT

-GRANT<权限>[,<权限>]…
ON <对象类型><对象名>[,<对象类型><对象名>]…
TO <用户>[,<用户>]…
[WITH GRANT OPTION];

-WITH GRANT OPTION 获得权限的用户可再把权限授予其他用户

-不能循环授权

· REVOKE

-REVOKE <权限>[,<权限>]…
ON <对象类型><对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]…[CASCADE|RESTRICT];

· 创建数据库模式的权限

-CREATE USER [WITH][DBA|RESOURCE|CONNECT];

-说明

只有系统的超级用户才有权创建一个新的数据库用户

新建的数据库用户只有三种权限CONNECT、RESOURCE和DBA

CREATE USER命令中如果没有指定创建的新用户的权限,默认该用户拥有CONNECT权限

拥有RESOURCE权限的用户能创建基本表和视图但不能创建模式和新用户

拥有DBA权限的用户是系统的超级用户

4.2.5数据库角色

· 定义

-数据库角色是被命名的一组与数据库操作相关的权限,角色是权限 的集合

· 角色的创建

-CREATE ROLE <角色名>

· 给角色授权

-GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…

· 将一个角色授予其他的角色或用户

-GRANT <角色1>[,<角色2>]…
TO <角色3>[,<角色1>]…
[WITH ADMIN OPTION]

· 角色权限的收回

-REVOKE <权限>[,<权限>]…
ON <对象类型><对象名>
FROM <角色>[,<角色>]…

4.2.6强制存取控制方法

· 主体 系统中活动的实体,包括实体用户和和用户的各进程

· 客体 系统中的被动实体,受主主体操纵

· 敏感度标记

-绝密(Top Secret,TS)

-机密(Secret,S)

-可信(Confidential,C)

-公开(Public,P)

· 许可证级别 主体的敏感度标记

· 密级 客体的敏感度标记

· 存取规则

-主体许可证级别大于或等于客体的密级,才能读相应客体

-主体许可证级别小于或等于客体的密级,才能写相应客体

4.3 视图控制

· 定义

-为不同的用户定义不同的视图,把数据对象限制在一定范围之内

4.4 审计

· 定义

-审计把用户对数据库的所有操作自动记录在审计日志(auditlog)中, 审计员可以利用审计日记监控数据库中的各种行为,重现一系列事件, 找出非法存取数据的人、事件和内容等

· 分类

-用户级审计 任何用户可以设置

-系统级审计 数据库管理员设置

· 审计事件

-服务器事件 审计数据库服务器发生的事件,包括服务器的启动、停止 和配置文件的重新加载

-系统权限 对系统拥有的结构或模式对象进行操作的审计

-语句事件 对SQL、DCL语句的审计

-模式对象事件 对特定模式对象上进行的SELECT或DML操作的审计

· 审计功能

-基本功能 提供多种审计查阅方式

-提供多套审计规则

-提供审计分析和报表功能

-审计日记管理功能

-系统提供查询审计设置及审计记录信息的专门视图

· AUDIT语句和NOAUDIT语句

-AUDIT 设置审计功能

-NOAUDIT 取消审计功能

4.5 数据加密

· 基本思想

-根据一定的算法将原始数据明文变换为不可直接识别的格式密文

· 存储加密

-透明存储加密 内核级的加密保护方式,对用户透明,写加密读解密

-非透明存储加密 通过多个加密函数实现

· 传输加密

-链路加密 报头和报文均加密

-端到端加密 报文加密,报头不加密,发送端加密,接收端解密

-安全套接层协议(Security Socket Layer,SSL)

确认通信双方端点的可靠性 数字证书

协商加密算法和密钥 公钥基础设施(Public Key Infrastructure, PKI)

可信数据传输

①利用会话密钥加密和消息摘要计算

②利用会话密钥解密和摘要计算

4.6其他安全性保护

· 推理控制(inference control)

· 隐蔽信道(convert channal)

· 数据隐私(data privacy) 控制不愿被他人知道或他们不便知道的个人 数据的能力

第五章数据库完整性

· 完整性

-数据的正确性 数据是符合现实语义、反映当前实际状况的

-数据的相容性 数据库中同一对象在不同关系表中的数据是符合逻辑的

· 维护完整性须实现的功能

-提供定义完整性约束条件的机制

-提供完整性检查的方法

-进行违约处理

5.1实体完整性

5.1.1定义实体完整性

· 在CREATE TABLE 中用PRIMARY KEY定义

· 单属性码

-列级约束条件

-表级约束条件

· 多属性码

-表级属性码

5.1.2实体完整性检查和违约处理

· 实体完整性检查

-检查主码值是否唯一,不唯一则拒绝操作

-检查主码的各个属性是否为空,只要有一个为空则拒绝操作

5.2 参照完整性

5.2.1定义参照完整性

· 在CREATE TABLE中用FOREIGN KEY定义那些列为外码,用REFERENCES 短语指明这些外码参照哪些主码

5.2.2参照完整性检查和违约处理

· 参照完整性检查

-参照表插入元组可能破坏被参照表的参照完整性,则拒绝操作

-参照表修改外码值可能破坏被参照表的参照完整性,则拒绝操作

-被参照表删除元组可能破坏参照表的参照完整性,则拒绝操作或级 联删除或设置为空值

-被参照表修改主码值可能破坏参照表的参照完整性,则拒绝操作或 级联修改或设置为空值

5.3 用户定义的完整性

5.3.1属性上的约束条件

· 属性上约束条件的定义 在创建表时可以给属性定义约束条件

-列值非空(NOT NULL)

-列值唯一(UNIQUE)

-检查列值是否满足一个条件表达式(CHECK短语)

· 属性上约束条件的检查和违约处理

5.3.2元组上的约束条件

· 元组上约束条件的定义 在创建表时用CHECK短语定义元组上的约束 条件

· 元组上约束条件的检查和违约处理

5.4 完整性约束名子句

· 完整性约束命名子句 用来对完整性约束条件命名

-CONSTRAINT <完整性约束条件名><完整性约束条件>

· 修改表中的完整性限制 可以使用ALTER TABLE语句修改

5.5 域中的完整性限制

5.6 断言

· 定义

-通过声明性断言来指定更具一般性的约束,可以定义涉及多个表或聚集 操作的比较复杂的完整性约束

-任何对断言中所涉及的操作都会触发关系数据库管理系统对断言的检 查,使断言不为真的操作都会被拒绝

· 创建断言的语句格式

-CREATE ASSERTION <断言名><CHECK 子句>;

· 删除断言的语句格式

-DROP ASSERTION <断言名>;

5.7 触发器

· 定义

-触发器是用户定义在关系表上的一类由事件驱动的特殊过程

5.7.1定义触发器

· 建立触发器

-CREATE TRIGGER<触发器名>
{BEFORE|AFTER}<出发事件> ON <表名>
REFERENCING NEW|OLD ROW AS<变量>
FOR EACH{ROW|STATEMENT}
[WHEN<触发条件>]<触发动作体>

· 说明

-只有表的拥有者才可以在表上创建触发器,触发器数量有上限

-触发器名可以包含模式名也可以不包含模式名

-触发器只能定义在基本表,不能定义在视图上

-触发事件可以是插入、删除和更新,也是以是事件的组合

-触发器按照所触发动作的间隔尺寸可以分为行级触发器(FOR EACH ROW)和语句触发器(FOR EACH STATEMENT)

-触发器被激活时,只有当触发条件为真时触发动作才执行,否则不 执行

-触发动作体既可以是一个匿名PL/SQL过程块,也可以是对已创建 存储过程的调用

-如果触发动作体执行失败,激活触发器的事件就会终止执行

5.7.2激活触发器

· 触发器激活的顺序

-执行该表上的BEFORE触发器

-激活触发器的SQL语句

-执行该表上的AFTER触发器

-相同类型触发器则遵循‘谁先创建谁先执行’

5.7.3删除触发器

· 删除触发器

-DROP TRIGGER <触发器名> ON <表名>;

第六章关系数据库理论

6.1 问题的提出

· 第一范式(1NF)

-关系中每一个分量必须是不可分的数据项

· 数据依赖

-一个关系内部属性与属性间的一种约束关系

-函数依赖(Functional Dependency,FD)

-多值依赖(Multi-Valued Dependency,MVD)

· 关系模式可能会存在的问题

-数据冗余

-更新异常(update anomalies)

-插入异常(insertion anomalies)

-删除异常(deletion anomalies)

6.2 规范化

6.2.1函数依赖

· 定义

-设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R (U)的任意一个可能的关系r,r中不可能存在两个元组在X上的 属性值相等而在Y上的属性值不等,则称X函数确定Y或Y函数依 赖X,记作X->Y

· 非平凡的函数依赖

-Y函数依赖于X,但X不包含Y

· 平凡的函数依赖

-Y函数依赖于X,且X包含Y

· 决定因素

-Y函数依赖于X,X则为决定因素

· 完全函数依赖

-如果Y函数依赖于X,Y不函数依赖于X的任何一个真子集

· 部分函数依赖

-非完全函数依赖则为部分函数依赖

· 传递函数依赖

-Y非平凡函数依赖于X,X不函数依赖于Y,Z平凡函数依赖于Y, 则Z传递函数依赖于X

6.2.2码

· 候选码 关系中的所有属性完全函数依赖于关系中的某个或某组属性, 则该属性或该组属性为该关系的候选码

· 超码 关系中的所有属性函数依赖于关系中的某个或某组属性,那么 该属性或该组属性为该关系的超码

· 主码 从候选码中选择一个成为主码

· 主属性 包含在任何一个候选码中的属性称为主属性

· 非主属性 不包含在任何候选码中的属性为非主属性

· 全码 整个属性组是码

6.2.3范式

· 定义

-关系数据库中的关系需要满足不同程度的要求

· 规范化 一个低一级的范式的关系模式通过模式分解可以转换为若干 个高一级的关系模式的集合的过程

6.2.4 2NF

· 定义

-若关系模式符合第一范式,且每一个非主属性完全函数依赖于任何 一个候选码,则该关系模式符合第二范式(2NF)

6.2.5 3NF

· 定义

-若关系模式符合第一范式,且不存在传递的函数依赖关系,则该关 系模式符合第三范式(3NF)

6.2.6 BCNF

· 定义

-若关系模式符合第一范式,且每个决定因素都包含码,则该关系模 式符合BCNF范式

6.2.7多值依赖

6.2.8 4NF

6.2.9规范化小结

6.3 数据依赖的公理系统

6.4 模式的分解

6.4.1模式分解的三个定义

6.4.2分解的无损连接性和保持函数依赖性

6.4.3模式分解算法

第七章数据库设计

7.1 数据库设计概述

7.1.1数据库设计的特点

· 数据库设计

-数据库设计是指对于一个给定的应用环境,构造(设计)优化的数 据库逻辑模式和物理结构,并据此建立数据库及应用系统,使之能 够有效地存储和管理数据,满足各种用户的应用需求,包括信息管 理要求和数据操作要求

-信息管理要求 数据库应该存储和管理的数据对象

-数据操作要求 对数据对象需要进行的操作

· 数据库建设的基本规律

-三分技术,七分管理,十二分基础数据

· 结构(数据)设计和行为(处理)设计相结合

7.1.2数据库设计方法

· 知识与技术要求

-计算机基础知识

-软件工程的原理和方法

-程序设计的方法和技巧

-数据库的基本知识

-数据库设计技术

-应用领域的知识

· 手工与经验相结合

· 新奥尔良方法

· E-R模式设计方法

· 3NF设计方法

· 面向对象的数据库设计方法

· 统一建模语言(Unified Model Language,UML)方法

7.1.3数据库设计的基本步骤

· 需求分析

· 概念结构设计

· 逻辑结构设计

· 物理结构设计

· 数据库实施

· 数据库运行和维护

7.1.4数据库设计过程中的各级模式

· 应用要求

· 概念模式

· 逻辑模式

· 内模式

7.2 需求分析

7.2.1需求分析的任务

· 任务

-通过详细调查现实世界需要处理的对象,充分了解原系统的工作概 况,明确用户的各种需求,然后在此基础上确定系统的功能,还要 充分考虑今后的扩充和改变

· 获取用户对数据库的要求

-信息要求 用户需要从数据库中获得的信息的内容和性质

-处理要求 用户要完成的数据处理功能,对处理性能的要求

-安全性与完整性要求

7.2.2需求分析的方法

· 调查用户需求的步骤

-调查组织机构情况

-调查各部门业务活动情况

-协助用户明确对新系统的各种要求

-确定新系统的边界

· 调查方法

-跟班作业

-开调查会

-请专人介绍

-询问

-设计调查表请用户填写

-查阅记录

· 分析方法

-结构化分析(Structured Analysis,SA)

7.2.3数据字典

· 数据项 不可再分的数据单位

-数据项名

-数据项含义说明

-别名

-数据类型

-长度

-取值范围

-取值含义

-与其他数据项的逻辑关系

-数据项之间的联系

· 数据结构 数据之间的组合关系

-数据结构名

-含义说明

-组成 数据项或数据结构

· 数据流 数据结构在系统内传输的路径

-数据流名

-说明

-数据流来源 数据流来自哪个过程

-数据流去向 数据流将流到哪个过程

-组成 数据结构

-平均流量

-高峰期流量

· 数据存储 数据结构停留或保存的地方,数据流的来源和去向之一

-数据存储名

-数据量

-存取频度

-存取方式

· 处理过程 具体处理逻辑一般用判定表或判定树描述

-处理过程名

-说明

-输入 数据流

-输出 数据流

-处理 简要说明

7.3 概念结构设计

· 将分析得到的用户需求抽象为信息结构

7.3.1概念模型

· 特点

-能真实、充分地反映现实世界,包括事务与事务之间的联系,能满 足用户对数据的处理要求

-易于理解

-易于更改

-易于向关网状、层次等各种数据模式转换

7.3.2 E-R模型

· 实体之间的联系

-两个实体型之间的联系

一对一联系(1:1)

一对多联系(1:n)

多对多联系(m:n)

-两个以上的实体型之间的联系

一对一联系(1:1)

一对多联系(1:n)

多对多联系(m:n)

-单个实体型内的联系

一对一联系(1:1)

一对多联系(1:n)

多对多联系(m:n)

· E-R图

-实体型用矩形表示

-属性用椭圆形表示

-联系用菱形表示

7.3.3扩展的E-R模型

·ISA联系

-某实体型是某个实体型的子类型,这种父类-子类联系称为ISA 联系

-ISA联系用三角形表示

-子类继承父类所有属性且可以拥有自己的属性

-实体的分类方法

分类属性 根据分类属性把父实体型中的实体分派到子实体型 中(三角形右边添加分类属性)

不相交约束和可重叠约束

①不相交约束 父类中的一个实体不能同时属于多个子类中 的实体集(三角形内加×号)

②可重叠约束 父类中的一个实体能同时属于多个子类中的 实体集(三角形内不加×号)

完备性约束

①父类中的一个实体必须是某一个子类中实体 完全特化 (父类到子类用双线连接)

②部分特化 (父类到子类用单线连接)

· 基数约束

-实体之间联系的细化

-说明参与联系的实体型中的任何一个实体可以在联系中出现的 最少次数和最多次数(min…max)

· Part-of联系(部分联系)

-某个实体型是另外一个实体型的一部分

-非独占的Part-of联系

整体实体被破坏,部分实体仍然可以存在

-独占的Part-of联系

整体实体被破坏,部分实体不能存在

-弱实体型(双矩形)

一个实体型的存在依赖于其他实体型的存在

-强实体型

一个实体型的存在不依赖于其他实体型的存在

7.3.4 UML

7.3.5概念结构设计

· 概念结构设计

-对需求分析阶段收集到的数据进行分类、组织,确定实体、实体的 属性、实体之间的联系类型,形成E-R图,区分属性和实体

· 实体与属性的划分原则

-为了简化E-R图的处置,现实世界中能作为属性对待的尽量作为属 性对待

-作为属性,不能再具有需要描述的性质

-属性不能与其他实体具有联系

· E-R图的集成

-自顶向下地进行需求分析,自底向上地设计概念结构
(即首先设计各子系统的分E-R图然后再将它们集成起来)

-合并 解决各分E-R图之间的冲突

冲突 各分E-R图中不一致的地方

属性冲突

①属性域冲突 属性值的类型、取值范围或取值集合不同

②属性取值单位冲突 (你用米我用厘米)

命名冲突

①同名异义

②异名同义

结构冲突

①同一对象在不同应用中具有不同的抽象

②同一实体在不同子系统中E-R图中所包含的属性个数和属 性排列次序不完全相同

③实体间的联系在不同的E-R图中为不同的类型

-修改和重构 消除不必要的冗余

冗余的数据 可由基本数据导出的数据

冗余的联系 可有其他联系导出的联系

分析方法消除冗余

①根据数据字典和数据流图,根据数据字典中关于数据项之 间逻辑关系的说明来消除冗余

规范化理论消除冗余

①确定分E-R图实体之间的数据以来

②求FL(函数依赖集)的最小覆盖GL,差集为D=FL-GL

7.4 逻辑结构设计

7.4.1 E-R图向关系模型的转换

· 问题

-如何将实体型和实体之间的联系转换为关系模式,如何确定这些关 系模式的属性和码

· 转换原则

-一个实体型转换为一个关系模式

-关系的属性就是实体的属性

-关系的码就是实体的码

·实体型之间的联系

-一对一联系可以转换为一个独立的关系模式,也可以与任意一端的 对应的关系模式合并

独立的关系模式 与该联系相连的各实体的码以及联系本身的 属性均转换为关系的属性

合并的关系模式 加上另一个关系模式的码和联系本身的属性

-一对多联系可以转换为一个独立的关系模式,也可以与多的一端对 应的关系模式合并

独立的关系模式 与该联系相连的各实体的码以及联系本身的 属性均转换为关系的属性,关系的码为多的 一端实体的码

-多对多联系可以转换为一个关系模式

与该联系相连的各实体的码以及联系本身的属性均转换为关 系的属性,各实体的码组成关系的码或码的一部分

-三个或三个以上的实体之间的一个多元联系可以转换为一个关系 模式

与该多元联系相连的各实体的码以及联系本身的属性均转换 为关系的属性,各实体的码组成关系的码或关系码的一部分

-具有相同码的关系模式可以合并

7.4.2数据模型的优化

· 数据模型的优化

-为了进一步提高数据库应用系统的性能,还应该根据应用需要适当 地修改、调整数据模型的结构

· 方法

-确定数据依赖

-对于各个关系模式之间的数据依赖进行极小化处理,消除冗余联系

-按照数据以来的理论对关系模式逐一进行分析,考察是否存在部分 函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于 第几范式

-根据需求分析阶段得到的处理要求分析对于这样的应用环境这些 模式是否合适,确定是否要对某些模式进行合并或分解

-对关系模式进行必要的分解,提高数据操作效率和存储空间的利用 率

水平分解 把基本关系的元组分为若干子集合,定义每个子集 合为一个子关系以提高效率

垂直分解 把关系模式的属性分解为若干子集合,形成若干子 关系模式

7.4.3设计用户子模式

· 定义用户外模式

-使用更符合用户习惯的别名

-可以对不同级别的用户定义不同的视图以保证系统的安全性

-简化用户对系统的使用

7.5 物理结构设计

· 物理结构

-数据库在物理设备上的存储结构与存储方法

· 物理结构设计

-为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程

7.5.1数据库物理设计的内容和方法

· 需要得到的信息

-数据库查询事务

查询的关系

查询条件所涉及的属性

连接条件所涉及的属性

查询的投影属性

-数据库更新事务

被更新的关系

每个关系上的更新操作

修改操作要改变的属性值

· 主要内容

-为关系模式选择存取方法

-设计关系、索引等数据库文件的物理存储结构

7.5.2关系模式存取方法选择

· 索引方法

-B+树索引存取方法

属性经常出现在查询条件中,可以在该属性上建立索引

属性经常作为最大值和最小值等聚集函数的参数,可以在该属 性上建立索引

属性经常在连接操作的连接条件中出现,可以在该属性上建立 索引

-hash索引存取方法

一个关系的大小可预知,且不变

关系的大小动态改变,但数据库管理系统提供了动态hash存 取方法

-聚簇存取方法

聚簇 为了提高某个属性(或属性组)的查询速度,把这个或这 些属性上具有相同值的元组集中存放在连续的物理块

聚簇码 被聚簇的属性

候选聚簇

①对经常在一起进行连接操作的关系可以建立聚簇

②关系中的一组属性经常出现在在相等比较条件中

③属性上的值重复率很高

检查候选聚簇,删除不必要的关系

①删除经常进行全表扫描的关系

②从聚簇中删除更新操作远多于连接操作的关系

③不同聚簇中可能包含相同的关系,一个关系可以在某一个 聚簇中,但不能同时加入多个聚簇

7.5.3确定数据库的存储结构

· 确定数据的存放位置

· 确定系统配置

-系统配置变量

数据库对象数

内存分配参数

缓冲区分配参数

存储分配参数

物理块的大小

物理块填装因子

时间片大小

数据库大小

锁的数目

-存储分配参数

7.5.4评价物理结构

· 时间效率

· 空间效率

· 维护代价

· 各种用户要求

7.6 数据库的实施和维护

7.6.1数据的载入和应用程序的调试

7.6.2数据库的运行

7.6.3数据库的运行和维护

· 数据库的转储和恢复

· 数据库的安全性、完整性空值

· 数据库性能的监督、分析和改造

· 数据库的重组织与重改造

第八章数据库编程

8.1 嵌入式SQL

8.1.1嵌入式SQL的处理过程

· 嵌入式SQL

-将SQL语句嵌入程序设计语言中

-主语言(宿主语言) 被嵌入的程序设计语言

-对嵌入式SQL采用预编译处理方法

预处理程序对源程序进行扫描识别出SQL语句

将SQL语句转换成主语言调用语句

-嵌入式SQL语句前缀

C语言 EXEC SQL<SQL语句>;

java #SQL{<SQL语句>};

8.1.2嵌入式SQL语句与主语言之间的通信

· 数据库工作单位与源程序工作单位之间的通信

-向主语言传递SQL语句的执行状态信息,使主语言能够据次信息控 制程序流程,主要用SQL通信区(SQL Communication Area,SQLCA) 实现

-主语言向SQL语句提供参数,主要用主变量实现

-将SQL语句查询数据库结果交主语言处理,主要用主变量和游标实 现

· SQL通信区

· 主变量

-定义 SQL语句中使用的主语言程序变量

-输入主变量

-输出主变量

-指示变量 用来指示所指主变量的值或条件

· 游标

-定义 系统为用户开设的一个数据缓冲区,存放SQL语句的执行结 果

· 建立和关闭数据库连接

8.1.3不用游标的SQL语句

· 查询结果为单记录的SELECT语句

· 非CURRENT形式的增删改语句

8.1.4使用游标的SQL语句

· 查询结果为多条记录的SELECT语句

-说明游标

EXEC SQL DECLARE <游标名> CURSOR FOR <SELECT 语句>;

-打开游标

EXEC SQL OPEN <游标名>;

-推进游标指针并取当前记录

EXEC SQL FETCH <游标名>
INTO <主变量>[<指示变量>][,<主变量>[<指示变量>]]…;

-关闭游标

EXEC SQL CLOSE <游标名>;

· CURRENT形式的UPDATE和DELETE语句

8.1.5动态SQL

· 使用SQL语句主变量

-程序主变量包含的内容是SQL语句的内容,而不是原来保存数据的 输入或输出变量,这样的变量为SQL语句主变量

· 动态参数

-动态参数是SQL语句中的可变元素,使用符号(?)表示该位置的 数据在运行时设定

-使用动态参数的步骤

声明SQL语句主变量,值包含动态参数(?)

准备SQL语句(PREPARE)

· 执行准备好的语句(EXECUTE)

-EXECUTE将SQL语句中分析出的动态参数和主变量或数据常量绑定, 作为语句的输入或输出变量

8.2 过程化SQL

8.2.1过程化SQL的块结构

· 基本结构是块

· 每一个块完成一个逻辑操作

8.2.2变量和常量的定义

· 变量定义

-变量名 数据类型[[NOT NULL]:=初值表达式]

-变量名 数据类型[[NOT NULL]初值表达式]

· 常量的定义

-常量名 数据类型 CONSTANT:=常量表达式

· 赋值语句

-变量名:=表达式

8.2.3流量控制

· 条件控制语句

-IF语句

-IF-THEN语句

-嵌套的IF语句

· 循环控制语句

-最简单的循环语句 LOOP

-WHILE-LOOP循环语句

-FOR-LOOP循环语句

· 错误处理

8.3 存储过程和函数

· 匿名块

-每次执行都进行编译,不存储到数据库中,也不能被调用

· 命名块

-过程和函数都是命名块

-编译后保存在数据库中,称为持久性存储模块(Persistent Stored Module,PSM)

-可以被反复调用,运行速度较快

8.3.1存储过程

· 定义

-由过程化SQL语句书写的过程,经编译和优化后存储在数据库服务 器中

· 存储过程的优点

-由于存储过程不像解释执行的SQL语句那样在提出操作请求时才进 行语法分析和优化工作,因而运行效率高

-存储过程降低了客户机和服务器之间的通信量

-方便实施企业规则

· 存储过程的用户接口

-创建存储过程

CREATE OR REPLACE PROCEDURE 过程名([参数1,参数2…])
AS <过程化SQL块>;

-执行存储过程

CALL/PERFORM PROCEDURE 过程名([参数1,参数2,…]);

-修改存储过程

ALTER PROCEDURE 过程名1 RENAME TO 过程名2;

ALTER PROCEDURE 过程名 COMPILE;

-删除存储过程

DROP PROCEDURE 过程名();

8.3.2函数

· 函数的定义

-CREATE OR REPLACE FUNCTION 函数名 ([参数1,参数2,…]) RETURNS <类型>
AS <过程化SQL块>;

· 函数的执行语句

-CALL/SELECT 函数名([参数1,参数2,…]);

· 修改函数

-ALTER FUNCTION 过程名1 RENAME TO 过程名2;

-ALTER FUNCTION 函数名 COMPILE;

8.3.3过程化SQL中的游标

8.4 ODBC编程

8.4.1 ODBC概述

· 数据库系统‘开放’,能够实现‘数据库互连’

8.4.2 ODBC工作原理概述

· 用户应用程序

-ODBC应用程序内容

请求连接数据库

向数据源发送SQL语句

为SQL语句执行结果分配存储空间,定义所读取的数据格式

获取数据库操作结果或处理错误

进行数据处理并向用户提交处理结果

请求事务的提交和回滚操作

断开与数据源的连接

· ODBC驱动程序管理器

-装载ODBC驱动程序

-选择和连接正确的而驱动程序

-管理数据源

-检查ODBC调用参数的合法性及记录ODBC函数的调用

-建立、配置或删除数据源

· 数据库驱动程序

-提供应用系统与数据库平台的独立性

-单束 数据源和应用程序在同一台机器上

-多束 支持客户-服务器、客户机-应用服务器/数据库服务器等网络 环境下的数据访问

· ODBC 数据源管理

-ODBC给每个被访问的数据源指定唯一的数据源名(Data Source Name,DSN),并映射到所有必要的、用来存取数据的低层软件,在 连接中用数据源名来代表用户名、服务器名、所连接的数据库名等

8.4.3 ODBC API基础

· 一致性

-API一致性 包含核心机、扩展1级、扩展2级

-语法一致性 包含最低限度SQL语法级、核心SQL语法级、扩展SQL 语法级

· 函数概述

-分配和释放环境句柄、连接句柄、语句句柄

-连接函数

-与信息相关的函数

-事务处理函数

-执行相关函数

-编目函数

· 句柄及其属性

-句柄代是32位整数值,代表一个指针

-每个ODBC应用程序需要建立一个ODBC环境,分配一个环境句柄, 存取数据的全局性背景

-一个环境句柄可以建立多个连接句柄,每一个连接句柄实现与一个 数据源之间的连接

-在一个连接中可以建立多个语句句柄

-描述符句柄描述SQL语句的参数、结果集列的元数据集合

· 数据类型

-SQL数据类型

-C数据类型

-转换规则

SQL数据类型到SQL数据类型(数据源之间的转换)

SQL数据类型到C数据类型(应用程序变量传送到语句参数)

C数据类型到SQL数据类型(从结果集列中返回到应用程序)

C数据类型到C数据类型(应用程序变量之间转换)

8.4.4 ODBC的工作流程

· 配置数据源

-运行数据源管理工具来进行配置

-使用Driver Manager提供的ConfigDsn函数来增删改数据源

· 初始化环境

· 建立连接

· 分配语句句柄

· 执行SQL语句

· 结果集处理

· 终止处理

8.5 OLE DB

8.6 JDBC编程

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值