资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1 .实验五数据库完整性与安全性实验1.1 实验目的3. .通过对完整性规则的定义实现,熟悉了解Mysql中完整性保证的规则和实现方法,加深对数据完整性的理解。4. .通过对安全性相关内容的定义,熟悉了解Mysql中安全性的内容和实现方法,加深对数据库安全性的理解1.2实验内容1 完整性实验2 分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;3 分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束;4 向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;5 删除学生表中的所有数据,验证参照完整性约束;6 定义存储过程,完成查询某个学生的选课情况,并执行。7 定义触发器,当向学生表插入新的一条记录时,将所有学生出生日期加1;并对其进行测试。8 用sql完成以上操作。1 安全性实验1 定义一新的登陆帐号、数据库用户,并授予其访问学生数据库的读权限;2 分别用sa用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改;3 再次用此用户访问学生数据库,并对其中的学生表数据进行修改。4 用SQL语句分别完成以上内容。4.2. 实验环境Window8操作系统Mysql版本数据库Mysqlworkbench可视化工具Mysql命令行编辑器4.3. 实验步骤及结果分析4.3.1. 完整性4 分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束1.首先因为在之前创建表的时候定义了主键,因此,我们需要先将所有表的主键撤销掉,然后重新创建主键。Mysql语句(删除主键):altertablestudentdropprimarykey;altertablecoursedropprimarykey;altertablescdropprimarykey;alterstudentdropprimaryhcviueryOK,54rousaffectedecords:54Duplicates=l/arnings=BaltertAblecoursedropprinarvueUK,5rousAffectedWarnings:0addjprlnarvl(ei/cno?;1-14sec?Warnings:0pplnari/IcejKsno;Warnings:03.至iJ此,我们已经重新添加了各表的主键,接下来我们为SC表添加外键。Mysql语句(创建外键):altertablescaddconstraintforeignkey(sno)referencesstudent(sno);altertablescaddconstraintforeignkey(cno)referencescourse(cno);Mysql语句(创建主键):altertablestudentaddprimarykey(sno);altertablecourseaddprimarykey(cno);altertablescaddprimarykey(sno,cno);nysql?altertablestudentaddprimarykeyCsno?QueryOK,0rousaffectedHecords:0Duplicates-0mysql?iyEqlaltertablecourseQuevyOK,0rowsaffectedRecordstHDuplicates:0mysqlaltertablescaddQueryOK,0ibowsaffectedRecords:0Duplicates:0nysqlaltertablescAddconstraintforeignkcy9uet*yOK,142rowsaffectedaltertablescdddconstraintforeignkcj/referencescourse9ueryOK,142rou*Ffectedshoivjcr&atetablestudent;_i!TableICreateTableistudent1CREATETABLEstudent1snoua.rchaiNOTNULL,snaraeuarciarC6DEFAULTNULL.嚣exvarchatDEFAULTNULL.bdatfe1datetimeDEFAULTNULL,deptvaFtharDEFAULTNULL.cla5sna1varcharDEFAULTNULLPFmftRVKE?ENGINE=InnoDBDEFAULTCHARSEI=utfSCDUi*&eGn。Gname!CBEfiTETABLEcoursevarcharNOTNULL.varcharDEFAULTNULL.DiouintCllDEFAULINULL,creditintCilDEFAULTHULL,*seraesteivarehapDEFAULTNULLPRIMARVKEVCcino*ENGlNE=lnnoDBDEFAULTCHARSEI=utf8!sc!CREATETABLE心.ShouaiCliarNOTNULLcnouarchapCS)MOTNULL,DEFAULTNULUFRirARVKEV*sno4,cnoKEVcnaCONSTRAINTsc_ibfkLFOREIGNKEYCn。)HEFEHENCESstudsnt1(飞nn3CONSTRAINTsc_ihfk_2FOREIGNKEVCcno?REFERENCEScourseInsertintostudent30203茹兴康*男,19号7-07-0700:00:00f,*章机,33174,);WRBOR1062(23000:DuplicateentryJ30203JforkeyJIPRIMRR?J上面结果显示:添加失败,因为sno为student表的主键,不能重复,验证了其完整性约束。.同上,我们向course表中添加一个具有相同cno的课程。Mysql语句:select*fromcourse;insertintocoursevalue(C0傲据库,5匿);1,n)ysqlselect*froncouvse;enocnarneIhoui!creditsemester理社成s原统曲组谭强g算编皙Jo计rotisinsetsecinsertIntacourseC01/数中居库/5物,/i*J春);RROR1062=PuvlicateentrJC61JfprWyJPRIMAEyj上面结果显示:成功验证了完成性约束。向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束向学生表中添加一条数据,其中课程编号在course中不存在,我选择了C06号。Mysql语句(向学号为30203的学生选课中添加C06选课):insertintoscvalues(30203,C06,100);吧寻qlinsertintoSCvAlues;EJRROR14S2:CannotaddofupdAteachildt*ow:afot*eignkeyconstvaintfailslsc,CONGTHAIHTTsc_ihfk_2*FOREIGNKEVcnol)REFERENCEScours8由结果来看:插入失败,因为course的cno是SC的外码,C06在course中不存在,由于参照完整性约束,所以添加失败,验证成功。删除学生表中的所有数据,验证参照完整性约束删除学生表,验证参照完整性约束。Mysql语句:droptablestudent;i5rsqldroptablestudent;ERROR1217:Cannotdeletorupdateaparenttow:aforeignkeyccnstraiitfails由结果来看:由于student中的sno是sc的一个外码,所以不能删除student,成功验证了参照完整性约束。定义存储过程,完成查询某个学生的选课情况,并执行.首先定义一个根据学生学号搜索的存储过程。但是由于;是一个结束标志,因此存储过程定义失败,因为第一个遇到语句的时候,该语句还没结束导致;后面的语句没有加工riysqlcreateprocedniesearcli_sc_snoYouhaveanerrorinSQLsyntax;checkthemanualthatcoriespondstoyourMySQLserveruet*sionfortherightsyntaxtousenear1,atline2.解决
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号