《数据库知识点总结范文仅供参考.doc》由会员分享,可在线阅读,更多相关《数据库知识点总结范文仅供参考.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库知识点总结数据库知识点总结文件处理系统存在问题:数据的冗余和不一致,数据访问困难,数据孤立,完整性问题,原子性问题,并发访问异常,安全性问题数据库三级抽象物理层:最低层次的抽象,描述数据实际上是怎样存储的。逻辑层:比物理层层次稍高的抽象,描述数据库中存储什么数据及这些数据间存在什么关系。视图层:最高层次的抽象,只描述整个数据库的某个部分数据操纵语言DML:使用户可以访问或操作那些按其某种适当的数据模型组织起来的数据。过程化DML:要求用户指定需要什么数据以及如何获得这些数据。非过程化DML:只要求用户指定需要什么数据,而不指明如何获得这些数据事务状态图活动状态:初始状态;事务执行时处于这
2、个状态。部分提交状态:最后一条语句执行后。失败状态:发现正常的执行不能继续之后。中止状态:事务回滚并且数据库已恢复到事务开始执行前的状态之后。提交状态:成功完成后事务进入中止状态,系统有两种选择:重启事务:事务中止是硬件错误或不是由事务的内部逻辑产生的软件错误时。杀死事务:事务的内部逻辑错误,或者由于输入错误,或所需数据在数据库中没有找到可恢复调度:对于每对事务和,如果读取了由所写的数据项,则先于提交无级联调度:对于每对事务和,如果读取了由所写的数据项,则必须在这一读取前提交,容易验证无级联调度总是可恢复的。级联回滚:因一个事无故障导致一系列事物回滚的现象。强实体集:主码是生成的模式的主码。弱
3、实体集:主码由其所依赖的强实体集的主码与弱实体集的分辨符组合而成超码:一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组。候选码:任意子集都不能成为超码。主码:代表被数据库设计者选中的用来在同一关系中区分不同元组的候选码事务ACID特性:原子性:事务的所有操作在数据库中要么全部正确反映,要么全部不反映。一致性:隔离执行事务时保持数据库的一致性。隔离性:尽管多个事务可能并发执行,但系统保证,对于每对事务和,在看来,或者在开始之前已经完成执行,或者在完成之后开始执行。持久性:一个事务成功完成后,它对数据库的改变是永久的,即使系统可能出现故障视图:任何不是逻辑模型的一部分但
4、作为虚关系对用户可见的关系。屏蔽数据库的逻辑细节,提供防止用户访问数据库的某些部分的安全性机制。createviewvas物化视图:保证如果用于定义视图的实际关系改变了,视图也跟着修改。视图维护:保证视图一直是最新的过程。用其他视图定义视图:一个视图可能被用到定义另一个视图的表达式中视图展开:该过程家丁视图定义不是递归的完整性约束:保证当授权用户对数据库进行修改时不会破坏数据的一致性,防止对数据的意外破坏DBMS数据库管理系统:由一个互相关联的数据的集合和一组可以访问这些数据的程序组成。该集合为数据库。目标:提供一个可以方便高效的存取数据库信息的环境。广义投影:运算通过允许在投影列表中使用算数
5、函数来对投影进行扩展1(E),其中E是任意关系代数表达式,而F1Fn中的每一个都是涉及常量以及E的模式中属性的算术表达式删除:rr-Er是关系而E是关系代数查询插入:rrE更新:r1(r)数据定义:数据库中的关系集合由数据定义语言(DDL)指定给系统,包括每个关系的模式每个属性的值域完整性约束每个关系维持的索引集合,每个关系安全性和权限信息。磁盘上每个关系的物理存储结构建造表createtabler(A1D1,AnDn,)r是关系名Ai是关系r模式的一个属性名Di是属性Ai域的值的域类型notnull数据不允许有空值insertinto关系名values()deletefrom关系名(表名)删
6、除droptabler去掉一个关系altertableraddAD修改关系表r是已有关系名字A是要添加的属性的名字D是要添加的属性的域as子句给结果关系中的属性赋个名称groupby子句中的一个或多个属性是用来构造分组的distinct用来删除重复元组having分组限定条件空值检测null有空值参与比较运算,结果是unknow集合成员资格:in测试元组是否是集合中成员,也可以用于枚举集合集合的比较:至少比某一个要大some(some任意一个all所有每一个)=some等价于inall等价于notin将“关系A包含B”写成“notexists(BexceptA)”测试是否存在重复元组:结果中没
7、有重复的元组,unique返回真删除:deletefromrwhereP插入:insertintoaccountvalues更新:updateaccountset事务:由查询和更新语句序列组成commitwork提交当前事务rollbackwork回滚当前事务notnull约束:禁止在该属性上插入一个空值;同样可以被用在用户定义域的声明中,由此该域类型的属性不能为空unique:指出Aj1.Ajm属性形成了一个候选码,候选码的属性可为空check:保证属性值满足指定的条件参照完整性:保证一个关系中给定属性集上的取值也在另一关系的某一属性集的取值中出现函数依赖推导:模式R上函数依赖成立的条件是:
8、如果对任意合法关系r(R)及r中任意两个元组t1和t2,若t1=t2,则t1=t2保持依赖判别:r分解为n份后,f的闭包不变。视图等价的串行调度1对于每个数据项Q,若事务Ti在调度S中读取Q的初始值,那么在调度S中Ti也必须读取Q的初始值。2对于每个数据项Q,若事务Ti在调度S执行read(Q),并且读取的值是由事务Tj执行的write(Q)产生的,则在调度S中,Ti的read(Q)操作读取的值Q也必须是有Tj的同一个write(Q)产生的。3对于每个数据项Q,若在调度S中有事务执行最后的write(Q)操作,则在调度S中操作该事务也必须执行最后的write(Q)BCNF满足条件:对所有+中形
9、如的函数依赖下面至少一个成立:是平凡依赖;是R的一个超码。分解方法:设R为不属于BCNF的一个模式,则至少有一个非平凡的函数依赖,且不是R的超码,我们在设计中用一下两个模式取代R:()(R-(-)3NF满足条件:+中所有形如的函数依赖,至少有以下之一成立:是一个平凡的函数依赖;是R的一个超码;-中的每个属性A都包含在R的一个候选码中无损分解:如果我们把r投影至R1和R2上,然后计算投影结果的自然连接,我们仍然得到一摸一样的r,R1(r)R2(r)=r。判别:R1交R2是二者中任意一个的超码。属性集闭包(Armstring公理)自反律:,则增补律:,则传递律:及则合并律及,分解律,则伪传递律:若
10、有及则闭包:为一属性集,我们称在函数依赖集F下由函数确定的所有属性的集合为F下的闭包属性集闭包算法用途:1判定是否为超码,通过计算,看是否包含了R中的所有属性。2通过检验是否,我们可以验证函数依赖是否成立。3对任意R,我们找出闭包+;对任意的S+,我们输出一个函数依赖S无关属性:考虑函数依赖集F及F中函数依赖,如果A并且F逻辑蕴涵(F)(A),则A在中是无关的;如果如果A并且F逻辑蕴涵(F)(A),则属性A在中是无关的正则覆盖(Canonicalcover)F的一个正则覆盖Fc是一个依赖集,使得F逻辑蕴涵Fc中的所有依赖,并且Fc逻辑蕴涵F中的所有依赖,此外Fc必须具有如下性质:Fc中任何函数
11、依赖都不含无关属性;Fc中函数依赖的左半部都是唯一的若一个调度s于一个串行调度冲突等价,称调度s是冲突可串行化的如果调度S可以经过一系列非冲突指令交换转换s,我们称S与S是冲突等价的如果某个调度视图等价于一个串行调度,则我们说这个调度S是视图可串行化的共享锁若事务Ti获得了数据项Q的共享型锁,则Ti可读取但不能写Q排它锁:若事务Ti获得了数据项Q的排他型锁,则Ti可读取又能写Q两阶段封锁协议:增长阶段事务可以获得锁,但不能释放锁。缩减阶段事务可以释放锁,但不能获得锁。两阶段封锁协议保证冲突可串行化,并不保证不发生死锁,级联回滚可能发生严格两阶段封锁协议:不仅要求封锁是两阶段,还要求事务持有的所
12、有排它锁必须在事务提交后方可释放。强两阶段封锁协议:要求事务提交之前不得释放任何锁基于图的协议:树形协议只使用排他锁树形协议遵循规则:Ti首次加锁可以对任何一个数据项进行;此后Ti对数据项Q加锁的前提是Ti持有Q的父项上的锁;对数据项解锁可以随时进行;数据项被Ti加锁并解锁后,Ti不能再对数据项加锁DistinctprimaryforeignreferencescheckunionIntersectExcept扩展阅读:数据库知识点总结题型:一、选择题(每题1分,共10分)二、简答题:(每题10分,共30分)三、应用题:(第1题15分,第2题45分,共60分)考试范围:第一章1、数据、的定义描
13、述事物的符号记录称为数据。数据库是长期储存在计算机内的、有组织的、可共享的数据集合。2、数据库、数据库系统的特点(了解)3、DBMS的功能(了解)4、实体间联系的三种类型(1:1,1:n,m:n)5、E-R图的画法a、不必画出中间步骤。b、标出实体间联系的类型。c、只需画出关键字对应的属性。6、数据库系统的组成、核心7、数据库设计的步骤第二章认识关系运算符第五章1、数据库的创建CREATEDATABASE2、创建表CREATETABLE3、数据插入INSERT4、数据修改UPDATE5、数据删除DELETE第六章1、相关子查询和非相关子查询之间的区别2、视图的优点(了解)3、数据查询SELEC
14、T:1)内连接2)分组、统计函数3)排序4)非相关子查询第七章1、触发器的写法小结(第一章课件34到56第五章课件64到75第六章课件(SELECT语句,内连接,分组、统计函数,排序,非相关子查询)重点第七章课件58到71)数据(DATA,简称D)定义:描述事物的符号记录称为数据。数据库(DataBase,简称DB).定义:是长期储存在计算机内的、有组织的、可共享的数据集合。.特点:(1)数据库中的数据按照一定的数据模型组织、描述和储存。(2)具有较小的冗余度。(3)较高的数据独立性和易扩展性,并可为各种用户共享。数据库管理系统(DBMS)主要功能:1)数据定义功能:。2)数据组织、存储和管理
15、功能:3)数据操纵功能:4)数据库的事务管理和运行管理5)数据库的建立和维护功能简答题:1.相关子查询和非相关子查询之间的区别a)非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。b)相关子查询是内层子查询条件依赖于外层父查询的某个属性值的子查询,外部查询执行一行,子查询就执行一次。2.数据库设计的步骤1需求分析;2概念结构设计;3逻辑结构设计;4数据库物理设计数据库实施;5数据库运行和维护3.视图的优点(了解)(1)为用户集中数据,简化用户的数据查询和处理。(2)屏蔽数据库的复杂性。(3)简化用户权限的管理。(4)便于数据共享。(5)可以重新组织数据以便
16、输出到其他用程序中。例5-1创建一个名为BookSys的数据库。例5-2创建一个名为KEJI_DB的数据库。要求有三个文件,其中,主数据文件为10MB,最大大小为50MB,每次增长20%;辅助数据文件属于文件组Fgroup,文件为10MB,大小不受限制,每次增长10%;事务日志文件大小为20MB,最大100MB,每次增长10MB。文件存储在c:db路径下。CREATEDATABASEKEJI_DB/*数据库名*/ONPRIMARY/*主文件组*/(NAME=KEJI_DB_Data1,/*主文件逻辑名称*/FILENAME=c:dbKEJI_DB_Data1.mdf,/*主文件物理名称*/SI
17、ZE=10mb,MAXSIZE=50mb,FILEGROWTH=20%),FILEGROUPFgroup/*文件组*/(NAME=KEJI_DB_Data2,/*主文件逻辑名称*/FILENAME=c:dbKEJI_DB_Data2.ndf,/*主文件物理名称*/MAXSIZE=UNLIMITED,/*增长不受限制*/SIZE=10Mb,FILEGROWTH=10mb)LOGON(NAME=KEJI_DB_Log,/*日志文件逻辑名称*/FILENAME=c:dbKEJI_DB_Log.ldf,/*日志文件物理名称*/SIZE=20mb,MAXSIZE=100mb,FILEGROWTH=10m
18、b)使用SQL语句(1)修改数据库内容语法:ALTERDATABASEdatabase_nameADDFILE,nTOFILEGROUPfilegroup_name/*在文件组中增加数据文件*/|ADDLOGFILE,n/*增加事务日志文件*/|REMOVEFILElogical_file_name/*删除数据文件*/|ADDFILEGROUPfilegroup_name/*增加文件组*/|REMOVEFILEGROUPfilegroup_name/*删除文件组*/|MODIFYFILE,n/*修改文件属性*/|MODIFYNAME=new_dbname/*更新数据库名称*/例:使用触发器判断
19、插入的工资数据,如果工资超过100,000则不允许插入。CREATETABLEtrig_example(idINT,nameVARCHAR(10),salaryMONEY)GOCREATETRIGGERinsertrigONtrig_exampleFORINSERTASIF(SELECTCOUNT(*)FROMINSERTEDWHEREsalary100000)0BEGINPRINT数据插入错误:您试图插入一个大于$100,000的工资数据!ROLLBACKTRANSACTION-事务回滚END1.使用后级触发器的插入和删除例题:使用(后级)触发器判断插入的工资数据,如果工资超过100,000
20、则不允许插入。CREATETABLEtrig_example(idINT,nameVARCHAR(10),salaryMONEY)GOCREATETRIGGERinsertrigONtrig_exampleFORINSERTASIF(SELECTCOUNT(*)FROMINSERTEDWHEREsalary100000)0BEGINPRINT数据插入错误:您试图插入一个大于$100,000的工资数据!ROLLBACKTRANSACTION-事务回滚END练习:使用后级触发器对数据删除操作进行检查,如果删除工资大于5000的记录时提示错误信息,并回滚到删除前的状态。Insertintotrig_
21、exampleValues(1,tom,2022)Insertintotrig_exampleValues(2,marry,6000)Insertintotrig_exampleValues(3,rose,8000)CREATETRIGGERdeletedONtrig_exampleFORdeleteASIF(SELECTCOUNT(*)FROMdeletedWHEREsalary100000)0BEGINPRINT数据插入错误:您试图删除一个大于$100,000的工资数据!ROLLBACKTRANSACTION-事务回滚END.使用前级级触发器的插入和删除1.使用前级触发器判断插入trig_
22、example表的工资数据,如果工资超过100,000则不允许插入。CREATETRIGGERinsert_trig_exampleONtrig_exampleInsteadofinsertASdeclaresalarymoneyselectsalary=salaryfrominsertedIFsalary1000printwongdata!elsebegininsertintotrig_exampleselect*frominsertedend2.使用前级触发器对trig_example表的数据删除操作进行检查,如果删除工资大于5000的记录时提示错误信息,不删除记录;否则删除相应记录。CR
23、EATETRIGGERdelete_trig_exampleONtrig_exampleInsteadofdeleteASdeclareidint,salarymoneyselectid=idfromdeletedIFsalary100000print删除的数据大于!elsebegindeletetrig_examplewhereid=idend五、(12分)某商店管理涉及商店、商品和职工三个实体,它们分别具有下列属性:商店:商店编号,店名,店址,店经理商品:商品编号,商品名,单价,产地职工:职工编号,职工名,性别,工资这些实体间的联系如下:百货公司管辖若干个连锁商店,每家商店经营若干商品,每
24、家商店有若干职工,但每个职工只能服务于一家商店。职工参加某商店工作有开始时间,商店销售商品的有月销售量。请画出商店、商品和职工的ER图。将该ER图转换为关系数据模型。答:实体:商店(商店编号,店号,店址,店经理)(0.5分)商品(商品编号,商品名,单价,产地)(0.5分)职工(职工编号,职工名,性别,工资)(0.5分)联系:P1商店销售商品的有销售量间(0.5分)P2职工参加某商店工作的开始时(0.5分)ER图:(5分)关系模式集:商店模式(商店编号,店号,店址,店经理)(0.5分)商品模式(商品编号,商品名,单价,产地)(0.5分)职工模式(职工编号,职工名,性别,工资,商店编号,开始时间)
25、分)P1模式(商店编号,商品编号,月销售量)(0.5分)2使用sql语句创建表authors,结构如下表所示(本题8分)列名数据类型大小是否为空默认值说明authorIDint4N编号(主键),自动增长authorNamenvarchar50N姓名Phonenvarchar13Y电话addressnvarchar255Y地址2.createtableauthors(authoridintidentity(1,1)primarykeynotnull,authornamenvarchar(50)notnull,phonenvarchar(13)null,addressnvarchar(255)3使
26、用SQL语句对2中创建的authors表进行如下修改:(每小题5分,共15分)(1)添加Sex列char(2),city列varchar(20)。(2)删除city列。(3)修改作者信息表authors中的address列将该列的属性的长度更改为500。3.(1)altertableauthorsaddsexchar(2)null,citynvarchar(20)null;(2)altertableauthorsdropcolumncity(3)altertableauthorsaltercolumnaddressnvarchar(500)notnull5.表结构的修改1(使用SQL语句将yg
27、qk表的“姓名”列的数据类型改为varchar,长度为20;使用SQL语句在xmqk表中添加新列立项时间,类型为datetime;使用SQL语句删除xmqk表中的立项时间列。useyeelgoaltertableygqkaltercolumnnamevarchar(20)useyeelgoaltertablexmqkaddlixiangshijiandatetimeuseyeelgoaltertablexmqkdropcolumnlixiangshijian4.表中数据的修改和删除使用SQL语句将ygqk表中第一条记录的邮政编码改为450044删除ygqk表中出生日期在1960-1-1日之前的
28、员工信息;useyeelgoupdateygqksetzip=450044useyeelgodeleteygqkwherebirthdayaltertable成绩表add总成绩floatupdate成绩表set总成绩=数学+英语+数据库+操作系统/*4*/altertable成绩表add平均成绩floatupdate成绩表set平均成绩=(数学+英语+数据库+操作系统)/4selectsno学号,(数学+英语+数据库+操作系统)/4平均成绩from成绩表where数学=60and英语=60and数据库=60and操作系统=60/*5*/6.1.4函数的使用练习:1.查询男生(女生)的人数。2.
29、查询计算06班的最小年龄selectcount(*)fromstudentwheressex=男selectmax(sbirthday)fromstudent6.1.5查询结果排序练习:1.查询所有学生的信息,将结果按系别降序、班级升序排列。2.查询信息系年龄最大的3个学生的信息select*fromstudentorderbydepartdescselecttop3sno,sname,sage,departfromstudentwheredepart=信息系orderbysagedesc6.1.6使用分组练习:1.查询人数大于等于3的班级。2.查询各个姓氏的学生人数。selectclass,
30、count(*)fromstudentgroupbyclasshavingcount(*)=3selectleft(sname,1)as姓氏,count(*)as人数fromstudentgroupbyleft(sname,1)6.2.1连接查询2.查询学生的学号,所选课程的课程号、课程名和学分。3.查询学生的学号、姓名,所选课程的课程号、课程名和成绩信息。selectsno,o,cname,o=o/*92页题*/selectsname,student.sno,o,cname,degreefromcourse,score,studentwherestudent.sno=o=o/*92页题*/6
31、.2.1连接查询3.查询每门课程间接先行课的先行课o,frist.cpno,second.cpno,third.cpnofrom课程表frist,课程表second,课程表thirdwherefrist.cpno=oandsecond.cpno=oandthird.cpnoisnotnull/*109页题*/6.2.3子查询练习:1.查询选修了C语言的学生学号。selectsnofromscorewherecno=(selectcnofromcoursewherecname=C语言)/*139页题*/6.2.3子查询3.查询选修了“C语言”的学生姓名selectsnamefromStudentwheresnoin(selectsnofromScorewherecno=(selectcnofromCoursewherecname=c语言)/*145页第三题*/第 14 页 共 14 页