数据库原理王珊知识点整理.docx
- 文档编号:28595928
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:20
- 大小:24.47KB
数据库原理王珊知识点整理.docx
《数据库原理王珊知识点整理.docx》由会员分享,可在线阅读,更多相关《数据库原理王珊知识点整理.docx(20页珍藏版)》请在冰豆网上搜索。
数据库原理王珊知识点整理
1.1.1四个基本概念
数据(Data)
是数据库中存储的基本对象,数据库中的数据具有永久储存、有组织和可共享三个特点。
数据(Data)的定义:
描述事物的符号记录
数据库(Database,简称DB)
长期储存在计算机内、有组织的、可共享的大量数据的集合、
基本特征
数据按一定的数据模型组织、描述和储存、可为各种用户共享、冗余度较小
数据独立性较高、易扩展、
数据库管理系统(DBMS)
数据定义功能
提供数据定义语言(DDL)、定义数据库中的数据对象
数据组织、存储和管理
分类组织、存储和管理各种数据、确定组织数据的文件结构和存取方式
实现数据之间的联系、提供多种存取方法提高存取效率
数据操纵功能
提供数据操纵语言(DML)、实现对数据库的基本操作(查询、插入、删除和修改)
数据库的事务管理和运行管理
数据库在建立、运行和维护时由DBMS统一管理和控制、
保证数据的安全性、完整性、多用户对数据的并发使用、发生故障后的系统恢复
数据库的建立和维护功能(实用程序)
数据库初始数据装载转换、数据库转储、介质故障恢复、数据库的重组织、
性能监视分析等
其它功能
DBMS与网络中其它软件系统的通信、两个DBMS系统的数据转换、
异构数据库之间的互访和互操作、
数据库系统(DBS)
数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(DBA)组成的
储存、管理、处理和维护数据的系统。
1.1.2数据管理技术的产生和发展
数据管理
定义:
对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题
数据管理技术的发展过程
人工管理阶段(20世纪40年代中--50年代中)
文件系统阶段(20世纪50年代末--60年代中)
数据库系统阶段(20世纪60年代末--现在)
人工管理特点
数据的管理者:
用户(程序员),数据不保存
数据面向的对象:
某一应用程序
数据的共享程度:
无共享、冗余度极大
数据的独立性:
不独立,完全依赖于程序
数据的结构化:
无结构
数据控制能力:
应用程序自己控制
文件系统特点
数据的管理者:
文件系统,数据可长期保存
数据面向的对象:
某一应用程序
数据的共享程度:
共享性差、冗余度大
数据的结构化:
记录内有结构,整体无结构
数据的独立性:
独立性差,数据的逻辑结构改变必须修改应用程序
数据控制能力:
应用程序自己控制
1.1.3数据库系统的特点
数据结构化
整体数据的结构化是数据库的主要特征之一
整体结构化
不再仅仅针对某一个应用,而是面向全组织
不仅数据内部结构化,整体是结构化的,数据之间具有联系
数据库中实现的是数据的真正结构化
数据的结构用数据模型描述,无需程序定义和解释、数据可以变长、
数据的最小存取单位是数据项、
数据的共享性高,冗余度低,易扩充、数据独立性高
数据共享的好处是减少数据冗余,节约存储空间、避免数据之间的不相容性与不一致性、
使系统易于扩充、
数据独立性高
物理独立性
指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。
当数据的物理存储改变了,应用程序不用改变。
逻辑独立性
指用户的应用程序与数据库的逻辑结构是相互独立的。
数据的逻辑结构改变了,用户程序也可以不变。
数据独立性是由DBMS的二级映像功能来保证的
数据由DBMS统一管理和控制
DBMS提供的数据控制功能
(1)数据的安全性(Security)保护
保护数据,以防止不合法的使用造成的数据的泄密和破坏。
(2)数据的完整性(Integrity)检查
将数据控制在有效的范围内,或保证数据之间满足一定的关系。
(3)并发(Concurrency)控制
对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。
(4)数据库恢复(Recovery)
将数据库从错误状态恢复到某一已知的正确状态。
1.2.1两大类数据模型:
概念模型、逻辑模型和物理模型
数据模型应满足三方面要求:
能比较真实地模拟现实世界、容易为人所理解、便于在计算机上实现。
概念模型也称信息模型
它是按用户的观点来对数据和信息建模,用于数据库设计。
逻辑模型主要包括[网状模型、层次模型、(已淘汰)]
关系模型和面向对象模型等,按计算机系统的观点对数据建模,用于DBMS实现。
物理模型是对数据最底层的抽象
描述数据在系统内部的表示方式、存取方法,在磁盘磁带上的存储方式和存取方法。
1.2.2数据模型的组成要素:
数据结构、数据操作、数据的完整性约束条件
数据结构:
描述数据库的组成对象,以及对象之间的联系是对系统静态特性的描述。
数据操作:
对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则
数据操作的类型:
查询、更新(包括插入、删除、修改)
数据的完整性约束条件:
是一组完整性规则的集合包括参照完整性,实体完整性、数据和用户自定义完整性。
数据模型应该反映和规定其必须遵守的基本的和通用的完整性约束条件。
例如在关系模型中,任何关系必须满足实体完整性和参照完整性两个不变性条件。
1.2.7关系模型
关系(Relation):
一个关系对应通常说的一张表。
元组(Tuple):
表中的一行即为一个元组
属性(Attribute):
表中的一列即为一个属性,给每一个属性起一个名称即属性名
主码(Key):
表中的某个属性组,它可以唯一确定一个元组。
域(Domain):
属性的取值范围。
分量:
元组中的一个属性值。
关系模式:
对关系的描述,一般表示为关系名(属性1,属性2,…,属性n)
数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合。
关系数据模型的优缺点
优点:
建立在严格的数学概念的基础上、关系模型概念单一,实体与实体之间的联系都用关系表示、关系模型的存取路径对用户透明,具有更高的数据独立性更好的安全保密性、简化程序员的工作和数据库开发建立的工作。
缺点:
存取路径对用户透明导致查询效率往往不如非关系数据模型。
1.3.1数据库系统模式的概念
型(Type):
对某一类数据的结构和属性的说明
值(Value):
是型的一个具体赋值
模式(Schema)
数据库逻辑结构和特征的描述、型的描述、反映数据的结构及其联系、模式相对稳定、
实例(Instance)
模式的一个具体值、反映数据库某一时刻的状态、同一个模式可以有很多实例、
实例随数据库中的数据的更新而变动、
1.3.2数据库系统的三级模式结构
外模式[ExternalSchema](也称子模式或用户模式),
数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
一个数据库可以有多个外模式,每个用户只能看见和访问所对应的外模式中的数据。
模式[Schema](也称逻辑模式)
数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,一个数据库只有一个模式。
内模式[InternalSchema](也称存储模式)
数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
一个数据库只有一个内模式。
1.3.3数据库的二级映像功能与数据独立性
模式:
描述的是数据的全局逻辑结构
外模式:
描述的是数据的局部逻辑结构
外模式/模式映像:
保证数据的逻辑独立性
当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式/内模式映象:
保证数据的物理独立性
定义了数据全局逻辑结构与存储结构之间的对应关系。
当数据库的存储结构改变时,数据库管理员修改模式/内模式映象,使模式保持不变。
应用程序不受影响。
保证了数据与程序的物理独立性,简称数据的物理独立性。
这两层映像保证了数据库系统中的数据具有较高的逻辑独立性和物理独立性。
1.4数据库系统的组成
数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(DBA)
数据库管理员(DBA)职责:
1.决定数据库中的信息内容和结构2.决定数据库的存储结构和存取策略
3.定义数据的安全性要求和完整性约束条件4.监控数据库的使用和运行
5.数据库的改进和重组
2.1.1关系
域(Domain):
是一组具有相同数据类型的值的集合
候选码(Candidatekey)
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
全码(All-key)
最极端的情况:
关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)
主码(Primarykey)
若一个关系有多个候选码,则选定其中一个为主码(Primarykey)
主属性
候选码的诸属性称为主属性(Primeattribute)
不包含在任何侯选码中的属性称为非主属性(Non-Primeattribute)
或非码属性(Non-keyattribute)
2.2.1基本关系操作
常用的关系操作
查询:
选择、投影、连接、除、并、交、差
数据更新:
插入、删除、修改
!
[查询的表达能力是其中最主要的部分]选择、投影、并、差、笛卡尔积是5种基本操作
关系操作的特点
集合操作方式:
操作的对象和结果都是集合,一次一集合的方式
2.3.1关系的三类完整性约束
实体完整性和参照完整性:
称为关系的两个不变性,是关系模型必须满足的完整性约束条件,由关系系统自动支持
用户定义的完整性:
应用领域需要遵循的约束条件,体现了具体领域中的语义约束
2.3.2实体完整性:
主码不为空
若属性A是基本关系R的主属性,则属性A不能取空值
2.3.3参照完整性:
外码要么为空要么为被参照表的主码值
2.3.4用户定义的完整性
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,不需要应用程序承担这一功能
2.4.2专门的关系运算:
选择、投影、连接、除
象集Zx:
本质是一次选择运算和一次投影运算
给定一个关系R(X,Z),X和Z为属性组。
当t[X]=x时,x在R中的象集(ImagesSet)为:
Zx={t[Z]|t∈R,t[X]=x}
它表示R中属性组X上值为x的诸元组在Z上分量的集合。
悬浮元组
不存在公共属性上相等的元组
外连接
如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTERJOIN)。
左外连接
如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFTOUTERJOIN)
右外连接
如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHTOUTERJOIN)。
除:
查找在被除数R中能够完全覆盖除数S的部分[的剩余值]
设关系R÷S的结果为关系T,则T包含所有[在R但不在S]中的属性及其值,
且T的元组与S的元组的所有组合都在R中。
3.1.2SQL的特点
1.综合统一
集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。
2.高度非过程化
SQL只要提出“做什么”,无须指明“怎么做”。
存取路径的选择以及SQL的操作过程由系统自动完成。
3.面向集合的操作方式
操作对象、查找结果、一次插入、删除、更新操作的对象都可以是元组的集合。
4.以同一种语法结构提供多种使用方式
SQL是独立的语言,又是嵌入式语言。
5.语言简洁,易学易用
3.3.1模式的定义与删除
CREATESCHEMA<模式名>AUTHORIZATION<用户名>
[<表定义子句>|<视图定义子句>|<授权定义子句>];
在CREATESCHEMA中可以接受CREATETABLE,CREATEVIEW和GRANT子句。
定义模式实际上定义了一个命名空间
在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。
DROPSCHEMA<模式名>
CASCADE(级联)
删除模式的同时把该模式中所有的数据库对象全部删除
RESTRICT(限制)
如果该模式中定义了下属的数据库对象(表、视图等),则拒绝该删除语句的执行。
当该模式中没有任何下属的对象时才能执行。
3.3.2基本表的定义、删除与修改
CREATETABLE<表名>(<列名><数据类型>[<列级完整性约束条件>]
[,<列名><数据类型>[<列级完整性约束条件>]]……);
ALTERTABLE<表名>
[ADD<新列名><数据类型>[完整性约束]]
[DROP<完整性约束名>]
[ALTERCOLUMN<列名><数据类型>];
DROPTABLE<表名>[RESTRICT|CASCADE];
RESTRICT:
删除表是有限制的。
欲删除的基本表不能被其他表的约束所引用
如果存在依赖该表的对象,则此表不能被删除
CASCADE:
删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除
3.3.3索引的建立与删除
CREATE[UNIQUE][CLUSTER]INDEX<索引名>
ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);
采用B+树或HASH索引由RDBMS决定,索引是关系数据库内部实现技术,属于内模式
CREATEINDEX语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引、
PRIMARYKEY、UNIQUE[每一个索引值对应唯一数据记录]、CLUSTER[一表一聚簇]、
3.4数据查询
SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…
FROM<表名或视图名>[,<表名或视图名>]…
[WHERE<条件表达式>]
[GROUPBY<列名1>[HAVING<条件表达式>]]
[ORDERBY<列名2>[ASC|DESC]];
消除取值重复的行:
如果没有指定DISTINCT关键词,则缺省为ALL
字符匹配:
[NOT]LIKE’<匹配串>’[ESCAPE’<换码字符>’],匹配串为固定字符串。
%[任意长度字符],_[单个任意字符],匹配串为含通配符的字符串。
ESCAPE'\'表示“\”为换码字符,使用换码字符将通配符转义为普通字符。
空值查询:
ISNULL或ISNOTNULL!
[“IS”不能用“=”代替]
ORDERBY子句
可以按一个或多个属性列排序,升序:
ASC;降序:
DESC;[缺省值为升序]
当排序列含空值时
ASC:
排序列为空值的元组最后显示;DESC:
排序列为空值的元组最先显示;
聚集函数:
计数:
COUNT([DISTINCT|ALL]*);COUNT([DISTINCT|ALL]<列名>);
计算总和:
SUM([DISTINCT|ALL]<列名>)计算平均值:
AVG([DISTINCT|ALL]<列名>)
最大最小值:
MAX([DISTINCT|ALL]<列名>);MIN([DISTINCT|ALL]<列名>);
GROUPBY子句分组:
细化聚集函数的作用对象
未对查询结果分组,聚集函数将作用于整个查询结果
对查询结果分组后,聚集函数将分别作用于每个组
作用对象是查询的中间结果表。
按指定的一列或多列值分组,值相等的为一组。
HAVING短语与WHERE子句的区别:
!
[作用对象不同]
WHERE子句作用于基表或视图,从中选择满足条件的元组
HAVING短语作用于组,从中选择满足条件的组。
自身连接:
一个表与其自己进行连接,需要给表起别名以示区别
由于所有属性名都是同名属性,因此必须使用别名前缀
SELECTFIRST.Cno,SECOND.Cpno
FROMCourseFIRST,CourseSECOND
WHEREFIRST.Cpno=SECOND.Cno;
外连接与普通连接的区别:
普通连接操作只输出满足连接条件的元组
外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROMStudentLEFTOUTJOINSCON(Student.Sno=SC.Sno);
子查询的限制:
不能使用ORDERBY子句
不相关子查询:
子查询的查询条件不依赖于父查询由里向外逐层处理。
每个子查询在上一级查询处理前求解,它的结果用于建立其父查询的查找条件。
相关子查询:
子查询的查询条件依赖于父查询。
首先取外层查询中表的一个元组,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则取此元组放入结果表,再取外层表的下一个元组,
重复这一过程,直至外层表全部检查完为止。
一、带有IN谓词的子查询:
此为不相关子查询
二、带有比较运算符的子查询
当能确切知道内层查询返回单值时,可用比较运算符(>,<,=,>=,<=,!
=或<>)。
与ANY或ALL谓词配合使用!
[子查询一定要跟在比较符之后]
三、带有ANY(SOME)或ALL谓词的子查询
ANY:
任意一个值;ALL:
所有值;
1.RDBMS执行此查询时,首先处理子查询,找出满足条件的项构成一个集合
2.处理父查询
四、带有EXISTS谓词的子查询
1.EXISTS谓词子查询找到的提交
存在量词?
带EXISTS谓词的子查询不返回任何数据,只产生逻辑真值”true”或逻辑假值”false”。
若内层查询结果非空,则外层的WHERE子句返回真值
若内层查询结果为空,则外层的WHERE子句返回假值
由EXISTS引出的子查询,其目标列表达式通常都用*,
因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义。
2.NOTEXISTS谓词子查询中找不到的提交
若内层查询结果非空,则外层的WHERE子句返回假值
若内层查询结果为空,则外层的WHERE子句返回真值
所有带IN谓词、比较运算符、ANY和ALL谓词的子查询都能用EXISTS子查询替换
用EXISTS/NOTEXISTS实现全称量词(难点)
SQL语言中没有全称量词?
(Forall)
把带有全称量词的谓词转换为等价的带有存在量词的谓词:
(?
x)P≡¬(?
x(¬P))
4.1.2安全标准简介:
TCSEC标准、CC标准
TCSEC/TDI,从安全策略、责任、保证、文档四个方面来描述安全性级别划分的指标
4.2.2存取控制
存取控制机制由定义用户权限和合法权限检查两部分组成
用户权限定义和合法权检查机制一起组成了DBMS的安全子系统
4.2.3自主存取控制方法
用户权限组成:
数据对象、操作类型、
定义存取权限称为授权
4.2.4授权与回收
GRANT语句的一般格式:
GRANT<权限>[,<权限>]...
[ON<对象类型><对象名>]
TO<用户>[,<用户>]...
[WITHGRANTOPTION];
1、WITHGRANTOPTION:
指定:
可以再授予;没有指定:
不能传播;不允许循环授权
2、GRANTALLPRIVILIGES
ONTABLESTUDENT
TOPUBLIC;-将STUDENT表的所有权限授予所有用户
3、对属性列的授权时必须明确指出相应属性列名
REVOKE语句的一般格式为:
REVOKE<权限>[,<权限>]...
[ON<对象类型><对象名>]
FROM<用户>[,<用户>]...;
1、FROMUSERCASCADE;系统收回直接或间接从USER处获得的权限
2、REVOKEALLPRIVILIGES
ONTABLESTUDENT
FROMPUBLIC;-将STUDENT表的所有用户的所有权限收回
CREATEUSER语句格式:
CREATEUSER
DBA可CREATE[USER|SCHEMA|TABLE]+登录数据库查询数据和操纵
RESOURCE可CREATETABLE+登录数据库查询数据和操纵
CONNECT可登录数据库查询数据和操纵
4.2.5数据库角色:
是被命名的一组与数据库操作相关的权限,角色是权限的集合
作用:
管理数据库权限,简化用户授权过程
角色创建:
CREATEROLE<角色名>
角色授权:
GRANT<权限>[,<权限>]…
ON<对象类型>对象名
TO<角色>[,<角色>]…
4.2.6强制存取控制方法
强制存取控制(MAC):
保证更高程度的安全性使用户不能直接感知或进行控制
主体是系统中的活动实体DBMS所管理的实际用户代表用户的各进程
客体是系统中的被动实体,是受主体操纵的文件、基表、索引、视图
强制存取控制规则
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
(2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体
先DAC检查,通过的数据对象再由系统进行MAC检查,通过检查的数据对象方可存取。
4.3视图机制
主要功能是提供数据独立性,无法完全满足要求
间接实现了支持存取谓词的用户权限定义
CREATEVIEWCS_StudentAS
4.4审计(Audit)
审计日志(AuditLog)
将用户对数据库的所有操作记录在上面
DBA利用审计日志
找出非法存取数据的人、时间和内容
C2以上安全级别的DBMS必须具有
AUDIT语句:
设置审计功能AUDITALTER,UPDATEONSC;
NOAUDIT语句:
取消审计功能NOAUDITALTER,UPDATEONSC;
数据库的完整性:
数据的正确性和相容性
为维护数据库的完整性,DBMS必须:
1.提供定义完整性约束条件的机制2.提供完整性检查的方法3.违约处理
插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。
包括:
1.检查主码值是否唯一,如果不唯一则拒绝插入或修改
2.检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改
5.2.1关系模型的参照完整性定义
在CREATETABLE中用FOREIGNKEY短语定义哪些列为外码
用REFERENCES短语指明这些外码参照哪些表的主码
5.3用户定义的完整性
用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求
RDBMS提供,而不必由应用程序承担
列值唯一UNIQUE
用CHECK短语指定列值应该满足的条件
5.4完整性约束命名子句
CONSTRAINT<完整性约束条件名>
[PRIMARYKEY短语
|FOREIGNKEY短语
|CHECK短语]
可以先删除原来的约束条件,再增加新的约束条件
ALTERTABLEStudent
DROPCONSTRAINTC1;
ALTERTABLEStu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 知识点 整理
![提示](https://static.bdocx.com/images/bang_tan.gif)