数据库概论总结

目录

第一章 绪论 3

1.1 数据库系统概述 3

1.1.1 基本概念 3

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

1.2 数据模型 4

1.2.1 两类数据模型 5

1.2.2 概念模型 5

1.2.3 数据模型的组成要素 5

1.2.4 常用的数据模型 5

1.2.5 层次模型 6

1.2.6 网状模型 7

1.2.7 关系模型 7

1.3 数据库系统的结构 8

1.3.1 数据库系统模式的概念 8

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

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

1.4 数据库系统的组成 10

第二章 关系数据库 10

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

2.1.1 关系 10

2.1.2 关系模式 11

2.1.3 关系数据库 11

2.2 关系操作 11

2.2.1 基本的关系操作 11

2.2.2 关系数据语言的分类 12

2.3 关系的完整性 12

2.3.1 实体完整性 12

2.3.2 参照完整性 12

2.4 关系代数 13

2.4.1 传统的集合运算 13

2.4.2 专门的关系运算 13

*2.5 关系演算 15

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

3.1 SQL概述 16

3.1.1 SQL的产生与发展 16

3.1.2 SQL的特点 16

3.1.3 SQL的基本概念 16

3.2 学生-课程数据库 17

3.3 数据定义 18

3.3.1 模式的定义与删除 18

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

3.3.3 索引的建立与删除 22

3.4 数据查询 22

字符匹配 23

Order by子句 23

聚集函数 23

Group by子句 24

3.4.2 连接查询 24

3.4.3 嵌套查询 25

带有Exists谓词 25

3.4.4 集合查询 25

3.4.5 基于派生表的查询 25

3.5 数据更新 26

3.5.1 插入数据 26

3.5.2 修改数据 26

3.5.3 删除数据 26

3.6 空值的处理 26

3.7 视图 27

3.7.1 定义视图 27

3.7.2 查询视图 27

3.7.3 更新视图 27

3.7.4 视图的作用 28

第四章 数据库安全性 28

4.1 数据库安全性概述 28

4.1.1 数据库的不安全因素 28

4.1.2 安全标准间接 28

4.2 数据库安全性控制 29

4.2.1 用户身份鉴别 29

4.2.2 存取控制 29

4.2.3 自主存取控制方法 29

4.2.4 授权:授予与收回 30

4.2.5 数据库角色 31

4.2.6 强制存取控制方法 32

4.3 视图机制 32

4.4 审计 32

4.5 数据加密 33

4.6 其他安全性保护 33

第五章 数据库完整性 33

5.1 实体完整性 33

5.1.1 定义实体完整性 33

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

5.2 参照完整性 34

5.2.1 定义参照完整性 34

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

5.3 用户定义的完整性 34

5.3.1 属性上的约束条件 34

5.3.2 元组上的约束条件 35

5.4 完整性约束命名子句 35

*5.5 域中的完整性限制 35

5.6 断言 35

5.7 触发器 36

5.7.1 定义触发器 36

5.7.2 激活触发器 36

5.7.3 删除触发器 37

第六章 关系数据库理论 37

6.1 问题的提出 37

6.2 规范化 38

6.2.1 函数依赖 38

6.2.2 码 39

6.2.3 范式 39

6.2.4 2NF 39

6.2.5 3NF 40

6.2.6 BCNF 40

6.2.7 多值依赖 40

第七章 数据库设计 40

 

  • 绪论

1.1 数据库系统概述

1.1.1 基本概念

数据(Data):描述事物的符号记录称为数据。

数据库(DB,DataBase):数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。

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

    主要功能:

  • 数据定义功能
  • 数据组织、存储和管理
  • 数据操纵功能
  • 数据库的事务管理和运行管理
  • 数据库的建立和维护功能
  • 其他功能(包括数据库管理系统与网络中其他软件系统的通信功能,一个数据库管理系统与另一个数据库管理系统或文件系统的数据转换功能,异构数据库之间的互访和互操作功能等)

数据库系统(DBS,DataBase System):是由数据库、数据库管理系统、应用程序和数据库管理员(DBA,DataBase Administrator)组成的存储、管理、处理和维护数据的系统。

数据库系统简称为数据库

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

1.人工管理阶段

  1. 数据不保存
  2. 应用程序管理数据
  3. 数据不共享
  4. 数据不具有独立性

2.文件系统阶段

特点:

  1. 数据可以长期保存
  2. 由文件系统管理数据

缺点:

  1. 数据共享性差,冗余度大
  2. 数据独立性差

3.数据库系统阶段

特点:

  1. 数据结构化
  1. 说明:数据库系统实现整体数据的结构化,是数据库系统与文件系统的本质区别
  1. 数据的共享性高、冗余度低且易扩充
  2. 数据独立性高
  1. 说明:数据独立性是借助数据库管理数据的一个显著优点,包括数据的物理独立性逻辑独立性
  2. 物理独立性:是指用户的应用程序与数据库中数据的物理存储是相互独立的
  3. 逻辑独立性:是指用户的应用程序与数据库的逻辑结构是相互独立的。
  1. 数据由数据库管理系统统一管理和控制

数据库的共享是并发的(concurrency)共享,即多个用户可以同时存取数据库中的数据。

数据库管理系统还必须提供以下几个方面的数据控制功能

  • 数据的安全性保护(保护数据以防止不合法使用造成的数据泄密和破坏)
  • 数据的完整性检查(指数据的正确性、有效性和相容性)
  • 并发控制(对多用户的并发操作加以控制和协调)
  • 数据库恢复(将数据库从错误状态恢复到某一已知的正确状态)

1.2 数据模型

数据模型(data model)也是一种模型,是对现实世界数据特征的抽象。

数据模型是数据库系统的核心和基础

1.2.1 两类数据模型

第一类是概念模型,第二类是逻辑模型和物理模型

概念模型(也称信息模型):主要用于数据库设计

逻辑模型:包括层次模型、网状模型、关系模型、面向对象数据模型和对象关系数据模型、半结构化数据模型等。主要用于数据库管理系统的实现

物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的

1.2.2 概念模型

1.信息世界中的基本概念

  1. 实体

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

  1. 属性

实体所具有的某一特性称为属性

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

  1. 实体型

用实体名及其属性名集合来抽象和刻画同类实体,称为实体型

  1. 实体集

同一类型实体的集合称为实体集

  1. 联系

实体之间的联系通常是指不同实体集之间的联系

实体之间的联系有一对一、一对多和多对多等多种类型。

2.概念模型的一种表示方法:实体-联系方法

该方法用E-R图来描述现实世界的概念模型,E-R方法也称为E-R型

1.2.3 数据模型的组成要素

数据模型通常由数据结构数据操作数据的完整性约束条件三部分组成

1.数据结构

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

2.数据操作

    数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。主要有查询和更新(插入、删除、修改)

3.数据的完整性约束条件

数据的完整性约束条件是一组完整性规则。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。

1.2.4 常用的数据模型

数据库领域中主要的逻辑数据模型有:

  1. 层次模型
  2. 网状模型
  3. 关系模型
  4. 面向对象数据模型
  5. 对象关系数据模型
  6. 半结构化数据模型

层次模型和网状模型统称为格式化模型

XML为半结构化数据模型

基本层次联系是指两个记录以及他们之间的一对多(包括一对一)的联系

图中Ri位于联系Lij的始点,称为双亲结点,Rj位于联系Lij的终点,称为子女结点

1.2.5 层次模型

层次模型用树形结构来表示各类实体以及实体间的联系。

1.层次模型的数据结构

定义:

  1. 有且只有一个结点没有双亲结点,这个结点称为根结点
  2. 根以外的其他结点有且只有一个双亲结点

图中R1为根结点,R2和R3为兄弟结点,是R1的子女结点;R4和R5为兄弟结点,是R2的子女结点;R3、R4和R5为叶结点。

 

 

 

 

 

 

 

 

 

层次模型像一颗倒立的树,结点的双亲是唯一的

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

进行插入、删除、更新操作时(注:没有查询)要满足层次模型的完整性约束

进行插入操作时,如果没有相应的双亲结点值就不能插入它的子女结点值。

进行删除操作时,如果删除双亲结点值,则相应的子女结点值也将被同时删除

3.层次模式的优缺点

优点:

  • 层次模型的数据结构比较简单清晰
  • 层次数据库的查询效率高。当要存取某个结点的记录值,DBMS就沿 着这一条路径很快找到该记录值,所以层次数据库的性能优于关系数据 库,不低于网状数据库。
  • 层次数据模型提供了良好的完整性支持

缺点:

  • 现实世界中很多联系是非层次性的,如结点之间具有多对多联系,不适合用层次模型表示。
  • 如果一个结点具有多个双亲结点等,用层次模型表示这类联系就很笨拙,只能通过引入冗余数据(易产生不一致性)或创建非自然的数据结构(引入虚拟节点)来解决。对插入和删除操作的限制比较多,因此应用程序的编写比较复杂
  • 查询子女结点必须通过双亲结点
  • 由于结构严密,层次命令趋于程序化

1.2.6 网状模型

1.网状模型的数据结构

定义:

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

层次模型中子女结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一

2.网状模型的数据操纵与完整性约束

网状模型一般来说没有层次模型那样严格的完整性约束条件,但具体的网状数据库系统对数据操纵都加了一些限制,提供了一定的完整性约束。

  1. 支持记录码的概念,码即唯一标识记录的数据项的集合。
  2. 保证一个联系中双亲记录和子女记录之间是一对多的联系
  3. 可以支持双亲记录和子女记录之间的某些约束条件

3.网状模型的优缺点

优点:

  1. 能够更为直接地描述现实世界,如一个结点可以有多个双亲,结点之间可以有多种联系
  2. 具有良好的性能,存取效率较高

缺点:

  1. 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握
  2. 网状模型的DDL、DML复杂,并且要嵌入某一种高级语言(如COBOL、C)中。用户不容易掌握,不容易使用
  3. 由于记录之间的联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径,因此用户必须了解系统结构的细节,加重了编写应用程序的负担

1.2.7 关系模型

关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。是最重要的一种数据模型

1.关系模型的数据结构

术语:

  1. 关系:一个关系对应通常说的一张表
  2. 元组:表中的一行即为一个元组
  3. 属性:表中的一列即为一个属性,给每个属性起一个名称即属性名
  4. 码:也称码键,表中的某个属性组,可以唯一确定一个元组,如学号可以唯一确定一个学生,所以学号是学生的码
  5. 域:域是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。如性别的域是(男,女)
  6. 分量:元组中的一个属性值
  7. 关系模式:对关系的描述,一般表示为 关系名(属性1,属性2,…,属性n),如 学生(学号,姓名,年龄,性别,系名,年级)

关系术语

一般表格的术语

关系名

表头

关系模式

表头(表格的描述)

关系

(一张)二维表

元组

记录或行

属性

属性名

列名

属性值

列值

分量

一条记录中的一个列值

非规范关系

表中有表(大表中嵌有小表)

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

关系模式的增、删、改、操作必须满足关系的完整性约束条件。关系的完整性约束

3.关系模型的优缺点

优点:

  1. 关系模型与格式化模型不同,它是建立在严格的数学概念的基础上的
  2. 关系模式的概念单一
  3. 关系模式的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作

缺点:

  1. 由于存取路径对用户隐蔽,查询效率往往不如格式化数据模型

1.3 数据库系统的结构

1.3.1 数据库系统模式的概念

在数据模型中有“型”和“值”的概念。型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值

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

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

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

数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成

1.模式

模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式是数据库数据在逻辑级上的视图(例如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等)。一个数据库只有一个模式

2.外模式

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

3.内模式

内模式也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式(例如记录的存储方式是堆存储)

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

为了能够在系统内部实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像

1.外模式/模式映像

当模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。

2.模式/内模式映像

当数据库的存储结构改变时,由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。

1.4 数据库系统的组成

1.硬件平台及数据库

2.软件

数据库系统的软件主要包括:

  1. 数据库管理系统
  2. 支持数据库管理系统运行的操作系统
  3. 具有与数据库接口的高级语言及其编译系统,便与开发应用程序
  4. 以数据库管理系统为核心的应用开发工具
  5. 为特定应用环境开发的数据库应用系统

3.人员

人员分别包括如下职责

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

职责包括

  • 决定数据库中的信息内容和结构
  • 决定数据库的存储结构和存取策略
  • 定义数据的安全性要求和完整性约束条件
  • 监控数据库的使用和运行
  • 数据库的改进和重组、重构
  1. 系统分析员和数据库设计人员
  2. 应用程序员
  3. 用户

分类:

    • 偶然用户(一般是企业或组织机构的高中级管理人员)
    • 简单用户(主要工作是查询和更新数据库,如银行职员)
    • 复杂用户(比较熟悉数据库管理系统的各种功能,能够直接使用数据库语言访问数据库的具有较高科学技术背景的人员)
  • 关系数据库

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

关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。

2.1.1 关系

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

  1. 笛卡儿积

笛卡儿积为其中,每一个元素叫作一个n元组,或简称元组,元组中的每一个值叫作一个分量

一个域允许的不同取值个数称为这个域的基数

  1. 关系

的子集叫做在域上的关系,表示为,这里R表示关系的名字,n是关系的

当n=1时,称该关系为单元关系,或一元关系

当n=2时,称该关系为二元关系

若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码

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

关系模式的所有属性是这个关系模式的候选码,称为全码

关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。

基本关系的六条性质:

  1. 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域
  2. 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名
  3. 列的顺序无所谓,即列的次序可以任意交换
  4. 任意两个元组的候选码不能取相同的值
  5. 行的顺序无所谓,即行的次序可以任意交换
  6. 分量必须取原子值,即每一个分量都必须是不可分的数据项(最基本的)

2.1.2 关系模式

关系的描述称为关系模式,它可以形式化的表示为,其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合

2.1.3 关系数据库

关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库

2.2 关系操作

2.2.1 基本的关系操作

关系模型中常用的关系操作包括查询和插入、删除、修改两大部分

关系的查询表达能力很强,是关系操作中最主要的部分。其中选择、投影、并、差、笛卡儿积是5种基本操作,其他操作可以用基本操作来定义和导出,就像乘法可以用加法来定义和导出一样

关系操作的对象和结果都是集合

2.2.2 关系数据语言的分类

结构化查询语言(SQL)是集查询、数据定义语言、数据操纵语言和数据控制语言于一体的关系数据语言,SQL语言是一种高度非过程化的语言

2.3 关系的完整性

关系模型有三类完整性约束:实体完整性、参照完整性和用户定义的完整性,其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性

2.3.1 实体完整性

实体完整性规则:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值(null value)。空值指的是“不知道”或“不存在”或“无意义”的值

对实体完整性规则说明:

  1. 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。例如学生关系对应于学生的集合
  2. 现实世界中的实体是可区分的,即它们具有某种唯一性标识。例如每个学生都是独立的个体,是不一样的
  3. 相应地,关系模型中以主码为唯一性标识
  4. 主码中的属性及主属性不能取空值

2.3.2 参照完整性

设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系

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

  1. 或者取空值(F的每个属性值均为空值)
  2. 或者等于S中某个元组的主码值,学生关系中每个元组的“专业号”属性只能取下面两类值
    1. 空值,表示尚未给该学生分配专业
    2. 非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中

2.4 关系代数

关系代数的运算按运算符的不同可分为传统的集合运算和专门的关系运算两类

2.4.1 传统的集合运算

传统的集合运算时二目运算,包括并、差、交、笛卡儿积4种运算

并、差、交运算的结果关系仍为n目关系

笛卡儿积:

    两个分别为n目和m目的关系R和S的笛卡儿积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组

2.4.2 专门的关系运算

专门的关系运算包括选择、投影、连接、除运算等

  1. 设有一个学生-课程数数据库,包括学生关系Student、课程关系Course和选修关系SC
  2. Student

学号

Sno

姓名

Sname

性别

Ssex

年龄

Sage

所在系

Sdept

201215121

李勇

20

CS

201215122

刘晨

19

CS

201215123

王敏

18

MA

201215125

张立

19

IS

  1. Course

课程号

Cno

课程名

Cname

先行课

Cpno

学分

Ccredit

1

数据库

5

4

2

数学

 

2

3

信息系统

1

4

4

操作系统

6

3

5

数据结构

7

4

6

数据处理

 

2

7

PASCAL语言

6

4

  1. SC

学号

Sno

课程号

Cno

成绩

Grade

201215121

1

92

201215121

2

85

201215121

3

88

201215122

2

90

201215122

3

80

 

1.选择

选择又称为限制。它是在关系R中选择满足给定条件的诸元组,记作

    

其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”

  1. 条件表达式中的运算符

运算符

含义

比较运算符

大于

大于等于

小于

小于等于

等于

<>

不等于

逻辑运算符

 

例:

(1)查询信息系(IS系)全体学生

    

    相当于select * from Student where Sdept='IS'

Sno

Sname

Ssex

Sage

Sdept

201215125

张立

19

IS

 

(2)查询年龄小于20岁的学生

    

    相当于select * from Student where Sage<20

Sno

Sname

Ssex

Sage

Sdept

201215122

刘晨

19

CS

201215123

王敏

18

MA

201215125

张立

19

IS

 

2.投影

关系R上的投影是从R中选择出若干属性列组成新的关系。记作

    

其中A为R中的属性列

例:

  1. 查询学生姓名和所在系,即求Student关系上学生姓名和所在系两个属性上的投影

    

相当于select Sname,Sdept from Studnet

Sname

Sdept

李勇

CS

刘晨

CS

王敏

MA

张立

IS

 

  1. 查询学生关系Student中都有哪些系,即查询关系上Student上所在系属性上的投影

相当于select Sdept from Studnet

Sdept

CS

MA

IS

 

3.连接

连接也称为连接。它是从两个关系的笛卡儿积中选择属性间满足一定条件的元组,记作

    

其中,A和B分别为R和S上列数相等且可比的属性组,是比较运算符。连接运算从R和S的笛卡儿积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系的元组

为“=”的连接运算称为等值连接

自然连接是一种特殊的等值连接

4.除运算

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

R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集包含S在Y上投影的集合。记作

    

其中为x在R中的象集,

关系代数中,这些元素经有限次复合后形成的表达式称为关系代数表达式

*2.5 关系演算

 

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

结构化查询语言(Structured Query Language,SQL)是关系数据库的标准语言

3.1 SQL概述

3.1.1 SQL的产生与发展

目前,没有一个数据库系统能够支持SQL标准的所有概念和特性

3.1.2 SQL的特点

  1. 综合统一

非关系模型(层次模型、网状模型)的数据语言一般都分为

  1. 模式数据定义语言
  2. 外模式数据定义语言
  3. 数据存储有关的描述语言
  4. 数据操纵语言
  1. 高度非过程化
  2. 面向集合的操作方式
  3. 以同一种语法结构提供多种使用方式
  4. 语言简洁,易学易用

SQL的动词

SQL功能

动词

数据查询

select

数据定义

create,drop,alter

数据操纵

insert,update,delete

数据控制

grant,revoke

 

3.1.3 SQL的基本概念

数据库的三级模式结构

3.2 学生-课程数据库

首先要定义一个学生-课程模式S-T。学生-课程数据库中包括以下三个表

  1. 学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
  2. 课程表:Course(Cno,Cname,Cpno,Ccredit)
  3. 学生选课表:SC(Sno,Cno,Grade)
  1. Student

学号

Sno

姓名

Sname

性别

Ssex

年龄

Sage

所在系

Sdept

201215121

李勇

20

CS

201215122

刘晨

19

CS

201215123

王敏

18

MA

201215125

张立

19

IS

  1. Course

课程号

Cno

课程名

Cname

先行课

Cpno

学分

Ccredit

1

数据库

5

4

2

数学

 

2

3

信息系统

1

4

4

操作系统

6

3

5

数据结构

7

4

6

数据处理

 

2

7

PASCAL语言

6

4

  1. SC

学号

Sno

课程号

Cno

成绩

Grade

201215121

1

92

201215121

2

85

201215121

3

88

201215122

2

90

201215122

3

80

 

3.3 数据定义

SQL的数据定义语句

操作对象

操作方式

创建(create)

删除(drop)

修改

模式

create schema

drop schema

 

create table

drop table

alter table

视图

create view

drop view

 

索引

create index

drop index

alter index

一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象

3.3.1 模式的定义与删除

  1. 定义模式

    在SQL中,模式定义语句如下:

        create schema <模式名> authorization <用户名>

    如果没有指定<模式名>,那么<模式名>隐含为<用户名>

要创建模式,调用该命令的用户必须拥有数据库管理员权限,或者获得了数据库管理员授予的create schema 的权限

例:

  1. 为用户wang定义一个学生-课程模式S-T

    create schema "S-T" authorization wang

  1. create schema authorization wang

    该语句没有指定<模式名>,所以<模式名>隐含为用户名wang

目前,在create schema中可以接受create table,create view和grant子句。也就是说用户可以在创建模式的同时在这个模式定义中进一步创建基本表、视图,定义授权。

create schema <模式名> authorization <用户名> [<表定义子句>|<视图定义子句>|<授权定义子句>]

例:

    为用户zhang创建一个模式test,并且在其中定义一个表tab1

    create schema test authorization zhang

    create table tab1(col1 smallint,

                    col2 int,

                    col3 char(20),

col4 numeric(10,3),

col5 decimal(5,2)

)

  1. 删除模式

在SQL中,模式定义语句如下:

        drop schema <模式名>

    例:

        drop schema zhang cascade

        该语句删除了模式zhang,同时,该模式中已经定义的表tab1也被删除了

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

  1. 定义基本表

create table <表名> ( <列名> <数据类型> [列级完整性约束条件],

                   <列名> <数据类型> [列级完整性约束条件],

                   <列名> <数据类型> [列级完整性约束条件],

                   [,<表级完整性约束条件>]

                  )

    例:

        1.建立一个“学生”表Student

        create table Student

( Sno char(9) primary key,

/*列级完整性约束条件,Sno为主码*/

 Sname char(20) unique, /*Sname取唯一值

 Ssex char(2),

 Sage smallint,

 Sdept char(20)

)

2.建立一个“课程”表Course

create table course

 ( Cno char(4) primary key,

/*列级完整性约束条件,Cno是主码*/

  Cname char(40) not null,

/*列级完整性约束条件,Cname不能取空值*/

  Cpno char(4), /*Cpno的含义是先修课*/

  Ccredit smallint,

  foreign key(Cpno) references Course(Cno)

/*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/

)

  1. 数据类型

每个属性来自一个域,它的取值必须是域中的值

 

数据类型

含义

char(n),

character(n)

长度为n的定长字符串

varchar(n),

charactervarying(n)

最大长度为n的变长字符串

clob

字符串大对象

blob

二进制大对象

int,integer

长整数(4字节)

smallint

短整数(2字节)

bigint

大整数(8字节)

numeric(p,d)

定点数,由p位数字(不包括符号、小数点)组成,小数点后面有d位数字

decimal(p,d),

dec(p,d)

同numeric

real

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

double precision

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

float(n)

可选精度的浮点数,精度至少为n为数字

boolean

逻辑布尔量

date

日期,包含年、月、日,格式为YYYY-MM-DD

time

时间,包含一日的时、分、秒,格式为HH:MM:SS

timestamp

时间戳类型

interval

时间间隔类型

 

  1. 模式与表

每一个基本表都属于某一个模式,一个模式包含多个基本表

  1. 修改基本表

alter table <表名>

[add [column] <新列名> <数据类型> [完整性约束]]

[add <表级完整性约束>]

[drop [column] <列名> [cascade|restrict]]

[drop constraint <完整性约束名> [restrict|cascade]]

[alter column <列名> <数据类型>];

其中<表名>是要修改的基本表,add子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件。drop column 子句用于删除表中的列,如果指定了cascade短语,则自动删除引用了该列的其他对象,比如视图;如果指定了restrict短语,则如果该列被其他对象引用,rdbms将拒绝删除该列。drop constraint子句用于删除指定的完整性约束条件。alter column子句用于删除原有的列定义,包括修改列名和数据类型

例:

  1. 向Student添加“入学时间”列,其数据类型为日期型

alter table Student add S_entrance date;

  1. 将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数

alter table Student alter column Sage int

  1. 增加课程名必须取唯一值的约束条件

alter table Course add unique(Cname)

  1. 删除基本表

drop table <表名> [restrict|cascade];

若选择restrict,则表的删除是有限制条件的。与删除的基本表不能被其他表的约束所引用(如check,foreign key等约束),不能有视图,不能有触发器,不能有存储过程或函数等。如果存在这些依赖该表的对象,则此表不能被删除。

若选择cascade,则该表的删除没有限制条件。在删除基本表的同时,相关的依赖对象,例如视图,都将被一起删除

默认情况是restrict

例:

  1. 删除Student表

     drop table Student cascade

  1. 若表上建有视图,选择restrict时表不能删除;选择cascade时可以删除表,视图也自动被删除

create view IS_Student /*Student表上建立视图*/

as

select Sno,Sname,Sage

from Student

where Sdept='IS'

 

drop table Student restrict /*删除Student表*/

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

/*系统返回错误信息,存在依赖该标的对象,此表不能被删除*/

 

drop table Student cascade /*删除Student表*/

--NOTICE:drop cascades to view IS_Student

/*系统返回提示,此表上的视图也被删除*/

 

select * from IS_Student

--ERROR:relation "IS_Student" does not exist

序号

 

 

依赖基本表的对象

标准及主流数据库的处理方式

SQL2011

Kingbase ES

Oracle 12c

MS SQL Server 2012

R

C

R

C

R

C

 

1

索引

无规定

2

视图

×

×

保留

保留

保留

3

default,primary key,check(只含该表的列) not null 等约束

4

外码foreign key

×

×

×

×

5

触发器trigger

×

×

6

函数或存储过程

×

保留

保留

保留

保留

保留

×:表示不能删除基本表

√:表示能删除基本表

保留:表示删除基本表后,还保留依赖对象

 

3.3.3 索引的建立与删除

数据库索引能快速定位到需要查询的内容

数据库索引类型,常见的包括:顺序文件上的索引、B+树索引、散列(hash)索引、位图索引等。

索引虽然能加速数据库查询,但是需要占用一定的存储空间,当基本表更新时,索引要进行相应的维护。

用户不必也不能显式地选择索引

  1. 建立索引

     create [unique] [cluster] index <索引名>

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

    例:

  1. 为学生-课程数据库中的Student、Course和SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序唯一索引。

create unique index Stusno on Studnet(Sno)

create unique index Coucno on Course(Cno)

create unique index SCno on SC(Sno ASC,Cno DESC)

  1. 修改索引

alter index <旧索引名> rename to <新索引名>

例:

将SC表的SCno索引名改为SCno

alter index SCno rename to SCSno

  1. 删除索引

drop index <索引名>

例:

删除Student表的Stusname索引

drop index Stusname

3.4 数据查询

select [all|distinct] <目标列表达式> [,<目标列表达式>]…

from <表名或视图名> [,<表名或视图名>…] | (