<span>软考数据库2</span>
数据库系统
考点归纳
1、数据库模式
三级模式(外模式、概念模式、内模式)、两级独立性(物理独立性、逻辑独立性)
2、ER模型
ER图、实体联系类型重点
、ER图转换为关系模型重点
3、关系运算和元组演算
关系代数的基本运算、元组演算
4、规范化理论
函数依赖、键的概念、求候选键重点
、范式(第一范式、第二范式、第三范式、BC范式)、各种异常
5、SQL语言
SQL语言基础、视图、表的建立、视图的创建、表的查询重点
、表元素的删除、表元素的插入、表元素的修改
6、并发控制
事物的概念、数据的不一致问题、封锁技术
7、其他相关知识
数据库管理系统的特征和功能、数据仓库的概念和特点、分布式数据库的概念和特点。
五、 数据库语言
SQL是结构化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制四个部分。
- SQL 语言简洁、方便实用、功能齐全,已成为目前应用最广的关系数据库语言。
- SQL既是自含式语言(联机交互),又是嵌入式语言(宿主语言)
基本概念
- 基本表(BASE TABLE):是独立存在的表,不是由其它的表导出的表。一个关系对应一个基本表,一个或多个基本表对应一 个存储文件。
- 视图(VIEW):是一个虚拟的表,是从一个或几个基本表导出的表。数据库中只存放视图的定义而不存放视图对应的数据, 这些数据仍存放在导出视图的基本表中。当基本表中的数据发 生变化时,从视图中查询出来的数据也随之改变。
一、数据定义
SQL语言使用数据定义语言(DDL)实现其数据定义功能,可对数据库用户、基本表、视图、索引进行定义和撤消。
操作对象 | 创建 | 删除 | 修改 |
---|---|---|---|
模式 | CREATE SCHEMA | DROP SCHEMA | |
表 | CREATE TABLE | DROP TABLE | ALTER TABLE |
视图 | CREATE VIEW | DROP VIEW | |
索引 | CREATE INDEX | DROP INDEX |
1、定义基本表
CREATE TABLE <表名>(<列名>[{,<列名>|<表约束>}])
- <表名>合法标识符,最多128个字符,如S,SC,C,不允许重名。
- <列名><数据类型>[DEFAULT] [{<列约束>}]
例:建立一学生表
CREATE TABLE S (SNO CHAR(8) NOT NULL UNIQUE,
SN VARCHAR(20),
AGE INT,
SEX CHAR(2) DEFAULT '男' ,
DEPT VARCHAR(20));
2、修改基本表
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ALTER COLUMN <列名> <数据类型> ]
[ DROP < COLUMN 列名> |<完整性约束名> ] ;
- ADD子句:增加新列和新的完整性约束条件
- ALTER COLUMN子句:用于修改列
- DROP子句:删除指定列或完整性约束条件
例:ALTER TABLE S ADD CLASS_NO CHAR(6)
3、删除表
DROP TABLE <表名>
例DROP TABLE Student;
- 基本表删除后,表中的数据和表上建立的索引都被删除, 而建立在该表上的视图不会删除,系统将继续保留其定义, 但已无法使用。
4、定义视图
CREATE VIEW <视图名>[(<列名>[,<列名>]…)]
AS
<子查询> [with check option]
例:
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage FROM Student
WHERE Sdept='IS' With Check Option
5、删除视图
DROP VIEW 视图名
例:删除视图IS_S1
DROP VIEW IS_S1
二、数据查询
SELECT语句的一般格式:
SELECT [all|Distinct]〈列名〉[{,〈列名〉}]
FROM〈表名或视图名〉[{,〈表名或视图名〉}]
[WHERE〈检索条件〉]
[GROUP BY <列名1>[HAVING <条件表达式>]]
[ORDER BY <列名2>[ASC|DESC]];
SELECT语句的执行过程是:
- 根据WHERE子句的检索条件,从FROM子句指定的基本表或视 图中选取满足条件的元组,再按照SELECT子句中指定的列,投影得到结果表。
- 如果有GROUP子句,则将查询结果按照<列名1>相同的值进行分组。
- 如果GROUP子句后有HAVING短语,则只输出满足HAVING条件 的元组。
- 如果有ORDER子句,查询结果还要按照<列名2>的值进行排序。
1、单表查询
例1:查询全体学生的学号、姓名和年龄。
SELECT Sno, Sname, Age FROM Student
例2:查询学生的全部信息。
SELECT * FROM Student
例3:查询成绩高于85分的学生的学号、课程号和成绩。
SELECT Sno,Cno,Score FROM SC WHERE Score>85
例4:查询姓名中第二个汉字是“力”的教师号和姓名。
SELECT Tno, Tname FROM Teacher WHERE Tname LIKE ‘_ _力%’
例5:查询选修C1或C2课程的学生学号、课程号和成绩。
SELECT Sno, Cno, Score FROM SC WHERE Cno IN(‘C1’, ‘C2’)
此语句也可以使用逻辑运算符“OR”实现。
2、连接查询
表的连接方法有两种:
- 表之间满足一定的条件的行进行连接,此时FROM子句中指明进行连接的表名,WHERE子句指明连接的列名及其连接条件。
- 利用关键字JOIN进行连接。
3、嵌套查询
例:查询与“刘晨”在同一系学习的学生
SELECT Sno,Sname FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname=‘刘晨’ )
例1:查询刘伟老师所讲授的课程
- SELECT T.Tno ,Tname,Cno FROM T,TC WHERE (T.Tno = TC. Tno) AND (Tname=‘刘伟’)
- SELECT T.Tno,Tname,Cno FROM T INNER JOIN TC ON T.Tno=TC.Tno AND T.Tname=‘刘伟’
SELECT(A)FROM 工资表 (D) (C)
1、A. 部门,AVG(应发工资)AS平均工资
B. 姓名,AVG(应发工资)AS平均工资
C. 部门,平均工资AS AVG(应发工资)
D. 姓名,平均工资AS AVG (应发工资)
2、A. ORDER BY 姓名
B. ORDER BY部门
C. GROUP BY 姓名
D. GROUP BY 部门
3、 A. WHERE COUNT(姓名)>2
B. WHERE COUNT(DISTINCT(部门))>2
C. HAVING COUNT(姓名)>2
D. HAVING COUNT(DISTINCT(部门))>2
六、数据库的控制功能
DBMS运行的基本工作单位是事务。
事务是用户定义的一个数据库操作序列,这些操作序列要么全做 要么全都不做,是一个不可分割的工作单位。
**事务具有以下特性(ACID特性):**
(1)原子性(atomicity)
(2)一致性(consistency)
(3)隔离性(isolation)
(4)持续性(durability,永久性)
事务通常以BEGIN TRANSACTION(事务开始)语句开始,以 COMMIT或ROLLBACK语句结束。
COMMIT称为事务提交语句,表示事务执行成功地结束。
ROLLBACK称为事务回滚语句,表示事务执行不成功地结束,即把事务对数据库的修改进行恢复。
一、并发控制
在多用户共享系统中,许多事务可能同时对同一数据进行操作, 称为并发操作,此时数据库管理系统的并发控制子系统负责协调 并发事务的执行,保证数据库的完整性不受破坏,同时避免用户得到不正确的数据。
1.并发操作的问题
数据库的并发操作可能带来的问题:
- 丢失更新问题
- 不一致分析问题(读过时的数据)
- 依赖于未提交更新的问题(读脏数据)
2.封锁的类型
处理并发控制的主要方法是采用封锁技术,有两种类型的封锁:
- X封锁(排他型封锁)
- S封锁(共享型封锁)
(1)排他型封锁( X封锁)
如果事务T对数据A(可以是数据项、记录、数据集以至整个数据 库)实现了X封锁,那么只允许事务T读取和修改数据A,其他事务要等事务T解除X封锁以后,才能对数据A实现任何类型的封锁。 可见X封锁只允许一个事务独锁某个数据,具有排他性。
(2)共享型封锁(S封锁)
S封锁允许并发读,但不允许修改,也就是说,如果事务T对数据 A实现了S封锁,那么允许事务T读取数据A,但不能修改数据A, 在所有S封锁解除之前决不允许任何事务对数据A实现X封锁。
二、备份与恢复技术
1.数据备份
是指为防止系统出现操作失误或系统故障导致数据丢失,而 将全部或部分数据集合从应用主机的硬盘或阵列复制到其它 的存储介质的过程。
数据库只能恢复到备份时的状态,从那以后的所有更新事务必须重新运行才能恢复到故障时的状态。
备份可分为冷备份(静态备份)和热备份(动态备份)
冷备份是在数据库正常关闭的情况下进行的,所以备份过程中不允许对数据库进行任何存取、修改活动。
缺点:
1、单独使用时,只能提供到“某一时间点上”的恢复。
2、在备份时,数据库不能做其他工作。
3、若磁盘有限,只能将备份数据拷贝到磁带等其他外部存储设 备上,速度会比较慢。
4、不能按表或按用户恢复。
热备份是指备份期间允许对数据库进行存取或修改,即备份和用 户事务可以并发执行。
优点:
1、可在表空间或数据库文件级备份,备份的时间短。
2、备份时数据库仍可使用。
3、可对几乎所有数据库实体做恢复
4、恢复是快速的,可在数据库工作时恢复。
热备份缺点:
1.不能出错,否则后果严重
2.若热备份不成功,所得结果不可用于时间点的恢复
3.因难于维护,所以要特别仔细小心,不允许“以失败告终”。
- 完全备份:备份全部文件,并不依赖文件的存档属性来确定备份那些文件。
- 差分备份:备份自上一次完全备份以来变化过的文件。
- 增量备份:备份上一次备份后(无论是哪种备份),所有发生变化的文件。
2.日志文件
事务日志是针对数据库改变所做的记录,记录对数据库的任何操作,并将记录结果保存在独立的文件中。
在热备份中,必须建立日志文件,备份副本和日志文件综合起来 才能有效地恢复数据库;
在冷备份中,也可以建立日志文件,当数据库毁坏后可重新装入 后援副本把数据库恢复到备份结束时刻的正确状态,然后利用日志文件,把已完成的事务进行重做处理,对故障发生时尚未完成 的事务进行撤销处理。
要求遵循“先写日志文件,然后再写数据库的修改”。
3 . 数据恢复
把数据库从错误状态恢复到某一个已知的正确状态的功能,称为数据库的恢复。
数据恢复的基本原理就是冗余,建立冗余的方法有数据备份和登录日志文件等。
三、数据库的安全性
数据库系统的信息安全在技术上依赖于两种方式,
- DBMS本身提供的用户身份识别、视图、使用权限控制、审计 等管理措施,
- 依靠数据库的应用程序来实现对数据库访问进行控制和管理
1.用户认证
用户的身份认证是用户使用DBMS系统的第一个环节。
(1)口令认证
(2)强身份认证
- 用户证书
- 智能卡
- 用户指纹识别
2.用户角色
用户角色是具有相同操作权限的用户集合,不同角色的用户授予 不同的数据管理和访问操作权限。
一般可以将权限角色分为3类:
- 数据库登录权限类
- 资源管理权限类
- DBA权限类
3.存取控制(数据授权)
数据库授权可以分为静态授权和动态授权。
静态授权是DBMS的隐性授权,也就是说用户(或DBA)对他自己 拥有的信息是不需要有指定的授权动作就拥有全权管理和操作的权限的。
动态授权指数据对象的所有者或者DBA默认地拥有对数据的存取权,允许他们把这些权力授予其他的用户。
访问控制可以对用户访问的数据对象进行控制。
粒度从大到小分为4个层次 :
- (1)数据库级别
- (2)表级,判断用户是否可以访问关系里面的内容。
- (3)记录级(行级),判断用户是否能访问关系中的一行记录的内容。
- (4)属性级
4.数据库视图
是一个虚拟表,其内容由查询定义,其数据不进行实际存储,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。
使用视图可以实现下列功能:
- (1)将用户限定在表中的特定行上。
- (2)将用户限定在特定列上。
- (3)将多个表中的列连接起来,使它们看起来像一个表。
- (4)聚合信息而非提供详细信息
5.审计功能
身份认证是一种事前的防范措施,审计是一种事后监督的手段。 审计作为一种安全检查的措施,会把系统的运行状况和用户访问数据库的行为记录以日志保存下来,该日志作为一种稽查用户行 为的一种证据。
数据库系统的审计工作包括:
- 设备安全审计
- 操作审计
- 应用审计
- 攻击审计
6. 数据加密
是防止数据库中的敏感信息在存储和传输过程中失密的有效手段。
七、数据仓库与数据挖掘
一、数据仓库
- 是一个用以更好地支持企业(或组织)决策分析处理的、面向 主题的、集成的、不可更新的(相对稳定的)、随时间不断变 化的数据集合。
- 本质上和数据库一样,是长期储存在计算机内的、有组织、可 共享的数据集合。
二、数据仓库的基本特征
- 数据仓库的数据是面向主题的;
- 数据仓库的数据是集成的;
- 数据仓库的数据是不可更新的;
- 数据仓库的数据是随时间不断变化的
数据仓库反映历史变化的属性主要表现在:
- (1)数据仓库中的数据时间期限要远远长于传统操作型数据系统中的数据时间期限。
- (2)传统操作型数据系统中的数据含有“当前值”的数据,这些 数据在访问时是有效的,当然数据的当前值也能被更新,但数据仓库中的数据仅仅是一系列某一时刻生成的复杂的快照。
- (3)传统操作型数据系统中可能包含也可能不包含时间元素,如 年、月、日、时、分、秒等,而数据仓库中一定会包含时间元素。
三、数据仓库系统的体系结构
- 数据仓库的后台工具:包括数据抽取、清洗、转换、装载和维 护工具。
- 数据仓库服务器:相当于数据库系统中的DBMS,负责管理数 据仓库中数据的存储管理和数据存取,并给OLAP服务器和前 台工具提供存取接口(如SQL查询接口)
- OLAP服务器:透明地为前台工具和用户提供多维数据视图; OLAP服务器则必须考虑物理上这些分析数据的存储问题
- 前台工具:包括查询报表工具、多维分析工具、数据挖掘工具 和分析结果可视化工具等
四、数据挖掘的概念
- 概念:数据挖掘是从大量数据中发现并提取隐藏在内的、人们 事先不知道的但可能有用的信息和知识的一种新技术
- 目的:帮助决策者寻找数据间潜在的关联,发现经营者被忽略 的要素
- 数据挖掘技术涉及数据库技术、人工智能技术、机器学习、统 计分析等多种技术
五、数据挖掘和传统分析方法的区别
本质区别:数据挖掘是在没有明确假设的前提下去挖掘信息,发现知识。
数据挖掘所得到的信息应具有事先未知、有效和可实用3个特征
六、数据挖掘的数据源
- 从数据仓库中来
优点:许多数据不一致的问题都较好地解决了,在数据挖掘时大大减少了清理数据的工作量
缺点:建立数据仓库是一项巨大的工程,耗时耗力 - 从数据库中来
如果只是为了数据挖掘,可以把一个或几个OLTP数据库导入 一个只读的数据库中,然后在上面进行数据挖掘
七、数据挖掘的功能
- 趋势和演变分析
- 关联分析
- 聚类
- 概念描述
- 偏差检测
八、数据挖掘的流程
- (1)问题定义
在开始数据挖掘之前最先的也是最重要的要求就是熟悉背景知识, 弄清用户的需求 - (2)建立数据挖掘库
要进行数据挖掘必须收集要挖掘的数据资源。一般建议把要挖掘的数据都收集到一个数据库中 - (3)分析数据
分析数据就是通常所进行的对数据深入调查的过程。从数据集中 找出规律和趋势,发现因素之间的相关性。 - (4)调整数据
通过上述步骤的操作,对数据的状态和趋势有了进一步的了解, 这时要尽可能对问题解决的要求能进一步明确化、进一步量化。 - (5)模型化
在问题进一步明确,数据结构和内容进一步调整的基础上,就可 以建立形成知识的模型。 - (6)评价和解释
八、分布式数据库
一、分布式数据库
分布式数据库由一组数据组成,这些数据物理上分布在计算机网 络的不同结点(场地)上,逻辑上是属于同一个系统。每个结点可 以执行局部应用,也能通过网络通信子系统执行全局应用。
二、分布式数据库系统的特点
1.数据独立性
2.集中与自治相结合的控制结构
3.适当增加数据冗余度
4.全局的一致性、可串行性和可恢复性
三、分布式数据存储
分布式数据存储可以从数据分配和数据分片两个角度考察。
1、数据分配是指数据在计算机网络各场地上的分配策略。
- 集中式
- 分割式
- 全复制式
- 混合式
2、数据分片是指数据存放单位不是全部关系,而是关系的一部 分,包括以下几种方式。
- 水平分片:按一定的条件把全局关系的所有元组划分成若干不相交的子集,每个子集为关系的一个片段。
- 垂直分片:把一个全局关系的属性集分成若干子集,并在这些子集上做投影运算,每个投影为垂直分片。
- 混合型分片:将水平分片与垂直分片方式综合使用则为混合型分片。
四、分布式DBMS组成
(1) LDBMS(局部DBMS)
建立和管理局部数据库,提供场地自治能力、执行局部应用及全局查询的子查询。
(2) GDBMS(全局DBMS)
提供分布透明性,协调全局事务的执行,协调各LDBMS以完成 全局应用,保证数据库的全局一致性,执行并发控制,实现更新同步,提供全局恢复功能。
(3)全局数据字典
存放全局概念模式、分片模式、分布模式的定义,以及各模 式之间映像的定义;存放有关用户存取权限的定义,以保证 全局用户的合法权限和数据库的安全性;存放数据完整性约束条件的定义,其功能与集中式数据库的数据字典类似。
(4)通信管理
在分布式数据库各场地之间传送消息和数据,完成通信功能