还剩33页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《数据库原理与应用实验》实验报告册学年第学期学院专业年级姓名学号任课教师MySQL+N__icat__步骤与下载地址百度地址N__icat配置与简单使用百度地址本文档所书写的代码,为本人纯手工敲打,并且通过软件测试成功,欢迎大家进行学习,如有错误,可__本人邮箱实验一创建和维护数据库
一、实验目的
(1)掌握在Windows平台下__与配置MySQL
5.5的方法
(2)掌握启动服务并登录MySQL
5.5数据库的方法和步骤
(3)掌握MySQL数据库的相关概念
(4)掌握使用N__icat工具和SQL语句创建数据库的方法
(5)掌握使用N__icat工具和SQL语句删除数据库的方法
二、实验要求
(1)学生提前准备好实验报告,预习并熟悉实验步骤;
(2)遵守实验室纪律,在规定的时间内完成要求的内容;
三、实验内容及步骤
(1)在Windows平台下__与配置版
(2)在服务对话框中,手动启动或者关闭MySQL服务
(3)使用Net命令启动或关闭MySQL服务
(4)分别用N__icat工具和命令行方式登录MySQL
(5)在my.ini文件中将数据库的存储位置改为D:\MYSQL\DATA
(6)创建数据库
①使用N__icat创建学生信息管理数据库gradem
②使用SQL语句创建数据库MyDB
(7)删除数据库
①使用N__icat图形工具删除gradem数据库
②使用SQL语句删除MyDB数据库
四、思考题常见的数据库产品有哪些?
五、实验总结
1、收获
2、存在的问题实验二管理表
一、实验目的1掌握表的基础知识2掌握使用N__icat管理工具和SQL语句创建表的方法3掌握表的修改、查看、删除等基本操作方法
二、实验要求
(1)学生提前准备好实验报告,预习并熟悉实验步骤;
(2)遵守实验室纪律,在规定的时间内完成要求的内容;
三、实验内容及步骤1在gradem数据库中创建表
2.1~表
2.5所示结构的表表
2.1student表的表结构字段名称数据类型长度小数位数是否允许NULL值说明snochar10否主码snamevarchar8是s___char2是__irthdaydatetime是saddressvarchar50是sdeptchar16是specialityvarchar20是表
2.2course表课程名称表的表结构字段名称数据类型长度小数位数是否允许NULL值说明cnochar5否主码cnamevarchar20否表
2.3sc表成绩表的表结构字段名称数据类型长度小数位数是否允许NULL值说明snochar10否组合主码、外码cnochar5否组合主码、外码degreedeci__l41是1~100表
2.4teacher表教师表的表结构字段名称数据类型长度小数位数是否允许NULL值说明tnochar3否主码tnamevarchar8是t___char2是tbirthdaydate是tdeptchar16是表
2.5teaching表授课表的表结构字段名称数据类型长度小数位数是否允许NULL值说明cnochar5否组合主码、外码tnochar3否组合主码、外码ctermtinyint10是1~102向表
2.1至表
2.5输入数据记录,见表
2.6~表
2.10表
2.6学生关系表studentsnosnames_____irthdaysaddresssdeptspeciality20050101李勇男1987-01-12山东济南计算机工程系计算机应用20050201刘晨女1988-06-04山东青岛信息工程系电子商务20050301王敏女19__-12-23江苏苏州数学系数学20050202张立男1988-08-25河北唐山信息工程系电子商务表
2.7课程关系表coursecnocnamecnocnameC01数据库C03信息系统C02数学C04操作系统表
2.8成绩表scsnocnodegree20050101C019220050101C028520050101C038820050201C029020050201C0380表
2.9教师表teachertnotnamet___tbirthdaytdept101李新男1977-01-12计算机工程系102钱军女1968-06-04计算机工程系201王小花女1979-12-23信息工程系202张小青男1968-08-25信息工程系表
2.10授课表teachingcnotnoctermC011012C021021C032013C0420243在n__icat下修改表结构
①向student表中增加“入学时间”列,其数据类型为日期时间型
②将student表中的sdept字段长度改为20
③将student表中的speciality字段删除
④删除student表4利用SQL命令(createtable、altertable、droptable)完成对表的操作
①利用createtalbe命令完成student表和course表的定义
②利用altertable、droptable命令实现
(3)中的所有任务
四、思考题1在定义基本表语句时,NOTNULL参数的作用是什么?2主码可以建立在“值可以为NULL”的列上吗?
五、实验总结
1、收获
2、存在的问题实验三简单查询——单表无条件和有条件查询
一、实验目的1掌握SELECT语句的基本用法2使用WHERE子句进行有条件的查询3掌握使用IN和NOTIN,BETWEEN…AND和NOTBETWEEN…AND来缩小查询范围的方法4利用LIKE子句实现字符串匹配查询
二、实验要求
1、学生提前准备好实验报告,预习并熟悉实验步骤;
2、遵守实验室纪律,在规定的时间内完成要求的内容;
三、实验内容及步骤在上次实验建立的Gradem或Gradem1数据库中完成下面查询1查询所有学生的基本信息、所有课程的基本信息和所有学生的成绩信息(用三条SQL语句)SELECT*FROMstudent;SELECT*FROMcourse;SELECT*FROMsc;2查询所有学生的学号、姓名、性别和出生日期SELECTsnosnames_____irthdayFROMstudent;3查询所有课程的课程名称SELECTcnameFROMcourse4查询前10门课程的课号及课程名称SELECTcnocnameFROMcourseWHEREcno=105查询所有学生的姓名及年龄SELECTsnameyearnow-year__irthdayFROMstudent;6查询所有年龄大于18岁的女生的学号和姓名SELECTsnosnameFROMstudentWHEREs___=女andyearnow-year__irthday187查询所有男生的信息SELECT*FROMstudentteacherWHEREs___=男andt___=男8查询所有任课教师的姓名(Tname)和所在系别(Tdept)SELECTtnametdeptFROMteacher9查询“电子商务”专业的学生姓名、性别和出生日期SELECTsnames_____irthdayFROMstudentWHEREsdept=电子商务10查询Student表中的所有系名SELECTsdeptFROMstudent11查询“C01”课程的开课学期SELECTctermFROMteachingWHEREcno=c0112查询成绩在80~90分之间的学生学号及课号SELECTsnocnoFROMscWHEREdegreeBETWEEN80and9013查询在1970年1月1日之前出生的男教师信息SELECT*FROMteacherWHEREtbirthday1970-01-01andt___=’男’;14输出有成绩的学生学号SELECTsnoFROMscWHEREdegreeisNOTNULL;15查询所有姓“刘”的学生信息SELECT*FROMstudentWHEREsnameLIKE刘%16查询生源地不是山东省的学生信息SELECT*FROMstudentWHEREsaddressNOTLIKE山东%17查询成绩为79分、__分或99分的记录SELECT*FROMscWHEREdegree=79ordegree=__ordegree=9918查询名字中第二个字是“小”字的男生的学生姓名和地址SELECTsnamesaddressFROMstudentWHEREs___=男andsnameLIKE_小19查询名称以“计算机_”开头的课程名称SELECTcnameFROMcourseWHEREcnameLIKE计算机_20查询计算机工程系和软件工程系的学生信息SELECT*FROMstudentWHEREsdept=计算机工程系ORsdept=软件工程系
四、思考题
1、LIKE的通配符有哪些?分别代表什么含义?通配符含义%有零个或更多个字符组成的任意字符串_任意单个字符[]用于指定范围,例如[A~F],表示A~F范围内的任何单个字符[^]表示指定范围之外的,例如[^A~F],表示A~F范围以外的任何单个字符
2、知道学生的出生日期,如何求出其年龄?SELECTyearnow-year__irthdayFROMstudent;
3、IS能用“=”来代替吗?不能is是用来判断null的,比如re__rkisnull或者re__rkisnotnull=是用来直接比较值的
4、关键字ALL和DISTINCT有什么不同的含义?ALL表示所有的字段,有重复的2条,2条都显示,DISTINCT表示如果有重复的,只取一条
五、实验总结
1、收获经过这节数据库课程的学习,我基本上掌握了创建数据库以及对数据库的操作的基础知识学习了SQL数据库中的增、删、改、查等功能,数据库这门课涉及到以前的知识不多,是一门从头学起的课程,即使基础不是很好,只要认真听讲、复习功课,还是一门比较容易掌握的课
2、存在的问题不够熟悉对数据库系统的操作,不会运用快捷键,需要更多的练习和操作实验四简单查询——分组与排序
一、实验目的1利用GROUPBY子句对查询结果分组2利用ORDERBY子句对查询结果排序3掌握聚集函数的使用方法
二、实验要求
1、学生提前准备好实验报告,预习并熟悉实验步骤;
2、遵守实验室纪律,在规定的时间内完成要求的内容;
三、实验内容及步骤在Gradem或Gradem1数据库中完成下面查询1统计有学生选修的课程的门数SELECTCOUNTDISTINCTcnoFROMcourse2计算“c01”课程的平均成绩SELECT__GdegreeFROMscWHEREcno=c01;3查询选修了“c03”课程的学生的学号及其成绩,查询结果按分数降序排列SELECTsnodegreeFROMscWHEREcno=c03ORDERBYdegreeDESC;4查询各个课程号及相应的选课人数SELECTcnoCOUNTsnoFROMscGROUPBYcno5统计每门课程的选课人数和最高分SELECTCOUNTsno__XdegreeFROMscGROUPBYcno6统计每个学生的选课门数和考试总成绩,并按选课门数降序排列SELECTCOUNTsnosumdegreeFROMscGROUPBYsnoORDERBYCOUNTsnoDESC;7查询选修了3门以上课程的学生学号SELECTsnoFROMscGROUPBYsnoH__INGCOUNTcno38查询成绩不及格的学生学号及课号,并按成绩降序排列SELECTsnocnoFROMscWHEREdegree60ORDERBYdegreeDESC9查询至少选修一门课程的学生学号SELECTsnoFROMscGROUPBYsnoH__INGCOUNTcno110统计输出各系学生的人数SELECTsdeptCOUNT*FROMstudentGROUPBYsdept11统计各系的男、女生人数(两条命令)Selectsdepts___count*FromstudentGroupbysdepts___12统计籍贯的男、女生人数(两条命令)Selectsaddresss___count*FromstudentGroupbysaddresss___13统计各系的老师人数,并按人数升序排序SELECTtdeptCOUNT*FROMteacherGROUPBYtdeptORDERBYCOUNT*DESC14统计不及格人数超过10人的课程号SELECTcnoFROMscGROUPBYcnoH__INGCOUNTdegree601015统计选修人数超过10人的课程号SELECTcnoFROMscGROUPBYcnoH__INGCOUNT*1016查询软件系的男生信息,查询结果按出生日期升序排序,出生日期相同的按地址降序排序SELECT*FROMstudentWHEREs___=男andsdept=信息工程系ORDERBY__irthdaysaddressDESC
四、思考题1聚集函数能否直接使用在SELECT子句、H__ING子句、WHERE子句、GROUPBY子句中?2WHERE子句与H__ING子句有何不同?
五、实验总结
1、收获
2、存在的问题实验五多表查询
一、实验目的1掌握SELECT语句在多表查询中的应用2掌握多表连接的几种连接方式及应用
二、实验要求
1、学生提前准备好实验报告,预习并熟悉实验步骤;
2、遵守实验室纪律,在规定的时间内完成要求的内容;
三、实验内容及步骤在Gradem或Gradem1数据库中完成下面查询1查询计算机工程系女学生的学生学号、姓名及考试成绩SELECTstudent.snosnamesc.degreeFROMstudentscWHEREstudent.sno=sc.snoandstudent.sdept=计算机工程系andstudent.s___=女;2查询“李勇”同学所选课程的成绩不考虑重名SELECTsc.degreeFROMstudentscWHEREstudent.sno=sc.snoandstudent.sname=李勇3查询“李新”老师所授课程的课程名称SELECTcourse.cnameFROMteacherteachingcourseWHEREteacher.tno=teaching.tnoandteaching.cno=course.cnoandteacher.tname=李新4查询女教师所授课程的课程号及课程名称SELECTcourse.cnameteaching.cnoFROMteacherteachingcourseWHEREteacher.tno=teaching.tnoandteaching.cno=course.cnoandteacher.t___=女5查询至少选修一门课程的女学生姓名SELECTstudent.snameFROMstudentscWHEREstudent.sno=sc.snoANDstudent.s___=女GROUPBYstudent.snoH__INGCOUNTsc.cno16查询姓“王”的学生所学的课程名称SELECTcourse.cnameFROMstudentsccourseWHEREstudent.sno=sc.snoANDsc.cno=course.cnoANDsname=王%7查询选修“数据库”课程且成绩在80~90分之间的学生学号及成绩SELECTsc.degreestudent.snoFROMstudentsccourseWHEREstudent.sno=sc.snoANDsc.cno=course.cnoANDcname=数据库ANDdegreeBETWEEN80AND908查询课程成绩及格的男同学的学生信息及课程号与成绩SELECTstudent.*course.cnosc.degreeFROMstudentsccourseWHEREstudent.sno=sc.snoANDsc.cno=course.cnoANDdegree60ANDs___=男9查询选修“c04”课程的学生的平均年龄SELECT__GyearNOW-YEAR__irthdayFROMstudentsccourseWHEREstudent.sno=sc.snoANDsc.cno=course.cnoANDcourse.cno=c0410查询学习课程名为“数学”的学生学号和姓名SELECTstudent.snosnameFROMstudentsccourseWHEREstudent.sno=sc.snoANDsc.cno=course.cnoANDcname=数学11查询“钱军”教师任课的课程号,选修其课程的学生的学号、姓名和成绩SELECTcourse.cnostudent.snosnamesc.degreeFROMteacherteachingcoursestudentscWHEREteacher.tno=teaching.tnoandteaching.cno=course.cnoandcourse.cno=sc.cnoandsc.sno=student.snoandteacher.tname=钱军12查询在第3学期所开课程的课程名称及成绩SELECTcourse.cnamesc.degreeFROMcoursescteachingWHEREteaching.cno=course.cnoandcourse.cno=sc.cnoandcterm=313查询“c02”号课程不及格的学生信息SELECTstudent.*FROMstudentscWHEREstudent.sno=sc.snoandcno=c02anddegree60anddegreeISNULL14查询软件系成绩在90分以上的学生姓名、性别和课程名称SELECTstudent.snames___course.cnameFROMstudentsccourseWHEREstudent.sno=sc.snoandsc.cno=course.cnoandsdept=软件系ANDdegree9015查询同时选修了“c04”和“c02”课程的学生姓名和成绩SELECTstudent.snamesc.degreeFROMstudentsccourseWHEREstudent.sno=sc.snoandsc.cno=course.cnoandcourse.cno=c04ANDcourse.cno=c02
四、思考题1指定一个较短的别名有什么好处?更容易辨识方便查看2内连接与外连接有什么区别?内连接:只有两个表相匹配的行才能在结果集中出现外连接:包括左外连接左边的表不加限制右外连接右边的表不加限制全外连接左右两表都不加限制3“=”与IN在什么情况下作用相同?选值只有一个
五、实验总结
1、收获经过近一个小时的调试,编写,最终得出结论,并进行书写使我加深了对mysql进一步学习和认识,更加熟练了对软件的使用,收获颇丰
2、存在的问题对于语句的使用略显生疏,需要进一步的练习,加深认识实验六嵌套查询
一、实验目的1掌握嵌套查询的使用方法2掌握相关子查询与嵌套子查询的区别3掌握带IN谓词的子查询的使用方法4掌握带比较运算符的子查询的使用方法
二、实验要求
1、学生提前准备好实验报告,预习并熟悉实验步骤;
2、遵守实验室纪律,在规定的时间内完成要求的内容;
三、实验内容及步骤在Grade__nager数据库中完成下面查询1查询计算机系CS学生的学生学号、姓名及考试成绩SELECTstudent.snostudent.snameSC.degreeFROMstudentscWHEREstudent.sno=sc.snoANDsdept=计算机系;2查询“李勇”同学所选课程的成绩SELECTsc.degreeFROMscstudentWHEREstudent.sno=sc.snoANDsname=李勇;3查询“李新”老师所授课程的课程名称SELECTcourse.cnameFROMcourseteacherteachingWHEREteacher.tno=teaching.tnoANDteaching.cno=course.cnoANDtname=李新;4查询女教师所授课程的课程号及课程名称SELECTteaching.cnocourse.cnameFROMteachingteachercourseWHEREteacher.tno=teaching.tnoANDteaching.cno=course.cnoANDt___=女;5查询姓“王”的学生所学的课程名称SELECTcourse.cnameFROMcoursestudentscWHEREstudent.sno=sc.snoANDsc.cno=course.cnoANDsnameLIKE王%;6查询选修“数据库”课程且成绩在80~90分之间的学生学号及成绩SELECTsc.snosc.degreeFROMcoursescWHEREcourse.cno=sc.cnoANDcourse.cname=数据库ANDdegreeBETWEEN80AND90;7查询选修“C04”课程的学生的平均年龄SELECT__GYEARCURDATE-YEARstudent.__irthdayAS选修C04课程的学生平均年龄FROMstudentscWHEREstudent.sno=sc.snoANDsc.cno=c048查询学习课程名为“数学”的学生学号和姓名SELECTstudent.snostudent.snameFROMstudentcoursescWHEREstudent.sno=sc.snoANDcourse.cno=sc.cnoANDcourse.cname=数学9查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩SELECTcnosnodegreeFROMscWHEREcnoinSELECTcnoFROMteachingteacherWHEREteacher.tno=teaching.tnoANDtname=钱军10查询在第3学期所开课程的课程号及成绩SELECTcnodegreeFROMscWHEREcnoinSELECTcnoFROMteachingWHEREcterm=311查询与“李勇”同一个系的同学姓名SELECTsnamefromstudentWHEREsdeptinSELECTsdeptFROMstudentWHEREsname=李勇12查询学号比“刘晨”同学大,而出生日期比他小的学生姓名SELECTsnamefromstudentWHEREsnoANYSELECTsnofromstudentWHEREsname=刘晨andyear__irthdayallSELECTyear__irthdayfromstudentWHEREsname=刘晨13查询出生日期大于所有女同学出生日期的男同学的姓名及系别selectsnamesdeptfromstudentwhereyear__irthdayallselectyear__irthdayfromstudentwheres___=女ands___=男14查询成绩比该课程平均成绩高的学生的学号及成绩selectsnodegreefromscwheredegree=select__gdegreefromstudentscwherestudent.sno=sc.sno15查询不讲授“C01”课的教师姓名selecttnamefromteacherteachingwhereteacher.tno=teaching.tnoandcno!=c0116查询没有选修“C02”课程的学生学号及姓名selectstudent.snosnamefromstudentscwherestudent.sno=sc.snoandcno!=C0217查询选修了“数据库”课程的学生学号、姓名及系别selectsnamestudent.snosdeptfromstudentsccoursewherestudent.sno=sc.snoandsc.cno=course.cnoandcname=数据库18查询“C02”号课程不及格的学生信息select*fromstudentscwherestudent.sno=sc.snoandcno=c02anddegree60
四、思考题1子查询一般分为几种?4种2相关子查询的执行过程是什么?依赖于父查询的查询
五、实验总结
1、收获进一步的练习了嵌套查询和夺标连接,学到更多的知识,受益良多
2、存在的问题还是不够熟悉,需要进一步的学习和复习实验七数据更新
一、实验目的1掌握利用INSERT命令实现对表数据的插入操作2掌握利用UPDATE命令实现对表数据的修改操作3掌握利用DELETE命令实现对表数据的删除操作
二、实验要求
1、学生提前准备好实验报告,预习并熟悉实验步骤;
2、遵守实验室纪律,在规定的时间内完成要求的内容;
三、实验内容及步骤在Gradem或Gradem1数据库中完成下面操作注意利用SELECTINTO…命令备份Student、SC、Course这3个表,备份表名自定1向Student表中插入记录20050203,张静,1981-3-21,女,CS,电子商务INSERTINTOstudentsnosname__irthdays___sdeptspecialityVALUES20050203张静1982-3-21女CS电子商务;2插入学号为“20050302”、姓名为“李四”的学生信息INSERTINTOstudentsnosnameVALUES20050202李四;3把计算机系的学生记录保存到表TS中TS表已存在,表结构与Student表相同INSERTINTOtsSELECT*FROMstudentWHEREsdept=计算机4将学号为“20050202”的学生姓名改为“张华”,系别改为“CS”,专业改为“多媒体技术”UPDATEstudentSETsname=张华sdept=csspeciality=多媒体技术WHEREsno=20050202;5将“李勇”同学的专业改为“计算机信息管理”UPDATEstudentSETspeciality=计算机管理WHEREsname=李勇;6把选修了“数据库”课程而成绩不及格的学生的成绩全改为空值NULLUPDATESCSETdegree=NULLWHEREcnoinSELECTcnofromcourseWHEREcname=数据库ANDdegree607删除学号为“20050302”的学生记录DELETEFROMstudentWHEREsno=200503028删除“计算机系”所有学生的选课记录DELETEFROMscWHEREsnoinSELECTsnofromstudentWHEREsdept=计算机系9删除SC表中尚无成绩的选课记录DELETEFROMscWHEREdegree=NULL10把“张晨”同学的成绩记录全部删除DELETEFROMscWHEREsnoinSELECTsnoFROMstudentWHEREsname=张晨
四、思考题1DROP命令和DELETE命令的本质区别是什么?DROP删除整个表,表结构和数据DELETE删除表的某一行,不删除表结构2利用INSERT、UPDATE和DELETE命令可以同时对多个表进行操作吗?不能,只能单个表
五、实验总结
1、收获进一步的熟悉了mysql的运用,记住了很多插入,修改,删除的语句
2、存在的问题不够熟练,需要背语句结构实验八视图
一、实验目的1理解视图的概念2掌握创建、更改、删除视图的方法3掌握使用视图来访问数据的方法
二、实验要求
1、学生提前准备好实验报告,预习并熟悉实验步骤;
2、遵守实验室纪律,在规定的时间内完成要求的内容;
三、实验内容及步骤1使用SQL语句创建、管理视图1创建视图
①创建一个名为sc_view1的视图,从数据库gradem的sc表中查询出成绩大于90分的所有学生选修成绩的信息
②创建一个名为sc_view2的视图,从数据库gradem的sc表中查询出成绩小于80分的所有学生的学号、课程号、成绩等信息
③创建一个名为sc_view3的视图,由数据库gradem的student、course、sc表创建一个显示“20070303”班学生选修课程包括学生姓名、课程名称、成绩等信息的视图
④创建一个从视图sc_view1中查询出课程号“c01”的所有学生的视图2修改视图的定义修改视图sc_view1,使其从数据库gradem的sc表中查询出成绩大于90分且第3学期的所有学生选修成绩的信息3视图的删除
①将视图sc_view1删除4管理视图中的数据
①从视图sc_view2中查询出学号为“2007030125”、课程号为“a01”的学生选修成绩的信息
②将视图sc_view2中学号为“2007030122”、课程号为“c02”的成绩改为87
③从视图sc_view2中将学号为“2007030123”、课程号为“a01”的学生信息删除
四、思考题向视图中插入的数据能进入到基本表中去吗?修改基本表的数据会自动反映到相应的视图中去吗?
五、实验总结
1、收获
2、存在的问题实验九数据库的安全性
一、实验目的1理解MySQL的权限系统的工作原理2理解MySQL账户及权限的概念3掌握管理MySQL账户和权限的方法4学会创建和删除普通用户的方法和__管理的方法5学会如何进行权限管理
二、实验要求
1、学生提前准备好实验报告,预习并熟悉实验步骤;
2、遵守实验室纪律,在规定的时间内完成要求的内容;
三、实验内容及步骤1利用N__icat图形工具实现下列操作
①使用root用户创建aric用户,初始__设置为abcdef让该用户对gradem数据库拥有SELECT、UPDATE、DROP权限
②用aric用户登录,利用aric用户来验证自己是否有GRANT权限和CREATE权限
③用root用户登录,收回aric用户的删除权限2利用命令实现下列操作进行本实验的准备工作是以root的身份完成了表student、course、sc的创建
(一)授权
1.以root的身份登陆mysql,创建用户u1+学号后四位,u2+学号后四位,u3+学号后四位,u4+学号后四位
2.用户root把查询Student表权限授给用户u1+学号后四位,验证u1能够执行相应的查询1)查询所有姓刘的学生的姓名、学号和性别2)查询名字中第二字为“勇”字的学生的姓名和学号
3.用户root授予用户u4+学号后四位对student表的insert权限,并允许此权限传播
4.用户u4+学号后四位将对表student的insert权限授予u3+学号后四位,并允许将权限转授给其他用户(例如u3+学号后四位),描述过程及操作
(二)回收权限1.收回所有用户对表sc的查询权限2.收回用户u4对student表的insert权限3.在回收权限之后验证用户是否真正丧失了该权限(查询表,插入记录),描述过程及提示信息
四、实验总结
1、收获
2、存在的问题实验十数据库的完整性
一、实验目的1理解MySQL的实体完整性的定义2理解MySQL的参照完整性的定义3理解MySQL的自定义完整性的定义
二、实验要求
1、学生提前准备好实验报告,预习并熟悉实验步骤;
2、遵守实验室纪律,在规定的时间内完成要求的内容;
3、实验内容及步骤
(1)实体完整性1.建立部门表DEPTdeptnodeptname,部门编号Deptno列为主码写出两种方式一种在列级定义主码,一种是在表级定义主码2.建立成绩表sc1snocnograde,将sno、cno属性组定义为码
(2)参照完整性1.建立成绩表sc2snocnograde,(sno、cno)是主码,sno、cno分别参照引用student表上的sno和course表的cno主码2.insert操作验证外键约束
(1)在sc2中插入数据(’1001’’01’95),假设cno=’01’的数据存在,而sno=’1001’的数据不存在,执行结果是什么?
(2)在student表中添加sno=’1001’的数据,然后继续执行
(1)中的插入数据操作,执行结果是什么?
3、delete操作验证外键约束
(1)MySQL在外键的删除上有RESTRICT、NOACTION类似RESTRICT、CASCADE和SETNULL四种行为,默认是那种行为?在默认情况下,对student表中的sno=’1001’的记录,执行删除操作时,执行结果是什么?若执意要删除该条记录,需要如何操作?
(2)SETNULL指当删除主表中被引用列的数据时,将子表中相应引用列的值设置为NULL值SETNULL有个前提就是外键引用列必须可以设置为NULL把sc表的sno外键约束删除,将外键约束的删除行为改为SETNULL,并验证该删除策略
(3)CASCADE指当删除主表中被引用列的数据时,级联删除子表中相应的数据行把sc表的sno外键约束删除,将外键约束的删除行为改为CASCADE,并验证该删除策略
(三)自定义完整性1.修改部门表DEPT,要求添加约束constraintc1部门名称Dname列取值唯一2.建立学生登记表Student2,要求学号在9000至9999之间(约束名默认),年龄29(约束名为a2)性别只能是’男’或’女’(约束名默认),姓名非空3.修改表Student的结构,由年龄小于29改为小于40(先删除原有的约束,再添加新约束)
四、实验总结
1、收获
2、存在的问题。