一、实验内容
1、建立数据库Student_DB_姓名首字母缩写(如姓名为张三的同学建立的数据库为Student_DB_ZS),并在此数据库中用命令方式创建数据表(注意表中列的相关约束):
学生表:Student(Sno, Sname, Ssex, Sage, Sdept);
课程表:Course(Cno, Cname, Cpno, Ccredit);
学生选课表:SC(Sno, Cno, Grade)
学生表的逻辑设计:
课程表的逻辑设计:
选课表的逻辑设计:
二、实验过程
用SQL语言完成如下的操作(请给出SQL语句及相应执行结果的截图):
创建学生表:
创建课程表:
创建选修表:
(1)将学生表中年龄的数据类型改为整型。
(2)向SC表中增加成绩(Grade)列,其数据类型为短整型。
(3)用SSMS方式向三个表中填充数据(参照课本P79页)(此题不用给出结果图)。
学生表数据填充:
课程表数据填充:
选修表数据填充:
(4)对Student表按学号降序建唯一索引。
(5)对Student表按学生姓名列建聚集索引,观察能否建立成功,如未成功请分析原因。
原因:聚集索引在一个表中只能有一个,因为物理位置是固定的。
(6)删除第(4)题建的索引。
3、用SQL语句完成如下对三个表的查询(请给出SQL语句及执行结果的截图):
(1)查询所有课程的课程号和课程名。
(2)查询全体学生的记录。
(3)查询学生表中的所有的系。
(4)查询全体学生的姓名、出生年份和所在的院系,并为出生年份和所在院系两列分别起别名为sbirth,department,并将系名全部转换成小写字母。
(5)求数学系学生的学号和姓名。
(6)查询所有考试成绩在80分以下的学生学号、课程号。
(7)查询学分在2~7之间的课程信息。
(8)查询课程名为DB_Design课程的课程号和学分。
(9)查询没有先修课的课程号、课程名及学分。
(10)查询信息系学生性别为男且年龄小于20岁的学生姓名。
(11)查询选修了3号课程的学生的学号及成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。
(12)查询课程的总数。
(13)查询选修2号课程的学生平均成绩和最高成绩,并分别为平均成绩和最高成绩起别名为AVG,MAX。
(14)查询每个学生的选课门数,要求输出学生学号及选课的门数。
(15)查询选修了2门及以上的课程的学生学号。