第1章.绪论
目录
1.1. 数据库系统概述
1.1.1.基本概念
定义:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。
简写 | 含义 |
---|---|
DBS | 数据库系统(包括了数据库管理员DBA) |
DBMS | 数据库管理系统(包括DDL、DML、) |
DB | 数据库 |
注释:定义范围递减,及DBS>DBMS>DB
1.1.2.产生和发展
三个阶段:人工管理阶段、文件系统阶段、数据库系统阶段
数据库系统特点:
(1)数据结构化
(2)数据共享性高、冗余度低、易扩充
(3)数据独立性高
(4)数据由DBMS统一管理和控制
1.2.概念模型
1.2.1.三种模型
-
概念模型
又称信息模型,由数据结构、数据操作、完整性约束三部分组成,要求比较真实地模拟现实世界、容易理解、便于在计算机实现
-
逻辑模型
包括层次模型(族谱)、网状模型(步骤图)、关系模型(二维表)、面向对象模型、对象关系模型等
按计算机系统的观点对数据建模,主要用于DBMS的实现
-
物理模型
对数据最底层的抽象(如在磁盘上的存储和获取方法),是面向计算机系统的
1.2.2.概念模型
基本概念:
名词 | 含义 |
---|---|
实体(entity) | 客观存在,可相互区别的事物(eg:学生) |
属性(attribute) | 实体具有的某一特性(eg:年龄),属性可组合成实体 |
码(key),又称键 | 唯一标识实体的属性集(eg:学号) |
域(domain) | 属性取值范围(eg:性别取值为男和女) |
实体型 | 用实体名及其属性名集合来抽象和刻画同类实体(eg:学生(学号,姓名…)) |
实体集 | 同一类型实体的集合(eg:全体学生) |
联系 | 实体内部的联系指属性间的联系,实体之间的联系指实体集间的联系 |
联系:一对一(eg:一个班级对应一个班长)、一对多(一个班级有多个学生)、多对多(eg:一门课多位学生 选修,一位学生可以选修多门课)
E-R图:
类型 | 表示方法 |
---|---|
实体型 | 矩形 |
属性 | 椭圆形 |
联系 | 菱形(同时标注联系的类型,如1:1,1:n,m:n) |
例如:
1.2.3.关系模型
数据库用到的主要逻辑模型为关系模型
名词 | 含义 |
---|---|
关系 | 一个关系对应一张表 |
元组(tuple) | 表中一行对应一个元组 |
属性(attribute) | 一列对应一个属性 |
码(key),又称键 | 可以唯一确定一个元组的属性组 |
域(domain) | 属性取值范围 |
分量 | 元组中的一个属性值 |
关系模式 | 对关系的描述(eg:关系名(属性1,属性2…)) |
注释:关系模型中的名称和概念模型中的名称有所关系
1.3.数据库系统结构
-
在数据模型中,有型(type)和值(value)的概念
-
模式是对数据库全体数据的逻辑结构和特征的描述,具体体现在实例中
-
模式是相对稳定的,实例是相对变动的
1.3.1三级模式结构
外模式:又称子模式,用户操作,应用程序使用的(通过数据定义语言DDL严格定义)
模式:又称逻辑模式,是所有用户的公共视图(表在数据库是怎么存的)
内模式:物理存储
注意:
- 外模式是模式的子集,一个数据库可以有多个外模式
- 统一外模式也可被同一用户多个应用系统使用,但一个应用程序只能用一个外模式
- 外模式是保证数据库安全的一个有力措施,每个用户只能看见和访问对应外模式的数据
1.3.2.两级映像与数据独立性
-
外模式/模式映像:不唯一,保证了数据的逻辑独立性
模式改变 => 数据库管理员改变外模式/模式映像 => 外模式改变 => 应用程序依据外模式编写,应用程 序不必修改 => 数据的逻辑独立性
-
模式/内模式映像:唯一,保证了数据的物理独立性
数据库存储结构改变 => 数据库管理员改变模式/内模式映像 => 模式不变 => 应用程序不变 => 数据的物理独立性
第2章.关系型数据库
2.1.关系
-
域
- 一组具有相同数据类型的值的集合
-
笛卡尔积
-
笛卡尔积是域上的一种集合运算
-
笛卡尔积不是都有实际意义的
-
-
关系
-
关系的属性个数,又叫目或度
-
关系是笛卡尔积的有限子集
-
-
码
- 候选码:只要某一属性组能唯一标识元组,则该属性组为候选码
- 全码:所有属性组都是候选码,则成为全码
- 主码:从候选码中选定的一个
- 主属性:候选码的属性称为主属性
-
三类关系
- 基本关系(基本表):实际存在
- 查询表:查询结果对应的表
- 视图表:虚拟表,由基本表或其他试图表导出
-
基本关系性质
- 列是同质的
- 不同列可以出自同一个域
- 列的顺序可以任意调换
- 任意两个元组的候选码不能取相同值
- 行的顺序可以任意调换
- 分量必须取原子值(每个分量不可再分),这是规范条件最基本的一条
-
关系模式
关系模式是对关系的描述,关系模式是型,关系是值。
可以表示为:R(U,D,DOM,F)
符号 含义 R 关系名 U 组成该关系的属性名集合 D 属性组U中属性所来自的域 DOM 属性向域的映像集合 F 属性间的数据依赖关系的集合
2.2.关系操作
2.2.1.基本关系操作
- 5种基本操作:
选择、投影、并、差、笛卡尔积
2.2.2.关系数据语言的分类
2.3.关系代数
关系代数是一种抽象的查询语言,对关系的运算来表达查询
-
关系代数的运算按运算符的不同可分为传统的集合运算符和专门的关系运算符两类
-
集合运算符从行的角度进行,专门的关系运算符行和列都涉及
-
关系代数运算符
-
其中。
并、差、笛卡尔积、选择、投影
为基本运算,其他5种运算都可以用基本运算表示
2.3.1传统的集合运算
2.3.2.专门的关系运算符
-
连接
-
象集
2.3.2.1.选择
2.3.2.2.投影
简单来说,选择是过滤掉某些不符合条件的行,投影是过滤掉某些不符合条件的列
虽然在某些情况下(投影保留选择的条件),选择和投影可以交换顺序
但是,如果投影先执行,可能会过滤掉投影的过滤条件,所以投影一般是在后于选择执行
eg:如果投影出以下Student表中的学号和姓名,再选择大于18岁的学生,就没有任意意义(因为年龄已经通过投影过滤掉了)
-
常用的一张经典表
2.3.2.3.连接
-
连接是从广义笛卡尔积中选取元组
-
A和B:分别为在R和S上度数相等且可比的属性组
-
θ:比较运算符
-
等值连接
θ为’='时,选取某些属性值相同的元组
-
自然连接
- 自然连接是一种特殊的等值连接,两个关系中进行比较的分量必须是相同属性组,在结果中把重复的属性列去掉。
- 即属性名和属性值都相同
- 自然连接不用写连接符下面的比较表达式(A=B),因为在两个不同表中属性名相同
- 其他两种连接只是对行运算,自然连接还需要取消重复列,所以自然连接是同时对行和列进行运算。
-
一般连接
θ不为’='时,选取某些属性值相同的元组
-
示例
©一般连接:选出符合条件的笛卡尔积
(d)等值连接:R.B中的b4,S表中没有对应项;S.B中的b5,r表中没有对应项,所以过滤掉含有b4和b5的笛卡尔积即可
(e)自然连接:在等值连接的基础上取消重复列即可
*注释:这里书上的例子不是很恰当,在(d)等值连接中两个属性组都为B,这使连接看起来更偏像等值连接,其实,我们把R.B看作属性X,S.B看作属性Y,就要好很多。
- 悬浮元组
定义:在自然连接时,由于某些元组不存在公共属性值相同,而被舍去的元组。(例如上图(e)自然连接中关系R的第四个元组,和关系S中的第五个元组) - 外连接
- 如果把悬浮元组也保存在结果关系中,不存在公共属性值填空值(null),这种连接叫外连接。
- 如果只保留连接符合左边关系的悬浮元组叫左外连接
- 如果只保留连接符合右边关系的悬浮元组叫右外连接
2.3.2.4.除
除运算的定义比较难以理解,这里我们用例题的方式来了解除运算
【例1】
在R中,a1的象集包含了S在(B、C)属性组上的投影,所以:R÷S={a1}
【例2】
先计算投影,再除运算:
*关系演算
第3章.SQL
3.1.SQL概述
3.1.1.SQL特点
SQL,结构化查询语言
- 综合统一
- 高度过程化
- 面向集合的操作方式
- 以同一种语法结构提供多种使用方式
- 语法简单易学
功能 | 动词 |
---|---|
查询 | SELECT |
定义 | CREATE, DROP, ALTER |
操纵 | INSERT, UPDATE, DELETE |
控制 | GRANT, REVOKE |
3.1.2.SQL基本概念
-
基本表
- 本身独立存在的表
- 一个关系对应一个表
- 一个或多个基本表对应一个存储文件
- 一个表可以带若干索引
-
存储文件
- 逻辑结构组成了关系数据库的的内模式
- 物理结构是任意的,对用户透明隐蔽
-
视图
- 从一个或几个基本表导出来的表
- 数据库只存放视图定义而不存放视图对应的数据
- 视图是一个虚拟表
- 用户可以在视图上在定义视图(套娃)
3.2.学生-课程数据库
在以下小结的操作,会根据学生-课程数据库来学习
3.2.数据定义
3.2.1.模式的定义和删除
3.2.2.基本表的定义和删除
3.2.3.索引的建立和删除
3.2.4.数据字典
3.3.数据查询
3.3.1.单表查询
3.3.2.连接查询
3.3.3嵌套查询
3.3.4.集合查询
3.3.5.基于派生表查询
3.3.6.select语句的一般形式
3.4.数据更新
3.4.1.插入数据
3.4.2.修改数据
3.4.3.删除数据
3.4.4.空值处理
3.4.5.视图
- 视图可以进行查询和删除,但是更新(增、删、改)有一定限制
3.4.5.1.定义视图
3.4.5.1.1建立视图
- 组成视图属性的属性列名:全部省略或全部指定
- 子查询不允许含有order by 子句和distinct短语
【例1】建立信息系学生视图
create view IS_Student /* 只是定义,不执行select语句 */
as
select Sno,Sname,Sage
from Student
where Sdept='IS'
with check option; /* 在修改和插入时仍需保证该视图只有信息系的学生(即后续操作中数据管理系统会自动加上 Sdept='IS'的条件) */
- 若一个视图是从单个基本表中导出,并且只是去掉基本表的某些行或某些列,但保留了主码,则称这类视图为行列子集视图(例如上例的IS_Student)
- 视图也可以建立在视图上(在上例中,将from后面的Student改为包含相应属性的视图即可)
还可以设置虚拟列,带虚拟列的视图称为带表达式的视图
【例2】定义一个反应学生出生年份的视图
create view BT_S(Sno,Sname,Sbirth)
as
select Sno,Sname,2014-Sage
from Student
利用聚集函数和group by 子句查询来定义的视图称为分组视图
3.4.5.1.2.删除视图
语句格式:
drop view <视图名> [cascade]
- 该语句从数据字典中删除指定视图的定义
- 该视图还导出了其他视图(即在该视图上建立了其他视图),使用cascade级联删除语句,把导出的所有视图一起删除。
- 删除基本表时,由该基本表导出的所有视图定义都必须显式地用drop view语句删除
3.4.5.2.查询视图
3.4.5.3.更新视图
3.4.5.4.视图的作用
第5章.数据库完整性
数据库完整性是指数据的正确性(符合现实世界语义)和相容性(同一对象在不同关系表中的数据是符合逻辑的)
为维护数据库的完整性,数据库管理系统必须实现的功能:
-
提供定义完整性约束条件的机制
数据库数据必须满足的语义约束条件
-
提供完整性检查的方法
检查数据是否满足完整性约束条件的机制
-
进行违约处理
违背完整性约束采取的一定的动作,如拒绝执行、级联、进行违约处理
*注释:可有理解成有法可依、有法必依、违法必究
5.1.实体完整性
定义:
- 关系模型的实体完整性:设置主码,让每条记录相互区分
- 主码是单属性(主码是单属性)构成的有两种说明方法
- 定义为列级约束条件
- 定义为表级约束条件
- 主码是多属性(主码由多个属性组合成)构成的有一种说明方法
- 定义为表级约束条件
5.2.参照完整性
实体完整性
和参照完整性
是关系模型必须满足的完整性约束条件,被称为关系的两个不变性
5.3.用户定义完整性4
第6章.关系数据理论
第7章.数据库设计
第8章.数据库编程
考点汇总
说明
- 下面的考点是通过我们老师期末勾的重点以及习题进行汇总的考点
- 由于我们老师用的SQL Server教学,所以考点会偏向于SQL Server(只有一小部分)
考点
-
父亲和子女属于 1:n 关系。
-
修改字段类型:*ALTER TABLE <*表名> alter <字段名> <数据类型>
-
视图完整性对应 primary key
-
删除属性列,用动词 drop,删除行(元组)用动词delete
-
仅有一个表的行列子集构成的视图是可以完全更新的
-
在视图上不能定义新的表
-
EXIST可以用于测试一个集合是否为非空集合
-
读脏数据是指一个事物读了另一个事物未提交的数据
-
数据库必须提供的数据控制功能:安全性、完整性、并发控制
-
当采用Windows认证方式登录数据库服务器时,SQL Server客户端软件会向操作系统请求一个信任连接
-
SQL Server的物理存储主要包括:主数据文件、次数据文件、事务日志文件
-
E-R图是在数据库设计中用来表示概率模型的一种常用方法。
-
用于字符串模糊匹配的关键字Like
-
模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
-
关系表A和B的笛卡尔积的属性个数,为关系表A和B属性个数之和,元组个数为关系表A和B元组个数的乘积
-
Transact-SQL对标准SQL的扩展主要表现为加入了程序控制结构和变量
-
在Where子句中出现频率较高的列 尽量创建索引
-
SQL Server触发器主要针对INSERT、UPDATE、DELETE语句创建
-
UNIQUE唯一索引的作用是:保证各行在该索引上的值都不得重复
-
用于将事务处理写到数据库的命令是:commit
-
.若关系R(X,Y,Z),函数依赖集FD={YZ,XZY},则关系R是3NF
-
一个关系数据库文件中的各条记录前后顺序可以任意颠倒,不影响库中的数据关系
-
视图一经定义就可以和基本表一样被查询、删除,但不能更新更新
-
负责数据库中查询操作的数据库语言是数据操纵语言
-
某关系表有:员工(部门编号,部门名称,员工编号,姓名,性别,年龄),则其主码为:部门编号,员工编号
-
数据库系统的核心软件是:数据库管理系统
-
用树形结构表示实体之间联系的模型是:层次模型
-
“商品”与“顾客”两个实体集之间联系一般是:多对多
-
数据库的数据项之间和记录之间都存在联系
-
负责数据的模式定义与数据的物理存取构建的是:数据定义语言
-
数据库系统减少了数据冗余
-
数据库系统中,数据的物理结构必须与逻辑结构不一致
-
数据库是一个结构化的数据集合
-
数据库管理系统是位于用户与操作系统之间的一层数据管理软件。
-
层次模式不能直接表示m:n联系
-
关系模式的任意属性不可再分
-
关系运算中花费时间可能最长的是笛卡尔积
-
在关系模型中,一个候选码可由一个属性或多个其值能唯一标识元组的属性组成
-
使用视图不能加快查询语句的执行速度
-
判断是否为空值(null)用关键字is,而不是’=’
-
在SQL中,修改数据表结构应使用的命令是ALTER
-
数据库是一个结构化的数据集合
-
“age Between A and B”,这个表达式等同于age>=A and age<=B
-
SQL的聚集函数COUNT、SUM、AVG、MAX、MIN不允许出现在查询语句的**WHERE**子句之中
-
如果要在一张管理职工工资的表中限制工资的输入范围,应使用**check**约束
-
内模式,也称存储模式,是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方法。
-
一个关键字可由一个或多个其值能惟一标识该关系模式中任何元组的属性组成
-
数据库概念设计的E-R方法中,用属性描述实体的特征,属性在E-R图中,使用**椭圆形**表示
-
DROP语句的功能是删除数据库或数据库对象
-
SQL Server 2008系统中的所有系统级信息存储于**数据**库
-
如果想修改数据库中某学生的成绩,采用UPDATE命令。
-
当向某表插入数据时,性别列没有指定数据,但自动插入了数据“男”,则此表的性别列设置了DEFAULT(’男’)约束。
-
在创建学生表时,指定性别列取值范围是“男”或者“女”,这个约束叫做**CHECK**约束
-
在数据库中存储的是数据以及数据之间的关系
-
参照完整性对应foreign key
-
视图机制提高了数据库系统的安全性
-
事务的一致性是指,一个事务内部的操作及使用的数据对并发的其他事务是隔离的
-
SELECT语句中,用于实现选择运算的句子是WHERE
-
自连接可以支持同一个表的不同字段进行联接
-
DBS包括DB和DBMS
-
专门的关系运算不包括交运算/u>
-
“日志”文件用于保存对数据库的更新操作
-
SELECT中的FROM字句用于指定要从中检索数据的表名或视图名
-
数据库运行、维护阶段中的运行是指数据库投入使用
-
从E-R模型向关系模型转换时,一个实体型转换为一个关系模式
-
外码一般是每个表格都有的元素,能够通过外码识别不同元组。
-
数据库的发展历程:人工管理、文件管理、数据库管理
-
DBMS > DBA > DBS