若要创建外键约束可参阅如下代码:
ALTERTABLE"SC"ADDCONSTRAINT"SC_C_FK1"FOREIGNKEY("CNO")
REFERENCES"C"("CNO")ENABLE;
检查约束可参考如下代码:
ALTERTABLE"S"ADDCONSTRAINT"S_C_FK1"
Check(sexin(‘男’,’女’)));
默认值约束可参考如下代码:
ALTERTABLE"S"MODIFY("SEX"CHAR(2CHAR)DEFAULT'男');
四、实验预习和准备
完成本次实验首先要熟悉SQL语句如何创建数据库表,同时还要熟悉如何使用Alter语句创建主、外键,创建默认值、规则等。
五、实验过程与结果
七、实验小结和体会
本次实验的目的是掌握Oracle中数据库和表以及数据类型的创建,同时能够熟练地进行表及表间数据完整性约束的创建。
上次实验已经掌握了如何创建表,本次实验则是比较注重约束条件,比如说主键约束等,条件约束在软件和DOS段都可以使用,本次实验受益很大,值得回味!
实验三SQL查询技术
一、实验目的
掌握常用的查询技术,能够熟练的运用各种查询和汇总方式进行数据的查询和统计。
二、实验环境
本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。
三、实验内容与要求
1)查询所有学生的学号、姓名、年龄信息,并以年龄升序排列。
2)查询每一个学生选修课程的门数、最高分、最低分、平均分,以门数降序排列。
3)查询除“李明”外所有姓“李”和姓“张”的学生信息。
4)在选课关系中查询每门课程的选修人数、平均成绩,并将平均成绩大于70分的课程的课程号、选修人数和平均成绩显示出来。
5)查询“计算机系”选修“数据库系统概论”课程且成绩大于60分的学生姓名和成绩。
(分别用内连接和子查询实现)
6)查询所有课程的选修情况(包含没有学生选修的课程),包括课程名称、学分、学生姓名和成绩。
7)查询至少选修了“3”号学生选修所有课程的学生的学号和姓名。
四、实验预习和准备
参照相关书籍和文档,熟悉Select语句的各种用法。
五、实验过程与结果
1、selectsno,sname,to_char(sysdate,’yyyy’)-to_char(birthday,’yyyy’)asagefromSorderbyage;
2、selectsno,count(cno),max(grade),min(grade),avg(grade)fromSCgroupbysnoorderbycount(cno)desc;
3、select*fromSwheresnamelike‘李%’orsnamelike‘张%’minusselect*fromSwheresnamelike‘李明’;
4、selectcno,count(sno),avg(grade),fromSCgroupbycnohavingavg(grade)>70;
5、内连接:
selectS.sname,SC.gradefromS,SC,DEPT,CwhereS.sno=SC.snoandS.deptno=DEPT.deptnoandDEPT.deptnamelike‘计算机系’andC.cnamelike‘数据库系统概论’andC.cno=SC.cnoandSC.grade>60;
子查询:
selectS.sname,SC.gradefromSJOINSConS.sno=SC.snowhereS.snoin(selectsnofromSwhereS.deptno=(selectdeptnofromDEPTwheredeptnamelike’计算机系’))andSC.cnoin(selectcnofromCwherecnamelike’数据库系统概论’)andSC.grade>60;
6、selectC.name,C.credit,SC.grade,S.sname
fromCLEFTOUTERJOINSConC.cno=SC.cnoLEFTOUTERjoinSonSC.sno=S.sno;
7、selectDISTINCTsnofromSCSCXwherenotEXISTS(select*fromSCSCYwhereSCY.sno='3'andnotEXISTS(select*fromSCSCZwhereSCZ.Sno=SCX.SnoandSCZ.cno=o));
六、实验小结和体会
通过本次实验,让我想起了SQL语言和ORCL语言很多相似的地方,内链接和子查询等等,充分掌握好SQL语言,对学习ORCL语言的帮助很大。
实验四PL/SQL基础
一、实验目的
掌握常用的PL/SQL变量和语句,能够熟练的运用循环结构、条件语句等进行程序设计。
一、实验环境
本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。
三、实验内容与要求
(3)用数组实现C表中课程号和课程名的显示,要求将C表中的课程号赋给数组的索引,将课程名作为数组元素,同时反序输出数组的索引和元素。
(4)用多分支条件case语句实现sc表中成绩的等第转换,优秀(>=90)、良好(80-90)、中等(70-80)、及格(60-70)、不及格(<60)。
(5)用游标实现成绩学分绩点的计算,要求显示学生姓名、课程名、学分、成绩、学分绩点等信息。
学分绩点=学分*对应绩点,成绩和对应绩点的关系表如下:
成绩
对应绩点
>=90
5
80-89
4
70-79
3
60-69
2
<60
0
如:
某门课该学生的成绩为72分,该课程的学分为4,则该生该门课的学分绩点=4*3=12。
四、实验预习和准备
了解PL/SQL的常变量的定义,熟悉流程控制语句和游标的使用。
五、实验过程与结果
六、实验小结和体会
实验五索引和视图
一、实验目的
掌握oracle中索引和视图的基本原理,能够熟练的创建使用索引和视图。
二、实验环境
本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。
三、实验内容与要求
1.对s表的sname字段创建唯一索引。
2.给sc表中的sno和cno两个字段创建连接索引。
3.给dept表中的deptname字段创建B树索引,同时设定数据块的预留空间为40%。
4.给c表中的cname字段定义函数索引,要求查询时忽略cname两边的空格。
5.创建视图view_sc,要求显示学生的姓名、课程名、成绩,以成绩降序排列;同时在此视图的基础上查询,要求统计出不同课程的选课人数,并显示大于2人的课程名和人数。
6.使用内嵌视图实现如下查询:
显示各个系部的名称、学生人数和学生人数所占的比例。
四、实验预习和准备
了解PL/SQL的索引和视图的定义,熟悉创建和使用索引和视图。
五、实验过程与结果
六、实验小结和体会
实验六存储过程和触发器
一、实验目的
掌握Oracle中存储过程和触发器的创建和调用方法。
二、实验环境
本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。
三、实验内容与要求
1)创建并执行一个存储过程,要求向选课关系中插入一条记录,记录的内容以参数的方式进行传递。
2)创建并执行一个存储过程,能根据输入的学号查找出学生的姓名。
3)创建并执行一个函数,能根据输入的学号和课程号查找出学生的成绩。
4)创建一个触发器,当删除学生表的学生信息时,自动删除该学生所选修的课程信息。
5)创建一个触发器,在插入学生表的学生信息时,当出生日期小于当前系统日期时,不允许插入数据。
四、实验预习和准备
参照相关书籍和文档,熟悉CreateProcedure、createFunction、createTrigger等指令的用法。
五、实验过程与结果
六、实验小结和体会