1、数据库原理复习资料数据库原理复习资料(仅供参考)第1章 数据库系统概述1. 信息就是客观世界的现实反映。2. 信息的特征:信息的普遍性和客观性、信息是有用的、信息的依附性、信息的共享性、信息的可传输性、信息的可识别性、信息的可压缩性、信息的可转换性3. 数据的定义:数据是信息的最佳表现形式之一。4. 数据的特征:数据的“型”和“值”、数据受数据类型和取值范围的约束、数据有定性表示和定量表示5. 数据库(Database , DB)的定义:是一个按一定数据结构来组织、存储和管理的数据的集合。6. 数据库的特点:数据的结构化、数据独立性、实现数据共享、数据的冗余度小、避免了数据的不一致性、有利于数
2、据的安全性、有利于保证数据的完整性、可以发现故障和恢复正常状态7. 数据库管理系统(Database Management System , DBMS)是对数据库进行管理的软件系统,它负责数据库中的数据组织、数据操纵、数据维护、数据控制及保护和数据服务等。8. 数据库管理系统的功能:数据定义、数据操纵、数据控制、数据组织与存取、数据库建立与维护、运行管理9. 数据库系统(Database System ,DBS)是一个带有数据库的计算机应用系统,由硬件、软件和人员组成。10. 数据库系统的人员:开发人员、用户和运行维护人员。相应的角色有系统分析员、程序员、用户、数据库管理员(Database
3、Administrator ,DBA):全面负责数据库系统的运行管理和控制。11. 数据库的三级模式:外模式、模式、内模式12. 模式:也称逻辑模式,它是由数据库设计者综合所有的数据需求,从全局的角度对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图即全局视图。一个数据库只有一个模式。13. 外模式:也称子模式或用户模式,是程序员和最终用户能看见和使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示。通常是模式的子集。14. 内模式:也称存储模式或物理模式,它是数据物理结构和存储方式的底层描述。一个数据库只有一个内模式。15. 数据库的二级映像技术:外模式
4、/模式映像、模式/内模式映像16. 数据管理经历了人工管理、文件系统和数据库系统三个发展阶段17. 瀑布模型把数据库应用系统生存期划分为规划、需求分析、设计、实现、测试、运行与维护6个阶段。特点:自顶向下、逐层分解。第2章 数据库需求分析2.1.3数据库需求分析的原则1.制定数据库需求分析计划2.选择适当的数据库需求分析方法3.选择合适的数据库需求分析工具软件4.调查现存系统5.充分与用户沟通6.理解用户的数据管理内容及目标7.分析并确认数据库需求8.需求变更要立即联系9.提出数据库实施建议和解决方案10.认真撰写数据库需求规格说明书11.使用软件复用技术12.认真评审数据库需求规格说明书13
5、.修改、完善数据库需求规格说明书注:数据库需求分析的最终目的是获得共同批准的数据库需求规格说明书。2.数据流程图(Data Flow Diagram,DFD)是数据库系统最重要的需求分析工具之一,它通过图形符号描述数据的输入(来源)、输出(去向)和移动变换过程。它的基本图形元素有4个:外部实体、数据流、处理、数据存储。3.数据库系统需求分析方法:结构化分析方法、原型化分析方法、面向对象分析方法。4.结构化分析(Structured Analysis,SA)方法是最著名需求分析方法之一,它通过与DFD结合,遵循自顶向下、逐层分解和结构化、模式化的原则从DFD的顶层开始,逐层、逐幅画出数据库系统的
6、全部DFD。5.数据库需求调查的原则:自顶向下全面展开、分析现存系统数据管理存在的问题,研究改进的可能性、采用工程化的工作方法、全面铺开与重点调查相结合6.数据字典(Data Dictionary,DD)(是各类数据描述的集合)是数据收集和分析后所获得的成果,通常包括数据项、数据结构、外部实体、数据流、数据存储和处理逻辑6个部分。7.信息分类的原则:科学性原则、系统性原则、可扩展性原则、兼容性原则、综合实用性原则8.信息分类的方法:线分类法与面分类法9.信息编码的原则:唯一性原则、正确性原则、可扩展性原则、规范性原则、稳定性原则10.信息编码的方法:顺序编码、区间编码、字母编码、组合编码11.
7、关键字是能够唯一标识一个实体的一个或一个以上的无冗余数据项(或数据结构)。也称主码或主键。12.E-R图:实体-联系方法(Entity-Relationship Approach )第3章 数据库设计1.数据库系统的设计包括数据库的结构特性设计(静态)和行为特性设计(动态)。2.数据库设计的原则:1)不依赖性原则 2)开放性原则3)可扩展性原则4)检索和管理的高效性原则3.数据库设计的歩骤:1)逻辑结构设计2)物理结构设计3)验证设计4.数据库模型:是现实世界数据特征的模拟和抽象。应满足三方面要求:能比较真实地模拟现实世界;容易为人所理解;便于在计算机上实现(真实、方便、易懂)数据模型三要素(
8、重点):数据结构;数据操纵;数据的约束条件5.关系模型的完整性约束:实体完整性、参照完整性和用户定义的完整性6.关系的基本术语(名词解释): 元组(Tuple):关系表中每一个横行称作一个元组,组成元组的元素称为分量。数据库中的一个实体或实体间的一个联系均使用一个元组表示。 属性(Attribute):关系中的每一列即为一个属性,都有一个属性名。 候选码(Candidate Key)和主码(Primary Key):若关系中的某一属性组(或单个属性)的值能唯一地标识一个元组,则称该属性组(或属性)为候选码。当一个关系有多个候选码时,选定其中的一个候选码为主码。若关系中只有一个候选码,则这个唯一
9、的候选码就是主码。 主属性(Prime Attribute)和非主属性(Non-Prime Attribute):候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性。 外码:建立在子表上去引用主表的某些字段。7.关系的类型:关系分为基本表、视图表和查询表。8.关系的基本性质(重点): 1)列是同质的 2)不同列可来自同一个域 3)列的位置具有顺序无关性,列的次序可以任意交换 4)任意两个元组不能完全相同 5)元组的位置具有顺序无关性,元组的次序可以任意交换 6)分量必须取原子值,即每个分量都必须是不可分的数据项9.完整性约束: 1)实体完整性(主键) 2)参照完整性(外键) 3)
10、用户定义的完整性(除主键和外键之外的)10.完整性设计中应注意的问题: 1)修改关系中主码的问题 2)外码能否接受空值问题 3)在被参照关系中删除元组的问题(3种情况)(重点) 级联删除(CASCADES) 将参照关系中外码值,与被参照关系中将要删除元组的主码值相同的所有元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会进行级联下去。 受限删除(RESTRICTED) 仅当参照关系中没有任何元组的外码值与被参照关系要删除元组的主码值相同时,系统才执行删除操作,否则拒绝此删除操作; 置空值删除(NULLIFIES) 删除被参照关系的元组,并将参照关系中相应元组的外码值置空
11、值。 4)在参照关系中插入元组时的问题。11.触发器:是一类特殊的存储过程。特点:是定义在触发器表上的,不能由用户调用执行,而是在对触发器进行操作时自动触发执行的,但存储过程可以通过存储过程名字而被直接调用。缺点:触发器的性能比较低。12.索引:是一个单独的、物理的数据库结构,它是某个关系中,一列或若干列值的集合和相应的指向关系中物理标识这些值的数据页的逻辑指针清单。(存数据,用空间来换取时间)按存储结构的不同,分为聚簇索引(主键默认)和非聚簇索引。13.索引的作用: 1)加快数据查询的速度2)保证数据的唯一性3)加快连接速度。14.事务:是恢复和并发控制的基本单位。是用户定义的一组数据库操作
12、序列的集合。15.事务4个特性(解答题): 1)原子性(Atomicity) 一个事务是不可分割的数据库的逻辑工作单位 2)一致性(Consistency) 事务的执行结果必须是使数据库从一个一致性状态到另一个一致性状态 3)隔离性(Isolation)一个事务的执行不能被其他事务干扰 4)持续性(Durability)一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的16.并发控制(以事务为单位)条件:(1)一个对象;(2)多个事务;(3)同一时刻17.并发操作:数据库中的数据是共享的,即多个用户可以同时使用数据库中的数据18.并发操作带来的4个问题: 1)丢失或覆盖更新2)不可重复
13、读3)脏读数据4)幻像读19.基本的封锁类型: 1)排他锁(X锁)2)共享锁(S锁)20.死锁:如当两个事务分别锁定了两个单独的对象,这时每一个事务都要求在另外一个事务锁定的对象上获得一个锁,因此每一个事务都必须等待另外一个事务释放占有的锁,这时,就发生了死锁。21.预防死锁发生常用的方法有: 1)一次封锁法(要求每个事务必须一次将所有要使用的数据全部加锁,否则不能继续执行) 2)顺序封锁法(预先对数据对象规定一个封锁顺序,所有事务都按此顺序执行)22.死锁的诊断与解除: 1)超时法:指如果一个事务的等待时间超过了规定的时限,就认为发生了死锁 2)等待图法:事务等待图动态反映所有事务的等待情况
14、。23.将E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式。实体集向关系模式转换的原则:一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的主码就是关系的主码。24.联系集向关系模式的三种转换: 1):(可转为一个独立的关系模式,也可与任意一端对应的关系模式合并)2):(可转为一个独立的关系模式,也可与任意n端对应的关系模式合并) 3):(可转为单独存在的关系模式,与该联系相连的各实体的主码以及联系本身的属性均转为该关系模式的属性。而关系模式的主码为各实体主码的组合)第4章 数据库标准语言SQL4.2.1数据库1.定义数据库Create databa
15、se 学生选课库On primary (name=学生选课库, Filename=C:sqlserverdata学生选课.mdf, Size=4mb, Maxsize=6mb, Filegrowth=20%)2.选择数据库use 3.删除数据库Drop database 4.2.2基本表1.定义基本表Create table student( sno char(5) not null or primary key, Sname varchar(20) unique, Sex char(1), Sdept varchar(15), Smon char(5), Sbirthday smalldat
16、etime)2修改基本表a.add方式:向student表增加“入学时间”列,其数据类型为日期型。Alter table student add scome datetimeB.drop方式:删除sc表中的score_chk约束。Alter table sc drop score_chkC.alter方式:把student表中的sname列加宽到28位字符宽度。Alter table student alter column sname varchar(28)3.删除基本表Drop table student4.2.3索引1.定义索引为student,course,sc三个表建立索引。其中st
17、udent表按学号升序建唯一索引,course表按课程号升序建唯一索引,sc表按学号升序和课程号降序建唯一索引。Create unique index s_sno on student(sno)Create unique index c_cno on course(cno)Create unique index scno on sc(sno asc,cno desc)2.删除索引drop index 数据表名.索引名4.3数据查询4.3.1概述:数据查询是数据库中最常见的操作。SQL语言提供SELECT语句,通过查询操作可得到所需的信息,其语法格式为:Select all|distinct ,
18、From , where group by having order by 4.3.2简单查询1.无条件查询a.查询学生的全部信息Select * from student 等价于select sno,sname,sex,sdept,smon,sbirthday from studentb.查询全体学生的姓名、学号和出生日期。Select sname 姓名,sno 学号,sbirthday as 出生日期 from student 闯.查询全体学生的姓名年龄。Select sname,year(getdate()-year(sbirthday) from student2.条件查询a.比较大小
19、的条件查询:查询成绩高于85分的学生的学号、课程号和成绩。Select sno,cno,score from sc where score85b.多重条件查询:查询选修c1或c2且分数大于等于85分学生的学号、课程号和成绩。Select sno,cno,score from sc where(cno=c1 or cno=c2) and score=85C.确定范围:查询成绩在90-100之间的学生的学号以及课程号。Select sno,cno from sc where score between 90 and 100d.查询选修c1或c2的学生的学号、课程号和成绩。Select sno,cn
20、o,score from sc where cno in(c01,c02)等价于Select sno,con,score from sc where cno=c01 or cno=c02e.部分匹配查询:查询所有姓刘学生的姓名、学号和性别。Select sname,sno,sex from student where sname like 刘%查询以“DB_”开头的课程的课程号,课程名和学分。Select cno,cname,credits from course where cname like DB_% escape 其中escape 短语表示“”为换码字符,这样匹配串中紧跟在“”后面的字
21、符“_”不再具有通配符的含义,转义为普通的“”字符。F.涉及空值的查询:空值查询使用is null关键字。查询没有成绩的学生的学号和相应的课程号。Select sno,cno from sc where score is null查询选修c2、c3、c4或c5课程的学号、课程号和成绩,查询结果按学号升序排列,学号相同再按成绩降序排列。Select sno,cno,score from sc where cno in(c02,c03,c04,c05) order by sno,score desc4.3.4使用SQL函数查询分组函数:avg、sum、max、min、counta.求学号为s1学生
22、的总分和平均分。Select sum(score) ad totalscore, avg(score) as avescore from sc where (sno=s01)b.求选修c1号课程的最高分、最低分及之间相差的分数。Select max(score) as maxscore,min(score) ad minscore,max(score)-min(score) as diff from sc where(cno=c01)c.求参加选修课程的学生总数。Select count(distinct sno) from sc4.3.5分组查询1.group by子句a.查询每位学生的学号
23、以及该学生选修课程的门数。Select sno,count(*) as c_num from sc group by sno 2.having子句查询至少选择修2门课的学生的学号及平均成绩。Select sno,avg(score) from sc group by sno having count(*) 24.4数据更新4.4.1插入数据a.插入单个元组在student表中插入记录:(Sno:S07。Sname:郑冬。Sex:女。Sdept:计算机)。Insert into student(sno,sname,sex,sdept) values (s07,郑冬,女,计算机)b.插入子查询结果
24、集Insert into (,) 子查询求出各位同学的学号、平均成绩,及总分,并把结果存放在新表avgscore中。先建表:create table avgscore( Sno varchar(10), Avggrd decimal(4,2), Sumgrd decimal(5,1)然后利用子查询:insert into avgscore Select sno,avg(score),sum(score) from sc group by sno4.4.2修改数据1.修改基本表数据a.把学号为“s02”的学生的专业改为计算机系。Update student set sdept=计算机 where
25、 sno=s022.用子查询提供要修改的值把所有教师的工资提高到平均工资的1.2倍。Update teacher set salary=(select 1.2*avg(salary) from teacher)3.用子查询选择要修改的行将计算机系所有学生的成绩置零。Update sc set score=0Where sno in(select sno from student where sdept=计算机)4.4.3删除数据1.删除基本表数据删除选课表中学号为“s04”选修“c03”课程的选课记录。Delete from sc Where sno =s04 and cno=c032.利用子
26、查询选择要删除的行。删除刘华的选课记录。Delete from sc Where sno in (select sno from student where sname=刘华4.5视图4.5.1定义视图创建一个计算机系学生情况的视图sub_s。Create view sub_s as Select sno,sname,sbirthday from student where sdept=计算机4.5.2删除视图删除计算机系学生情况的视图sub_s。Drop view sub_s4.5.3查询视图查询视图sub_s中年龄小于20岁的学生姓名(sname)和出生日期(sbirthday)。Sele
27、ct sname,sbirthday from sub_s Where (year(getdate()-year(sbirthday)204.5.4更新视图1.数据插入向视图sub_s中插入一条记录(sno:s07。Sname:李丹,sbirthday:1982年12月1日)。Insert into sub_s values(s07,李丹,1982-12-1)2.数据修改将视图sub_s中李丹的性别改为女。Update sub_s set sex=女 where sname=李丹3.删除删除视图sub_s中李丹的记录。Delete from sub_s where sname=李丹4.6数据控
28、制4.6.1授权把对student表和course表的全部操作权限授予zhao,并允许zhao将该权限授予他人。Grant all privileges on student,course to zhao with grant option4.6.2收权把用户zhao修改成绩的权限收回。Revoke update(score) on sc from zhao4.8存储过程的创建与维护a.编写一个存储过程,实现删除一个学生的记录。由于一个学生可能已经选课,所以在删除一个学生的数据前,必须首先删除该学生选课数据,然后再删除学生数据。Grant procedure usp_deleteastuden
29、t sno char(5), sname varchar(8) outputAs-删除学生选课表中学生的记录 If exists(select * from sc where sno=sno) Delete from sc where sno=sno-得到指定学号的学生姓名 Select sname=sname from student where sno=sno-删除指定学号的记录 Delete from student where sno=snoGob.执行a.定义的存储过程,并删除学号为“95010”的相关信息。-测试和运行存储过程Declare sname varchar(8)-调用存
30、储过程Execute usp_deleteastudent 95010, sname output-显示返回变量值Select sname4.9触发器的创建与维护4.9.1定义触发器利用触发器来保证学生-课程库中sc表的参照完整性,以维护其外码与参照表中的主码一致。Grant trigger sc_inserted on 选课For insertAsIf(select count(*) from student,inserted,course) Where student.sno=inserted.sno and o=o)=0 Rollback transaction4.9.2修改触发器语法:alter trigger trigger_name Onowner. table|view Forinsert,update,delete as Sql_statement4.9.3删除触发器语法:drop trigger trigger_name第6章 数据库测试6.1 概述
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1