北邮数据库实验报告mysql_北邮大三下第5次数据库实验报告--mysql.doc

本文是关于北邮大三下学期的第五次数据库实验报告,重点探讨了MySQL中的数据库完整性和安全性。实验内容包括定义主键、外键以实现完整性约束,测试实体和参照完整性,创建存储过程和触发器,以及设置数据库用户权限。实验结果显示,MySQL的完整性约束能够有效防止数据错误,而权限管理则确保了数据的安全访问。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gif北邮大三下第5次数据库实验报告--mysql.doc

CATHERINE2015/6/22实验五数据库完整性与安全性实验一、实验内容11完整性实验(1)分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;(2)分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束;(3)向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;(4)删除学生表中的所有数据,验证参照完整性约束;(5)定义存储过程,完成查询某个学生的选课情况,并执行。(6)定义触发器,当向学生表插入新的一条记录时,将所有学生出生日期加1;并对其进行测试。(7)用SQL完成以上操作。12安全性实验内容(1)定义一新的登陆帐号、数据库用户,并授予其访问学生数据库的读权限;(2)分别用SA用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改;(3)再次用此用户访问学生数据库,并对其中的学生表数据进行修改。(4)用SQL语句分别完成以上内容。二、实验要求1用SQL语句完成以上操作2要求学生独立完成以上内容。3实验完成后完成要求的实验报告内容。三、实验环境系统WINDOWS7软件MYSQL56四、实验步骤及结果分析41完整性实验CATHERINE2015/6/22111分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;主键约束(建立表格时已经完成)实现实体完整性约束。CREATETABLECOURSECNOVARCHAR3NOTNULL,CNAMEVARCHAR12DEFAULTNULL,LHOURINTDEFAULTNULL,CREDITINTDEFAULTNULL,SEMESTERVARCHAR2DEFAULTNULL,PRIMARYKEYCNOCREATETABLESCSNOVARCHAR6NOTNULL,CNOVARCHAR3NOTNULL,GRADEINTDEFAULTNULL,PRIMARYKEYSNO,CNOCREATETABLESTUDENTSNOVARCHAR6NOTNULL,SNAMEVARCHAR6DEFAULTNULL,SEXVARCHAR2DEFAULTNULL,BDATEDATETIMEDEFAULTNULL,DEPTVARCHAR8DEFAULTNULL,CLASSNOVARCHAR4DEFAULTNULL,PRIMARYKEYSNO外键实现参照完整性约束;ALTERTABLESCADDCONSTRAINTSNOFOREIGNKEYSNOREFERENCESSTUDENTSNOALTERTABLESCADDCONSTRAINTCNOFOREIGNKEYCNOREFERENCESCOURSECNOCATHERINE2015/6/22查看插入结果112分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束;由下图知,插入失败,失败原因【173625INSERTINTOSTUDENTVALUES 31401 , 郭子敬 , 男 , 1980120000 , 计算机 , 3146 ERRORCODE1062DUPLICATEENTRY 31401 FORKEY PRIMARY 0015SEC】,说明主键能够标识表中每条信息的唯一性,不可以重复。CATHERINE2015/6/22113向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;删除学生表中的所有数据,验证参照完整性约束;插入数据失败,失败原因【174304INSERTINTOSCVALUES 31401 , D03 ,NULLERRORCODE1452CANNOTADDORUPDATEACHILDROWAFOREIGNKEYCONSTRAINTFAILSSTUDENTSC,CONSTRAINTCNOFOREIGNKEYCNOREFERENCESCOURSECNO0109SEC】,因为课程号“D04”不存在于课程表中。CATHERINE2015/6/22114删除学生表中的所有数据删除失败,受参照完整性约束的影响,失败原因【174725DELETEFROMSTUDENTERRORCODE1175YOUAREUSINGSAFEUPDATEMODEANDYOUTRIEDTOUPDATEATABLEWITHOUTAWHERETHATUSESAKEYCOLUMNTOCATHERINE2015/6/22DISABLESAFEMODE,TOGGLETHEOPTIONINPREFERENCESSQLQUERIESANDRECONNECT0015SEC】115定义存储过程,完成查询某个学生的选课情况,并执行。这里需要注意的是DELIMITER和DELIMITER两句,DELIMITER是分割符的意思,因为MYSQL默认以““为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MYSQL才会将““当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。DELIMITERCREATEPROCEDURETESTBEGINSELECTSTUDENTSNO,STUDENTSNAME,SCCNOFROMSTUDENT,SCWHERESTUDENTSNOSCSNOANDSTUDENTSNO 31401 END建立存储过程运行存储过程CATHERINE2015/6/22查看存储过程116定义触发器,当向学生表插入新的一条记录时,将所有学生出生日期加1;并对其进行测试。需要建立一个新的TABLE,然后通过对旧TABLE的操作来触发对新TABLE的操作,而不能通过一个表的INSERT触发对同一个表的操作。创建触发器CREATETRIGGERAAFTERINSERTONSTUDENTFOREACHROWUPDATESTUSETBDATEDATE_ADDBDATE,INTERVAL1DAY注DATE_ADDDATE,INTERVALEXPRTYPE函数向日期添加指定的时间间隔。CATHERINE2015/6/22事件没有触发前表的状态CATHERINE2015/6/22测试INSERTINTOSTUDENTVALUES 31455 , 冯宇宁 , 男 , 1980120000 , 计算机 , 3146 42安全性实验内容1定义一新的登陆帐号、数据库用户“ZYR”,,并授予其访问学生数据库的读权限;CATHERINE2015/6/22授权用户ZYR访问学生数据库的读权利。查看2分别用超级用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改;ROOT用户访问STUDENT数据库ROOT用户修改登陆新建数据库CATHERINE2015/6/22新建用户ZYR访问数据库新建用户ZYR修改数据库因为用户‘ZYR’只有查询权限,没有修改权限,所以修改失败。五、实验总结(1)设置触发器后,测试时,插入失败,失败原因【101211INSERTINTOSTUDENTVALUES 31430 , 张明 , 女 , 1980120000 , 计算机 , 3146 E

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值