网络数据库基础
This presentation is the property of its rightful owner.
Sponsored Links
1 / 496

网络数据库基础 PowerPoint PPT Presentation


  • 110 Views
  • Uploaded on
  • Presentation posted in: General

网络数据库基础. 新华教育(北京)研究院组编. 教师介绍. 姓名 : 主授课程 : 职级 :. 课程介绍. 本课程从数据的基本理论、基础知识出发,全面地介绍了数据库的分析、设计过程以及开发应用等,并通过丰富的实例循序渐进地介绍了 SQL Server2000 的安装、使用、管理和维护等各个方面的知识,具有较强的实用性。学员通过学习此书能够掌握数据库的基本理论知识,能熟练地掌握 SQL Server2000 的基本应用方法和技巧,并能开发简单的数据库应用程序。. 具体学时安排. 第 1 章 数据库基本概念 (3 课时 )

Download Presentation

网络数据库基础

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


4308267

网络数据库基础

新华教育(北京)研究院组编


4308267

教师介绍

  • 姓名:

  • 主授课程:

  • 职级:


4308267

课程介绍

  • 本课程从数据的基本理论、基础知识出发,全面地介绍了数据库的分析、设计过程以及开发应用等,并通过丰富的实例循序渐进地介绍了SQL Server2000的安装、使用、管理和维护等各个方面的知识,具有较强的实用性。学员通过学习此书能够掌握数据库的基本理论知识,能熟练地掌握SQL Server2000的基本应用方法和技巧,并能开发简单的数据库应用程序。


4308267

具体学时安排

  • 第1章 数据库基本概念(3课时)

  • 第2章 关系数据库基础理论 ( 3课时)

  • 第3章 SQL Server数据库简介(3课时)

  • 第4章 SQL概述 (3课时)

  • 第5章 事务处理、并发控制与恢复技术( 10课时)

  • 第6章 数据库的安全性 ( 10课时)

  • 第7章 实现数据完整性 ( 10课时)

  • 第8章 SQL Server数据库系统管理 ( 15课时)

  • 第9章 数据库技术的发展 ( 3课时)


4308267

授课方法介绍

  • 所见即所得

  • 先行后知

  • 先知后行


4308267

第1章 数据库基本概念


4308267

本章目标

本章结束时,学员能够:

  • 了解术语:数据(data)、数据库(Database)、数据库管理系统(DBMS)、数据库系统(DBS)

  • 了解数据库发展

  • 熟悉数据模型概念及分类

  • 掌握关系模型的概念

  • 了解数据库体系结构

  • 掌握三级模式概念和两级映象

  • 了解数据库系统用户


4308267

1.1 数据库系统概述

  • 数据库是数据管理的最新技术,是计算机科学的重要分支。

  • 常用术语

    • 数据

    • 数据库

    • 数据库管理系统

    • 数据库系统

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

  • 数据库系统的特点


1 1 1

1.1.1数据库的地位

支撑当代计算机应用最基本的四大支柱:

  • 操作系统

  • 网络技术

  • 计算机语言

  • 数据库


1 1 11

1.1.1数据库的地位(续)

  • 数据库技术产生于六十年代末,是数据管理的最新技术,是计算机科学的重要分支

  • 数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的渗透

  • 数据库的建设规模、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志


1 1 2

1.1.2数 据

  • 数据:

    数据(Data)是描述事物的符号记录。

  • 数据的表示形式:

    文字、图形、图像、声音等。


1 1 3

1.1.3数 据 库

  • 数据库:

    数据库(DataBase, 简称DB)是有组织有结构存储在计算机内部的可共享的数据集合。


1 1 4

1.1.4数据库管理系统

  • 数据库管理系统:

    数据库管理系统(DataBase Management System,简称DBMS)是一类位于用户与操作系统之间,帮助用户有效地组织和存储数据、高效获取有用信息的一层计算机系统软件。

  • 用途

    科学地组织和存储数据、高效地获取和维护数据


1 1 41

1.1.4数据库管理系统(续)

  • 主要功能:

    - 数据定义-----DDL

    - 数据操纵-----DML

    - 数据控制-----DCL


1 1 42

1.1.4数据库管理系统(续)

当前主流的数据库管理系统:

  • 大型数据库管理系统:

    oracle,db2,Sybase,sql server

  • 中小型数据库:

    access,foxpro,dbase,mysql


1 1 5

用户

用户

用户

应用系统

应用开发工具

数据库管理系统

数据库管理员

操作系统

数据库

数据库系统(DBS)

1.1.5数据库系统

  • 数据库系统:

    数据库系统(DataBase System,简称DBS)是指在引入数据库后的计算机系统。

人员

软件

硬件平台及数据库


4308267

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

数据库技术是指对数据进行分类、组织、编码、存储、检索和维护的技术。

  • 人工管理阶段

  • 文件管理阶段

  • 数据库系统阶段


1 2 1 40 50

应用程序1

应用程序2

应用程序n

数据集1

数据集2

数据集n

人工管理阶段

1.2.1人工管理阶段(40年代中--50年代中)

特点:

  • 数据不保存

  • 应用程序管理数据,数据无结构 

  • 数据不共享

  • 数据不具有独立性


1 2 2 50 60

应用程序1

数据集1

文件

系统

应用程序2

数据集2

应用程序n

数据集n

文件系统管理阶段

1.2.2文件管理阶段(50年代末--60年代中)

特点:

  • 数据长期保存

  • 文件管理数据

  • 共享性差

  • 独立性差


1 2 2

劳资科

学号

姓名

系别

补贴

房产科

学号

姓名

性别

系别

住址

学籍科

学号

姓名

系别

学分

学位

人事科

学号

姓名

性别

系别

年龄

学位

出身

1.2.2文件管理阶段(续)


1 2 3 60

应用程序1

数据库

管理系统

应用程序2

应用程序n

数据库系统阶段

1.2.3数据库系统阶段(60年代末以来)

特点:

  • 数据结构化

  • 数据的共享性高,冗余度低,易扩充

  • 数据独立性高

  • 数据由DBMS统一管理和控制


1 2 3

1.2.3数据库系统阶段(续)

  • 数据结构化:

    面向全组织,具有整体数据的结构化

    不仅描述数据本身,而且描述数据之间的联系

    数据最小存取单位是数据项(数据项组成数据记录)


4308267

人事科

劳资科

系别

年龄

补贴

学位

学号

姓名

住址

学分

学籍科

性别

出身

房产科

数据库系统的特点


1 2 31

应用程序1

数据库

应用程序2

DBMS

1.2.3数据库系统阶段(续)

数据的共享性高、冗余度低、易扩充


1 2 32

1.2.3数据库系统阶段(续)

数据由DBMS统一管理和控制:

  • 数据的安全性(Security)保护

  • 数据的完整性(Integrity)检查

  • 并发(Concurrency)控制

  • 数据库恢复(Recovery)


4308267

1.3数据模型

  • 概念数据模型

    - 信息世界的基本概念

    - 实体-联系模型(E-R模型)

  • 结构数据模型

    - 层次模型

    - 网状模型

    - 关系模型

    - 面向对象模型


4308267

应用

现实世界

概念数据模型

信息世界

结构数据模型

计算机世界

1.3 数据模型(续)

数据模型

是数据库系统中用于提供信息表示和操作手段的形式构架

概念模型是现实世界到信息世界的第一层抽象


1 3 1

1.3.1概念数据模型

  • 历史

    • E-R模型:Entity-Relationship Model

    • 1976年,P.P.S.Chen提出E-R模型,用E-R图来描述概念模型

  • 观点

    • 世界是由一组称作实体的基本对象和这些对象之间的联系构成的


1 3 1 1

1.3.1.1信息世界的基本概念

  • 实体(Entity)

    • 客观存在并可相互区分的事物叫实体

    • 如学生张三、工人李四、计算机系、数据库概论

  • 属性(Attribute)

    • 实体所具有的某一特性

    • 一个实体可以由若干个属性来刻画

    • 例如,学生可由学号、姓名、年龄、系等组成

  • 域(Domain)

    • 属性的取值范围

    • 例如,性别的域为(男、女),月份的域为1到12的整数


1 3 1 11

1.3.1.1信息世界的基本概念(续)

  • 实体型(Entity Type)

    • 实体名与其属性名集合共同构成实体型

    • 例,学生(学号、姓名、年龄、性别、系、年级)

    • 注意实体型与实体(值)之间的区别,后者是前者的一个特例

    • 如(9808100,王平,21,男,计算机系,2)是一个实体

  • 实体集(Entity Set)

    • 同型实体的集合称为实体集

    • 如全体学生


1 3 1 12

1.3.1.1信息世界的基本概念(续)

  • 联系(Relationship):

    • 现实世界中事物内部以及事物之间的联系在信息世界

      中反映为实体内部的联系和实体之间的联系

    • 如学生与老师间的授课关系

    • 联系也可以有属性,如学生与课程之间有选课联系,每个选课联系都有一个成绩作为其属性

  • 类型:

    • 一对一联系

    • 一对多联系

    • 多对多联系


1 3 1 13

1.3.1 .1信息世界的基本概念(续)

  • 码(Key)

    • 唯一标识实体的属性集称为码

    • 如学号是学生实体的码

    • 通讯录(姓名,邮编,地址,电话,Email,BP)


1 3 1 2

用椭圆表示实体的属性

学生选修课程E-R图

姓名

学号

系别

课程名

先修课

学分

选修

m

n

学生

课程

用无向边把实体与其属性连接起来

联系的

数量

将参与联系的实体用线段连接

成绩

用矩形表示实体集,在框内写上实体名

用菱形表示实体间的联系

1.3.1.2基本E-R图要点


1 3 1 21

确定存储哪些数据,建立哪些应用,常用的操作及对象有哪些等

需求分析

ER模型

对需求分析所得到数据的更高层的抽象描述

概念数据库设计

将概念模型所描述的数据映射为某个特定的DBMS模式数据

逻辑数据库设计

物理数据库设计

1.3.1.2数据库设计过程


1 3 2

1.3.2 结构数据模型

  • 层次模型

  • 网状模型

  • 关系模型

  • 面向对象模型


1 3 2 1

R1

根结点

R2

R3

叶结点

兄弟结点

R4

R5

兄弟结点

叶结点

层次模型示例

1.3.2.1 层次模型

  • 层次模型:

    用树型(层次)结构表示实体类型以及实体之间联系的模型是层次模型。

1. 有且只有一个结点没有双亲结点,这个结点称为根 结点

2. 根以外的其它结点有且只有一个双亲结点

叶结点


1 3 2 2

R1

R2

L3

L2

L1

R3

L4

L5

R4

R5

网状模型示例

1.3.2.2 网状模型

  • 网状模型:

    用网状结构表示实体类型及实体之间联系的数据模型称为网状模型。


1 3 2 3

学生登记表

关系模型示例

1.3.2.3关系模型

  • 关系模型:

    用关系(二维表格形式结构)来表示实体类型以及实体间联系的模型称为关系模型。

1970年美国IBM公司San Jose研究室的研究员E.F.Codd首次提出了数据库系统的关系模型


1 3 2 4

对象

状态:

属性集合

消息

行为:

操作方法集合

封装

对象示意图

1.3.2.4 对象模型

  • 对象模型:

    使用面向对象技术(Object-Oriented,简称OO)来表示信息世界的实体类型及实体之间联系的模型称为对象模型。


4308267

1.4 数据库系统结构

  • 本节内容:

    • 数据库系统结构

    • 模式的概念

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

    • 数据库的二级映象功能与数据独立性


4308267

1.4 数据库系统结构(续)

  • 数据库系统内部的模式结构

    • 从数据库管理系统角度看

  • 数据库系统外部的体系结构

    • 从数据库最终用户角度看


1 4 1

1.4.1 数据库系统外部的体系结构

  • 单用户结构

  • 主从式结构

  • 分布式结构

  • 客户/服务器结构

  • 浏览器/应用服务器/数据库服务器结构


1 4 1 1

1.4.1.1单用户数据库系统

  • 整个数据库系统(应用程序、DBMS、数据)装在一台计算机上,为一个用户独占,不同机器之间不能共享数据。

  • 早期的最简单的数据库系统


1 4 1 2

1.4.1.2 主从式结构的数据库系统

  • 一个主机带多个终端的多用户结构

    • 数据库系统,包括应用程序、DBMS、数据,都集中存放在主机上,所有处理任务都由主机来完成

    • 各个用户通过主机的终端并发地存取数据库,共享数据资源


1 4 1 21

1.4.1.2主从式结构的数据库系统(续)

终端

主机


1 4 1 22

1.4.1.2主从式结构的数据库系统(续)

  • 优点

    • 易于管理、控制与维护。

  • 缺点

    • 当终端用户数目增加到一定程度后,主机的任务会过分繁重,成为瓶颈,从而使系统性能下降。

    • 系统的可靠性依赖主机,当主机出现故障时,整个系统都不能使用。


1 4 1 3

1.4.1.3分布式结构的数据库系统

  • 数据库中的数据在逻辑上是一个整体,但物理地分布在计算机网络的不同结点上。

    • 网络中的每个结点都可以独立处理本地数据库中的数据,执行局部应用

    • 同时也可以同时存取和处理多个异地数据库中的数据,执行全局应用


1 4 1 31

1.4.1.3分布式结构的数据库系统(续)

  • 优点

    • 适应了地理上分散的公司、团体和组织对于数据库应用的需求。

  • 缺点

    • 数据的分布存放给数据的处理、管理与维护带来困难。

    • 当用户需要经常访问远程数据时,系统效率会明显地受到网络传输的制约。


1 4 1 4

1.4.1.4客户/服务器结构的数据库系统

  • 把DBMS功能和应用分开

    • 网络中某个(些)结点上的计算机专门用于执行DBMS功能,称为数据库服务器,简称服务器

    • 其他结点上的计算机安装DBMS的外围应用开发工具,用户的应用系统,称为客户机


1 4 1 41

1.4.1.4客户/服务器结构的数据库系统(续)

  • 集中的服务器结构

    一台数据库服务器,多台客户机

  • 分布的服务器结构

    • 在网络中有多台数据库服务器

    • 分布的服务器结构是客户/服务器与分布式数据库的结合


1 4 1 42

1.4.1.4客户/服务器结构的数据库系统(续)

优点:

  • 客户端的用户请求被传送到数据库服务器,数据库服务器进行处理后,只将结果返回给用户,从而显著减少了数据传输量

  • 数据库更加开放

    • 客户与服务器一般都能在多种不同的硬件和软件平台上运行

    • 可以使用不同厂商的数据库应用开发工具


1 4 1 43

1.4.1.4客户/服务器结构的数据库系统(续)

客户/服务器结构的缺点:

  • “胖客户”问题:

    • 系统安装复杂,工作量大。

    • 应用维护困难,难于保密,造成安全性差。

    • 相同的应用程序要重复安装在每一台客户机上,从系统总体来看,大大浪费了系统资源。

      系统规模达到数百数千台客户机,它们的硬件配置、操作系统又常常不同,要为每一个客户机安装应用程序和相应的工具模块,其安装维护代价便不可接受了。


1 4 1 44

1.4.1.4客户/服务器结构的数据库系统(续)

浏览器/应用服务器/数据库服务器结构:

  • 客户端:

    浏览器软件、用户界面

    浏览器的界面统一,广大用户容易掌握, 大大减少了培训时间与费用。

  • 服务器端分为两部分:

    • Web服务器、应用服务器

    • 数据库服务器等

      大大减少了系统开发和维护代价能够支持数万甚至更多的用户


1 4 1 5

1.4.1.5并行数据库系统

利用并行计算机系统提供的并行处理能力,通过并行地使用多个CPU和硬盘来提高处理速度和I/O速度,从而加速数据库的活动。


1 4 2

1.4.2数据库系统模式的概念

  • 模式(Schema):

    模式(Schema)是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。

    数据库的逻辑结构,是指在数据库中看到的部分如RDBMS中的表、索引等数据库的物理结构,指数据库的数据文件的存储

  • 实例(Instance):

    实例(Instance)是模式的一个具体值。


1 4 3

应用A

应用B

应用C

应用D

应用E

外模式1

外模式2

外模式3

外模式/模式映象

模式

模式/内模式映象

内模式

数据库

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

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


1 4 4

1.4.4数据库系统的二级映象功能与数据独立性

  • 两层映象:

    外模式 / 模式映象

    模式 / 内模式映象

  • 意义:

    这两层映象保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。


4308267

1.5数据库系统用户

数据表示

应用程序

最终用户

外模式

应用程序员

DBMS

模式

DBA

系统分析员

内模式

OS

DB


4308267

本章总结:

  • 数据库系统概述

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

  • 数据模型

    • 概念数据模型

    • 结构数据模型

  • 数据库系统结构

    • 数据库系统结构

    • 三级模式结构及二级映像

  • 数据库的用户


4308267

第2章 关系数据库


4308267

本章目标

本章结束时,学员能够:

  • 掌握关系模型的概念

  • 掌握数据结构的概念

  • 掌握关系完整性的描述

  • 了解关系操作


4308267

2.1关系模型概述

  • 数据模型:数据结构、完整性约束和操作

  • 关系模型

    • 关系模型的数据结构

    • 关系模型的完整性约束

    • 关系模型的数据操作和关系代数


4308267

2.2关系模型的数据结构

关系模型的结构示例:学生登记表

  • 基本概念:

  • 关系模式、元组与关系

  • 属性和值域、关键字(Key)或主码

  • 候选关键字、主关键字、非主属性

  • 外部关键字、主表与从表


4308267

关系名

学生

关系模式

(行定义)

关系

元组(行)

关系模型示例

2.2关系模型的数据结构(续)

  • 关系模式:

    一般表示形式: 关系名(属性1,属性2,…,属性n)

    如: 学生(学号,姓名,性别,年龄,学部号,原单位)

  • 元组与关系


4308267

属性(列)和属性名

学生登记表

值域(15<=年龄<=30)

关系模型示例

2.2关系模型的数据结构(续)

  • 属性和值域

  • 关键字(Key)或码


4308267

2.2关系模型的数据结构(续)

  • 候选关键字或候选码

    • 如果在一个关系中,存在多个属性(或属性组合)都能用来唯一标识该关系的元组,这些属性(或属性组合)都称为该关系的候选关键字或候选码

  • 主关键字或主码

  • 非主属性或非码属性


4308267

2.2关系模型的数据结构(续)

  • 外部关键字或外键

  • 主表与从表

主键

学生(主表)

外键

成绩(从表)

两表的关联


4308267

2.2关系模型的数据结构(续)

关系模型中对关系的限定:

  • 每一个关系仅有一种记录类型,即一种关系模式。

  • 每一个关系模式中属性的个数是固定的,并必须命名,在同一个关系模式中,属性必须是不同的。

  • 每一个属性是不可分的,也不允许出现重复属性。

  • 在关系中元组的顺序(即行序)是无关紧要的。

  • 在关系中列的顺序也是无关紧要的,即列的顺序可任意交换。

  • 关系中不允许出现重复元组。


4308267

2.3关系模型的数据完整性

  • 概念:

    关系模型的数据完整性是指数据库中数据的正确性和一致性。数据完整性由数据库完整性规则来维护。

  • 三类完整性规则:

    - 实体完整性规则

    - 参照完整性规则

    - 用户定义的完整性规则


4308267

2.3关系模型的数据完整性(续)

  • NULL空值

    • null表示“无意义”,当实体在某个属性上没有值时设为null。如通讯录(姓名,email,电话,BP),若某人没有email地址,则在email属性上取值为null

    • null表示“值未知”,即值存在,但目前没有获得该信息。如职工(姓名,部门,工种,身份证),如果目前不知道职工身份证号码,则设身份证值为null


2 3 1

2.3.1实体完整性规则

  • 实体完整性规则:这条规则要求关系中的元组在组成主键的属性上不能有空值。

  • 意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的

  • 例如:在关系“学生(学号,姓名,年龄,班级)”中,学号属性为主码,则要求学号不能取空值。


2 3 2

2.3.2参照完整性规则

  • 参照完整性规则:

    这条规则要求在相关联的两个表中,从表中不能引用主表不存在的元组。

    例如:

    从表:学生(学号,姓名,性别,专业号,年龄)

    主表:专业(专业号,专业名)


2 3 21

2.3.2参照完整性规则(续)

供应商关系S(主码是“供应商号”)

今要向关系P中插入新行,新行的值分别列出如下。哪些行能够插入?

A.(‘037’,‘绿’,null)

B.(null,‘黄’,‘T20’)

C.(‘201’,‘红’,‘T20’)

D.(‘105’,‘蓝’,‘B01’)

E.(‘101’,‘黄’,‘T11’)

零件关系P(主码是“零件号”,外码是“供应商号”)


2 3 3

2.3.3用户定义的完整性规则

  • 用户定义的完整性规则:

    这条规则是指用户根据应用环境的不同针对某一具体关系数据库定义的约束条件。

    这是针对某一具体数据的约束条件,由应用环境决定。它反映某一具体应用所涉及的数据必须满足的语义要求。


4308267

2.4关系模型的数据操作和关系代数

  • 传统的集合运算:

    并、交、差、广义笛卡尔积

  • 专门的关系运算:

    选择、投影、连接、除

  • 关系代数用到的运算符有:

    - 集合运算符:∪ (并)、 ∩(交) 、-(差) 、×(广义笛卡尔积)

    - 专门的关系运算符:σ(选择)、 π(投影)、 (连接)、÷(除)

    - 算术比较符: θ={> 、≥ 、< 、 ≤ 、=、≠}

    - 逻辑运算符: (非)、∧ (与)、 ∨(或)


2 4 1 1

R ∪S

S

R

R

S

R∪S = {t | t∈R∨t ∈S},t是元组变量。

2.4.1.1传统的集合运算 — 并


2 4 1 2

R ∩S

R

S

2.4.1.2传统的集合运算 — 交

R∪S = {t | t∈R ∧ t ∈S},t是元组变量。


2 4 1 3

2.4.1.3传统的集合运算 — 差

R-S

S

R

R-S = {t | t ∈ R ∧ t S}


2 4 1 4

R

S

R ×S

2.4.1.4传统的集合运算 — 广义笛卡尔积

R×S = {t | t= <tr,ts> ∧tr ∈R ∧ ts∈S}


2 4 2 1

2.4.2.1专门的关系运算 — 选择

在关系R中选择满足给定条件的元组(从行的角度)

F(R)={t | t  R , F(t) = ‘真’}

F是选择的条件,t  R, F(t)要么为真,要么为假

F的形式:由逻辑运算符连接算术表达式而成

逻辑表达式:,,

算术表达式:X  Y

X,Y是属性名、常量、或简单函数

是比较算符, {  ,  ,  ,  ,  , ≠}


2 4 2 11

Student

σSdept=‘IS’(Student)

2.4.2.1专门的关系运算 — 选择(续)

σ F(R) = {t | t∈R∧F (t) = ‘真’}


2 4 2 2

2.4.2.2专门的关系运算 — 投影

  • 定义

    • 从关系R中取若干列组成新的关系(从列的角度)

Student

πSdept(Student)

  • πA(R) = {t[A] | t∈R}


2 4 2 21

A

B

C

a

b

c

d

e

f

c

b

c

2.4.2.2专门的关系运算 —投影(续)

投影的结果中要去掉相同的行

R

B , C(R)


2 4 2 3

S = σiθ( r + j )(R×S)

R

S

R

2.4.2.3专门的关系运算 — 连接

  • 连接的形式表示:

R

S

说明:R中共有r列


2 4 2 31

2.4.2.3专门的关系运算 — 连接(续)

  • 两个关系R和S的等值连接表示为:

R

S

S

R

等值连接示例


2 4 2 32

R

S

R

S

自然连接示例

2.4.2.3专门的关系运算 — 连接(续)

  • 两个关系R和S的自然连接表示为:


2 4 2 33

P#

PN

SAL

P01

赵明

800

P02

钱广

700

P03

孙立

600

P04

李三

500

C#

C#

CN

P#

P#

PN

SAL

C#

CN

C01

C01

P01

物理

P01

赵明

800

C01

物理

C02

C02

P02

数学

P02

钱广

700

C02

数学

C02

C03

化学

P04

P04

李三

500

C02

数学

2.4.2.3专门的关系运算 — 连接:外连接

  • 例:列出老师的有关信息,包括姓名、工资、所教授的课程

    ∏P# ,PN , SAL , C# , CN((PROF) PC C)

问题:有关P03号职工的姓名和工资信息没有显示出来


2 4 2 34

2.4.2.3专门的关系运算 — 连接(续)

  • 外连接

    • 为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接

      外连接 = 自然连接 + 失配的元组

    • 外连接的形式:左外连接、右外连接、全外连接

      左外连接 = 自然连接 + 左侧表中失配的元组

      右外连接 = 自然连接 + 右侧表中失配的元组

      全外连接 = 自然连接 + 两侧表中失配的元组


2 4 2 35

P#

PN

SAL

P01

赵明

800

P02

钱广

700

P03

孙立

600

P04

李三

500

C#

C#

P#

CN

P#

PN

SAL

C#

CN

C01

C01

P01

物理

P01

赵明

800

C01

物理

C02

C02

P02

数学

P02

钱广

700

C02

数学

C03

C02

P04

化学

P04

李三

500

C02

数学

2.4.2.3专门的关系运算 — 连接(续)

所有老师的信息


2 4 2 36

P#

PN

SAL

P01

赵明

800

P02

钱广

700

P03

孙立

600

P04

李三

500

C#

C#

P#

CN

P#

PN

SAL

C#

CN

C01

C01

P01

物理

P01

赵明

800

C01

物理

C02

C02

P02

数学

P02

钱广

700

C02

数学

C03

C02

P04

化学

P04

李三

500

C02

数学

2.4.2.3专门的关系运算 — 连接(续)

所有课程的信息


2 4 2 37

P#

PN

SAL

P01

赵明

800

P02

钱广

700

P03

孙立

600

P04

李三

500

C#

C#

P#

CN

P#

PN

SAL

C#

CN

C01

C01

P01

物理

P01

赵明

800

C01

物理

C02

C02

P02

数学

P02

钱广

700

C02

数学

C03

C02

P04

化学

P04

李三

500

C02

数学

2.4.2.3专门的关系运算 — 连接(续)

所有老师和课程的信息


2 4 2 4

S

R÷S

R

2.4.2.4专门的关系运算 — 除

  • 除运算:给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y具有相同的域集。R与S的除运算得到一个新的关系P(X),P中每一个元组值对应R在Y上的象集Yx包含S在Y上投影的集合。记作: R÷S


2 4 2 41

2.4.2.4专门的关系运算 — 除(续)

1、设有一个学生课程关系 SC(Student-course)

查询至少选修1号课程和3号课程的学生号码。

2、首先建立一个临时课程关系K,临时关系的属性Cno包含1号课和3号课:

3、然后求:πSno, Cno(SC) ÷K

结果为:

“除”运算的一个实际应用


4308267

本章总结

  • 关系数据模型定义

  • 关系模型的数据结构

  • 关系模型的数据完整性

  • 关系模型的数据操作和关系代数


3 sql server

第3章 SQL Server 数据库简介


4308267

本章目标

本章结束时,学员能够:

  • 了解SQL SERVER数据库

  • 了解SQL SERVER2000的新特性

  • 掌握SQL SERVER2000的安装及升级

  • 了解SQL SERVER的工具集

  • 熟悉企业管理器的初步使用

  • 熟悉查询分析器的初步使用


3 1 sql server 2000

3.1 SQL Server 2000 简介

  • 1988年SQL Server的NT版本

  • 1993年SQL Server4.2

  • 1995年SQL Server6.0

  • 1996年SQL Server6.5

  • 1998 年SQL Server7.0

  • 2000年SQL Server 2000 测试版发布

  • 2001年SQL Server 2000 正式版发布


3 1 sql server 20001

3.1 SQL Server 2000 简介(续)

  • SQL Server 数据库管理系统的最新版本

  • 继承了SQL Server 7.0 版本的优点

  • 增加了许多更先进的功能

  • 使用方便、可伸缩性好与相关软件集成程度高

  • 可跨越各种Windows平台使用


3 1 sql server 20002

3.1 SQL Server 2000 简介(续)

  • 关系模型的数据库管理系统

  • 客户/服务器(Client/Server)的服务模型

  • 完善的数据库逻辑和物理结构

  • 和操作系统的完美结合


3 1 sql server 20003

3.1 SQL Server 2000 简介(续)

Client

SQL Server

Results

OLTP

Query

OLAP

Client Application

Relational Database

Management System


3 1 sql server 20004

3.1 SQL Server 2000 简介(续)

  • SQL Server 是一个典型的关系型的数据库管理系统

  • 在关系模型中,数据的逻辑结构就是二维表

  • 关系模型概念单一、清晰,无论是实体,还是实体间的联系,都用关系来表示,用户易懂易用

  • 关系模型有严格的数学基础及在此基础上发展起来的关系数据理论


3 1 sql server 20005

3.1 SQL Server 2000 简介(续)

  • 数据库逻辑结构

    • 从用户的观点,所能看到的数据库组件结构就是逻辑的数据库结构,它包括数据表、视图、索引、存储过程和触发器等

  • 数据库物理结构

    • 数据库的物理结构就是指的数据在物理磁盘上的存储结构。数据库在磁盘中是用文件的方式来存储的。

  • SQL Server数据库物理结构

  • 数据库的文件可以分为:

    主数据文件(*.mdf)、辅助数据文件(*.ndf)和日志文件(*.ldf)


3 1 sql server 20006

3.1 SQL Server 2000 简介(续)

SQL Server 和操作系统的关系:

  • 安全机制

  • 并行处理能力

  • 以服务的方式执行

  • 整合于Windows 2000的功能

  • 善用增强的磁盘I/O功能


3 2 sql server 2000

3.2 SQL Server 2000的新特性

  • 全面扩展了SQL Server 7.0 的性能

    • XML Extensible Markup Language 扩展标示语言支持

    • 新数据类型New Data Types :bigint,sql_variant,table

    • 数据行中的Text 类型数据

    • 用户自定义函数User-Defined Functions

    • 索引Index 增强

    • 全文检索Full-Text Search 增强

    • 索引化视图Indexed Views

    • 分布式查询Distributed Query 增强

    • 触发器类型INSTEAD OF and AFTER Triggers

    • 级联参考完整性约束Cascading Referential Integrity Constraints


3 3 sql server 2000

3.3 SQL Server 2000 工具

  • 服务器组件

  • 管理工具

  • 客户端连接

  • 在线帮助

  • 开发工具

  • 程序代码示例


4308267

3.3 SQL Server 2000 工具(续)


3 4 sql server2000

3.4 SQL Server2000的安装及升级

  • 计算机硬件和软件环境

    • 各种安装模式要求的硬件环境

    • 各种安装模式要求的操作系统和软件环境

  • SQL Server 2000的版本:

    企业版

    个人版

    开发版

    标准版


3 4 sql server20001

3.4 SQL Server2000的安装及升级(续)-硬件环境要求


3 4 sql server20002

3.4 SQL Server2000的安装及升级(续)-硬件环境要求


3 4 sql server20003

3.4 SQL Server2000的安装及升级(续)-软件环境要求


3 4 sql server20004

3.4 SQL Server2000的安装及升级(续)-软件环境要求


3 4 sql server20005

3.4 SQL Server2000的安装及升级(续)-软件环境要求


3 4 sql server20006

3.4 SQL Server2000的安装及升级(续)

安装前的准备工作:

  • 创建一个或多个域用户帐户

  • 用具有本地管理权限的用户帐户登录到操作系统,或者给域用户帐户指派适当的权限

  • 关闭所有和 SQL Server 相关的服务

  • 关闭 Microsoft Windows NT 事件查看器和注册表查看器(Regedit.exe 或 Regedt32.exe)


3 4 1 sql server 2000

3.4.1 SQL Server 2000 的安装


3 4 1 sql server 20001

3.4.1 SQL Server 2000 的安装(续)


3 4 1 sql server 20002

3.4.1 SQL Server 2000 的安装(续)


3 4 1 sql server 20003

3.4.1 SQL Server 2000 的安装(续)


3 4 1 sql server 20004

3.4.1 SQL Server 2000 的安装(续)


3 4 1 sql server 20005

3.4.1 SQL Server 2000 的安装(续)


3 4 1 sql server 20006

3.4.1 SQL Server 2000 的安装(续)


3 4 1 sql server 20007

3.4.1 SQL Server 2000 的安装(续)


3 4 1 sql server 20008

3.4.1 SQL Server 2000 的安装(续)


3 4 2 sql server7 0

3.4.2 从SQL Server7.0的升级

  • 各种版本之间的升级选项

  • 从SQL Server 7.0 升级到 SQL Server 2000的方法


3 4 2 1 sql server

3.4.2.1 SQL Server 各种版本之间的升级选项


3 4 2 2 sql server 7 0

3.4.2.2 从SQL Server 7.0 升级

升级前的准备工作

  • 确保计算机系统的软硬件满足安装要求

  • 维护已有的数据库

  • 备份包括系统数据库在内的所有数据库

  • 关闭数据库只读状态

  • 关闭任何与SQL Server相关的应用程序


3 4 2 2 sql server 7 01

3.4.2.2 从SQL Server 7.0 升级(续)


3 4 2 2 sql server 7 02

3.4.2.2 从SQL Server 7.0 升级(续)


3 5 enterprise manager

3.5企业管理器(Enterprise Manager)

启动企业管理器


3 5 1

3.5.1 企业管理器环境

任务对象窗口(任务版)

服务项目树型结构


3 5 2 sql server

3.5.2启动、暂停和停止 SQL Server

  • 自动启动 SQL Server

  • 手工启动 SQL Server

  • 暂停和继续运行SQL Server

  • 停止SQL Server


3 5 2 1 sql server

3.5.2.1 自动启动SQL Server

点击右键,编辑该服务的属性页,在其中将启动类型改为自动,则每次操作系统启动时,SQL Server也将自动启动

选中此复选框,下次操作系统启动的时候SQL Server将自动启动。


3 5 2 2 sql server

3.5.2.2 手工启动SQL Server

利用这些控制按钮可以手动的启动、停止数据库服务

用这些按钮也可以控制数据库服务的启动和停止

命令行方式启动数据库服务


3 5 2 3

3.5.2.3 暂停服务和继续服务

暂停服务器的服务

继续服务器的服务

服务器现在处于暂停状态,单击运行/继续按钮服务器将重新运行


3 5 2 31

3.5.2.3 暂停服务和继续服务 (续)

停止 SQL Server 服务可以有一下方法:

  • 在SQL Server 企业管理器中停止所管理的数据库服务器

  • 在SQL Server 服务管理器中停止数据库服务

  • 通过命令行中的NET STOP命令停止指定的数据库服务

  • 通过控制面板中的服务应用程序停止数据库服务


3 5 3 sql server

3.5.3注册 SQL Server 服务器

必须注册本地或远程服务器后,才能使用 SQL Server 企业管理器来管理这些服务器。在注册服务器时必须指定:

  • 服务器的名称

  • 登录到服务器时使用的安全类型

  • 如果需要,指定登录名和密码

  • 注册了服务器后想将该服务器列入其中的组的名称


3 5 3 sql server1

3.5.3注册 SQL Server 服务器(续)


3 5 3 sql server2

3.5.3 注册 SQL Server 服务器(续)


3 5 3 sql server3

3.5.3注册 SQL Server 服务器(续)


3 5 3 sql server4

3.5.3注册 SQL Server 服务器(续)

新添加的SQL Server数据库服务器实例


3 5 4

3.5.4连接与断开服务器

如果选择此项,则下次登陆时不用输入密码


3 5 5 sql server

3.5.5配置SQL Server服务器属性

  • 常用选项卡

  • 内存选项卡

  • 处理器选项卡

  • 安全性选项卡

  • 连接选项卡

  • 服务器设置选项卡

  • 数据库设置选项卡


3 5 5 sql server1

3.5.5配置SQL Server服务器属性(续)—常用选项卡


3 5 5 sql server2

3.5.5配置SQL Server服务器属性(续)—内存选项卡


3 5 5 sql server3

3.5.5配置SQL Server服务器属性(续)—处理器选项卡


3 5 5 sql server4

3.5.5配置SQL Server服务器属性(续)—安全性选项卡


3 5 5 sql server5

3.5.5配置SQL Server服务器属性(续)—连接选项卡


3 5 5 sql server6

3.5.5配置SQL Server服务器属性(续)—服务器设置


3 5 5 sql server7

3.5.5配置SQL Server服务器属性(续)—数据库设置


3 5 6 sql server

3.5.6调用SQL Server工具和向导


3 5 7 sql

3.5.7生成对象的SQL脚本

  • 任何对象都可以用SQL语言来描述

  • 企业管理器可以产生数据库对象的SQL 脚本

  • SQL语言脚本可以用来备份数据库对象

  • SQL语言脚本可以用来移植数据库对象

要产生SQL脚本的数据库对象,我们这里选择了一个用户自己建立的数据库DemoDB


3 5 7 sql1

3.5.7生成对象的SQL脚本(续)

单击此按钮将弹出SQL预览窗口


3 5 7 sql2

3.5.7生成对象的SQL脚本(续)


3 5 7 sql3

3.5.7生成对象的SQL脚本(续)


3 5 7 sql4

3.5.7生成对象的SQL脚本(续)


3 6 sql server2000

3.6 SQL Server2000查询分析器使用简介

在此选择要登录的服务器

选择登录方式及用户


3 6 sql server20001

3.6 SQL Server2000查询分析器使用简介(续)


4308267

本章总结

  • SQL SERVER数据库简介

  • SQL SERVER2000的新特性

  • SQL SERVER2000的安装及升级

  • SQL SERVER的工具集

  • 企业管理器的使用初步

  • 查询分析器的使用初步


4 sql

第4章 结构化查询语言——SQL


4308267

本章目标

  • 本章结束时,学员能够:

  • 了解SQL 语言

  • 掌握数据定义语言的使用

  • 掌握数据操纵语言的使用

  • 掌握数据控制语言的使用

  • 了解视图

  • 掌握数据查询语言的使用


4 1 sql

4.1 SQL概述

  • SQL :(Structured Query Language结构化查询化语言),不仅仅具有查询功能。

    它是一个通用的、功能极强的关系数据库操作语言。

1974年Boyce和Chamberlin提出,首先在IBM公司的关系数据库系统System R上实现

1986年10月ANSI(美国国家标准局)的数据库委员会批准了SQL作为关系数据库语言的美国标准

1987年ISO(国际标准化组织)也通过了这一标准。

目前的大中型数据库基本都支持于1992年发布的SQL-92标准


4 1 sql1

4.1 SQL概述(续)

  • 标准化

    • 有关组织

      • ANSI(American Natural Standard Institute)

      • ISO(International Organization for Standardization)

    • 有关标准

      • SQL-86

        • “数据库语言SQL”

      • SQL-89

        • “具有完整性增强的数据库语言SQL”,增加了对完整性约束的支持

      • SQL-92

        • “数据库语言SQL”,是SQL-89的超集,增加了许多新特性,如新的数据类型,更丰富的数据操作,更强的完整性、安全性支持等。

      • SQL-3

        • 正在讨论中的新的标准,将增加对面向对象模型的支持


4308267

4.1.1 SQL的特点

  • 面向集合操作

    • 一次一集合

  • 高度非过程化

    • 用户只需提出“做什么”,无须告诉“怎么做”,不必了解存取路径

  • 集数据定义、数据查询和数据控制功能于一体

  • 统一语法结构的两种使用方式,简单易学


  • 4 1 1 sql sql

    4.1.1 SQL的特点(续)-SQL语言的动词


    4 1 1 sql sql1

    4.1.1 SQL的特点(续) -SQL语言书写注意事项

    1.大小写不敏感

    2.sql语句中出现的所有单双引号,逗号,分号必须为半角字符。

    3.字符常量要用引号引起

    4.数字常量不用加引号

    5. 不同具体RDBMS中,命令可能有差异,以该RDBMS命令手册为准


    4 1 2 sql

    4.1.2 SQL语言的基本概念-三个例表

    这里给出学生-课程数据库的三个数据表,用在以后的实例中说明SQL语句的各种用法。

    • 学生表:Student(Sno,Sname,sgender,Sage,Sdept)

      Student由学号(Sno)、姓名(Sname)、性别(Sgender)、年龄(Sage)、所在系(Sdept)五个属性组成,其中Sno为主码。

    • 课程表:Course(Cno,Cname,Cpno,Ccredit)

      Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(ccredit)四个属性组成,其中Cno为主码。

    • 学生选课表:SC(Sno,Cno,Grade)

      SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,主 码为(Sno,Cno)。


    4308267

    4.2数据定义语句

    • SQL的数据定义语句:


    4 2 1 create

    4.2.1基本表的定义(CREATE)

    • 一般格式为:

      CREATE TABLE <表名>(

      <列名> <数据类型> [DEFAULT缺省值] [NOT NULL][ UNIQUE]

      [,列名 数据类型 [DEFAULT缺省值] [NOT NULL]

      ……

      [,PRIMARY KEY(列名 [,列名] …)]

      [,FOREIGN KEY(列名 [,列名] …)

      REFERENCES 表名 (列名 [,列名] …)]

      [,CHECK(条件)])


    4 2 1

    4.2.1基本表的定义(续)-常用完整性约束

    • 常用完整性约束

      • 主码约束: PRIMARY KEY

      • 唯一性约束:UNIQUE

      • 非空值约束:NOT NULL

      • 参照完整性约束: FOREIGN KEY…REFERENCES …

      • 用户自定义约束: CHECK

        PRIMARY KEY与UNIQUE的区别?


    4 2 11

    4.2.1基本表的定义(续)

    • 例:

      CREATE TABLE student

      (sno CHAR(5),

      sage SMALLINT,

      sgender CHAR(2),

      sdept CHAR(8),

      PRIMARY KEY (SNO),

      CHECK (sgender='男' OR sgender='女')

      )


    4 2 12

    4.2.1基本表的定义(续)

    • 例:

      CREATE TABLE COURSE

      ( cno CHAR(5) PRIMARY KEY,

      cname CHAR(10) NOT NULL,

      cpno CHAR(5),

      ccredit SMALLINT)


    4 2 13

    4.2.1基本表的定义(续)

    • CREATE TABLE sc

      (sno CHAR(5),

      cno CHAR(5),

      grade SMALLINT,

      PRIMARY KEY (sno,cno),

      FOREIGN KEY (sno)

      REFERENCES Student(sno),

      FOREIGN KEY (cno)

      REFERENCES Course(cno),

      CHECK((GRADE IS NULL) OR

      GRADE BETWEEN 0 AND 100))


    4 2 2 alter

    4.2.2修改基本表(ALTER)

    • 一般格式为:

      ALTER TABLE <表名>

      [ADD]增加新列

      [DROP COLUMN ]删除列

      [ALTER COLUMN] 修改列定义

      • 例alter table student

        add LOCATION char(30)


    4 2 2

    4.2.2修改基本表(续)

    • 例:

      增加一列:

      ALTER TABLE Student ADD Scome DATE;

      修改列定义:

      ALTER TABLE Student ALTER COLUMN Sage SMALLINT;

      删除一列:

      ALTER TABLE Student DROP COLUMN sage;


    4 2 3

    4.2.3删除基本表

    • 一般格式为:

      DROP TABLE <表名>

      例:

      DROP TABLE Student;

      • DANGER

        撤消基本表后,基本表的定义、表中数据、索引被删除

        注意 删除时的完整性约束


    4 2 4

    4.2.4 删除表中的所有行

    一般格式为:

    TRUNCATE TABLE<表名>

    删除表中的所有行,而不记录单个行删除操作。

    例:

    TRUNCATE TABLE Student;


    4 2 5

    4.2.5建立索引


    4 2 51

    4.2.5建立索引(续)

    • 一般格式为:

      CREATE [UNIQUE] [CLUSTERED] INDEX <索引名>

      ON <表名> (<列名> [<次序>] [,<列名>[<次序>]]…);

      索引的有关说明

      • 可以动态地定义索引,即可以随时建立和删除索引

      • 不允许用户在数据操作中引用索引。索引如何使用完全由系统决定,这支持了数据的物理独立性

      • 应该在使用频率高的、经常用于连接的列上建索引

      • 一个表上可建多个索引。索引可以提高查询效率,但索引过多耗费空间,且降低了插入、删除、更新的效率


    4 2 52

    4.2.5建立索引(续)

    选项说明:

    unique:唯一性索引,不允许表中不同的行在索引列上取相同值。若已有相同值存在,则系统给出相关信息,不建此索引。系统并拒绝违背唯一性的插入、更新

    clustered:聚集索引,表中元组按索引项的值排序并物理地聚集在一起。一个基本表上只能建一个聚集索引

    asc/desc:索引表中索引值的排序次序,缺省为asc


    4 2 53

    4.2.5建立索引(续)

    例:

    CREATE UNIQUE INDEX Stusno ON Student(Sno);

    CREATE INDEX Councno ON Course(Cno);

    CREATE UNIQUE INDEX Scno ON SC(Sno ASC,Cno DESC);

    CREATE CLUSTERED INDEX cpno_in on course(cpno)


    4 2 6

    4.2.6 删除索引

    • 一般格式为:

      DROP INDEX <索引名>;

      例:DROP INDEX Stusname;

      有些DBMS中要求索引名前加表名。

      例:DROP INDEX student.Stusname;


    4308267

    4.3数据更新

    • 插入数据

    • 修改数据

    • 删除数据


    4 3 1

    4.3.1插入操作

    • 一般格式为:

      INSERT INTO <表名> [(列名[,列名]…]

      VALUES (值 [,值]…)

      插入一条指定值的元组

      INSERT INTO <表名> [(列名[,列名]…]

      (子查询)

      插入子查询结果中的若干条元组


    4 3 1 1

    4.3.1.1插入单个元组

    • 例:

      • insert intostudent

        values ( 98001, ‘王明’, 35, ‘男’, ‘cs’)

      • insert intostudent(sno, sname, sdept)

        values ( 98001, ‘王明’, ‘cs’ )

        思考:sage,sgender取何值?

    如何防止插入带有空值的元组?


    4 3 1 2

    4.3.1.2插入多条元组

    • 插入子查询结果

      一般格式为:

      INSERT

      INTO <表名> [(<属性列1>[,<属性列2>…)]

      子查询

      例: INSERT

      INTO SC1

      SELECT *

      FROM SC

      WHERE CNO=‘1’;

      假设 SC1与SC具有相同的表结构


    4 3 2

    4.3.2 修改数据

    修改操作语句的一般格式为:

    UPDATE<表名>

    SET <列名> = <表达式> [,<列名> = <表达式>]…

    [WHERE <条件>];

    指定对哪些列进行更新,以及更新后的值是什么

    如果没有where语句,则修改所有元组


    4 3 21

    4.3.2 修改数据(续)

    例1:UPDATE Student SET Sage=21

    WHERE Sno=‘98001’;

    例2:UPDATE Student SET Sage=Sage+1;

    例3:UPDATE SC SET Grade=0

    WHERE sno in

    (SELECT sno

    FROM Student

    WHERE sdept=‘CS’);

    例4: 学生成绩上调5%

    update sc

    set grade = grade* 1.05


    4 3 3

    4.3.3删除数据

    一般格式为:

    DELETE FROM <表名>

    [WHERE<条件>];

    从表中删除符合条件的元组,如果没有where语句,则删除所有元组

    例: DELETE FROM Student

    WHERE Sno=‘98002’;

    DELETE FROM SC;

    DELETE FROM SC

    WHERE Sno in

    (SELECT sno FROM Student

    WHERE sdept=‘CS’);


    4308267

    4.4数据查询

    • 查询的一般格式为:

      SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]…

      FROM <表名或视图名> [,<表名或视图>]…

      [WHERE<条件表达式>]

      [GROUP BY <列名1> [HAVING<条件表达式>]]

      [ORDER BY <列名2> [ASC|DESC]];

      Select子句指定要显示的列,from子句列出查询的对象表


    4308267

    4.4数据查询(续)

    查询分类:

    • 单表查询

    • 连接查询

    • 嵌套查询

    • 集合查询


    4 4 1

    4.4.1选择表中的若干列

    4.4.1.1 查询指定列

    例1:SELECT Sno,Sname

    FROM Student;

    例2:SELECT Sname,Sno,Sdept

    FROM Student;

    4.4.1.2 查询全部列

    例3:SELECT * FROM Student;

    等价于:

    SELECT Sno,sname,sgender,Sage,Sdept FROM Student;

    • “*”:表示“所有的属性”

      目标列可以为列名,* ,算术表达式,聚集函数


    4 4 11

    4.4.1选择表中的若干列(续)-更名

    • 格式

      old_name as new_name

      为关系和属性重新命名,可出现在select和from子句中

      注:as可选


    4 4 1 3

    4.4.1.3查询经过计算的值

    例1:SELECT Sname,2004-Sage FROM Student;

    例2:SELECT Sname,’Year of Birth:’,2004-Sage, LOWER(Sdept)

    FROM Student;

    例3:SELECT Sname NAME,’Year of Birth:’ BIRTH,

    2004-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT

    FROM Student;

    例3输出的列标题为:

    NAME BIRTH BIRTHDAY DEPARTMENT


    4 4 2 1

    4.4.2.1 消除取值重复的行

    假如SC表有表1中的数据。

    例1:SELECT Sno FROM SC;

    语句执行的结果为表2。

    例2:SELECT DISTINCT Sno FROM SC;

    语句执行的结果为表3。

    表3

    表1

    表2

    缺省为保留重复元组,也可用关键字all显式指明。若要去掉重复元组,可用关键字distinct


    4 4 2 2

    4.4.2.2查询满足条件的元组

    • 常用的查询条件


    4 4 2 21

    4.4.2.2查询满足条件的元组(续)-比较条件查询

    例1:查计算机系全体学生的名单

    SELECT Sname FROM Student WHERE Sdept=‘CS’;

    例2:查所有年龄在20岁以下的学生姓名及其年龄

    SELECT Sname,Sage FROM Student WHERE Sage<20;

    例2也可以用下面的语句实现同样的功能:

    SELECT Sname,Sage FROM Student WHERE NOT Sage>=20;

    例3:查考试成绩有不及格的学生的学号

    SELECT DISTINCT Sno

    FROM SC

    WHERE Grade<60;


    4 4 2 22

    4.4.2.2查询满足条件的元组(续)-确定范围的条件查询

    • Between ..and…:判断表达式的值是否在某范围内

      例1:查询年龄在20至23岁之间的学生的姓名、系别、和年龄

      SELECT Sname,Sdept,Sage

      FROM Student

      WHERE Sage BETWEEN 20 AND 23;

      例2:查询年龄不在20至23岁之间的学生姓名、系别和年龄

      SELECT Sname,Sdept,Sage

      FROM Student

      WHERE Sage NOT BETWEEN 20 AND 23;


    4 4 2 23

    4.4.2.2查询满足条件的元组(续)-确定集合的条件查询

    判断表达式的值是否在子查询的结果中 :IN ,NOT IN

    例1:

    SELECT Sname,sgender

    FROM Student

    WHERE Sdept IN (‘IS’,’MA’,’CS’)

    例2:

    SELECT Sname,sgender

    FROM Student

    WHERE Sdept NOT IN (‘IS’,’MA’,’CS’)


    4 4 2 24

    4.4.2.2查询满足条件的元组(续)-字符匹配的条件查询

    • 谓词LIKE的一般语法格式为:

      [NOT] LIKE ‘<匹配串>’ [‘ESCAPE’ <换码字符>]

      其含义是查找指定的属性列值与<匹配串>相匹配的元组。 <匹配串>可以是一个完整的字符串,也可以含有通配符%和_。

      例:查找姓刘的学生的姓名,年龄,性别

      SELECT Sname,Sno,sgender

      FROM Student

      WHERE Sname LIKE ‘刘%’;


    4 4 2 25

    4.4.2.2查询满足条件的元组(续)-字符串操作

    • 匹配规则

      • “%”

        • 匹配零个或多个字符

      • “_”

        • 匹配任意单个字符

      • Escape

        • 定义转义字符,以去掉特殊字符的特定含义,使其被作为普通字符看待

        • 如escape “\”,定义 \ 作为转义字符,则可用\%去匹配%,用\_去匹配_

    思考:用什么去匹配\ ?


    4 4 2 26

    4.4.2.2查询满足条件的元组(续)-转义符的使用

    • 查询课程名称以”db_”开头的所有课程情况

    • Select * from course where cname like ‘db\_%’ escape ‘\’

    • 查询课程名称以”db_”开头,且倒数第3 个字符为I的课程和详细情况。

    • Select *

      From course

      Where cname like ‘db\_%I__’escape ‘\’

    • Escape为转义符。表示\后面的字符_不再具有通配符的含义。


    4 4 2 27

    4.4.2.2查询满足条件的元组(续)-字符匹配的条件查询

    例1:

    SELECT * FROM Student WHERE Sno LIKE ‘98001’;

    等价于:

    SELECT * FROM Student WHERE Sno=‘98001’;

    例2:

    SELECT Sname

    FROM Student

    WHERE Sname like ‘欧阳__’;


    4 4 2 28

    4.4.2.2查询满足条件的元组(续)-涉及空值的条件查询

    例1:查缺少成绩的学生的学号和相应的课程号

    SELECT Sno,Cno

    FROM SC

    WHERE Grade IS NULL;

    例2:查所有有成绩的记录的学生学号和课程号

    SELECT Sno,Cno

    FROM SC

    WHERE Grade IS NOT NULL;


    4 4 2 29

    4.4.2.2查询满足条件的元组(续)-多重条件查询

    例1:查CS系年龄在20岁以下的学生姓名

    SELECT Sname

    FROM Student

    WHERE Sdept=‘CS’ AND Sage<20;

    例2:

    SELECT Sname,sgender FROM Student

    WHERE Sdept=‘IS’ OR Sdept=‘MA’ OR Sdept=‘CS’;

    例2语句下面语句具有相同的执行结果:

    SELECT Sname,sgender FROM Student

    WHERE Student IN (‘IS’,’MA’,’CS’);


    4 4 2 210

    4.4.2.2查询满足条件的元组(续)-注意运算符优先级

    SELECT sname, sage, sdept

    FROM student

    WHERE sage=18

    OR sage=19

    AND sdept=‘cs’;

    • Not优先级高于and,and优先级高于or


    4 4 2 3

    4.4.2.3对查询结果排序

    例1:

    SELECT Sno,Grade

    FROM SC WHERE Cno=‘3’

    ORDER BY Grade DESC;

    例2:查询全体学生情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列

    SELECT * FROM Student

    ORDER BY Sdept,Sage DESC;

    注意:在空值上的排序


    4 4 2 4

    4.4.2.4 使用集函数

    • 主要集函数:

      COUNT ([DISTINCT|ALL] *) 统计元组个数

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

      SUM ([DISTINCT|ALL] <列名>)计算一列值的总和

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

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

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

    注意:在空值上的计算,avg,count, avgnull.sql

    • count(*)与count(列名)的差别


    4 4 2 41

    4.4.2.4 使用集函数(续)

    例1:查询学生总人数

    SELECT COUNT(*) FROM Student;

    例2:查询选修了课程的学生人数

    SELECT COUNT(DISTINCT Sno) FROM SC;

    例3:计算1号课程的学生平均成绩

    SELECT AVG(Grade) FROM SC

    WHERE Cno=‘1’;

    例4:查询学习1号课程的学生最高分数

    SELECT MAX(Grade) FROM SC

    WHERE Cno=‘1’;


    4 4 2 42

    4.4.2.4 使用集函数(续)

    360

    例:selectsum(grade)

    from sc

    selectavg(grade)

    from sc

    例:selectcount(*)

    from sc

    例:selectcount(grade)

    from sc

    90

    6

    4


    4 4 2 5

    4.4.2.5对查询结果分组

    分组命令

    group by列名 [having条件表达式]

    group by将表中的元组按指定列上值相等的原则分组,然后在每一分组上使用聚集函数,得到单一值

    having则对分组进行选择,只将聚集函数作用到满足条件的分组上

    例:查询各个课程号与相应的选课人数

    SELECT Cno,COUNT(Sno)

    FROM SC

    GROUP BY Cno;

    查询的结果可能为:


    4 4 2 51

    4.4.2.5对查询结果分组(续)

    列出每个学生的平均成绩

    列出每门课程的平均成绩

    90

    {

    90

    92

    {

    85

    92

    {

    92

    group by sno

    group by cno


    4 4 2 52

    4.4.2.5对查询结果分组(续)

    例:查询选修了3门以上课程的学生的学号

    SELECT Sno

    FROM SC

    GROUP BY Sno

    HAVING COUNT(*) >3;


    4 4 3

    4.4.3连接查询

    • 比较连接查询

    • 复合条件连接


    4 4 3 1

    4.4.3.1比较连接查询

    • 连接查询中用来连接两个表的条件称为连接条件或连接谓词,其一般格式为:

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

      其中比较运算符主要有:=、>、< 、 >= 、 <= 、 !=。

      当连接运算为 = 时,称为等值连接。使用其他运算符称为非等值连接。

      连接谓词中的列名称为连接字段。连接条件中的各连接字段类型必须是可比的,但不必是相同的。


    4 4 3 11

    4.4.3.1比较连接查询(续)

    例:SELECT Student.*,Sc.*

    FROM Student,SC

    WHERE Student.Sno=SC.Sno; /*将Student与SC中同一

    学生 的元组连接起来*/

    student

    SC

    查询结果


    4 4 3 2

    4.4.3.2 自身连接

    结果


    4 4 3 3

    4.4.3.3复合条件连接

    例1:

    SELECT Student.Sno, Sname FROM Student, SC

    WHERE Student.Sno=SC.Sno AND /*连接谓词*/

    SC.Cno=‘2’ AND SC.Grade>90; /*其他限定条件*/

    例2:

    SELECT Student.Sno, Sname, Cname, Grade

    FROM Student, SC, Course

    WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;


    4 4 4

    4.4.4嵌套查询

    • 在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。

    • 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。

      例如:

      SELECT Sname

      FROM Student

      WHERE Sno IN

      (SELECT Sno

      FROM SC

      WHERE Cno=‘2’);


    4 4 4 1 in

    4.4.4.1带有IN谓词的子查询

    例:

    SELECT Sno,Sname ③最后在Student关系中取

    FROM Student Sno和Sname

    WHERE Sno IN

    ( SELECT Sno ②然后在SC关系中找出

    FROM SC 选修了2号课程的学生

    WHERE Cno IN 学号

    (SELECT Cno ①首先在Course关系中找

    FROM Course 出“数学”的课程号,比

    WHERE Cname=‘数学’)); 如结果为“2”


    4 4 4 2

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

    例:

    SELECT Sno, Sname, Sdept

    FROM Student

    WHERE Sdept =

    (SELECT Sdept

    FROM Student

    WHERE Sname=‘刘晨’);


    4 4 5

    4.4.5 集合查询

    • 并操作UNION的使用

      例:

      SELECT *

      FROM Student

      WHERE Sdept=‘CS’

      UNION

      SELECT *

      FROM Student

      WHERE Sage<=19;


    4 4 51

    4.4.5 集合查询(续)

    例:查询既选修了课程1又选修了课程2的学生

    SELECT Sno FROM SC

    WHERE Sno IN

    (SELECT Sno FROM SC WHERE Cno=‘1’)

    AND Sno IN

    (SELECT Sno FROM SC WHERE Cno=‘2’);

    集合交运算的实现


    4308267

    4.5视图

    • 视图的作用

    • 建立视图

    • 删除视图

    • 查询视图

    • 更新视图


    4 5 1

    4.5.1视图的作用

    • 简化用户的操作

    • 使用户能以多种角度看待同一数据

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

    • 能够对机密数据提供安全保护


    4 5 2

    4.5.2 建立视图

    • 建立视图的一般格式为:

      CREATE VIEW <视图名>[(<列名>[,<列名>]…)]

      AS <子查询>

      [WITH CHECK OPTION];

    • 有下列三种情况下必须明确指定视图的所有列名:

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

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

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

      with check option指明当对视图进行数据修改时,要检查是否满足视图定义中的条件


    4 5 21

    4.5.2建立视图(续)

    • 在建立视图语句中省略属性列名

      例:

      CREATE VIEW IS_Student

      AS

      SELECT Sno, Sname, Sage

      FROM Student

      WHERE Sdept=‘IS’;


    4 5 22

    4.5.2建立视图(续)

    • 带WITH CHECK OPTION子句的视图定义

      例:

      CREATE VIEW IS_Student

      AS

      SELECT Sno, Sname, Sname, Sage

      FROM Student

      WHERE Sdept=‘IS’

      WITH CHECK OPTION;


    4 5 23

    4.5.2建立视图(续)

    • 在多个基本表上建立视图

      例:

      CREATE VIEW IS_S1(Sno, Sname, Grade)

      AS

      SELECT Student.Sno, Sname, Grade

      FROM Student, SC

      WHERE Sdept=‘IS’ AND

      Student.Sno=SC.Sno AND

      SC.Cno=‘1’;


    4 5 24

    4.5.2建立视图(续)

    • 在定义好的视图上建立视图

      例:

      CREATE VIEW IS_S2

      AS

      SELECT Sno, Sname, Grade

      FROM IS _S1

      WHERE Grade>=90;


    4 5 25

    4.5.2建立视图(续)

    • 定义带表达式(虚拟列)的视图

      例:

      CREATE VIEW S_BT(Sno,Sname,Sbirth)

      AS SELECT Sno,Sname,2000-Sage

      FROM Student;


    4 5 3

    4.5.3删除视图

    • 删除视图的一般格式为:

      DROP VIEW <视图名>;

      例:

      DROP VIEW IS_S1;


    4 5 4

    4.5.4查询视图

    例:

    SELECT Sno, Sage

    FROM IS_Student

    WHERE Sage<20;

    本例转换后的查询语句为:

    SELECT Sno, Sage

    FROM Student

    WHERE Sdept=‘IS’ AND Sage<20;


    4 5 41

    4.5.4查询视图(续)

    • 视图和基本表的连接查询

      例:

      SELECT Sno, Sname

      FROM IS_Student, SC

      WHERE IS_Student.Sno=SC.Sno AND

      SC.Cno=‘1’;


    4 5 5

    4.5.5更新视图

    • 数据修改

      UPDATE IS_Student

      SET Sname=‘刘辰’ WHERE Sno=‘98002’;

      注:IS_Student视图的定义如下:

      CREATE VIEW IS_Student

      AS

      SELECT Sno, Sname, Sname, Sage

      FROM Student

      WHERE Sdept=‘IS’

      WITH CHECK OPTION;


    4 5 51

    4.5.5更新视图(续)

    • 数据插入

      例1: INSERT INTO IS_Student

      VALUES(‘98003’,’赵新’,20);

    • 数据删除

      例2:DELETE FROM IS_Student

      WHERE Sno=‘98003’;


    4 5 52

    4.5.5更新视图(续)

    • 视图更新约束

      • select子句中的目标列不能包含聚集函数

      • select子句中不能使用unique或distinct关键字

      • 不能包括group by子句

      • 不能包括经算术表达式计算出来的列

      • 对于行列子集视图可以更新(视图是从单个基本表使用选择、投影操作导出的,并且包含了基本表的主码)


    4308267

    4.6数据控制

    SQL 语言的安全性控制功能:

    • 授权(GRANT)

    • 收回权限(REVOKE)


    4 6 2

    4.6.2授权语句

    • 权限介绍


    4 6 21

    4.6.2授权语句(续)

    • SQL的授权命令是GRANT语句,其格式为:

      GRANT <权限> [,<权限>]…

      [ON <对象类型> <对象名>]

      TO <用户> [,<用户>]…

      [WITH GRANT OPTION];

      例1:GRANT SELECT ON TABLE Student TO U1;

      例2:GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3;

      例3:GRANT SELECT ON TABLE SC TO PUBLIC;

      例4:GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;


    4 6 22

    4.6.2授权语句(续)

    • 传播授权

      例1:

      GRANT INSERT ON TABLE SC

      TO U5

      WITH GRANT OPTION;


    4 6 3

    4.6.3收权语句

    • 收回权限语句的一般格式为:

      REVOKE <权限> [,<权限>]…

      [ON <对象类型> <对象名>]

      FROM <用户> [,<用户>]…;

      例1:

      REVOKE UPDATE(Sno) ON TABLE Student FROM U5;

      例2:

      REVOKE INSERT ON TABLE SC FROM PUBLIC;


    4 7 sql

    4.7嵌入式SQL

    嵌入式SQL的一般形式

    EXEC SQL <SQL语句> ;

    例如一条交互形式的SQL语句:

    DROP TABLE Student;

    嵌入到C程序中,应该写作:

    EXEC SQL DROP TABLE Student;


    4308267

    本章总结

    • 了解SQL 语言

    • 掌握数据定义语言的使用

    • 掌握数据操纵语言的使用

    • 掌握数据控制语言的使用

    • 了解视图

    • 掌握数据查询语言的使用


    4308267

    第5章 事务处理、并发控制与恢复技术


    4308267

    本章目标

    本章结束时,学员能够:

    • 了解事务的概念和ACID特性

    • 掌握并发控制和封锁技术的概念

    • 理解并发调度的可串行性及两段锁协议

    • 了解封锁粒度

    • 了解数据库系统的故障种类

    • 理解数据库恢复的实现技术和常见故障的恢复策略

    • 了解数据库镜像技术


    4308267

    5.1事务的基本概念

    • 事务的概念:

      • 所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

      • 例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。

      • 事务是一个逻辑工作单元,同时又是一个恢复单元

      • 一个事务提交之后,数据库又处于或应该处于一个一致性状态


    5 1 1

    5.1.1事务

    例如:银行转帐

    银行转帐:事务T从A帐户过户50¥到B帐户

    T:read(A);

    A := A – 50;

    write(A);

    read(B);

    B := B + 50;

    write(B);

    read(X):从数据库传送数据项X到事务的工作区中

    write(X):从事务的工作区中将数据项X写回数据库


    5 1 11

    5.1.1 事务 (续)

    • 定义事务的三条语句:

      • BEGIN TRANSACTION

      • COMMIT

      • ROLLBACK

        SQL中事务以Begin transaction开始,以Commit 或 Rollback 结束

        Commit 表示提交,事务正常结束

        Rollback 表示事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态


    5 1 12

    5.1.1 事务 (续)

    SQL Server 的事务模式:

    • 自动提交事务

      • 每条单独的语句都是一个事务。

    • 显式事务

      • 每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。

    • 隐性事务

      • 在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。

    • 自动提交模式是 Microsoft SQL Server 的默认事务管理模式。


    5 1 2 acid

    5.1.2 事务的ACID特性

    • 事务的ACID特性:

      • 原子性(Atomicity)

      • 一致性(Consistency)

      • 隔离性(Isolation)

      • 持续性(Durability)

    事务是并发控制和恢复的基本单位。

    保证事务ACID特性是事务处理的重要任务。


    5 1 2 acid1

    5.1.2事务的ACID特性 (续)

    原子性(Atomicity):

    事务中包含的所有操作要么全做,要么全不做

    原子性由恢复机制实现


    5 1 2 acid2

    5.1.2事务的ACID特性(续)

    一致性(Consistency)

    事务的隔离执行必须保证数据库的一致性

    事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态

    数据库的一致性状态,由并发控制机制实现

    如银行转帐,转帐前后两个帐户金额之和应保持不变


    5 1 2 acid3

    5.1.2事务的ACID特性(续)

    隔离性(Isolation)

    系统必须保证事务不受其它并发执行事务的影响

    对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行

    隔离性通过并发控制机制实现


    5 1 2 acid4

    5.1.2事务的ACID特性(续)

    持久性(Durability)

    一个事务一旦提交之后,它对数据库的影响必须是永久的

    系统发生故障不能改变事务的持久性

    持久性通过恢复机制实现


    5 1 3

    5.1.3事务调度

    • 事务的调度

      • 事务的执行顺序称为一个调度,表示事务的指令在系统中执行的时间顺序

      • 一组事务的调度必须保证

        • 包含了所有事务的操作指令

        • 一个事务中指令的顺序必须保持不变

      • 串行调度

        • 在串行调度中,属于同一事务的指令紧挨在一起

        • 对于有n个事务的事务组,可以有n!个有效调度

      • 并行调度

        • 在并行调度中,来自不同事务的指令可以交叉执行

        • 当并行调度等价于某个串行调度时,则称它是正确的


    4308267

    5.2并发操作

    • 并发操作:

      • 当多个用户同时存取数据库就会产生对数据库的并发操作。

      • 并发操作会破坏事务的ACID特性,从而会使数据库处于数据不一致性状态。


    4308267

    5.2并发操作(续)

    并发操作带来的数据不一致性:

    • 考虑飞机订票系统中的一个活动序列:

      • 甲售票点(甲事务)读出某航班的机票余额A,假设A为16;

      • 乙售票点(乙事务)读出同一航班的机票余额A,也为16;

      • 甲售票点卖出一张机票,修改余额A=A-1,所以A为15,把A写回数据库;

      • 乙售票点也卖出一张机票,修改余额A=A-1,所以A为15,把A写回数据库;


    4308267

    5.3并发控制技术

    • 封锁

    • 并发调度的可串行性

    • 两段锁协议

    • 封锁的粒度


    5 3 1

    5.3.1封锁

    • 封锁:

      • 所谓封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。

    • 基本的封锁类型:

      • 排它锁(Exclusive Locks, 简称X锁)

      • 共享锁(Share Locks, 简称S锁)


    5 3 2

    5.3.2并发调度的可串行性

    • 可串行化调度:

      • 多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,我们称这种调度策略为可串行化的调度。

    • 可串行性:

      • 是并发事务正确性的准则。按这个准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。


    5 3 3

    5.3.3两段锁协议

    • 两段锁协议:

      • 第一阶段:在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;

      • 第二阶段:在释放一个封锁之后,事务不再申请和获得任何其他封锁。

    事务遵守两段协议是可串行化调度的充分条件,而不是必要条件


    5 3 4

    5.3.4封锁的粒度

    • 封锁粒度:

      • 封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。

    • 封锁对象(以关系数据库为例):

      • 逻辑单元:属性值、属性值的集合、元组、关系、索引项、整个索引直至整个数据库

      • 物理单元:页(数据页或索引页)、块等。


    4308267

    5.4数据库系统的故障种类

    • 事务内部的故障

    • 系统故障

      • 指造成系统停止运转的任何事件,使得系统要重新启动。例如,特定类型的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、突然停电

    • 介质故障

      • 指外存故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。

    • 计算机病毒


    4308267

    5.5数据库恢复与实现技术

    • 数据库恢复:

      • 数据库的恢复就是保证把数据库从错误状态恢复到某一已知的正确状态。

    • 数据库恢复技术:

      • 数据转储

      • 登记日志文件


    5 5 1 1

    转储

    运行事务

    正常运行

    Ta

    Tb

    Tf

    重新运行事务

    重装后备副本

    恢复

    转储和恢复

    5.5.1.1数据转储

    • 转储:所谓转储即DBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。

    • 转储分类:

      • 按转储状态分类:静态转储和动态转储;

      • 按转储方式分类:海量转储和增量转储。


    5 5 1 11

    5.5.1.1数据转储(续)

    • 静态转储

      • 转储期间不允许对数据库的任何存取、修改活动

    • 动态转储

      • 指转储期间允许对数据库进行存取或修改


    5 5 1 12

    5.5.1.1数据转储(续)

    • 海量转储

      • 每次转储全部数据库

    • 增量转储

      • 指每次只转储上一次转储后更新过的数据


    5 5 1 2

    5.5.1.2登记日志文件

    • 日志文件:

      • 日志文件是记录事务对数据库的更新操作,以备用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复的文件。


    5 5 1 21

    5.5.1.2登记日志文件(续)

    • 登记日志文件时必须遵循两条原则:

      • 登记的次序严格按发生事务执行的时间次序。

      • 必须先写日志文件,后写数据库。


    4308267

    5.6恢复策略

    • 事务故障的恢复

    • 系统故障的恢复

    • 介质故障的恢复


    5 6 1

    5.6.1事务故障的恢复

    • 事务故障的恢复步骤:

      • 反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新操作。

      • 对该事务的更新操作执行逆操作。

      • 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。

      • 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。


    5 6 2

    5.6.2系统故障的恢复

    • 系统故障的恢复步骤:

      • 正向扫描日志文件(即从头扫描日志文件),找出在故障发生前已经提交的事务,将其事务标识记入重做(REDO)队列。同时找出故障发生时尚未完成的事务,将其事务标识记入撤销(UNDO)队列。

      • 对撤销队列中的各个事务进行撤销处理。

      • 对重做队列中的各个事务进行重做处理。


    5 6 3

    5.6.3介质故障的恢复

    • 介质故障的恢复步骤:

      • 装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。

      • 装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。


    4308267

    应用2

    read

    镜像

    read

    复制

    update

    应用3

    应用1

    read

    应用4

    (a)

    应用2

    update

    read

    镜像

    read

    恢复

    应用3

    应用1

    read

    应用4

    (b)

    5.7数据库镜像

    数据库镜像


    4308267

    本章总结

    • 事务的概念和ACID特性

    • 并发操作带来数据的不一致性问题

    • 封锁是实现并发控制一个非常重要的技术

    • 并发调度的可串行性及两段锁协议

    • 封锁粒度

    • 数据库系统的故障种类

    • 数据库恢复的实现技术

    • 常见故障的恢复策略

    • 数据库镜像


    4308267

    第6章 数据库的安全性


    4308267

    本章目标

    本章结束时,学员能够:

    • 了解计算机系统的三类安全性

    • 了解可信计算机系统评测标准(TCSEC)及其级别划分

    • 了解数据库的安全性控制及其技术

    • 了解安全性控制机制

    • 掌握SQL SERVER 2000安全架构

    • 掌握SQL SERVER 2000安全管理

    • 了解SQL SERVER 2000的审计


    4308267

    6.1计算机安全性概论

    • 计算机系统的三类安全性问题

    • 可信计算机系统评测标准(TCSEC)


    4308267

    6.1计算机安全性概论(续)

    • 所谓计算机系统安全性,是指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。

    • 三类安全:

      • 技术安全类

      • 管理安全类

      • 政策法律类


    6 1 1 tcsec

    6.1.1可信计算机系统评测标准(TCSEC)

    • 可信计算机系统评测标准(TCSEC):

      • 美国国防部制定了TCSEC(可靠计算机系统评估标准,Trusted Computing System Evaluation Criteria,简称TCSEC),给出一套标准来定义满足特定安全等级所需的安全功能及其保证的程度。

        制定TCSEC标准的目的:

        1、提供一种标准,使用户可以对其计算机系统内敏感信息安全操作的可信程序做评估。

        2、给计算机行业的制造商提供一种可循的指导规则,使其产品能够更好地满足敏感应用的安全需求。


    6 1 1

    6.1.1可信计算机系统评测标准(续)

    TCSEC 对系统安全等级的划分:

    • TCSEC 将计算机系统划分为四组七个等级,按系统可靠或可信程序逐渐增高排列,依次是:

      D、C1、C2、B1、B2、B3、A1


    4308267

    6.2数据库安全性控制

    • 安全性控制定义

      • 安全性控制保护数据库以防止不合法的使用所造成的数据泄露和破坏。

    • 安全性措施

      • 物理级

      • 人际级

      • 操作系统级

      • 网络级

      • 数据库系统级


    4308267

    6.2数据库安全性控制(续)

    • 与数据库有关的安全技术 :

    • 身份认证

    •  存取控制

    •  视图

    •  审计

    •  数据加密


    6 2 1

    6.2.1身份认证

    • 用户标识和鉴别:

      • 是系统提供的最外层安全保障措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用。

    • 常用的方法:

      • 用一个用户名或者用户标识号来标明用户身份

      • 口令


    6 2 2

    6.2.2存取控制

    数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据,这主要通过数据库系统的存取控制机制实现

    • 存取控制机制主要包括两部分:

      • 定义用户权限

      • 合法权限检查

    • 当前大型DBMS支持的两个安全级别:

      • C2级的DAC(自主存取控制)

      • B1级的MAC(强制存取控制)


    6 2 3

    6.2.3视图机制

    • 视图:

      • 进行存取权限控制时为不同的用户定义的不同的数据对象范围。


    6 2 4

    6.2.4审计

    • 审计:

      • 审计功能把用户对数据库的所有操作自动记录下来放入审记日志(Audit Log)中。

      • DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。


    6 2 5

    6.2.5数据加密

    • 数据加密:

      • 是防止数据库中数据在存储和传输中失密的有效手段。

    • 加密的两种方法:

      • 替换方法

      • 转换方法


    6 3 sql server 2000

    6.3 SQL Server 2000安全构架


    6 3 1 sql server

    6.3.1 SQL Server 的登录认证

    用户使用SQL Server要经过两个安全性阶段:

    • 身份验证

    • 授权(权限验证)


    6 3 1 sql server1

    6.3.1 SQL Server 的登录认证(续)


    6 3 1 sql server2

    6.3.1 SQL Server 的登录认证(续)

    身份验证模式比较:

    • Windows 认证模式的优点

      • 更先进的安全策略

      • 一组只需建一个用户

      • 更快捷的访问

    • 混合认证模式的优点

      • 非windows用户及Internet客户可以连接到数据库


    6 3 2

    6.3.2 身份验证模式设置


    6 3 3

    6.3.3权限验证


    6 3 31

    6.3.3权限验证(续)

    两个默认登录帐户:

    • BUILTIN\Administrators

      • WINDOWS administrators组成员默认使用此帐户登录

    • Sa

      • 使用混合认证方式时,SQL SERVER的登录帐户


    6 4 sql server

    6.4 SQL Server安全管理

    • 管理SQL Server 登录

    • 数据库用户


    6 4 1 sql server

    6.4.1管理SQL Server 登录--新建登录


    6 4 1 sql server windows

    6.4.1管理SQL Server 登录-新建登录(windows身份验证)

    单击此按钮,将弹出左边的对话框,在这里可以选择Windows系统中的用户

    设置默认数据库


    6 4 1 sql server sql server

    6.4.1管理SQL Server 登录-新建登录(SQL Server身份验证)

    SQL server身份验证用户名

    设置默认数据库


    6 4 1 sql server1

    6.4.1管理SQL Server 登录-查看登录、修改登录(密码),拒绝、删除登录


    6 4 2

    6.4.2 数据库用户

    • 数据库用户简介

    • 管理数据库用户


    6 4 2 1

    6.4.2.1数据库用户简介

    数据库最高权限用户--数据库所有者 (dbo):

    • dbo 是具有在数据库中执行所有活动的暗示性权限的用户

    • sysadmin 的任何成员都映射到dbo用户

    • 任何其他不是sysadmin角色底成员创建底对象都不属于dbo


    6 4 2 11

    6.4.2.1数据库用户简介(续)

    数据库特殊用户--guest 用户:

    • 当满足下列所有条件时,登录采用 guest 用户的标识:

      • 登录有访问 Microsoft SQL Server 实例的权限,但没有对应的用户帐户访问数据库的权限

      • 数据库中含有 guest 用户帐户

    • 可以在除 master 和 tempdb 外(在这两个数据库中它必须始终存在)的所有数据库中添加或删除 guest 用户。默认情况下,新建的数据库中没有 guest 用户帐户


    6 4 2 12

    6.4.2.1数据库用户简介(续)

    数据库对象所有者:

    • SQL Server查找对象底顺序为:

      • 当前用户所拥有

      • 为dbo所拥有

  • 如果找不到对象,返回错误信息


  • 6 4 2 2

    6.4.2.2管理数据库用户-创建数据库用户

    指定对应登录帐户


    6 4 2 21

    6.4.2.2管理数据库用户-删除登录和用户

    • 删除用户和组时将自动删除为该用户定义的权限

    • 当某个用户当前拥有数据库对象时不能被删除

    • 删除用户不会自动删除登录,因此不会防止用户联接到SQL Server 实例


    6 4 2 22

    6.4.2.2管理数据库用户-给数据库用户分配权限


    4308267

    6.5 权限管理

    权限管理包括授予或废除活动的用户权限:

    • 处理数据和执行过程(对象权限)

    • 创建数据库或数据库中的项目(语句权限)

    • 利用授予预定义角色的权限(暗示性权限)


    4308267

    REVOKE:

    Neutral

    DENY:Cannot Perform Action

    6.5权限管理(续)

    GRANT:Can Perform Action


    6 5 1

    6.5.1对象权限

    对象权限是指:处理数据或执行过程时需要的权限.包括:

    • SELECT、INSERT、UPDATE 和DELETE 语句权限,它们可以应用到整个表或视图中。

    • SELECT 和UPDATE 语句权限,它们可以有选择性地应用到表或视图中的单个列上。

    • SELECT 权限,它们可以应用到用户定义函数。

    • INSERT 和DELETE 语句权限,它们会影响整行,因此只可以应用到表或视图中,而不能应用到单个列上。

    • EXECUTE 语句权限,它们可以影响存储过程和函数。


    6 5 2

    6.5.2语句权限

    • 创建数据库或数据库中的项(如表或存储过程)所涉及的活动要求另一类称为语句权限的权限。

    • 语句权限有:

      CREATE DATABASE 创建数据库

      CREATE TABLE 创建表

      CREATE VIEW 创建视图

      CREATE RULE 创建规则

      CREATE DEFAULT 创建缺省

      CREATE PROCEDURE 创建存储过程

      BACKUP DATABASE 备份数据库

      BACKUP LOG 备份事务日志


    6 5 3

    6.5.3暗示性权限

    • 暗示性权限控制那些只能由预定义系统角色的成员或数据库对象所有者执行的活动。例如,sysadmin固定服务器角色成员自动继承在 SQL Server 安装中进行操作或查看的全部权限。

    • 数据库对象所有者还有暗示性权限,可以对所拥有的对象执行一切活动。

    • 例如,拥有表的用户可以查看、添加或删除数据,更改表定义,或控制允许其他用户对表进行操作的权限。


    4308267

    语句

    对象

    预定义

    SELECT

    INSERT

    UPDATE

    DELETEREFERENCES

    Fixed Role

    CREATE DATABASE

    Object Owner

    CREATE TABLE

    TABLE

    VIEW

    CREATE VIEW

    CREATE PROCEDURE

    SELECT

    UPDATE

    REFERENCES

    CREATE RULE

    CREATE DEFAULT

    COLUMN

    CREATE FUNCTION

    BACKUP DATABASE

    EXEC

    BACKUP LOG

    STORED

    PROCEDURE

    权限管理小结


    4308267

    6.6角色管理

    使用数据库角色的好处:

    • 对于任何用户,都可以随时让多个数据库角色处于活动状态

    • 如果所有用户、组和角色都在当前数据库中,则 SQL Server 角色可以包含 Windows NT 4.0 或 Windows 2000 组和用户,以及 SQL Server 用户和其它角色

    • 在同一数据库中,一个用户可属于多个角色

    • 提供了可伸缩模型以便在数据库中设置正确的安全级别


    6 6 1

    6.6.1角色概述

    Microsoft SQL Server中的安全机制包括几个具有暗示性权限的预定义角色,两类预定义角色为:

    • 固定服务器角色

    • 固定数据库角色


    6 6 11

    6.6.1 角色概述(续)-固定服务器角色

    Sysadmin在 SQL Server 中进行任何活动。

    该角色的权限 跨越所有其它固定服务器角色。

    Serveradmin配置服务器范围的设置。

    Setupadmin添加和删除链接服务器,并执行某 些系统存储过程(如sp_serveroption)

    Securityadmin 管理服务器登录。

    Processadmin 管理在 SQL Server 实例中运行的进程。

    Dbcreator创建和改变数据库。

    Diskadmin管理磁盘文件。

    Bulkadmin执行 BULK INSERT 语句。


    6 6 12

    6.6.1 角色概述(续)-固定数据库角色

    db_owner进行所有数据库角色的活动,以及数据库中的

    其它维护和配置活动。该角色的权限跨越所有其它固定数据库角色。

    db_accessadmin在数据库中添加或删除 Windows NT 4.0 或 Windows 2000 组和用户以及 SQL Server 用户。

    db_datareader查看来自数据库中所有用户表的全部数据。

    db_datawriter添加、更改或删除来自数据库中所有用户表的数据。

    db_ddladmin添加、修改或除去数据库中的对象。

    db_securityadmin管理 SQL Server 2000 数据库角色的角色和成员, 并管理数据库中的语句和对象权限。

    db_backupoperator有备份数据库的权限。

    db_denydatareader拒绝选择数据库数据的权限。

    db_denydatawriter拒绝更改数据库数据的权限。


    6 6 2

    6.6.2角色的管理:新建数据库角色(续)


    6 7 sql server

    6.7 SQL Server 安全性管理的途径

    • 使用视图作为安全机制

    • 视图与权限结合

    • 使用存储过程作为安全机制


    6 7 1 1

    6.7.1.1使用行级、列级安全性的视图

    例:在该例中某一销售点只能查看他自己的销售信息,使用pubs 数据库中的sales 表:

    首先创建视图

    create view specificsale as

    select ord_num ord_date qty payterms title_id

    from sales

    where stor_id=’7067’

    当执行以下语句时

    select * from specificsale

    则只显示他自己的销售信息


    6 7 1 2

    6.7.1.2视图与权限结合

    通过定义不同的视图及有选择地授予视图上的权限,可以将用户、组或角色限制在不同的数据子集内。例如:

    • 可以将访问限制在基表中行的子集内。例如,可以定义一个视图,其中只含有商业书籍或心理书籍的行,并向用户隐藏有关其它类型书籍的信息。

    • 可以将访问限制在基表中列的子集内。例如,可以定义一个视图,其中含有 titles 表中的所有行,但省略了 royalty 和 advance 列,因为这些信息比较敏感。

    • 可以将访问限制在基表中列和行的子集内。

    • 可以将访问限制在符合多个基表联接的行内。例如,可以定义一个视图,它联接表 titles、authors 和 titleauthor 表以显示作者姓名及其撰写的书籍。该视图隐藏作者的个人信息以及著作的财务信息。

    • 可以将访问限制在基表中数据的统计汇总内。例如,可以定义一个视图,其中只含有每类书籍的平均价格。

    • 可以将访问限制在另一个视图的子集内或视图和基表组合的子集内。


    6 7 2

    6.7.2使用存储过程作为安全机制

    • 存储过程是Transact-SQL 语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。

    • 如果用户不具有访问视图和表的权限,那么通过存储过程仍能够让其查询相应的数据信息。实现的方法很简单,只要让该用户具有存储过程的EXEC 权限就可以了。

    • 要确保该存储过程中包含了查询语句,比如可创建下面的存储过程

      create procedure selsales as

      select * from sales

    • 然后将存储过程的EXEC 权限授予用户当用户,执行该存储过程时就可以查看到相应信息。

    • 使用存储过程的优点在于不必对视图和表的访问权限进行分配。


    6 8 sql

    6.8使用 SQL 事件探查器进行监视

    • 监视 SQL Server 实例的性能

    • 调试 Transact-SQL 语句和存储过程

    • 识别执行慢的查询

    • 在工程开发阶段,通过单步执行语句测试 SQL 语句和存储过程,以确认代码按预期运行

    • 通过捕获生产系统中的事件并在测试系统中重播它们来解决 SQL Server 中的问题

    • 审核和复查在 SQL Server 实例中发生的活动


    6 8 1 sql

    6.8.1 启动SQL 事件探查器


    6 8 2 sql

    6.8.2 使用SQL 事件探查器方案

    通常情况下,使用 SQL 事件探查器可以:

    • 查找执行最差的查询

    • 识别死锁原因

    • 监视存储过程的性能

    • 审核 Microsoft SQL Server 活动

    • 监视每个用户的 Transact-SQL 活动


    6 8 3

    6.8.3 创建跟踪示例

    从这里创建新的跟踪


    6 8 31

    6.8.3创建跟踪示例(续)

    跟踪属性对话框


    6 8 32

    6.8.3创建跟踪示例(续)

    属性(事件选项卡)


    6 8 33

    6.8.3创建跟踪示例(续)

    属性(数据列选项卡)


    6 8 34

    6.8.3创建跟踪示例(续)

    属性(筛选器选项卡)


    6 8 35

    6.8.3创建跟踪示例(续)


    6 8 4 sql

    6.8.4 SQL 事件探查器性能考虑

    在使用SQL 事件探查器的时候也要适当考虑性能方面的问题,如果跟踪的开销太大则应当适当调整跟踪策略,主要的性能降低由以下原因产生:

    • 运行的跟踪过多

    • 管理大跟踪文件


    4308267

    本章总结

    • 计算机系统的三类安全性

    • 可信计算机系统评测标准(TCSEC)及其级别划分

    • 数据库的安全性控制及其技术

    • 安全性控制机制的功能

    • SQL SERVER 2000安全架构

    • SQL SERVER 2000安全管理

    • SQL SERVER 2000中的角色

    • SQL SERVER 2000安全策略

    • SQL SERVER 2000事件探查器的使用


    4308267

    第7章 实现数据完整性


    4308267

    本章目标

    本章结束时,学员能够:

    • 了解数据完整性概念

    • 了解规则

    • 了解缺省值

    • 了解触发器


    7 1 data integrity

    7.1数据完整性(Data Integrity)

    • 数据完整性:

      • 数据的正确性和相容性

      • 防止不合语义的数据进入数据库。

        例: 学生的年龄必须是整数,取值范围为14--29;

        学生的性别只能是男或女;

        学生的学号一定是唯一的;

        学生所在的系必须是学校开设的系;


    7 1 data integrity1

    7.1数据完整性(Data Integrity)(续)

    SQL Server中数据完整性分类:

    • 实体完整性(Entity Integrity)

    • 域完整性(Domain Integrity)

    • 参照完整性(Referential Integrity)

    • 用户定义的完整性(User-defined Integrity)


    7 1 data integrity2

    7.1数据完整性(Data Integrity)(续)

    完整性类型

    约束类型

    域完整性

    DEFAULT

    CHECK

    REFERENTIAL

    实体完整性

    PRIMARY KEY

    UNIQUE

    参照完整性

    FOREIGN KEY

    CHECK


    7 1 data integrity3

    7.1数据完整性(Data Integrity)(续)

    SQL Server 数据完整性实现的工具:

    约束Constraint

    规则Rule

    默认值Default

    触发器Trigger


    7 2 rule

    7.2规则Rule

    • 规则Rule就是数据库中对存储在表的列或用户自定义数据类型中的值的规定和限制


    7 2 1

    7.2.1创建规则


    7 2 11

    7.2.1创建规则(续)-输入规则 名称及表达式

    在此输入要创建的规则的表达式


    7 2 2

    7.2.2查看规则 、删除规则


    7 2 3

    7.2.3规则绑定

    规则绑定到表的列

    规则绑定到用户的自定义类型


    7 2 31

    7.2.3规则绑定(续)---到指定表的列


    7 3 default

    7.3缺省值(默认值)Default

    • 是往用户输入记录时没有指定具体数据的列中自动插入的数据缺省值对象.

    • 与ALTER TABLE 或CREATE TABLE 命令操作表时用DEFAULT 选项指定的缺省值功能相似,但缺省值对象可以用于多个列或用户自定义数据类型.

    • 它的管理与应用同规则有许多相似之处

    • 表的一列或一个用户自定义数据类型也只能与一个缺省值相绑定.


    7 3 1

    7.3.1创建默认值


    7 3 11

    7.3.1创建默认值(续)-输入默认值名称及对应值


    7 3 2

    7.3.2查看默认值


    7 3 21

    7.3.2查看默认值(续)


    7 3 3 udt

    7.3.3缺省值的绑定与松绑-绑定UDT


    7 3 3

    7.3.3缺省值的绑定与松绑(续)-绑定列


    7 3 4

    7.3.4删除默认值

    • 可以在企业管理器中选择缺省值,单击右键从快捷菜单中选择删除选项删除缺省值。


    4308267

    7.4       触发器

    触发器是一种特殊类型的存储过程

    • 当使用一种或多种数据修改操作在指定表中对数据进行修改时,会生效:UPDATE、INSERT 或 DELETE。触发器

    • 是自动的:它们在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。

    • 可以通过数据库中的相关表进行层叠更改。

    • 可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。

    • 可以引用其它表中的列。


    4308267

    7.4   触发器(续)

    触发器的类型:

    • INSERT 触发器

    • UPDATE 触发器

    • DELETE 触发器


    7 4 1

    7.4.1 创建触发器

    CREATE TRIGGER [owner.]trigger_name

    ON [owner.]table_name

    FOR [INSERT, UPDATE, DELETE]

    [WITH ENCRYPTION]

    AS sql_statements


    7 4 11

    7.4.1 创建触发器(续)

    create trigger ta on sc

    for update as print ‘hi trigger is fired a ’

    create trigger tb on sc

    for update as print 'hi trigger is fired b'

    exec sp_helptext tb

    exec sp_helptext ta

    update sc set grade=99


    7 4 12

    7.4.1创建触发器(续)


    7 4 2

    7.4.2查看触发器


    4308267

    7.4.3修改和重命名触发器


    7 4 3

    7.4.3修改和重命名触发器(续)

    • ALTER TRIGGER trigger_name ON ( table | view ) [ WITH ENCRYPTION ] {     { ( FOR | AFTER | INSTEAD OF ) { [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }         [ NOT FOR REPLICATION ]        ASsql_statement [...n ]    }     |     { ( FOR | AFTER | INSTEAD OF ) { [ INSERT ] [ , ] [ UPDATE ] }        [ NOT FOR REPLICATION ]        AS子句


    7 4 4

    7.4.4删除触发器

    删除


    7 4 41

    7.4.4删除触发器(续)

    从当前数据库中删除一个或多个触发器的语法是:

    • DROP TRIGGER { trigger } [ ,...n ]


    4308267

    本章总结

    • 数据完整性概述

    • 规则

      • 创建、修改、删除

    • 缺省值

      • 创建、修改、删除

    • 触发器

      • 创建、修改、删除


    8 sql server

    第8章 SQL SERVER数据库系统管理


    4308267

    本章目标

    • SQL SERVER 2000数据库恢复

      • 恢复的概念

      • 从不同的备份中恢复数据库

    • 数据转换与导入导出

      • 数据转换的方法

    本章结束时,学员能够了解和掌握:

    • SQL SERVER 2000 DBA职能简介

    • 数据库设计及规划

    • SQL SERVER 2000数据库操作

      • 分离数据库

      • 附加数据库

      • 删除数据库

      • 收缩数据库

    • SQL SERVER 2000备份

      • 备份设备简介

      • 备份的类型

      • 备份的内容

      • 规划备份策略


    8 1 dba database administrator

    8.1 DBA (DataBase Administrator) 简介

    DBA所要掌握的技能

    • SQL Server

    • Windows 2000/NT

    • 关系型数据库

    • SQL语言

    • 备份和恢复过程

    • 业务处理

    DBA的职责

    • 安装SQL Server

    • 建立和维护数据库

    • 管理用户

    • 管理权限

    • 备份和恢复数据

    • 调度任务

    • 监视和调整服务器

    • 管理SQL Server复制


    4308267

    8.2 认识系统数据库

    Distribution在分发复制时系统自动创建

    系统数据库

    master

    model

    tempdb

    msdb

    distribution

    pubs

    Northwind

    User1

    用户数据库


    4308267

    8.3 数据库设计及规划

    Microsoft SQL Server 2000 使用一组操作系统文件映射数据库。数据库中的所有数据和对象(如表、存储过程、触发器和视图)都存储在下列操作系统文件中:

    • 主文件:该文件包含数据库的启动信息,并用于存储数据。每个数据库都有一个主要数据文件

    • 辅助文件:这些文件含有不能置于主要数据文件中的所有数据。如果主文件可以包含数据库中的所有数据,那么数据库就不需要次要数据文件。有些数据库可能足够大,因而需要多个次要数据文件,或使用位于不同磁盘驱动器上的辅助文件将数据扩展到多个磁盘

    • 事务日志:这些文件包含用于恢复数据库的日志信息。每个数据库都必须至少有一个日志文件。


    4308267

    8.3数据库设计及规划(续)

    在设计数据库时,应考虑以下事项:

    • 数据库的用途及该用途将如何影响设计。应创建符合用途的数据库计划

    • 数据库规范化规则,防止数据库设计中出现错误

    • 对数据完整性的保护

    • 数据库和用户权限的安全要求

    • 应用程序的性能需求

    • 维护

    • 估计数据库大小


    4308267

    8.3数据库设计及规划(续)

    设计规则:

    • 获得合理的数据库设计的规则:

    • 表应该有一个标识符

    • 表应只能存储单一类型实体的数据

    • 表应避免可为空的列

    • 表不应有重复的值或列

    • 考虑将重复的数据置于与主表有链接的另一个表中


    4308267

    8.3数据库设计及规划(续)

    文件设计规则:

    • 文件或文件组不能由一个以上的数据库使用

    • 文件只能是一个文件组的成员

    • 数据和事务日志信息不能属于同一文件或文件组

    • 事务日志文件不能属于任何文件组


    4308267

    8.4 数据库管理

    • 创建数据库

    • 数据库属性

    • 收缩数据库和数据库文件

    • 删除数据库

    • 移动数据库

    • 数据库维护计划


    8 4 1

    8.4.1创建数据库

    • 在创建数据库之前,请考虑如下事项:

      • 创建数据库的权限默认授予 sysadmin和 dbcreator固定服务器角色的成员,但是它仍可以授予其他用户

      • 创建数据库的用户将成为该数据库的所有者

      • 在一个服务器上,最多可以创建 32,767 个数据库

      • 数据库名称必须遵循标识符规则

    • 创建数据库方法

      • Transact-SQL

      • 企业管理器

      • 企业管理创建数据库向导


    8 4 1 1 transact sql

    8.4.1.1用Transact-SQL创建数据库

    CREATE DATABASE SampleON PRIMARY ( NAME=SampleData, FILENAME='c:\Program Files\..\..\Data\Sample.mdf', SIZE=10MB,

    MAXSIZE=15MB,

    FILEGROWTH=20%) LOG ON ( NAME=SampleLog, FILENAME= 'c:\Program Files\..\..\Data\Sample.ldf', SIZE=3MB,

    MAXSIZE=5MB,

    FILEGROWTH=1MB)


    8 4 1 1 transact sql1

    8.4.1.1用Transact-SQL创建数据库(续)

    单击运行按钮执行创建数据库的语句

    在这里输入创建数据库的SQL语句

    SQL语句执行结果,显示创建成功


    8 4 1 2

    8.4.1.2利用企业管理器来创建数据库


    8 4 1 21

    8.4.1.2利用企业管理器来创建数据库(续)


    8 4 1 22

    8.4.1.2利用企业管理器来创建数据库(续)

    新创建的数据库


    8 4 1 3

    8.4.1.3利用数据库向导创建数据库


    8 4 1 31

    8.4.1.3利用数据库向导创建数据库(续)


    8 4 1 32

    8.4.1.3利用数据库向导创建数据库(续)


    8 4 1 33

    8.4.1.3利用数据库向导创建数据库(续)


    8 4 2

    8.4.2数据库属性


    8 4 21

    8.4.2数据库属性(续)


    8 4 3

    8.4.3收缩数据库和数据库文件

    • 经常对数据库做删除插入操作就会产生空白页

    • 为了节省磁盘空间我们可以定期进行数据库收缩

    • 数据库收缩并不是压缩数据而是降低空白页的数目

    • 数据库不能收缩到比创建时还小

    • 不能在备份数据库或者日志时执行收缩任务


    8 4 31

    8.4.3 收缩数据库和数据库文件(续)

    设定空闲空

    间占文件大

    小的百分比

    使用设定的

    压缩计划来

    压缩数据库

    单独指定数据

    库中各数据文

    件和事务日志

    文件的压缩操


    8 4 32

    8.4.3收缩数据库和数据库文件(续)


    8 4 33

    8.4.3收缩数据库和数据库文件(续)


    8 4 4

    8.4.4删除数据库

    DROP DATABASE Northwind, pubs


    8 4 41

    8.4.4删除数据库(续)

    • 下列情况下不能删除数据库:

      • 当有用户连接到数据库时

      • 当作为复制的一部分正在被出版时

      • 当为系统数据库时


    8 4 5

    8.4.5 移动数据库-分离、附加

    • 如果想按以下方式移动数据库,则分离和附加数据库很有用:

      从一台计算机移到另一台计算机,而不必重新创建数据库,然后手动还原数据库备份。

      移到另一物理磁盘上,例如,当包含该数据库文件的磁盘空间已用完,您希望扩充现有的文件而又不愿将新文件添加到其它磁盘上的数据库。

    • 将数据库或数据库文件移动到另一服务器或磁盘:

      分离数据库。

      将数据库文件移到另一服务器或磁盘。

      通过指定移动文件的新位置附加数据库。


    8 4 51

    8.4.5 移动数据库(续)-分离


    8 4 52

    8.4.5 移动数据库(续)-附加数据库


    8 4 6

    8.4.6数据库维护计划


    8 4 61

    8.4.6数据库维护计划(续)


    8 4 62

    8.4.6数据库维护计划(续)


    8 4 63

    8.4.6数据库维护计划(续)


    8 4 64

    8.4.6数据库维护计划(续)


    8 4 65

    8.4.6数据库维护计划(续)


    8 4 66

    8.4.6数据库维护计划(续)


    8 4 67

    8.4.6 数据库维护计划(续)


    8 4 68

    8.4.6数据库维护计划(续)


    8 4 69

    8.4.6数据库维护计划(续)


    8 4 610

    8.4.6数据库维护计划(续)


    4308267

    8.5数据库的备份

    • 备份的概念及作用

      • 制作数据库结构和数据库的拷贝

      • 防止数据库遭到破坏

      • 备份数据库的频繁程度取决于许损失的数据量及数据库活动量

    • 备份的准则

      • 处于在线事务处理(OLTP)环境中,要经常性地备份

      • 系统活动不多或主要用于决策支持,不用太频繁的备份

      • 把备份安排在SQL Server没有被大量更新的过程中


    8 5 1

    8.5.1备份的概述-使用恢复模型

    • 可以为 Microsoft SQL Server 2000 中的每个数据库选择三种恢复模型中的一种,以确定如何备份数据以及能承受何种程度的数据丢失。

      • 简单恢复 :简单恢复允许将数据库恢复到最新的备份。

      • 完全恢复 :完全恢复允许将数据库恢复到故障点状态。

      • 大容量日志记录恢复: 大容量日志记录恢复允许大容量日志记录操作。

    • 当创建新的数据库时,新的数据库继承 model数据库的恢复模型


    8 5 11

    8.5.1备份的概述(续)-使用恢复模型

    故障还原模型


    8 5 1 sql server

    8.5.1备份的概述(续)-SQL Server备份

    • 备份的角色成员

      sysadmin、 db_owner、 db_backupoperator

    • 备份的介质

      硬盘、磁带或命名管道Named Pipe

      SQL Server提供备份到Named Pipe的能力,以便用户充分利用其它厂家软件包的备份和恢复特性


    8 5 12

    8.5.1备份的概述(续)-备份的内容

    • 备份系统数据库

      主要指master、 msdb和 model数据库

    • 备份用户数据库

    • 备份过程中限制的活动


    8 5 13

    8.5.1备份的概述(续)-备份系统数据库

    • 修改master数据库之后

      • Mssq180\Binn\Rebuildm.exe

      • 执行下列语句后,自动修改

        • CREATE DATABASE、ALTER DATABASE 或 DROP DATABASE

        • sp_logdevice系统存储过程

        • sp_addserver, sp_dropserver 和sp_addlinkedserver

    • 修改msdb数据库之后

    • 修改model数据库之后


    8 5 14

    8.5.1备份的概述(续)-备份用户数据库

    • 在创建数据库后

    • 在创建索引后

    • 在清除了事务日志后

      • 若创建了索引之后,您只备份了事务日志,并在未来某一时刻恢复该事务日志,则SOL Server必须重建索引。要求用来重建索引的时间量,可能会比恢复复全库备份的时间还要长。

    • 在执行完不记日志的操作后

      • 不被记录到事务日志的操作

      • BACKUP LOG WITH NO_LOG语句

      • WRITETEXT或UPDATETEXT语句

      • SELECT INTO语句


    8 5 15

    8.5.1备份的概述(续)- 备份过程中受限制的活动

    • 创建或修改数据库

    • 创建索引

    • 执行不记日志的操作


    8 5 2

    8.5.2 执行备份

    • 使用永久性备份文件

    • 使用临时性备份文件


    8 5 2 1

    8.5.2.1创建永久性备份文件

    • 永久性备份的含义

    • 自动化备份任务


    8 5 2 11

    8.5.2.1创建永久性备份文件(续)


    8 5 2 12

    8.5.2.1创建永久性备份文件(续)

    新创建的备份设备


    8 5 2 2

    8.5.2.2临时性的备份文件

    • 临时性备份文件的含义

    • 执行一次性备份

    • 使用BACKUP DATABASE 语句


    8 5 2 21

    8.5.2.2临时性的备份文件(续)

    • 下面这个例子在硬盘上创建一个临时性备份文件,并且把northwind数据库备份到此临时性备份文件中。

    • USE master

    • BACKUP DATABASE northwind to DISK='C:\Temp\Mycustomers.bak'


    8 5 3

    8.5.3备份类型

    • 全库备份

    • 差异备份

    • 事务日志备份

    • 一个数据库文件或文件组的备份


    8 5 3 1

    8.5.3.1执行一个全库备份

    如果您的数据库主要是一个只读数据库,全库备份或许足以防止数据损失。在系统出故障的 情况下,可把全库备份用作基线。当您执行全库备份时,SQL Server要:

    • 备份在备份过程中发生的任何活动。

    • 把任何未提交的事务备份到事务日志。

      恢复备份时,SQL Server利用备份文件中捕捉到的部分事务日志来确保数据一致性。

      BACKUP DATABASE northwind to nwndbac


    8 5 3 2

    8.5.3.2执行差异备份

    • 用于经常被修改的数据库

    • 要求一个全库备份

    • 备份自上次全库备份以来的数据库变化

    • 因备份集小而节省时间

    • 语法:

      BACKUP DATABASE northwind TO

      DISK='D:\Mydata\Mydiffbackup.bak'

      WITH DIFFERENTIAL


    8 5 3 3

    8.5.3.3执行一个事务日志备份

    • 提供对任何数据库变化的备份

    • 要求一个全库备份

    • 备份从最近执行一次BACKUPLOG语句之后到当前事务日志末尾的全部数据库更改

    • 截断事务日志


    8 5 3 31

    8.5.3.3执行一个事务日志备份(续)

    • BACKUP LOG的语法形式

    • BACKUP LOG northwind TO nwndbac

    • 使用NO-TRUNCATE选项

      • 允许在数据库损坏时备份日志

    • 使用TRUNCATE-ONLY选项


    8 5 3 4

    8.5.3.4执行一个数据库文件或文件组的备份

    • 用与特大型数据库(VLDB)

    • 单独备份数据库文件

    • 确保备份一个文件组中的所有的数据库文件

    • 备份事务日志

    • 语法:

      BACKUP DATABASE phoneorders

      FILE=orders2 to orderbackup2

      BACKUP LOG phoneorders to orderbackuplog


    8 5 4

    8.5.4规划一个备份策略

    • 全库备份策略

    • 全库及事务日志备份策略

    • 差异备份策略

    • 数据库文件或文件组备份策略


    8 5 41

    8.5.4规划一个备份策略(续)-全库备份策略

    实施的情况:

    • 数据库较小,备份一个小数据库所需的时间量是可接受的;

    • 数据库没有什么数据修改或是只读型的


    8 5 42

    8.5.4规划一个备份策略(续)-全库和事务日志备份策略

    实施的情况:

    –对经常被修改的数据库实行全库和事务日志备份

    备份策略及恢复策略:

    –存储方式

    –全库备份及事务日志备份时间

    –恢复的方法和时间


    8 5 43

    8.5.4规划一个备份策略(续)-差异备份策略

    • 实施的情况

      • 对数据库做更改时使用

      • 缩短还原时间

    • 备份策略及恢复策略

      • 全库备份时间及差异备份时间

      • 全库恢复时间及差异恢复时间


    8 5 44

    8.5.4规划一个备份策略(续)-数据库文件和文件组备份策略

    实施的情况:

    –应用于划分多个文件的数据库

    –保证数据的一致性

    备份策略和恢复策略:

    –数据划分

    –全库备份时间和文件备份时间,日志备份时间

    –恢复时间


    4308267

    8.6 数据库的恢复

    • 数据库恢复是指将数据库备份加载到系统中的过程

    • 恢复是与备份相对应的操作


    8 6 1

    8.6.1恢复的概念

    系统在恢复进程中的活动:

    • 安全性检查、重建数据库及文件

      • Restore语句

      • 不能正确恢复的情况

        • 备份文件中数据库不同于指定的数据库

        • 服务器上的文件集不同于备份中的文件集

        • 没有提供恢复数据库的全部文件或文件组

      • 恢复进程自动进行


    8 6 11

    8.6.1恢复的概念(续)-验证备份

    两种验证的方法:

    • 使用SQL Server Enterprise Manager查看每一个备份设备的属性

    • 使用一些Transact-SQL语句,可以得到更加详细的备份信息。验证备份信息常用的Transact-SQL语 句有:

      • RESTORE HEADERONLY、RESTORE FILELISTONLY、RESTORE LABELONLY、RESTORE VERIFYONLY


    8 6 12

    8.6.1恢复的概念(续)-在恢复之前执行指定的任务

    • 必须限制用户对数据库的访问以及事务日志的备份

    • 应该设置数据库的dbo use only选项

      • 使用SQL Server Enterprise Manager

      • 执行系统存储过程sp_dboption。

    • 语法:

      sp_dboption[[@dbname=]'database']

      [,[@optname=]'option_name']

      [,[@optvalue=]'value']


    8 6 13

    8.6.1恢复的概念-在恢复之前执行指定的任务(续)


    8 6 14

    8.6.1恢复的概念(续)-恢复数据库的方法

    两种恢复操作的方法如下所示:

    • 使用RESTORE语句

    • 使用SQL Server 企业管理器


    8 6 1 restore

    8.6.1恢复的概念(续)-使用RESTORE语句恢复数据库

    RESTORE DATABASE {database_name_var}

    [FROM<backup_file>[,...n]]

    [WITH

    [[,] FILE=file_number]

    [[,] MOVE' logical_file_name' TO' operating_system_file_name']

    [[,] REPLACE]

    [[,] {NORECOVERY|RECOVERY| STANDBY=undo_file_name}]]

    其中<backup_file>是

    {{backup_file_name|@backup_file_name_var}|

    {DISK|TAPE|PIPE}={'temp_backup_file'|@temp_backup_file_var}}


    8 6 1 restore1

    8.6.1恢复的概念-使用RESTORE语句恢复数据库(续)

    在RESTORE语句中,可以使用一些选项 :

    • RECOVERY

      • RECOVERY选项是系统的默认选项。该选项用于恢复最后一个事务日志或者完全数据库恢复,可以保证数据库的一致性。当使用该选项时,系统取消事务日志中任何未提交的事务,并提交任何完成的事务。在数据库恢复进程完成之后,就可以使用数据库。如果必须使用增量备份恢复数据库,就不能使用该选项。

    • NORECOVERY

      • 当需要恢复多个备份时,应使用NORECOVERY选项。这时,系统既不取消事务日志中任何未提交的事务,也不提交任何已完成的事务。在数据库恢复之前,数据库是不能使用的


    8 6 1 restore2

    8.6.1恢复的概念-使用RESTORE语句恢复数据库(续)

    示例:

    • 从一个已经存在的永久性备份文件saledbk中恢复数据库sales。

      USE master

      RESTORE DATABASE sales

      FROM saledbk


    8 6 15

    8.6.1恢复的概念(续)-使用企业管理器恢复数据库


    8 6 16

    8.6.1恢复的概念-使用企业管理器恢复数据库(续)


    8 6 2

    8.6.2 从不同的备份中恢复数据库

    • 从完全数据库备份中恢复

    • 从差异备份中恢复

    • 从事务日志备份中恢复

    • 从文件或者文件组备份中恢复


    8 6 2 1

    8.6.2.1从完全数据库备份中恢复

    • 重新创建数据库以及与数据库相关的全部文件

    • 所有的数据库对象都由系统自动创建

    • 用户应指定RECOVERY选项

    • 例如:

      USE master

      RESTORE DATABASE northwind

      FROM nwindbac

      WITH FILE =2

      RECOVERY

      对于用户来说,没有必要在恢复数据库之前重新创建数据库。一般在数据库的物理磁盘文件损坏,或者整个数据库被删除、破坏时,应该从完全数据库备份中恢复


    8 6 2 2

    8.6.2.2从差异备份中恢复

    • SQL Server系统只恢复从最近一次完全数据库备份以后数据库的变化部分,并且将数据库返回到执行增量备份时的状态

    • 从增量备份中恢复数据库所需要的时间比从事务日志备份中恢复数据库要少

    • 还原差异数据库备份的顺序为:

    • 还原最新的数据库备份。

    • 还原最后一次的差异数据库备份。

    • 如果使用完全恢复或大容量日志记录恢复,则应用自上次创建差异数据库备份后创建的所有事务日志备份。


    8 6 2 21

    8.6.2.2从差异备份中恢复(续)

    下例还原MyNwind 数据库的全库和差异数据库备份:

    RESTORE DATABASE MyNwind

    FROM MyNwind_1

    WITH NORECOVERY

    GO

    RESTORE DATABASE MyNwind

    FROM MyNwind_1

    WITH FILE = 2 RECOVERY


    8 6 2 3

    8.6.2.3从事务日志备份中恢复

    • 最近一次完全数据库备份或增量备份中恢复数据库的变化

    • 可以将数据库恢复到某个指定时该的状态

    • 须在完全数据库恢复之后进行


    8 6 2 31

    8.6.2.3从事务日志备份中恢复(续)

    USE master

    RESTORE DATABASE northwind

    FROM nwindbac

    WITH NORECOVERY /*从全库备份中恢复*/

    GO

    USE master

    RESTORE LOG northwind

    FROM nwindbaclog

    WITH FILE=1

    NORECOVERY /*恢复第一个事物日志备份*/

    GO

    USE master

    RESTORE LOG northwind

    FROM nwindbaclog

    WITH FILE=2

    RECOVERY /*恢复第二个事物日志备份*/


    8 6 2 4

    8.6.2.4从文件或者文件组备份中恢复

    • 减少恢复巨大的数据库所需的时间,可以从文件备份或者文件组备份中恢复数据库

    • 如果某个特殊的文件被破坏或者被偶然删除,可以从文件备份或者文件组备份中恢复


    4308267

    8.7 数据转换概述

    • 数据转换的目的

      • 共享数据、数据传送

    • 数据转换的概念

      • 引入、引出及其它格式之间传送数据

      • 从不同数据源中输入数据,建立数据仓库和数据市场

      • 数据输入输出以相同格式读写,在应用程序间交换


    8 7 1 dts

    8.7.1 DTS数据引入引出向导


    8 7 1 dts1

    8.7.1 DTS数据引入引出向导(续)


    8 7 1 dts2

    8.7.1 DTS数据引入引出向导(续)


    8 7 1 dts3

    8.7.1 DTS数据引入引出向导(续)


    8 7 1 dts4

    8.7.1 DTS数据引入引出向导(续)


    4308267

    本章总结

    • SQL SERVER 2000数据库恢复

      • 恢复的概念

      • 从不同的备份中恢复数据库

    • 数据转换与导入导出

      • 数据转换的方法

    • SQL SERVER 2000 DBA职能简介

    • 数据库设计及规划

    • SQL SERVER 2000数据库操作

      • 分离数据库

      • 附加数据库

      • 删除数据库

      • 收缩数据库

    • SQL SERVER 2000备份

      • 备份设备简介

      • 备份的类型

      • 备份的内容

      • 规划备份策略


    4308267

    第9章 数据库技术的发展


    4308267

    本章目标

    本章结束时,学员能够了解:

    • 新应用领域的需求和传统数据库的局限性

    • 新一代数据库技术的特点

    • 数据库技术与其他相关技术相结合产生的数据库新技术

    • 面向应用领域的数据库新技术

    • 面向对象数据库系统的概念和对象-关系数据库

    • 分布式数据库系统


    4308267

    9.1新一代数据库技术的研究和发展

    • 数据库的新应用领域

    • 传统数据库系统的局限性

    • 新一代数据库技术的特点

    • 第三代数据库系统


    9 1 1 1

    9.1.1.1数据库的新应用领域

    • 计算机辅助设计/管理(CAD/CAM)

    • 计算机集成制造(CIM)

    • 办公信息系统(OIS)

    • 地理信息系统(GIS)

    • 知识库系统

    • 实时系统等


    9 1 1 2

    9.1.1.2传统数据库系统的局限性

    • 面向机器的语法数据模型

    • 数据类型简单、固定

    • 结构与行为分离

    • 阻抗失配

    • 被动响应

    • 存储、管理的对象有限

    • 事务处理能力较差


    9 1 1 21

    9.1.1.2新一代数据库技术的特点

    • 面向对象的方法和技术对数据库发展的影响最为深远

    • 数据库技术与多学科技术的有机结合

    • 面向应用领域的数据库技术的研究


    9 1 2 1

    9.1.2.1第一代(层次、网状数据库)

    二者虽有区分,但属一类格式化模型,层次模型是网状模型的特例,其体系结构、语言、数据存储管理特征相同:

    –层次模型:1969年IBM的IMS(Info Management System)

    –网状数据库:70年代初,美国数据库语言协商会提出DBTG报告-网状数据模型


    4308267

    9.1.2.2第二代(关系数据库系统RDBMS)

    –1970年IBM的San Jose:共享数据库关系模型

    –1970年代:IBM San Jose的System R

    –1970年代:Berkeley大学的INGRES

    主要成果:

    –关系模型理论形成;

    –研究了关系数据语言;

    –研制了大量原型和商品化系统。1.1 数据库技术的演变


    9 1 2 3

    9.1.2.3 第三代数据库系统

    第三代数据库系统应具有三个基本特征:

    • 支持数据管理、对象管理和知识管理

    • 必须保持或继承第二代数据库系统的技术

    • 必须对其他系统开放


    4308267

    (第三个方面)

    应用领域

    计划统计

    GIS

    CAX

    商业管理

    (第二个方面)

    多媒

    模糊

    技术

    分布

    处理

    并行

    处理

    人工

    智能

    其他计算机技术

    层次网状模型

    关系模型

    复杂数据模型

    并行数据库

    分布数据库

    语义数据模型

    OO数据模型

    数据模型

    (第一个方面)

    9.2数据库新技术


    9 2 1

    9.2.1数据模型的发展

    • 复杂数据模型

    • 语义数据模型

    • 面向对象的数据模型


    9 2 2

    数据库

    技术

    分布处理技术

    分布式数据库系统

    并行处理技术

    并行数据库系统

    人工智能技术

    知识库系统、主动数据库系统

    多媒体技术

    多媒体数据库系统

    模糊技术

    模糊数据库系统

    9.2.2数据库技术与其他相关技术的结合

    数据库技术与其他计算机技术的相互渗透


    9 2 21

    9.2.2数据库技术与其他相关技术的结合(续)

    其他数据库系统介绍

    • 并行数据库系统

    • 知识库系统

    • 主动数据库系统

    • 多媒体数据库系统


    9 2 22

    特定应用领域

    数据库新技术内容

    数据库

    技术

    EIS & DSS

    数据仓库

    CAD/CAM/CIM

    工程数据库

    计划、统计

    统计数据库

    地理信息系统

    空间数据库

    面向应用领域的数据库新技术

    9.2.2数据库技术与其他相关技术的结合(续)


    9 3 data warehouse

    9.3数据仓库(Data Warehouse)

    • 数据仓库:

      • 是把需要分析的数据从事务处理环境中提取出来,按照新的分析处理环境的需要进行重新组织的一种数据存储和组织技术。

    • 本小节从以下几项内容介绍数据仓库(Data Warehouse) :

      • 从数据库到数据仓库

      • 数据仓库的定义和特点

      • 数据仓库系统的重要组成部分 — 分析工具

      • 数据仓库体系结构

      • 基于数据库技术的DSS解决方案


    9 3 data warehouse1

    9.3数据仓库(Data Warehouse)(续)

    • 传统的数据库系统主要用于联机事务处理(OLTP),而无法达到分析处理型DSS(决策支持系统)的要求。主要有以下问题:

      • 事务处理和分析处理的性能特性不同

      • 数据集成和动态集成问题

      • 历史数据问题

      • 数据的综合问题

    • 数据仓库技术正是为了构建分析处理环境而出现的一种数据存储和组织技术。


    9 3 1

    9.3.1数据仓库的定义和特点

    • 数据仓库的定义:

      • 数据仓库是一个面向主题的、集成的、不可更新的、随时间不断变化的数据集合,用以支持企业或组织的决策分析处理。

    • 数据仓库的四个基本特征:

      • 主题与面向主题

      • 数据仓库是集成的

      • 数据仓库是不可更新的

      • 数据仓库是随时间变化的


    9 3 11

    9.3.1数据仓库的定义和特点(续)

    数据仓库系统的分析工具:

    • 联机分析处理(OLAP)

    • 数据挖掘


    9 3 2

    9.3.2 数据挖掘技术和工具

    数据挖掘(Data Mining,简称DM)是从超大型数据库(VLDB)或数据仓库中发现并提取隐藏在内部的信息一种新技术。目的是帮助决策者寻找数据间潜在的关联,发现经营者被忽略的要素,而这些要素对预测趋势、决策行为也许是十分有用的信息。


    9 3 2 1

    最终用户

    备注:

    可视化工具

    表示关系型数据

    数据仓库工具层

    表示多维数据

    多维挖掘工具

    多维分析工具

    高度综合级

    数据仓库管理系统

    轻度综合级

    数据仓库

    当前细节级

    早期细节级

    9.3.2.1数据仓库体系结构


    9 3 3 dss

    9.3.3基于数据库技术的DSS解决方案

    • DW+OLAP+DM

      → DSS

      即:

      数据仓库 + 联机分析处理 + 数据挖掘

      → 决策支持系统

    数据仓库对底层数据库中的事务级数据进行集成、转换、综合,重新组织成面向全局的数据视图,为DSS提供数据存储和组织的基础

    数据挖掘以数据仓库和多维数据库中的大量数据为基础,自动地发现数据中的潜在模式,并以这些模式为基础自动地作出预测


    4308267

    9.4面向对象数据库系统

    • 面向对象数据库系统:

      • 面向对象数据库系统(Object Oriented DataBase System,简称OODBS)是数据库技术与面向对象程序设计方法相结合的产物。

      • 面向对象程序设计方法

      • 面向对象数据模型

      • 面向对象数据库语言

      • 对象-关系数据库


    9 4 1

    9.4.1面向对象数据模型

    OO模型的核心概念包括:

    • 对象(Object)与对象标识OID(Object Identifier)

    • 封装(Encapsulation) 和消息(Message)

    • 类(Class)和类层次(结构)

    • 继承


    9 4 1 1

    9.4.1.1 对象与对象标识

    • 对象(Object):是由一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位。

    • 对象的组成:属性集合、方法集合、消息集合

    • 对象标识(OID):面向对象数据库中的每个对象都有一个唯一的不变的标识称为对象标识(OID)。


    9 4 1 2 encapsulation message

    9.4.1.2 封装(Encapsulation)和消息(Message)

    • 封装:每一个对象是其状态与行为的封装。其中状态是该对象一系列属性值的集合,而行为是在对象状态上操作(或称方法)的集合。

    • 消息:对象与外部的通信方式。


    9 4 1 3 class

    教职员工

    学生

    教员

    行政人员

    工人

    研究生

    本科生

    9.4.1.3 类(Class)和类层次

    • 类:在OO数据库中相似对象的集合称为类。每一个对象称为它所在类的一个实例(Instance)。

    • 类层次:在一个面向对象数据库模式中,可以定义一个类(如C1类)的子类(如C2),类C1称为类C2的超类(或父类)。子类还可以再定义子类。这样,面向对象数据库模式的一组类形成一个有限的层次结构,称为类层次。

    某学校数据库的类层次结构图


    9 4 1 4

    教职员工

    学生

    教员

    行政人员

    工人

    研究生

    本科生

    9.4.1.4 类的层次结构

    某学校数据库的类层次结构图


    9 4 1 5

    教职员工

    学生

    教员

    行政人员

    工人

    在职研究生

    研究生

    本科生

    具有多继承的类层次结构图

    9.4.1.5 继承

    • 单继承:若一个子类只能继承一个超类的特性(包括属性、方法和消息),这种继承称为单继承。

    • 多重继承:若一个子类能继承多个超类的特性,这种继承称为多重继承。

    • 继承性的两优点:

      • 建模的有力工具

      • 提供了信息重用机制


    9 4 2

    9.4.2 面向对象数据库语言

    • OODB语言:

      • 用于描述面向对象数据库模式,说明并操纵类定义与对象实例。

    • OODB语言一般应具备下列功能:

      • 类的定义与操纵

      • 操作/方法的定义

      • 对象的操纵


    9 4 21

    9.4.2 面向对象数据库语言(续)

    • OODB(面向对象数据库)不同,它的数据模型的概念来自面向对象的程序设计方法OOP(Object Oriented Programming),因此作为某一面向对象的程序设计语言(OOPL)扩充的OODB语言,有望解决数据库系统中的阻抗失配问题。

    • 还没有像SQL那样的关于面向对象数据库语言的标准,因此不同的OODBMS其具体的数据库语言各不相同。


    9 4 3

    9.4.3 对象-关系数据库

    实现对象-关系数据库系统的方法:

    • 从头开发对象-关系DBMS

    • 在现有的关系型DBMS基础上进行扩充

    • 将现有的关系型DBMS与其他厂商的对象-关系型DBMS连接在一起

    • 将现有的面向对象型DBMS对象-关系型DBMS连接在一起


    9 4 31

    9.4.3对象-关系数据库(续)

    RDBMS

    ORDBMS

    文件系统

    OODBMS

    简单数据

    复杂数据

    DBMS分类矩阵


    4308267

    9.5分布式数据库系统

    • 分布式数据库的产生:

      - 地理上分散的用户对数据共享的要求日益增强

      - 计算机网络技术的发展提供了条件

    • 分布式数据库的特点:

      - 数据的物理分布性

      - 数据的逻辑整体性

      - 数据的分布独立性(也称分布透明性)

      - 场地自治和协调

      - 数据的冗余及冗余透明性


    9 5 1

    9.5.1什么是分布式数据库

    一个粗略的定义:

    • 分布式数据库由一组数据组成,这些数据物理上分布在计算机网络的不同结点(亦称场地或站点)上,逻辑上是属于同一个系统。


    9 5 2

    9.5.2分布式数据库系统的特点

    • 数据独立性

    • 集中与自治相结合的控制结构

    • 适当增加数据冗余度

    • 全局的一致性、可串行性和可恢复性


    9 5 3

    9.5.3分布式数据库的目标

    • 适应部门分布的组织结构,降低费用

    • 提高系统的可靠性和可用性

    • 充分利用数据库资源,提高现有集中式数据库的利用率

    • 逐步扩展处理能力和系统规模


    9 5 4

    局部数据库

    LDBMS

    全局数据字典

    GDBMS

    CM

    网 络

    CM

    CM

    全局数据字典

    全局数据字典

    GDBMS

    GDBMS

    LDBMS

    LDBMS

    局部数据库

    局部数据库

    9.5.4分布式数据库管理系统

    分布式数据库管理系统的结构


    9 5 41

    9.5.4分布式数据库管理系统(续)

    • 由于应用的驱动,数据库技术和网络技术的进展,分布式数据库技术得到了长足的发展。

    • 在当前网络、分布、开放的大环境下,分布式数据库系统的应用更加广泛。


    4308267

    9.6先进数据库技术的热点课题

    目前先进数据库技术的热点课题:

    • –传统数据库技术的进步:如查询检索

    • –数据复制、迁移、

    • –异构数据源集成

    • –数据仓库、数据挖掘技术

    • –Internet/Web数据库应用技术

    • –各类特种数据库技术

    • –网格计算(GridComputing):GGG


    4308267

    9.6先进数据库技术的热点课题(续)

    未来的信息技术主要特征:

    • 不再是信息孤岛,而是协作环境;

    • 不只关注单个连网设备和单个网络,重点是协同工作

    • –互连:随时接入、负载平衡、调度及网络管理等;

    • –互通:信息交换使每个应用和软件开发人员从怎样用和如何用中解脱出来。网络通信软件控制设备、程序、数据之间通信

    • –互融:自然的、个性化、拟人多模式的人机接口技术;

    • –中文化:提高中国人信息化应用的效率;

    • –嵌入式应用的支撑平台及技术;

    • –新型网络服务器、移动设备(包括可穿戴计算机)。


    4308267

    9.7结束语

    • 通过本书学习,希望学员建立数据库系统的整体概念,学习建设、运行维护、管理信息系统中的数据库的各种基本技术,掌握运用专业知识解决实际工作问题的能力,具备从事数据库系统维护管理的基本能力,为在今后工作中深入应用及后续专业技能培训课程的学习打好基础!


    4308267

    本章总结

    • 新应用领域的需求和传统数据库的局限性

    • 新一代数据库技术的特点

    • 数据库技术与其他相关技术相结合产生的数据库新技术

    • 面向应用领域的数据库新技术

    • 面向对象数据库系统的概念和对象-关系数据库

    • 分布式数据库系统介绍

    • 先进数据库技术的热点课题


  • Login