数据库原理及应用

第一章 引言

1.1 数据库系统概述

1.1.1 数据库的四个基本概念

数据库的四个基本概念

1 数据(Data)

  • 数据是数据库中存储的基本对象
  • 数据的定义:描述事物的符号记录
  • 数据的种类:文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等
  • 数据的特点:数据与其语义是不可分的(说明:数据的含义称为数据的语义,数据与其语义是不可分的。)
  • 数据举例 1:
    • 例如 93 是一个数据
    • 语义1:学生某门课的成绩
    • 语义2:某人的体重
    • 语义3:某个年级的学生人数
    • 语义n:…
  • 数据举例 2:
    • 学生档案中的学生记录(李明,男,197205,江苏南京市,计算机系,1990)
    • 语义:学生姓名、性别、出生年月、籍贯、所在院系、入学时间
    • 解释:李明是个大学生,1972年5月出生,江苏南京市人,1990年考入计算机系

2 数据库(DataBase,简称 DB)

  • 数据库的定义:数据库(Database,简称 DB)是长期储存在计算机内、有组织的、可共享的大量数据的集合。(一个大规模集成的数据集合。)
  • 数据库的基本特征:
    • 数据按一定的数据模型组织、描述和储存
    • 可为各种用户共享
    • 冗余度较小
    • 数据独立性较高
    • 易扩展
  • 数据库作用:
    • 一个数据库是对现实生活中一个企业或一个单位在计算机中的建模结果
      • 实体
      • 联系(实体间的关系)

3 数据库管理系统(DataBase Management System,简称 DBMS)

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

4 数据库系统(Database System,简称 DBS)

  • 数据库系统的定义:在计算机系统中引入数据库后的系统构成数据库系统。
  • 数据库系统的构成
    • 数据库
    • 数据库管理系统(及其开发工具)
    • 应用系统
    • 数据库管理员 (DBA):是负责数据库的设计、规划、协调的专职人员。是全面负责建立、维护和管理数据库系统的人员。

数据库系统层次结构

下面附一张各种人员的数据视图,知道即可:

各种人员的数据视图

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

1 什么是数据管理

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

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

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

1.1.3 数据库系统的特点

  • 数据结构化

    • 数据库的主要特征之一,也是数据库系统与文件系统的本质区别
  • 数据的共享性高,冗余度低,易扩充

    • 数据共享的好处:
      • 减少数据冗余,节约存储空间
      • 避免数据之间的不相容性与不一致性
      • 使系统易于扩充
  • 数据独立性高

    • 物理独立性:指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。
    • 逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变。
    • 数据独立性是由 DBMS 的二级映像功能来保证的
  • 数据由 DBMS 统一管理和控制

    DBMS 提供以下几方面的数据控制功能

    • 数据的安全性(Security)保护:保护数据,以防止不合法的使用造成的数据的泄密和破坏。
    • 数据的完整性(Integrity)检查:将数据控制在有效的范围内,或保证数据之间满足一定的关系。
    • 并发(Concurrency)控制:对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。
    • 数据库恢复(Recovery):DBMS 必须具有将数据库从错误状态恢复到某一正确状态的功能

数据库系统阶段应用程序与数据的对应关系(数据库系统)

应用程序与数据的对应关系

1.2 数据模型

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

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

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

1.2.1 两类数据模型

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

① 概念模型

概念模型,也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计。

现实世界中客观对象的抽象过程

涉及的概念:

  • **实体(Entity):**客观存在并可相互区别的事物,比如一个学生,一门课,学生的一次选课
  • **属性(Attribute):**实体所具有的某一特性,比如学生的身高,一个实体可以由若干个属性来刻画。
  • **码(Key) :**唯一标识实体的属性集,比如学生的学号
  • **域(Domain):**属性的取值范围称为该属性的域。
  • 实体型(Entity Type): 实体名 + 属性名,比如 学生(学号,姓名,性别)就是一个实体型
  • **实体集(Entity Set):**同一类型的实体的集合,比如全体学生
  • **联系(Relationship) :**现实世界中事物内部以及事物之间的联系在信息中反映为实体内部的联系和实体之间的联系。
    • 实体内部的联系通常是指组成实体的各属性之间的联系
    • 实体之间的联系通常是指不同实体集之间的联系,(有一对一,一对多,多对多等多种类型),实体之间的联系可用 E - R 图 表示

一个实例:

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

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

完整的 E - R 图

② 逻辑模型和物理模型

逻辑模型主要包括网状模型、层次模型、关系模型、面向对象模型等,按计算机系统的观点对数据建模,用于 DBMS 实现。

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

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

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

    • 有且只有一个结点没有双亲结点,这个结点称为根结点
    • 根以外的其它结点有且只有一个双亲结点
  • 网状模型

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

    • 允许一个以上的结点无双亲
    • 一个结点可以有多于一个的双亲
  • 关系模型:关系数据库系统采用关系模型作为数据的组织方式

  • 面向对象数据模型

  • 对象关系数据模型

  • 半结构化数据模型

由于计算机厂商新推出的数据库管理系统几乎都支持关系模型,所以下面重点来说说关系模型!

1.2.2 关系模型

关系模型是最重要的一种数据模型。

在用户观点下,关系模型由一组关系组成,每个关系的数据结构是一张规范化的二维表,它由行(元组)和列(属性)组成。

关系表

关系模型相关的术语:

  • 关系(Relation):一个关系对应一张表
  • 元组(Tuple):表中的一行即一个元组
  • 属性(Attribute):表中的一列即一个属性,给每一个属性起一个名称即属性名
  • 主码(Key) :表中的某个属性组,可以唯一确定一个元组,该属性组就称为主码。比如上表中的学号就就是该关系的主码
  • 域(Domain):域是一组具有相同数据类型的值的集合。比如人的年龄是1-120岁,属性的取值范围来自该属性对应的域
  • 分量:元组中的一个属性值。
  • 关系模式:对关系的描述,一般表示为 关系名(属性名1,属性名2…)。比如学生(学号,姓名,年龄,性别,系,年级)。关系模式必须是规范化的,不允许表中还有表,每个属性都应该是不可分的(即关系的每一个分量必须是一个不可分的数据项)

1.3 数据库系统结构

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

1.3.1 数据库系统模式的概念

1 型和值的概念

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

举例:

学生记录型:(学号,姓名,性别,系别,年龄,籍贯)

一个记录值:(900201,李明,男,计算机,22,江苏

2 模式(Schema)

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

3 实例(Instance)

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

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

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

① 模式(Schema)

模式(也称逻辑模式):数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,综合了所有用户的需求

注:一个数据库只有一个模式,模式的地位是数据库系统模式结构的中间层,与数据的物理存储细节和硬件环境无关,与具体的应用程序、开发工具及高级程序设计语言无关

② 外模式(External Schema)

外模式(也称子模式或用户模式):是数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示

注:外模式的地位:介于模式与应用之间

模式与外模式的关系:一对多

  • 外模式通常是模式的子集
  • 一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求
  • 对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同

外模式与应用的关系:一对多

  • 同一外模式也可以为某一用户的多个应用系统所使用
  • 但一个应用程序只能使用一个外模式

外模式是保证数据库安全的一个有力措施。每个用户只能看见和访问对应的外模式中的数据,数据库的其余数据是不可见的。

③ 内模式(Internal Schema)

内模式(也称存储模式):是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。

注:一个数据库只有一个内模式

!> 数据在数据库内部的表示方式:

  • 记录的存储方式(顺序存储,按照B树结构存储, 按hash方法存储)
  • 索引的组织方式
  • 数据是否压缩存储
  • 数据是否加密
  • 数据存储记录结构的规定

最后再来回顾一下数据库系统的三级模式结构:

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

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

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

第二章 关系数据库

2.1 关系模型的基本术语及形式化定义

  • 数据结构 —— 静态特性
  • 数据操作 —— 动态特性
  • 数据的约束条件

数据结构

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

2 两类对象:

  • 与数据类型、内容、性质有关的对象
  • 与数据之间联系有关的对象

3 数据结构是对系统静态特性的描述

数据操作

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

2 数据操作的类型

  • 检索
  • 更新(包括插入、删除、修改)

3 数据模型对操作的定义

  • 操作的确切含义
  • 操作符号
  • 操作规则(如优先级)
  • 实现操作的语言

4 数据操作是对系统动态特性的描述。

数据的完整性约束条件

1 数据的完整性约束条件

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

2 数据模型对约束条件的定义

  • 反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。例如在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件。
  • 提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。

2.1.1 基本术语

1 域 Domain

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

比如整数、字符串等。

2 笛卡尔积 Cartesian Product

笛卡尔积是域上的一种集合运算

定义有点晦涩,看下面一个例子就懂了

3 关系 Relation

笛卡尔积 D1×D2×…×Dn 的一个子集叫作域 D1, D2, …, Dn 上的一个关系。

学生(学号,姓名,年级)就是一个关系

如果只有 1 个属性,则称为单元关系/一元关系

如果有 2 个属性,则称为二元关系

4 主码 Primary Key

有一个或一组这样的属性,它的值能确定该关系中其他所有属性的值。

5 候选码 Candidate Key

能唯一标识元组的属性(组),其中选择其一作为主码。

6 主属性 Prime Attribute

候选码中的诸属性。

7 非主属性 Non-Key Attribute

不出现在任何候选码中的属性。

8 关系的型与值

关系(表)的型:关系的结构(字段名、字段个数、域等)

关系(表)的值:关系中具体的元组,也称关系的实例(Instance)。

2.1.2 关系的概念及性质

关系 Relation:笛卡尔积 D1×D2×…×Dn 的一个子集叫作域 D1, D2, …, Dn 上的一个关系。

学生(学号,姓名,年级)就是一个关系

如果只有 1 个属性,则称为单元关系/一元关系

如果有 2 个属性,则称为二元关系

2.1.3 关系模式

!> 关系数据库中,关系模式是型,关系是值 。

1 什么是关系模式

  • 关系模式(Relation Schema)是型
  • 关系是值
  • 关系模式是对关系的描述
    • 元组集合的结构
      • 属性构成
      • 属性来自的域
      • 属性与域之间的映象关系
    • 元组语义以及完整性约束条件
    • 属性间的数据依赖关系集合

2 定义关系模式

  • 关系的描述称为关系模式。
  • 关系模式可以形式化地表示为:R(U,D,dom,F)
说明:
R关系名
U组成该关系的属性名集合
D属性组 U 中属性所来自的域
dom属性向域的映象集合
F属性间的数据依赖关系集合
  • 关系模式通常可以简记为:R (U) 或 R (A1,A2,…,An)
    • R ——关系名
    • A1,A2,…,An ——属性名

!> 注:域名及属性向域的映象常常直接说明为属性的类型、长度

3 关系模式与关系

  • 关系模式
    • 对关系的描述
    • 静态的、稳定的
  • 关系
    • 关系模式在某一时刻的状态或内容
    • 动态的、随时间不断变化的
  • 关系模式和关系往往统称为关系,通过上下文加以区别

2.1.4 关系数据库

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

(1)单一的数据结构—关系

关系模型的数据结构非常单一。在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。在用户看来,关系模型中数据的逻辑结构是一张二维表。

(2)关系操作

关系模型中常用的关系操作包括:选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)等和查询(Query)操作和增加(Insert)、删除(Delete)、修改(Update)操作两大部分。

(3)关系的三类完整牲约束

关系模型允许定义三类完整性约束:实体完整性、参照完整性和用户定义的完整性。

2.2 关系的完整性

关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义完整性。

其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。

关系模型的完整性规则是对关系的某种约束条件。任何关系在任何时刻都要满足这些语义约束

  • 实体完整性
  • 参照完整性
  • 用户定义完整性

2.2.1 实体完整性

Entity Integrity

关系数据库中的每个元组应该是可区分的、唯一的。这样的约束条件用实体完整性来保证

**实体完整性规则:**每个关系都应有至少一个主属性,且主属性不能为空值

例如:选修(学号,课程号,成绩)关系中,学号和课程号不能为空值

!> 实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。

2.2.2 参照完整性

Referential Integrity

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

  • 或者取空值
  • 或者等于 S 中某个元组的主码值

image-20200513180100165

image-20200513180213761

2.2.3 用户定义完整性

User-defined Integrity

任何关系数据库系统都应支持实体完整性和参照完整性。除此之外,用户还可以自定义完整性约束。

用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。

例:选修(学号,课程号,成绩)成绩的取值范围在 0~100 之间

关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。

2.3 关系代数

关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。

关系代数的运算对象是关系,运算结果亦是关系

关系代数用到的运算符包括两类:集合运算符和专门的关系运算符

2.3.1 传统的集合运算

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

① 并 Union

关系 R 与关系 S 的并记作:R ∪ S = {t|t∈R ∨ t∈S}

其结果仍为 n 目关系,由属于 R 或属于 S 的元组组成。

image-20200513182048845

例图:

image-20200513182204587

② 差 Difference

系R与关系S的差记作:R - S = {t|t∈R ∧ tS}

其结果关系仍为 n 目关系,由属于 R 而不属于 S 的所有元组组成。

image-20200513182446997

例图:

image-20200513182540567

③ 交 Intersection

关系 R 与关系 S 的交记作:R ∩ S = {t|t∈R ∧ t∈S}

其结果关系仍为 n 目关系,由既属于 R 又属于 S 的元组组成。关系的交可以用差来表示,即 R ∩ S = R-(R-S)

image-20200513183829377

例图:

image-20200513183947250

④笛卡尔积 Cartesian Product

image-20200513184637038

例图:

image-20200513184413001

2.3.2 专门的关系运算

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

① 选择 selection

选择元组

**示例 1:**查询学生表 Student 中年龄小于 20 岁的学生的所有信息

σ age<20 (Student)

示例 2:

image-20200513190439937

示例 3:

image-20200513190609548

② 投影 projection

image-20200513190836995

投影操作主要是从列的角度进行运算,投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

选择列

⚠ 注意:投影操作会去除列中的重复行

**示例:**查询学生表Student中都有哪些系

Ⅱ Sdept (Student)

③ 连接 join

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

连接运算中有两种常用连接:

  • 等值连接:θ 为 = 的连接运算称为等值连接。他是从关系 R 与 S 的笛卡尔积中选取 A、B 属性值相等的那些元组

  • 自然连接:自然连接是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉

示例:

在做自然连接的时候,两个关系中的某些元组可能会被抛弃,这些被舍弃的元组就称为悬浮元组

  • 如果要把悬浮元组也留在结果中,而在其他属性上填NULL,那么这种连接就叫做外连接 outer join
  • 左外连接 left join:只保留左表的悬浮元组
  • 右外连接 right join:只保留右表的悬浮元组

④ 除运算

象集的概念

image-20200513192951849

举例:

image-20200513193100713

给除运算下定义:

image-20200513193140757

R ÷ S = T 表示 T 包含所有在 R 但不在 S 中的属性及其值,且 T 的元组与 S 的元组的 所有组合 都在 R中

**示例:**可以理解为在 R 中查找 B、C 属性和 S 中的 B、C 属性相同的,A 属性的值

  • T 中包含所有在 R 但不在 S 中的属性及其值

    A在R中而不在S中,所以保留A属性,去掉 B、C、D三个属性

  • 且 T 的元组和 S 的元组的所有组合都在 R 中

    a1: a1 b1 c2 / a1 b2 c1 / a1 b2 c3 都在 R中

    a2 : a2 b1 c2 不在 R 中 PASS!

    a3:a3 b1 c2 不在 R 中 PASS!

    a4:a4 b1 c2 不在 R 中 PASS!

2.3.3 关系代数习题

① 设有如下四个表:S(供应商表)P(零件表)J(工程项目表)SPJ(供应情况表)

② 设有如图所示的关系S、SC 和 C, 试用关系代数表达式表示下列查询语句:

image-20200513193720599

  • 检索”程军”老师所授课的课程号(C#)和课程名(CNAME)

    ⅡC#,CNAME (σ TEACHER = ‘程军’(C) )

  • 检索年龄大于21的男学生学号(S#)和姓名(SNAME)

    ⅡS#,SNAME (σ AGE > ‘21’ ∧ SEX = ‘男’(S) )

  • 检索至少选修”程军”老师所授全部课程的学生姓名(SNAME)

    关键字:至少 —— 用除法

    ⅡSNAME ( ( ⅡS#,C#(SC) ÷ ⅡC#(σ TEACHER = ‘程军’(C)) ) ⚮ S )

  • 检索”李强”同学不学课程的课程号(C#)

    关键字:不 —— 用减法

    ⅡC#(C) - ⅡC#( σSNAME = ‘李强’(S) ⚮ SC )

  • 检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)

    ⅡC#,CNAME(ⅡS#,C#(SC) ÷ ⅡS#(S) ⚮ C )

  • 检索选修课程包含”程军”老师所授课程之一的学生学号(S#)

    ⅡS#(σTEACHER = ‘程军’(C) ⚮ SC)

  • 检索选修课程号为k1和k5的学生学号(S#)

    ⅡS#,C#(SC) ÷ ⅡC#(σ C#=k1 ∨ C# = k2(C))

  • 检索选修全部课程的学生姓名(SNAME)

    关键字:全部 —— 用除法

    ⅡSNAME( ( ⅡS#,C#(SC) ÷ ⅡC#(C) ) ⚮ S)

  • 检索选修课程包含学号为2的学生所选修的全部课程的学生学号(S#)

    ⅡS#,C#(SC) ÷ ⅡC#(σ S# = 2(SC) )

    所有学号, 课程号 ÷ 学号为2的学生选修的课程号

  • 检索选修课程名为’C语言’的学生学号(S#)和姓名(SNAME)

    ⅡS#,SNAME(ⅡS#( SC ⚮ (σCNAME = ‘C语言’(C)) ) ⚮ S)

  • 检索没有一门课程成绩不及格的学生学号、姓名

    ⅡS#,SNAME( (ⅡS#(S) - ⅡS#(σ GRADE < 60(SC) ) ⚮ S )

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

3.1 SQL 概述

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

大部分 DBMS 产品都支持 SQL,成为操作数据库的标准语言

3.1.1 SQL 数据库的体系结构

SQL 语言支持的关系数据库的三级模式结构

image-20200514201037080

说明:

  • 用户可以用 SQL 语言对视图(View)和基本表(Base Table)进行查询等操作,在用户观点里,视图和表一样,都是关系。
  • 视图是从一个或多个基本表中导出的表,本身不存储在数据库中,只有其定义,可以将其理解为一个虚表。
  • 基本表是本身独立存在的表,一个表可以带若干索引,存储文件及索引组成了关系数据库的内模式。

3.1.2 SQL 的功能

(1)数据定义(DDL)

  • 定义、删除模式
  • 定义、删除、修改关系模式(基本表)
  • 定义、删除视图(View)
  • 定义、删除索引(Index)

(2)数据操纵(DML)

  • 数据查询
  • 数据增、删、改

(3)数据控制(DCL)

  • 用户访问权限的授予、收回

3.1.3 SQL 的特点

(1)高度非过程化的语言

  • 用户只需提出“干什么”,至于“怎么干”由 DBMS 解决;用户只需要在查询语句中提出需要什么,DBMS即可按路径存取,并把结果返回给用户。

(2)面向集合的操作方式

  • 每一个 SQL 的操作对象是一个或多个关 系,操作的结果也是一个关系。

(3)同一种语法结构,两种使用方式

  • 即可独立使用,又可嵌入到 宿主语言中使用,具有自主型和宿主型两种特点。

(4)具有查询、操作、定义和控制四种语言一体化的特点

  • 它只向用户提供一种语言,但该语言具有上述多种功能,且每种操作只需一种操作符。

(5)语言简洁、易学易用:核心功能只有 9 个动词,语法简单, 接近英语。

SQL 功能动词
数据库查询SELECT
数据定义CREATE,DROP ,ALTER
数据操纵INSERT,UPDATE,DELETE
数据控制GRANT,REVOKE

3.2 SQL 基本语法

3.2.1 数据类型

SQL 语言支持的主要数据类型有:

数据类型解释
CHAR(n)固定长度为 n 的字符串型
VARCHAR (n)最大长度为 n 的变长字符串型
INT4 字节的整型
NUMERIC(n,s)数值型,最大精度 n,s 为小数位数
DATE日期型,包括年( 4 位)、月、日
Money货币型( 8 字节,精确到货币单位的千分之十)

3.2.2 函数

  • 数字函数:ABS(X), SQRT(X), RAND(X), LOG(X), …
  • 字符函数:LENGTH(X), LOWER(X), UPPER(X), SUBSTRING(expression, start, length)…
  • 分组函数:COUNT(*), MAX(X), MIN(X), AVG(X), SUM(X)

3.2.3 运算符

  • 句法操作符:&
  • 数值操作符:+,-,*,/, …
  • 逻辑操作符:=,>,<,≤,≥,≠,IN,ANY,ALL, …
  • 查询表达式操作符: UNION,…

3.2.4 SQL 语句格式符号

  • 大括号 { }:大括号中的内容为必选参数,其中可有多个选项,各选项之间用竖线分隔,用户必须选择其中的一项。
  • 方括号 [ ]:方括号中的内容为可选项,用户根据需要选用。
  • 竖线 | :表示参数之间‘或’的关系。
  • 省略号 “…”:表示重复前面的语法单元。

3.3 数据定义

DDL,Data Definition Language

关系数据库系统支持三级模式结构,其模式,外模式,内模式中的基本对象有模式、表、视图和索引,所以 SQL 的数据定义功能包括模式定义、表定义、视图和索引的定义

参考资料

[1] 东南大学 - 徐立臻 - 数据库原理及应用(:seedling: 视频学习入口

[2] 小牛肉的 wiki(:seedling: 链接地址