数据库原理期末考试复习提纲


第 1 章 绪论

1.四大基本概念

(1)数据–Data

  • 数据(Data)是数据库中存储的基本对象

① 数据的定义

描述事物的符号记录

② 数据的种类

文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等

③ 数据的特点

数据与其语义是不可分的

④ 数据举例

  • 数据的含义称为数据的语义,数据与其语义是不可分的。

例如 93是一个数据
语义1:学生某门课的成绩
语义2:某人的体重
语义3:计算机系2003级学生人数
语义4:请同学给出。。。

学生档案中的学生记录
(李明,男,197205,江苏南京市,计算机系,1990)
语义:学生姓名、性别、出生年月、籍贯、所在院系、
入学时间
解释:李明是个大学生,1972年5月出生,江苏南京市人,1990年考入计算机系

(2)数据库–Database

① 数据库的定义

数据库(Database,简称DB)是长期储存计算机内有组织可共享的大量数据集合

② 数据库的基本特征

  • 数据按一定的数据模型组织、描述和储存
  • 可为各种用户共享
  • 冗余度较小
  • 数据独立性较高
  • 易扩展

(3)数据库管理系统–DataBase Management System

① 什么是DBMS?

DBMS是位于用户与操作系统之间的一层数据管理软件。是基础软件,是一个大型复杂的软件系统

② DBMS的用途

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

③ DBMS的主要功能

  • 数据定义功能
    提供数据定义语言(DDL)
    定义数据库中的数据对象
  • 数据组织、存储和管理
    分类组织、存储和管理各种数据
    确定组织数据的文件结构和存取方式
    实现数据之间的联系
    提供多种存取方法提高存取效率
  • 数据操纵功能
    提供数据操纵语言(DML)
    实现对数据库的基本操作 (查询、插入、删除和修改)
  • 数据库的事务管理和运行管理
    数据库在建立、运行和维护时由DBMS统一管理和控制
    保证数据的安全性、完整性、多用户对数据的并发使用
    发生故障后的系统恢复
  • 数据库的建立和维护功能(实用程序)
    数据库初始数据装载转换
    数据库转储
    介质故障恢复
    数据库的重组织
    性能监视分析等
  • 其它功能
    DBMS与网络中其它软件系统的通信
    两个DBMS系统的数据转换
    异构数据库之间的互访和互操作

(4)数据库系统–Database System

① 什么是数据库系统(Database System,简称DBS)

在计算机系统中引入数据库后的系统构成

② 数据库系统的构成

  • 数据库 Database
  • 数据库管理系统(及其开发工具)Database Management System
  • 应用系统
  • 数据库管理员 Database Administrator
在这里插入图片描述

③ 数据库系统的特点

❶ 数据结构化
  • 整体数据的结构化是数据库的主要特征之一
  • 整体结构化
    不再仅仅针对某一个应用,而是面向全组织
    不仅数据内部结构化,整体是结构化的,数据之间具有联系
  • 数据库中实现的是数据的真正结构化
    数据的结构用数据模型描述,无需程序定义和解释
    数据可以变长
    数据的最小存取单位是数据项
❷ 数据的共享性高,冗余度低,易扩充
  • 数据库系统从整体角度看待和描述数据,数据面向整个系统,可以被多个用户、多个应用共享使用。
  • 数据共享的好处
    减少数据冗余,节约存储空间
    避免数据之间的不相容性与不一致性
    使系统易于扩充
❸ 数据独立性高
  • 物理独立性
    指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。
  • 逻辑独立性
    指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变。
  • 数据独立性是由DBMS的二级映像功能来保证的
❹ 数据由DBMS统一管理和控制

DBMS提供的数据控制功能

  • (1)·数据的安全性(Security)保护·
    保护数据,以防止不合法的使用造成的数据的泄密和破坏。
  • (2)数据的完整性(Integrity)检查
    将数据控制在有效的范围内,或保证数据之间满足一定的关系。
  • (3)并发(Concurrency)控制
    对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。
  • (4)数据库恢复(Recovery)
    将数据库从错误状态恢复到某一已知的正确状态。
❺ 应用程序与数据的对应关系(数据库系统)
在这里插入图片描述

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

(1) 什么是数据管理

  • 对数据进行分类、组织、编码、存储、检索和维护
  • 数据处理的中心问题

(2) 数据管理技术的发展过程

  • 人工管理阶段(20世纪40年代中–50年代中)
  • 文件系统阶段(20世纪50年代末–60年代中)
  • 数据库系统阶段(20世纪60年代末–现在)

(3)时期

  • 20世纪60年代末以来

(4) 产生的背景

  • 应用背景 大规模管理
  • 硬件背景 大容量磁盘、磁盘阵列
  • 软件背景 有数据库管理系统
  • 处理方式 联机实时处理,分布处理,批处理

1.数据模型的概念

  • 在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。
  • 通俗地讲数据模型就是现实世界的模拟

数据模型应满足三方面要求:

  • 能比较真实地模拟现实世界
  • 容易为人所理解
  • 便于在计算机上实现

2.两大类数据模型

数据模型分为两类(分属两个不同的层次)

  • (1) 概念模型 也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计。
  • (2) 逻辑模型物理模型
    逻辑模型主要包括网状模型层次模型关系模型面向对象模型等,按计算机系统的观点对数据建模,用于DBMS实现。
    物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法。

客观对象的抽象过程—两步抽象

  • 现实世界中的客观对象抽象为概念模型
  • 概念模型转换为某一DBMS支持的数据模型

3.数据模型的组成要素

(1)数据结构

数据结构是所研究的对象类型的集合。这些对象是数据库的组成成分,数据结构指对象和对象间联系的表达和实现,是对系统静态特征的描述,包括两个方面:
(1)数据本身:类型、内容、性质。例如关系模型中的域、属性、关系等。
(2)数据之间的联系:数据之间是如何相互关联的,例如关系模型中的主码、外码联系等。

(2)数据操作

数据操作

  • 对数据库中各种对象(型)实例(值)允许执行的操作,及有关的操作规则

数据操作的类型

  • 查询
  • 更新(包括插入、删除、修改)

(3)数据的完整性约束条件

  • 数据的完整性约束条件是一组完整性规则的集合,规定数据库状态及状态变化所应满足的条件,以保证数据的正确性、有效性和相容性。

完整性规则:给定的数据模型中数据及其联系所具有的制约和储存规则

4.概念模型

(1)用途与基本要求

概念模型的用途:

  • 概念模型用于信息世界的建模
  • 是现实世界到机器世界的一个中间层次
  • 是数据库设计的有力工具
  • 数据库设计人员和用户之间进行交流的语言

对概念模型的基本要求:

  • 较强的语义表达能力
  • 能够方便、直接地表达应用中的各种语义知识
  • 简单、清晰、易于用户理解

(2) 信息世界中的基本概念

  • (1) 实体(Entity)
    客观存在并可相互区别的事物称为实体。
    可以是具体的人、事、物或抽象的概念。
  • (2) 属性(Attribute)
    实体所具有的某一特性称为属性。
    一个实体可以由若干个属性来刻画。
  • (3) (Key)
    唯一标识实体的属性集称为码。
    (4) (Domain)
    属性取值范围称为该属性的域。
  • (5) 实体型(Entity Type)
    实体名及其属性名集合来抽象和刻画同类实体称为实体型
  • (6) 实体集(Entity Set)
    同一类型实体的集合称为实体集
  • (7) 联系(Relationship)
    • 现实世界中事物内部以及事物之间联系在信息世界中反映为实体内部的联系和实体之间的联系。
    • 实体内部的联系通常是指组成实体的各属性之间的联系
    • 实体之间的联系通常是指不同实体集之间的联系

(3)两个实体型之间的联系

在这里插入图片描述

① 一对一联系(1:1)

实例

  • 一个班级只有一个正班长
  • 一个班长只在一个班中任职

定义:
如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然。则称实体集A与实体集B具有一对一联系,记为1:1

② 一对多联系(1:n)

实例

  • 一个班级中有若干名学生,
  • 每个学生只在一个班级中学习

    定义:
    如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n

③ 多对多联系(m:n)

实例

  • 课程与学生之间的联系:
  • 一门课程同时有若干个学生选修
  • 一个学生可以同时选修多门课程

    定义:
    如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体B具有多对多联系,记为m:n

(4)两个以上实体型之间的联系

① 一对多联系(1:m||1:n)

  • 若实体集E1,E2,…,En存在联系,对于实体集Ej(j=1,2,…,i-1i+1,…,n)中的给定实体,最多只和Ei中的一个实体相联系,则我们说Ei与E1E2,…,Ei-1,Ei+1,…,En之间的联系是一对多的。

实例

  • 课程、教师与参考书三个实体型
    一门课程可以有若干个教师讲授,
    使用若干本参考书,
    每一个教师只讲授一门课程,
    每一本参考书只供一门课程使用
在这里插入图片描述

② 一对一联系(1:1:1)

实例

  • 一个独生子女只有一个父亲,一个母亲
  • 一个父亲也只有一个独生子女
  • 一个母亲也只有一个独生子女

③ 多对多联系(m:n:p)

在这里插入图片描述

实例
供应商、项目、零件三个实体型
一个供应商可以供给多个项目多种零件
每个项目可以使用多个供应商供应的零件
每种零件可由不同供应商供给

(5)单个实体型内的联系

① 一对多联系(1:n)

实例
职工实体型内部具有领导与被领导的联系
某一职工(干部)“领导”若干名职工
一个职工仅被另外一个职工直接领导
这是一对多的联系

在这里插入图片描述

② 一对一联系(1:1)

  • 身份证可以唯一确认一个人的身份,人与身份证有确认和被确认的关系
  • 一个身份证唯一确定一个人
  • 一个人也唯一确认一个身份证

③ 多对多联系 (m:n)

  • 饮料和厂商之间有制造和被制造的关系
  • 多个饮料可以被多个厂商制造
  • 多个厂商可以制造出多种饮料

(6)概念模型的一种表示方法

① 实体-联系方法(E-R方法)

  • E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用E-R图来描述现实世界的概念模型
  • E-R方法也称为E-R模型

② 实体型

在这里插入图片描述

用矩形表示,矩形框内写明实体名。

③ 属性

在这里插入图片描述

用椭圆形表示,并用无向边将其与相应的实体连接起来

④ 联系

  • 联系本身:
    用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)

⑤ 联系的表示方法

在这里插入图片描述

⑥ 联系的表示方法示例

在这里插入图片描述

⑦ 联系的属性

  • 联系本身也是一种实体型也可以有属性。如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来

⑧ 一个实例

用E-R图表示某个工厂物资管理的概念模型

  • 实体
    仓库: 仓库号、面积、电话号码
    零件 :零件号、名称、规格、单价、描述
    供应商:供应商号、姓名、地址、电话号码、帐号
    项目:项目号、预算、开工日期
    职工:职工号、姓名、年龄、职称

实体之间的联系如下:

  • (1)一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。仓库和零件具有多对多的联系。用库存量来表示某种零件在某个仓库中的数量。
    (2)一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,仓库和职工之间是一对多的联系。职工实体型中具有一对多的联系
    (3)职工之间具有领导-被领导关系。即仓库主任领导若干保管员。
    (4)供应商、项目和零件三者之间具有多对多的联系

5.非关系模型

(1)层次模型(Hierarchical Model)

  • 层次模型是数据库系统中最早出现的数据模型
  • 层次数据库系统的典型代表是IBM公司的IMS(Information Management System)数据库管理系统
  • 层次模型用树形结构来表示各类实体以及实体间的联系

① 数据结构

满足下面两个条件的基本层次联系的集合为层次模型

  • 有且只有一个结点没有双亲结点,这个结点称为根结点
  • 根以外的其它结点有且只有一个双亲结点
在这里插入图片描述

层次模型中的几个术语
根结点,双亲结点,兄弟结点,叶结点

② 特点

  • 结点的双亲是唯一
  • 只能直接处理一对多的实体联系
  • 每个记录类型可以定义一个排序字段,也称为·码字段
  • 任何记录值只有按其路径查看时,才能显出它的全部意义
  • 没有一个子女记录值能够脱离双亲记录值而独立存在
在这里插入图片描述
在这里插入图片描述

③ 多对多联系在层次模型中的表示

方法:

  • 将多对多联系分解成一对多联系

分解方法:

  • 冗余结点法
  • 虚拟结点法

④ 数据操纵与完整性约束

层次模型的数据操纵:

  • 查询
  • 插入
  • 删除
  • 更新

层次模型的完整性约束条件:

  • 无相应的双亲结点值就不能插入子女结点值
  • 如果删除双亲结点值,则相应的子女结点值也被同时删除
  • 更新操作时,应更新所有相应记录,以保证数据的一致性

⑤ 存储结构

邻接法:
按照层次树前序遍历(T-L-R)的顺序把所有记录值依次邻接存放,即通过物理空间的位置相邻来实现层次顺序。又可分为:子女-兄弟链接法层次序列链接法

在这里插入图片描述
❶ 子女-兄弟链接法
  • 每个记录设两类指针,分别指向最左边的子女(每个记录型对应一个)和最近的兄弟
❷ 层次序列链接法
  • 按树的前序穿越顺序链接各记录值

⑥ 优缺点

  • 优点:
    层次模型的数据结构比较简单清晰
    查询效率高,性能优于关系模型,不低于网状模型
    层次数据模型提供了良好的完整性支持
  • 缺点:
    多对多联系表示不自然
    插入删除操作的限制多,应用程序编写比较复杂
    查询子女结点必须通过双亲结点
    由于结构严密,层次命令趋于程序化

(2)网状模型(Network Model)

网状数据库系统采用网状模型作为数据的组织方式

  • 典型代表是DBTG系统:
    亦称CODASYL系统
    70年代由DBTG提出的一个系统方案
    奠定了数据库系统的基本概念、方法和技术
  • 实际系统:
    Cullinet Software Inc.公司的 IDMS
    Univac公司的 DMS1100
    Honeywell公司的IDS/2
    HP公司的IMAGE

① 数据结构

网状模型:
满足下面两个条件的基本层次联系的集合:

  1. 允许一个以上的结点无双亲;
  2. 一个结点可以有多于一个的双亲。

表示方法(与层次数据模型相同):
实体型:用记录类型描述
每个结点表示一个记录类型(实体)
属性:用字段描述
每个记录类型可包含若干个字段
联系:用结点之间的连线表示记录类型(实体)之
间的一对多的父子联系

网状模型与层次模型的区别:

  • 网状模型允许多个结点没有双亲结点
  • 网状模型允许结点有多个双亲结点
  • 网状模型允许两个结点之间有多种联系(复合联系)
  • 网状模型可以更直接地去描述现实世界
  • 层次模型实际上是网状模型的一个特例
在这里插入图片描述
在这里插入图片描述

网状模型中子女结点与双亲结点的联系可以不唯一
要为每个联系命名,并指出与该联系有关双亲记录子女记录

多对多联系在网状模型中的表示:
方法:将多对多联系直接分解成一对多联系

例如:一个学生可以选修若干门课程,·某一课程可以被多个学生选修,学生与课程之间是多对多联系 ·

  • 引进一个学生选课的联结记录,由3个数据项组成
    学号
    课程号
    成绩
    表示某个学生选修某一门课程及其成绩
在这里插入图片描述

② 网状数据模型的操纵与完整性约束(续)

网状数据库系统(如DBTG)对数据操纵加 了一些限制,提供了一定的完整性约束

  • :唯一标识记录的数据项的集合
  • 一个联系中双亲记录子女记录之间是一对多联系
  • 支持双亲记录和子女记录之间某些约束条件

③ 存储结构

关键:

  • 实现记录之间的联系

常用方法:

  • 单向链接
  • 双向链接
  • 环状链接
  • 向首链接
在这里插入图片描述

④ 优缺点

  • 优点
    能够更为直接地描述现实世界,如一个结点可以有多个双亲;
    具有良好的性能,存取效率较高;
  • 缺点
    结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握;
    DDL、DML语言复杂,用户不容易使用;

6.关系模型

关系数据库系统采用关系模型作为数据的组织方式
1970年美国IBM公司San Jose研究室的研究员E.F.Codd首次提出了数据库系统的关系模型
计算机厂商新推出的数据库管理系统几乎都支持关系模型

(1)数据结构

在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由组成。
几个名词解释:

  • 关系(Relation)
    一个关系对应通常说的一张表
  • 元组(Tuple)
    表中的一行即为一个元组
  • 属性(Attribute)
    表中的一列即为一个属性,给每一个属性起一个名称即属性名
  • 主码(Key)
    表中的某个属性组,它可以唯一确定一个元组
  • (Domain)
    属性的取值范围。
  • 分量
    元组中的一个属性值。
  • 关系模式
    对关系的描述
    关系名(属性1,属性2,…,属性n)
    学生(学号,姓名,年龄,性别,系,年级)

    举几个例子:
  • 例1
    学生、系、系与学生之间的·一对多联系:
    学生(学号,姓名,年龄,性别,系号,年级)
    系 (系号,系名,办公地点)
  • 例2
    系、系主任、系与系主任间的一对一联系
  • 例3
    学生、课程、学生与课程之间的多对多联系:
    学生(学号,姓名,年龄,性别,系号,年级)
    课程(课程号,课程名,学分)
    选修(学号课程号,成绩)

规范化:

  • 关系必须是规范化的,满足一定的规范条件
  • 最基本的规范条件:关系的每一个分量必须是一个不可分的数据项, 不允许表中还有表
  • 图1.27中工资和扣除是可分的数据项 ,不符合关系模型要求
在这里插入图片描述

(2)关系数据模型的操纵与完整性约束

  • 数据操作是集合操作,操作对象和操作结果都是关系
    查询
    插入
    删除
    更新
  • 数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”
  • 关系的完整性约束条件
    实体完整性
    参照完整性
    用户定义的完整性

(3)存储结构

  • 实体及实体间的联系都用来表示
  • 表以文件形式存储
    有的DBMS一个表对应一个操作系统文件;
    有的DBMS自己设计文件结构;

(4)优缺点

  • 优点
    • 建立在严格的数学概念的基础上;
    • 概念单一:
      实体和各类联系都用关系来表示;
      对数据的检索结果也是关系;
    • 关系模型的存取路径对用户透明;
      具有更高的数据独立性,更好的安全保密性
      简化了程序员的工作和数据库开发建立的工作;
  • 缺点
    • 存取路径对用户透明导致查询效率往往不如非关系数据模型;
    • 为提高性能,必须对用户的查询请求进行优化,增加了开发DBMS的难度;

7.面向对象数据模型

  • 语义数据模型面向对象程序设计方法结合起来,用面向对象观点来描述现实世界实体(对象)的逻辑组织对象间限制联系等的模型
  • 一系列面向对象核心概念构成了面向对象数据模型( Object Oriented Data Model, 00模型)的基础,主要包括以下一些概念:
    • (1)现实世界中的任何事物都被建模为对象。每个对象具有一个唯一的对象标识
      (OID)。
    • (2)对象是其状态和行为的封装,其中状态是对象属性值的集合,行为是变更对象状
      态的方法集合。
    • (3)具有相同属性和方法的对象的全体构成了类,类中的对象称为类的实例。
    • (4)类的属性的定义域也可以是类,从而构成了类的复合。类具有继承性,一个类可以继承另一个类的属性与方法,被继承类和继承类也称为超类和子类。类与类之间的复合与继承关系形成了一个有向无环图,称为类层次。
    • (5)对象是被封装起来的,它的状态和行为在对象外部不可见,从外部只能通过对象显式定义的消息传递对对象进行操作。
  • 面向对象数据库(OODB)的研究始于20世纪80年代,有许多面向对象数据库产品相继问世,较著名的有Object Store、02、ONTOS等。
  • 与传统数据库一样,面向对象数据库系统对数据的操纵包括数据查询、增加、删除、修改等,也具有并发控制、故障恢复、存储管理等完整的功能。不仅能支持传统数据库应用,也能支持非传统领域的应用,包括CAD/CAM、OA、CIMS、GIS以及图形、图像等多媒体领域、工程领域和数据集成等领域。
  • 尽管如此,由于面向对象数据库操作语言过于复杂,没有得到广大用户,特别是开发人员的认可,加上面向对象数据库企图完全替代关系数据库管理系统的思路,增加了企业系统升级的负担,客户不接受,·面向对象数据库产品终究没有在市场上获得成功。

8.对象关系模型

  • 对象关系数据库系统(Object Relational DataBase System, ORDBS) 是关系数据库面向对象数据库的结合。
  • 它保持了关系数据库系统的非过程化数据存取方式和数据独立性,继承了关系数据库系统已有的技术,支持原有的数据管理,又能支持00模型和对象管理。各数据库厂商都在原来的产品基础上进行了扩展。
  • 1999 年发布的SQL标准(也称为SQL99),增加了SQL/Object Language Binding, 提供了面向对象的功能标准。SQL99对ORDBS标准的制定滞后于实际系统的实现。所以各个ORDBS产品在支持对象模型方面虽然思想一致,但是所采用的术语、语言语法、扩展的功能都不尽相同。

1.数据库系统结构

(1)两种角度

  • 从数据库管理系统角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构
  • 从数据库最终用户角度看(数据库系统外部的体系结构) ,数据库系统的结构分为:
    单用户结构
    主从式结构
    分布式结构
    客户/服务器
    浏览器/应用服务器/数据库服务器多层结构等

(2)数据库系统模式的概念

来自张教授的解疑:模式是数据库结构的描述、关系模式是表的结构的描述;

“型” 和“值” 的概念

  • 型(Type)
    对某一类数据的结构和属性的说明
  • 值(Value)
    是型的一个具体赋值

例如
学生记录型:
(学号,姓名,性别,系别,年龄,籍贯)
一个记录值:
(900201,李明,男,计算机,22,江苏)

模式(Schema)

  • 数据库逻辑结构和特征的描述
  • 是型的描述
  • 反映的是数据的结构及其联系
  • 模式是相对稳定的

实例(Instance)

  • 模式的一个具体值
  • 反映数据库某一时刻的状态
  • 同一个模式可以有很多实例
  • 实例随数据库中的数据的更新而变动

一个数据库只有一个模式,可以把模式看成唯一的数据库,实例就是数据库里面的多个表

例如:在学生选课数据库模式中,包含学生记录、课程记录和学生选课记录

  • 2003年的一个学生数据库实例,包含:
    2003年学校中所有学生的记录
    学校开设的所有课程的记录
    所有学生选课的记录
  • 2002年度学生数据库模式对应的实例2003年度学生数据库模式对应的实例是不同的

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

在这里插入图片描述

① 模式(Schema)

模式(也称逻辑模式)

  • 数据库中全体数据的逻辑结构和特征的描述
  • 所有用户的公共数据视图,综合了所有用户的需求

一个数据库只有一个模式,可以把模式看成唯一的数据库,实例就是数据库里面的多个表

模式的地位:是数据库系统模式结构的中间层

  • 与数据的物理存储细节和硬件环境无关
  • 与具体的应用程序、开发工具及高级程序设计语言无关

模式的定义:

  • 数据的逻辑结构(数据项的名字、类型、取值范围等)
  • 数据之间的联系
  • 数据有关的安全性、完整性要求

② 外模式(External Schema)

外模式(也称子模式或用户模式)

  • 数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
  • 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示,可以看成把数据库的部分数据,运用在不同的应用程序上,在UI界面上显示

一个数据库只有一个模式,可以把模式看成唯一的数据库,实例就是数据库里面的多个表
外模式的地位:介于模式与应用之间

  • 模式与外模式的关系:一对多
    外模式通常是模式的子集;
    一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求;
    对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同;
  • 外模式与应用的关系:一对多
    同一外模式也可以为某一用户的多个应用系统所使用;
    但一个应用程序只能使用一个外模式;可以看成把数据库的部分数据,运用在不同的应用程序上,在UI界面上显示

外模式的用途

  • 保证数据库安全性的一个有力措施;
  • 每个用户只能看见和访问所对应的外模式中的数据;

③ 内模式(Internal Schema)

内模式(也称存储模式)

  • 是数据物理结构和存储方式的描述
  • 数据数据库内部的表示方式:
    • 记录的存储方式(顺序存储,按照B树结构存储,
      按hash方法存储)
    • 索引的组织方式
    • 数据是否压缩存储
    • 数据是否加密
    • 数据存储记录结构的规定
  • 一个数据库只有一个内模式
在这里插入图片描述

·例如学生记录,如果按存储,则插入一条新记录总是放在学生记录存储的最后.

  • 如果按·学号升序存储,则插入一条记录就要找到它应在的位置插入,如图1.29(b)所示
  • 如果按照学生年龄聚簇存放假如新插入的S316岁,则应插入的位置如图1.29(c)所示

④ 数据库模式、外模式、内模式总结

在这里插入图片描述


数据库模式

  • 即全局逻辑结构是数据库的中心与关键
  • 独立于数据库的其他层次
  • 设计数据库模式结构时应首先确定数据库的逻辑模式

数据库的外模式

  • 面向具体的应用程序
  • 定义在逻辑模式之上
  • 独立于存储模式和存储设备
  • 当应用需求发生较大变化,相应外模式不能满足其视图要求时,该外模式就得做相应改动
  • 设计外模式时应充分考虑到应用的扩充性

数据库的内模式

  • 依赖于它的全局逻辑结构
  • 独立于具体的存储设备
  • 将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率

(4)数据库的二级映像功能与数据独立性

  • ·三级模式是对数据的三个抽象级别
  • 二级映象在DBMS内部实现这三个抽象层次联系转换
    • 外模式/模式映像
    • 模式/内模式映像

① 外模式/模式映象

  • 模式:描述的是数据的全局逻辑结构
  • 外模式:描述的是数据的局部逻辑结构
  • 一个模式可以有任意多个外模式
  • 每一个外模式,数据库系统都有一个外模式/模式映象,定义外模式与模式之间的对应关系,看成数据库的数据与API调用的部分数据之间的关系(I think)
  • 映象定义通常包含在各自外模式的描述中

保证数据的逻辑独立性

  • 模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变
  • 应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性

② 模式/内模式映象

模式/内模式映象定义了数据全局逻辑结构存储结构之间的对应关系。

  例如,说明逻辑记录和字段在内部是如何表示的
1
  • 数据库中模式/内模式映象唯一
  • 该映象定义通常包含在模式描述中

保证数据的物理独立性

  • 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变.
  • 应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性

特定的应用程序

  • 在外模式描述的数据结构上编制的
  • 依赖于特定的外模式
  • 与数据库的模式和存储结构独立
    不同的应用程序有时可以共用同一个外模式

数据库的二级映像

  • 保证了数据库外模式的稳定性
  • 从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改

数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去

数据的存取由DBMS管理

  • 用户不必考虑存取路径等细节
  • 简化了应用程序的编制
  • 大大减少了应用程序的维护和修改

2.数据库的组成

  • 数据库
  • 数据库管理系统(及其开发工具)
  • 应用系统
  • 数据库管理员
  • 硬件平台及数据库
  • 软件
  • 人员

(1)硬件平台及数据库

数据库系统对硬件资源的要求

  • (1) 足够大的内存
    • 操作系统
    • DBMS的核心模块
    • 数据缓冲区
    • 应用程序
  • (2) 足够大的外存
    • 磁盘或磁盘阵列
    • 数据库
    • 光盘、磁带
    • 数据备份
  • (3) 较高的通道能力,提高数据传送率

(2) 软件

  • DBMS
  • 支持DBMS运行的操作系统
  • 与数据库接口的高级语言及其编译系统
  • 以DBMS为核心的应用开发工具
  • 为特定应用环境开发的数据库应用系统

(3)人 员

  • 数据库管理员
  • 系统分析员和数据库设计人员
  • 应用程序员
  • 用户
在这里插入图片描述

不同的人员涉及不同的数据抽象级别,具有不同的数据视图,如下图所示

① 数据库管理员(DBA)

具体职责:
1.决定数据库中的信息内容和结构
2.决定数据库的存储结构和存取策略
3.定义数据的安全性要求和完整性约束条件
4.监控数据库的使用和运行

  • 周期性转储数据库
  • 数据文件
  • 日志文件
  • 系统故障恢复
  • 介质故障恢复
  • 监视审计文件

5.数据库的改进和重组

  • 性能监控和调优
  • 定期对数据库进行重组织,以提高系统的性能
  • 需求增加和改变时,数据库须需要重构造
② 系统分析员

具体职责:

  • 负责应用系统的需求分析和规范说明
  • 与用户及DBA协商,确定系统的硬软件配置
  • 参与数据库系统的概要设计
③ 数据库设计人员

具体职责:

  • 参加用户需求调查和系统分析
  • 确定数据库中的数据
  • 设计数据库各级模式
④ 应用程序员

具体职责:

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

用户是指最终用户(End User)。
最终用户通过应用系统的用户接口使用数据库。
1.偶然用户

  • 不经常访问数据库,但每次访问数据库时往往需要不同的数据库信息
  • 企业或组织机构的高中级管理人员

2.简单用户

  • 主要工作是查询和更新数据库
  • 银行的职员、机票预定人员、旅馆总台服务员

3.复杂用户

  • 工程师、科学家、经济学家、科技工作者等
  • 直接使用数据库语言访问数据库,甚至能够基于数据库管理系统的API编制自己的应用程序

第 2 章 关系数据库

1. 关系

什么是关系?

  • 单一的数据结构—-关系
    现实世界的实体以及实体间的各种联系均用关系来表示
  • 逻辑结构—-二维表
    从用户角度,关系模型中数据的逻辑结构是一张二维表
  • 建立在集合代数的基础上

(1)域(Domain)

  • 是一组具有相同数据类型的值的集合。例:
    整数
    实数
    介于某个取值范围的整数
    长度指定长度的字符串集合
    {‘男’,‘女’}
    ………………

(2)笛卡尔积(Cartesian Product)

  • 笛卡尔积
    给定一组域D1,D2,…,Dn,这些域中可以有相同的。
    D1,D2,…,Dn的笛卡尔积为:

    所有域的所有取值的一个组合
    不能重复;
  • 元组(Tuple)
    笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组(Tuple);
    (张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨)等都是元组 ;
  • 分量(Component)
    笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量;
    张清玫、计算机专业、李勇、刘晨等都是分量 ;
  • 基数(Cardinal number)
    可以把基数看做笛卡尔积元素的个数,及元组的个数;
    若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:
  • 笛卡尔积的表示方法:
    笛卡尔积可表示为一个二维表;
    表中的每行对应一个元组,表中的每列对应一个;

(3)关系(Relation)

  • 关系
    ·笛卡尔积·D1×D2×…×Dn的子集叫作在D1,D2,…,Dn上的关系,表示为:

    R:关系名
    n:关系的(Degree)
  • 元组
    ·关系·中的每个元素是关系中的元组,通常用t表示。
  • 单元关系与二元关系
    当n=1时,称该关系为单元关系(Unary relation)或一元关系 ;
    当n=2时,称该关系为二元关系(Binary relation);
  • ·关系的表示·
    关系也是一个二维表,表的每行对应一个元组,表的每对应一个
  • 属性
    关系中不同列可以对应相同的域;
    为了加以区分,必须对每起一个名字,称为属性(Attribute);
    n目关系必有n个属性;
    • 候选码(Candidate key)
      若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码;
      简单的情况:候选码只包含一个属性;
    • 全码(All-key)
      最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key);
    • 主码
      若一个关系有多个候选码,则选定其中一个为主码(Primary key);
    • 主属性
      候选码的诸属性称为主属性(Prime attribute);
      不包含在任何侯选码中的属性称为非主属性( Non-Prime attribute)或非码属性(Non-key attribute) ;
  • D1,D2,…,Dn的笛卡尔积的某个子集才有实际含义
    ·例:·表2.1 的笛卡尔积没有实际意义
    取出有实际意义的元组来构造关系
    关系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)
    假设:导师与专业:1:1, 导师与研究生:1:n
    主码:POSTGRADUATE(假设研究生不会重名)
    SAP关系可以包含三个元组:{ (张清玫,计算机专业,李勇), (张清玫,计算机专业,刘晨),(刘逸,信息专业,王敏) }

(4)三类关系

  • 基本关系(基本表或基表)
    实际存在的表,是实际存储数据的逻辑表示
  • 查询表
    查询结果对应的表
  • 视图表
    由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
  • 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表
  • 视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
  • 我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
  • 注释:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。
  • 基本关系(二维表)的性质
    ① 列是同质的(Homogeneous);
    ② 不同的列可出自同一个域,其中的每一列称为一个属性,不同的属性要给予不同的属性名;
    ③ 列的顺序无所谓,列的次序可以任意交换;
    ④ 任意两个元组的候选码不能相同;
    ⑤ 行的顺序无所谓,行的次序可以任意交换;
    ⑥ 分量必须取原子值,这是规范条件中最基本的一条; 

2.关系模式

(1)什么是关系模式

关系模式(Relation Schema)是
关系是
关系模式是对关系描述:

  • 元组集合的结构
    • 属性构成
    • 属性来自的域
    • 属性与域之间的映象关系
  • 元组语义以及完整性约束条件
  • 属性间的数据依赖关系集合

(2)定义关系模式

关系模式可以形式化地表示为:

  • R(U,D,DOM,F)
  • R 关系名
  • U 组成该关系的属性名集合
  • D 属性组U中属性所来自的域
  • DOM 属性向域的映象集合
  • F 属性间的数据依赖关系集合

·例:·
导师和研究生出自同一个域——人,取不同的属性名,并在模式中定义属性向域的映象,即说明它们分别出自哪个域;
DOM(SUPERVISOR-PERSON)= DOM(POSTGRADUATE-PERSON)=PERSON

关系模式通常可以简记为
R (U) 或 R (A1,A2,…,An)
R: 关系名
A1,A2,…,An : 属性名
注:域名及属性向域的映象常常直接说明为属性的类型、长度

3.关系模式和关系的对比

  • 关系模式
    对关系的描述
    静态的、稳定的
  • 关系
    关系模式在某一时刻的状态或内容
    动态的、随时间不断变化的
    关系模式和关系往往统称为关系

在数据库学科中可以把关系模式理解为表的结构、属性之间的关系、约束条件,把关系理解为二维表

4.关系数据库

  • 关系数据库·
    在一个给定的应用领域中,所有·关系的集合·构成一个关系数据库
  • ·关系数据库模式包括
    若干域的定义;
    在这些域上定义的若干关系模式;
  • 关系数据库的··与
    关系数据库的关系数据库模式, 对关系数据库的描述。
    关系数据库的: 关系模式在某一时刻对应的关系的集合,简称为关系数据库

1.关系操作

(1)基本关系操作

  • 常用的关系操作
    • 查询:选择、投影、连接、除、并、交、差
    • 数据更新:插入、删除、修改
    • 查询的表达能力是其中最主要的部分
    • 选择、投影、并、差、笛卡尔基是5种基本操作
  • 关系操作的特点
    • 集合操作方式:操作的对象和结果都是集合,一次一集合的方式

(2)关系数据库语言的分类

  • 关系代数语言
    用对关系的运算来表达查询要求;
    代表:ISBL;
    关系演算语言:用谓词来表达查询要求;
  • 元组关系演算语言
    谓词变元的基本对象是元组变量;
    代表:APLHA, QUEL;
  • 域关系演算语言
    谓词变元的基本对象是域变量;
    代表:QBE;
  • 具有关系代数和关系演算双重特点的语言;
    代表:SQL(Structured Query Language) ;

2.关系的完整性

(1)关系的三类完整性约束

  • 实体完整性和参照完整性:
    关系模型必须满足的完整性约束条件;
    称为关系的两个不变性,应该由关系系统自动支持;
  • 用户定义的完整性:
    应用领域需要遵循的约束条件,体现了具体领域中的语义约束 ;

(2) 实体完整性(Entity Integrity)

  • 若属性A是基本关系R的主属性,则属性A不能取空值
  • 例:
    SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)
    POSTGRADUATE:
    主码(假设研究生不会重名)
    不能取空值
  • 实体完整性规则的说明
    (1) 实体完整性规则是针对基本关系而言的。一个基本表通常对应现 实世界的一个实体集。
    (2) 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
    (3) 关系模型中以主码作为唯一性标识。
    (4) 主码中的属性即主属性不能取空值。主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性

(3)参照完整性

❶ 关系间的引用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
❷ 外码(Foreign Key)
  • 设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码,即该码是另一个表的主码。
  • 基本关系R称为参照关系(Referencing Relation),即本表。
  • 基本关系S称为被参照关系(Referenced Relation) 或目标关系(Target Relation),即外码对应的主码所在的表。
  • 关系R和S不一定是不同的关系
  • 目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上
  • 外码并不一定要与相应的主码同名,当外码与相应的主码属于不同关系时,往往取相同的名 字,以便于识别
❸ 参照完整性规则

若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:

  • 或者取空值(F的每个属性值均为空值)
  • 或者等于S中某个元组的主码值
  • 外码的值要么为空,要么为S中某个元组的主码值

(4)用户定义的完整性

  • 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
  • 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能

3.关系代数

(1)关系代数运算符

在这里插入图片描述
在这里插入图片描述

(2)传统的集合运算

① 并(Union)

在这里插入图片描述
在这里插入图片描述

② 差(Difference)

在这里插入图片描述
在这里插入图片描述

③ 交(Intersection)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

④ 笛卡尔积(Cartesian Product)

在这里插入图片描述
在这里插入图片描述

(3)专门的关系运算

① 几个记号

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

② 选择(Selection)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

③ 投影(Projection)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

④ 连接(Join)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
❶ 左连接、右连接、外连接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⑤ 除(Division)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⑥ 综合举例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

2.SQL概述

(1)什么是SQL?

  • SQL(Structured Query Language)结构化查询语言,是关系数据库的标准语言
  • SQL是一个通用的、功能极强的关系数据库语言

(2)SQL的特点

① 综合统一

  • 集数据定义语言 DDL(Data Definition Language),数据操纵语言 DML(Data Manipulation Language),数据控制语言 DCL(Data Control Language) 功能于一体。
  • 可以独立完成数据库生命周期中的全部活动:
    • 定义关系模式,插入数据,建立数据库;
    • 对数据库中的数据进行查询和更新;
    • 数据库重构和维护
    • 数据库安全性、完整性控制等
  • 用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。
  • 数据操作符统一

② 高度非过程化

  • 非关系数据模型的数据操纵语言“面向过程”,必须制定存取路径
  • SQL只要提出“做什么”,无须了解存取路径。
  • 存取路径的选择以及SQL的操作过程由系统自动完成。

③ 面向集合的操作方式

  • 非关系数据模型采用面向记录的操作方式,操作对象是一条记录
  • SQL采用集合操作方式:
    • 操作对象、查找结果可以是元组的集合
    • 一次插入、删除、更新操作的对象可以是元组的集合

④ 以同一种语法结构提供多种使用方式

  • SQL是独立的语言
    • 能够独立地用于联机交互的使用方式
  • SQL又是嵌入式语言
    • SQL能够嵌入到高级语言(例如C,C++,Java)程序中,供程序员设计程序时使用

⑤ 语言简洁,易学易用

  • SQL功能极强,完成核心功能只用了9个动词。
SQL功能动词
数据查询SELECT
数据定义CREATE、DROP、ALTER
数据操纵INSERT、UPDATE、DELETE
数据控制GRANT、REVOKE

(3) SQL的基本概念

  • SQL支持关系数据库三级模式结构
在这里插入图片描述


基本表

  • 本身独立存在的表
  • SQL中一个关系就对应一个基本表
  • 一个(或多个)基本表对应一个存储文件
  • 一个表可以带若干索引

存储文件

  • 逻辑结构组成了关系数据库的内模式
  • 物理结构是任意的,对用户透明

视图

  • 从一个或几个基本表导出的表
  • 数据库中只存放视图的定义而不存放视图对应的数据
  • 视图是一个虚表
  • 用户可以在视图上再定义视图

3.数据字典

  • 数据字典关系数据库管理系统内部的一组系统表它记录了数据库中所有的定义信息,包括关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限、统计信息等
  • 关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。
  • 在进行查询优化和查询处理时,数据字典中的信息是其重要依据。

4.数据定义

(1)数据定义概览

  • SQL的数据定义功能: 模式定义表定义视图索引的定义
在这里插入图片描述

(2)模式的定义与删除—SCHEMA

定义模式实际上定义了一个命名空间

  • 在这个空间中可以定义模式包含的数据库对象,例如基本表视图索引等。
  • 在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。
  • CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
  • 如果没有指定<模式名>,那么<模式名>隐含为<用户名>

① 定义模式

dbo database owner 数据库的创建者,创建该对象的用户. guest 顾客 能够访问数据库中对象的数据, 要求dbo分配权限给guest, 一般给他查看的权限select

  • 这里我先创建一个数据库用户:

[例1]定义一个学生-课程模式S-T

      CREATE SCHEMA "S-T" AUTHORIZATION BitHachi;
      为用户BitHachi定义了一个模式S-T
12
在这里插入图片描述
  • 如果没有指定<模式名>,那么<模式名>隐含为<用户名>
      CREATE SCHEMA AUTHORIZATION BitHachi;
      <模式名>隐含为用户名BitHachi
      这个不知道咋回事,没出结果,默认模式BitHachi没创建出来,没显示
123

[例2]为用户BitHachi创建了一个模式S-T,并在其中定义了一个表TAB1。

CREATE SCHEMA "S-T" AUTHORIZATION BitHachi
CREATE TABLE TAB1(
COL1 SMALLINT, 
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
12345678
在这里插入图片描述

② 删除模式

  • DROP SCHEMA <模式名> <CASCADE|RESTRICT>
  • CASCADE(级联)
    删除模式的同时把该模式中所有的数据库对象全部删除
  • RESTRICT(限制)
    如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。
  • 当该模式中没有任何下属的对象时才能执行。
  • 以下是运行结果,至于为什么是错误的,暂且放在这里,等熟悉相关知识之后,再来解决。
DROP SCHEMA "S-T" CASCADE;
1
在这里插入图片描述
DROP SCHEMA "S-T" RESTRICT;
1
在这里插入图片描述

(3)基本表的定义、删除与修改—TABLE

① 定义基本表的标准格式

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

1234567
  • 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。
  • 示例:

② 数据类型

  • SQL中的概念用数据类型来实现
  • 定义表的属性时 需要指明其数据类型及长度
  • 选用哪种数据类型
    • 取值范围
    • 要做哪些运算
  • 以下是通用数据类型,不同数据库的数据类型可能有所不同,可查相关文档。
在这里插入图片描述

③ 修改基本表

ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ DROP <完整性约束名> ]
[ ALTER COLUMN<列名> <数据类型> ];
1234

[例8]向Student表增加“入学时间”列,其数据类型为日期型。

  • 不论基本表中原来是否已有数据,新增加的列一律为空值。
     ALTER TABLE Student ADD S_entrance DATE;
1
在这里插入图片描述

[例9]将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。

ALTER TABLE Student ALTER COLUMN Sage INT;
1
在这里插入图片描述


[例10]增加课程名称必须取唯一值的约束条件。

   		ALTER TABLE Course ADD UNIQUE(Cname);
1
在这里插入图片描述

④ 删除基本表

标准格式:
DROP TABLE <表名>[RESTRICT| CASCADE];

  • RESTRICT:删除表是有限制的。
    • 欲删除的基本表不能被其他表的约束所引用
    • 如果存在依赖该表的对象,则此表不能被删除
  • CASCADE:删除该表没有限制。
    • 在删除基本表的同时,相关的依赖对象一起删除

[例11] 删除Student表

  • 基本表定义被删除,数据被删除
  • 表上建立的索引、视图、触发器等一般也将被删除
  • 还是和上述删除模式情况一样,加了CASCADE和RESTRUCT删除不了 DROP TABLE Student CASCADE ;
    • 1

[例12]若表上建有视图,选择RESTRICT时表不能删除

    CREATE VIEW IS_Student      
	AS 
	    SELECT Sno,Sname,Sage
	    FROM  Student
    	    WHERE Sdept='IS';
	 DROP TABLE Student RESTRICT;   
123456
在这里插入图片描述

--ERROR: cannot drop table Student because other objects depend on it

在这里插入图片描述

[例12]如果选择CASCADE时可以删除表,视图也自动被删除

  • 这里还是跟之前的情况一样,删除不了,可能是我用的数据库不同叭
	DROP TABLE Student CASCADE; 	    
 --NOTICE: drop cascades to view IS_Student
	SELECT * FROM IS_Student;
--ERROR: relation " IS_Student " does not exist 
1234
在这里插入图片描述

(4)索引的建立与删除—INDEX

建立索引的目的:·加快查询速度·

  • 谁可以建立索引?
    • DBA 或 表的属主(即建立表的人)
    • DBMS一般会自动建立以下列上的索引
    • PRIMARY KEY
    • UNIQUE
  • 谁维护索引?
    DBMS自动完成
  • 使用索引
    DBMS自动选择是否使用索引以及使用哪些索引
  • RDBMS中索引一般采用B+树、HASH索引来实现
    • B+树索引具有动态平衡的优点
    • HASH索引具有查找速度快的特点
  • 采用B+树,还是HASH索引 则由具体的RDBMS来决定
  • 索引是关系数据库的内部实现技术,属于内模式的范畴
  • CREATE INDEX语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引

① 建立索引的标准格式

语句格式

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

[例13]

 	  CREATE CLUSTERED	INDEX Stusname
           ON   Student(Sname);
12
在这里插入图片描述
  • 在Student表的Sname(姓名)列上建立一个聚簇索引
  • 在最经常查询的列上建立聚簇索引以提高查询效率
  • 一个基本表上最多只能建立一个聚簇索引
  • 经常更新的列不宜建立聚簇索引

[例14]为学生-课程数据库中的Student,Course,SC三个表建 立索引。

  • Student表按学号升序建唯一索引
  • Course表按课程号升序建唯一索引
  • SC表按学号升序和课程号降序建唯一索引
CREATE UNIQUE INDEX  Stusno ON Student(Sno);
CREATE UNIQUE INDEX  Coucno ON Course(Cno);
CREATE UNIQUE INDEX  SCno ON SC(Sno ASC,Cno DESC);
123
在这里插入图片描述

② 删除索引

DROP INDEX <索引名> ON <表名>;
DROP INDEX <表名>.<索引名>;

  • 删除索引时,系统会从数据字典中删去有关该索引的
    描述。

[例15] 删除Student表的Stusname索引

   DROP INDEX Stusno ON Student;
   //等价
   DROP INDEX Student.Stusno;
123
在这里插入图片描述
THE END
喜欢就支持以下吧
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论