第1章 绪论
1.1 基本概念
概念1:什么是数据(Data)
- 种类:数字、文本、图形、图像、音频、视频
- 定义:数据(Data)是描述事物的符号记录,是指利 用物理符号记录下来的、可以鉴别的信息。
- 特点:数据与其语义(含义)不可分割
概念2:什么是数据库
- 数据库(Database,简称DB):长期储存在计算机内、有组织的、可共享的、大量数据的集合。
概念3:什么是数据库管理系统
- DBMS(Database Management System):是位于用户与操作系统之间的一层数据管理软件。
概念4:什么是数据库系统(DBS)
1.2 数据模型
1.2.1 数据模型的概念
数据模型是现实世界数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架,是数据库系统的核心。
1.2.2 数据模型的分类
数据模型按不同的应用层次分成三种类型: 概念数据模型、逻辑数据模型、物理数据模型
**概念数据模型:**概念层是数据抽象级别的最高层,是从普通用户的视 角来描述数据的,使用简单的符号来描述信息,没有严格的规定,只要能清晰反映现实世界的信息就行。
**逻辑数据模型:**逻辑层是数据抽象级别的中间层,既要面向用户,又要面向系统; 是对念数据模型进一步具体化并不涉及这些数据的具体物理实现;常见的逻辑层数据模型:关系模型、层次模型、网状模型、面向对象模型
物理 数据****模型:
- 是数据库最底层的抽象;
- 是逻辑模型的物理实现;
- 描述数据在存储介质上的组织结构;
- 设计目标是提高数据库性能和有效利用存储空间。
1.2.3 数据库系统结构
数据库的三级模式二级映像结构
概念1:什么是模式
模式也称为概念模式或逻辑模式,是数据库中全体数据的逻辑结构和特征的描述
概念2:什么是外模式
是数据库用户能够使用的局部数据的逻辑结构和特征的描述。
概念3:什么是内模式
内模式 也称存储模式是数据的物理结构和存储方式的描述
概念4:外模式/模式映像
定义了外模式与模式之间的对应关系 ,通常包含在各自外模式的描述中。 保证数据的逻辑独立性
概念5:模式/内模式映像
定义了数据全局逻辑结构与存储结构之间的对应关系,通常包含在模式的描述中。 保证数据的物理独立性
第二章 关系数据库
2.1 关系数据库结构及形式化定义
2.1.1 关系
- 列也称为数据项或字段或属性(Attribute)。
- 列的个数称为关系的元或目或度。
- 列取值范围称为值域,简称域(Domain)
- 行也称为元组(Tuple)或记录(Record)。
- 行中的一个属性值称为分量(Component)。
- 行的个数称为关系的基数(Cardinality)。
码(Key):属性(或属性组)的值都能用来唯一标识该关系的元组,则称这些属性(或属性组)为该关系的码或键。
超码(Super Key):在码中去除某个属性,它仍然是这个关系的码
候选码(Candidate Key):在码中不能从中移去任何一个属性,否则它就不再是这个关系的码或键。
主码(Primary Key):在若干个候选码中指定一个唯一标识关系的元组
主属性(Primary Attribute):包含在任何一个候选码中的属性称为主属性或码属性,反之,为非主属性(Nonprimary Attribute):
外码或外键(Foreign Key):某个属性(或属性组)不是这个关系的主码或候选码,而是另一个关系的主码
笛卡尔积:
给定一组域 D1 , D2 , ..., Dn ,这些域中可以有相同的域。则 D1 , D2 , ..., Dn 的笛卡尔积为:
举例:
D1 = {张三,李四} D2={18,20} D3={男,女}
D1× D2 × D3 ={
(张三, 18,男), (张三, 18,女), (张三, 20,男), (张三, 20,女),
(李四, 18,男), (李四, 18,女), (李四, 20,男), (李四, 20,女)}
2.2 关系完整性约束
2.2.1 实体完整性
基本关系 R 的主属性不能取空值(NULL)。
例如:学生实体中学号必须不能为空
2.2.2 参照完整性
- 定义外码和主码之间的引用规则
- 要么外码等于被参照关系中某个元组的主码值
- 要么为空值(NULL)
2.2.3 用户自定义完整性
是指针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。
2.3 关系代数
2.3.1 传统的集合运算
并运算
交运算
差运算
笛卡尔积运算
2.3.2 专门的关系运算
选择运算
选择(Select):选择满足给定条件的元组(行)
投影运算
投影(Projection):选择满足给定条件的属性(列)
连接运算
第三章 关系数据库标准语言sql
3.1 SQL概述
3.1.1 SQL功能
结构化查询语言(Structured Query Language,SQL)是关系数据库的标准语言,是通用的、功能极强的关系数据库语言。
3.1.2 SQL命名规范
3.2 单表选列
3.3 单表选行
SQL、单表查询:选择行
比较查询: =,>,<,>=,<=,!=,<>,
组合条件查询:AND,OR,NOT
范围查询:BETWEEN..AND.. NOT BETWEEN...AND..
集合条件查询:...IN(...),...NOT IN(...)
空值条件查询:IS NULL,... IS NOT NULL
模糊查询:...LIKE...,...NOT LIKE...
排序:ORDER BY 列 ASC;ORDER BY 列 DESC;
分页查询: LIMIT m ; LIMIT m,n
3.4 单表统计
3.4.1 聚集函数
3.4.2 分组统计(Group By)
GROUP BY子句 :可用于细化聚集函数的作用对象
- 按指定的一列或多列的值分组,值相等的为一组,"相等"是指所有涉及的列的组合值相等。
- 在没有对查询结果分组时,聚集函数将作用于整个查询结果。对查询结果分组后,聚集函数将分别作用于每个组。
3.4.3 筛选分组(having)
Having子句:当查询满足某些条件的分组数据时,无法用 Where 子句书写条件,因为此时的条件是需要先进行分组计算才能进行判断的,这种条件需要使用 Having 子句来完成。
3.4.4 小结
- 聚合函数:获取统计信息(总数,求和、平均、最大、最小)
- GROUP BY:获取分组,配合聚合函数统计分组信息
- Having子句: 筛选分组
- 提醒: 统计信息查询中不能出现统计内的个体信息查询。
3.5 多表查询
3.5.1 集合查询
3.5.2 连接查询
3.5.3 嵌套查询
一个查询使用另外一个的查询结果做条件,这种查询叫嵌套查询(子查询)。
定义:将一个查询块放在另一个查询块的WHERE 子句或 HAVING 短语的条件中的查询。
EXISTS:
- 判断检查子查询是否存在满足要求的行;
- 是相关子查询,执行顺序先外后内;
- exists适合内小外大的查询。
IN :
- 判断给定的值是否在子查询的结果集中;
- 一般是不相关子查询,执行顺序先内后外;
- in适合内大外小的查询。
一般EXISTS比IN 快,具体情况具体分析。
3.6 更新操作和库表视图定义
3.6.1 数据的插入
3.6.2 数据的修改
3.6.3 数据的删除
3.6.4 数据库的定义
3.6.5 MySQL数据库数据类型
3.6.6 表的修改
3.6.7 视图的定义
视图定义:视图是虚表,是从基本表(或视图)导出的表,只存放视图的定义,不存放视图对应的数据,基表中的数据发生变化,从视图中查询出的数据也随之改变。
视图的创建:
WITH CHECK OPTION:强制针对视图执行的所有数据修改语句都必须符合在子查询中设置的条件。
第六章 关系数据理论
第一范式(1NF)
定义:一个关系模式R的所有属性都是不可分的基本
第二范式(2NF)
定义:如关系模式R∈1NF,且每个非主属性完全函数依
赖于候选码,则称R属于第二范式,R∈2NF。
第三范式(3NF)
如果关系模式R∈2NF,且R的任一非主属性都不传递,函数依赖于任何候选码,则称R属于第三范式,R∈3NF。