ZHOUUNIV实 验 报 告
实验课程名称: Oracle数据库
本次实验是第 二 次名称为: 交互式SQL 学 生 姓 名: 车淳 班 级 计算机144 学 号 ******** 学 院(系): 信息数理学院 指 导 教 师: 石林 成 绩: 实 验 时 间: 2017 年 4 月 14 日
RSECHANG ITY实验二 交互式SQL
2.1数据定义部分
实验目的:
熟悉Oracle Database XE 的SQL命令窗口的启动及使用。掌握SQL的数据定义语言的使用;理解数据库对象的概念。通过PL/SQL Developer访问Oracle服务器。
(1)通过PL/SQL Developer访问Oracle服务器
(2)熟练掌握SQL查询语句的使用。主要练习各种查询语句的构造,其中包括单表查询、连接查询、嵌套查询和集合查询。重点掌握连接查询和嵌套查询
实验内容与步骤:
1. 通过PL/SQL Developer环境下,使用SQL语言定义Student_学号(由于每个同学访问了同一台Oracle服务器,所以表名后加上每个同学自己的学号)表,该表的结构描述如下:
表3.1 Student_学号 表结构
列名 Sno Sname Ssex Sage Sdept
数据类型 CHAR(9) VARCHAR2(10) CHAR(4) NUMBER(2) CHAR(4) 是否为空 否 否 否 否 可以 约束 该列为主码 要求性别只能为男或女 年龄限制在16到25之间(包含) 注意,主码的定义和约束条件的定义。
2. 在PL/SQL Developer环境下,使用SQL语言定义Course_学号表,该表的结构描述如下:
表3.2 Course_学号表结构
列名 Cno Cname Cpno CCredit
数据类型 CHAR(2) CHAR(14) CHAR(2) NUMBER(1) 是否为空 否 否 是 否 约束 该列为主码 该列为外码 注意,要将Cno定义为主码,Cpno定义为外码。
3. 在PL/SQL Developer环境下,使用SQL语言定义SC_学号表,该表的结构描述如下:
2
表3.3 SC_学号表结构
列名 Sno Cno Grade
数据类型 CHAR(9) CHAR(2) NUMBER(3) 是否为空 否 否 是 约束 该列为外码 该列为外码 注意,该表的主码为Sno和Cno的组合,同时Sno和Cno都是外码。要求定义表时定义这些主码和外码。
4. 插入数据
使用INSERT语句将下面三个表中的数据插入到相应的表中。可以使用SELECT语句查看表中的数据。
表3.4 Student_学号表数据
Sno 200215121 200215122 200215123 200215125
Sname 李勇 刘晨 王敏 张立 Ssex 男 女 女 男 Sage 20 19 18 19 Sdept CS IS MA IS
表3.5 Course_学号表数据
Cno 1 2 3 4 5 6 7
Cname 数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言 Cpno 5 1 6 7 6 Ccredit 4 2 4 3 4 2 4
3
表3.6 SC_学号表数据 Sno 200215121 200215121 200215121 200215122 200215122 200215123 200215123
Cno 1 2 3 2 3 4 5 Grade 92 85 88 90 80 87 92 5. 使用ALTER TABLE 语句修改Student表为其增加一个BirthDay列,类型为DATE。
6. 使用CREATE INDEX语句在Student表的Sage列上建立一个名为Age_Index的索引,要求索引为升序。使用SELECT语句查询Student表,看有什么变化?为什么?使用DROP INDEX语句删除该索引。
2.1. 单表查询
(1)查询全体学生的详细信息;
(2)查询全体学生的姓名,学号和所在系;
(3)查询全体学生的姓名及出生年份;
(4)查询学校共有哪些系;
(5)查询所有年龄在20岁以下的学生姓名及其年龄;
4
(6)查询年龄不在20~23岁之间的学生姓名、系别和年龄 。
(7)查询课程表中课程名中包含“数据”的课程信息。
(8)查询全体学生情况,查询结果按所在系升序排列,系相同按学生年龄降序排列。
(9)查询选修了课程的学生人数。
(10)查询选修了“数据库”课程的人数、最高分、最低分和平均分。
(11)查询男女同学的平均年龄。
(12)查询选修了3门以上课程的学生学号。
(13)查询有10人以上选修的课程名。
2. 集合查询
假设有一个Teacher表记录教师的信息,其中包括Tname表示教师名。用UNION、INTERSECT和MINUS完成下列查询。
(1)求计算机系的学生和年龄不大于19岁的学生的并集。
(2)查询所有在职学生信息。
(3)查询现在没有正在进修的教师信息。
5
(4)查询学校所有教师和学生姓名。
3. 连接查询
(1)查询每个学生的选课情况。
(2)查询每门课程的课程号及间接先修课号。
(3)查询既选修了1号课又选修了3号课的学生学号(用自身连接)。
(4)查询至少有两人选修的课程号(用自身连接)。
(5)查询一门课也没选的学生信息。(用外连接)
(6)查询选修2号课且成绩在90分以上的学生学号和姓名。
(7)查询选修了“数据库”课且成绩不及格的学生姓名。
4. 嵌套查询
(1)查询与“刘晨”同学在一个系学习的学生学号、姓名及所在系。
(2)查询选修了“信息系统”课程的学生学号和姓名。
(3)查询其他系中比信息系某一学生年龄小的学生姓名和年龄。
6
(4)查询其他系中比信息系所有学生年龄都小的学生姓名和年龄。
(5)查询没有选修1号课的学生姓名。
(6)查询选修了全部课程的学生姓名。
(7)查询至少选修了学生200215122选修的全部课程的学生学号。
2.3数据操纵
1. 针对学生-课程数据库,完成下列操作:
(1)使用INSERT语句向Student表中插入一学生记录,该学生学号为200215128,姓名为“陈东”,性别为“男”,年龄为18岁,所在系为信息系。
(2)向SC表中插入一行选课记录('200215128','5'),现在还没有成绩。
(3)对每一个系,求学生的平均年龄,并把结果存入数据库。
(4)将学生200215121所在的系改为MA。
(5)将选修“数据库”课程的学生成绩提高10%。
(6)删除计算机系所有学生的选课记录。
7
实验结论
8
因篇幅问题不能全部显示,请点此查看更多更全内容