资源描述:
《华南农业大学数据库系统概念实验报告四》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、《数据库系统》实验报告四学号姓名实验时间2014-12-3实验名称数据库模式管理实验学时4准备材料1.SQLPlus命令手册2.Oracle数据字典3.Oracle中的数据类型扩展实验1.掌握在企业管理器中进行表的创建和管理的方法。2.利用企业管理器观察数据库的物理模式。(此部分内容不要求在实验室完成,不用写入实验报告。)实验环境Oracle9i(及以上版本)服务器SQLPlus/SQLPlusworksheet客户端实验目的1.掌握使用SQL语句进行表的创建和管理的方法2.加深对关系数据库结构和数据完整性等概念的理解实验内容及步骤1.创建书上univer
2、sity数据库中所有的表,并使用命令观察用户所有表的表名、观察每张表的结构及每张表上的约束信息。select*fromuser_tables;descSECTION;select*fromuser_constraintswheretable_name='SECTION';2.修改表结构(1)在instructor表中增加列存储教师家庭地址,其地址包括省、市、区、街道、门牌号等列,列的数据类型自己给出,列允许为空。altertableinstructoradd(provincevarchar(30),cityvarchar(30),streetvarchar
3、(30),house_numbervarchar(30));(2).对student表中的姓名字段长度都改为10,设置是否成功?原因是什么?将该字段长度改为50,能否成功?说明原因。altertablestudentmodifynamevarchar(10);修改成功altertablestudentmodifynamevarchar(50);修改成功只要修改的长度若大于已存在的字符的最大长度都行(3)为student表中tot_cred列设置默认值0,插入一个新学生,且不给其tot_cred列赋值,观察结果。altertablestudentmodify
4、tot_creddefault0;insertintostudent(ID,NAME,DEPT_NAME)values(110,'zhuanghan','Finance');selectID,NAME,DEPT_NAMEfromstudent;(4)student表中tot_cred列是对总学分的统计,现在数据库中没有记录哪些学生已选修课程学分已累加,哪些课程的学分还没有累加。设计一种方案记录已累加课程,防止出现重复累加的情况。或者设计一种方案简化总学分的计算过程。方案:对takes表增加多一个字段isComputed作为标记,已经被累加的则这个字段为1,
5、没有被累加的为零,统计时就只需要找到takes上isComputed为0的数据进行累加(5)删除takes表上对student表ID的外键约束,再添加takes表是对student表ID的外键约束,观察并解释实验结果。添加一个不存在的学生选修CS001课程的信息,并给他一个成绩。再添加takes表是对student表ID的外键约束,观察并解释实验结果。ALTERTABLETAKESDROPCONSTRAINTSYS_C0054665;ALTERTABLETAKESADDCONSTRAINTSYS_C0054665FOREIGNKEY(id)REFERENC
6、ESSTUDENT(id);insertintotakesvalues('1111','CS-001','1','Spring','2013','A');ALTERTABLETAKESADDCONSTRAINTSYS_C0054665FOREIGNKEY(id)REFERENCESSTUDENT(id);(6)设置takes表ID,course_id,sec_id三个字段非空,是否能设置成功,对插入数据有没有影响?删除takes表主键约束,增加某同学选同一门课程(id,couese_id,sec_id,semester,year,grade都相同)的信息,
7、能否插入成功?解释原因。altertabletakesmodify(IDnotnull,course_idnotnull,sec_idnotnull);插入的数据这三个字段必须不为空,修改设置时,如果字段有为NULL则修改失败。ALTERTABLETAKESDROPPRIMARYKEY;3.参照表student建立一张空表student1。要求用两种方法实现(createtable;createtableas…)。createtablestudent1(IDvarchar(5),namevarchar(20)notnull,dept_namevarchar
8、(20),tot_crednumeric(3,0)check(to