guhusf 发表于 2022-10-10 21:17:20

机考真题

本帖最后由 guhusf 于 2022-10-10 21:31 编辑

第一次上机练习
设有如下关系模式:
学生信息表(学号,姓名,性别,年龄,所在系号,班级)Student(Sno, Sname, Ssex, Sage, Sdept, Class)
教师信息表(教师号,姓名,性别,所在系号)Teacher(Tno, Tname, Tsex, Tdept)
系信息表(系号,系名,系主任教师号)Dept(Dno, Dname, Tno)
课程信息表(课号,课名,学分,前序课程号)Course(Cno, Cname, Credit, PreCno)
教学任务表(课程号,教师号,学期,年度)T_Task(Cno, Tno, Term, Year)
学生选课表(学期,年度,学号,课程号,教师号,是否必修, 平时成绩,期末成绩)SC(Term, Year,Sno, Cno, Tno, isCC, UGrade, Grade)

按照要求写出SQL语句
(1)查询年龄在18岁到22岁之间的学生所在的班级名,查询结果中不包括重复班级名;
(2)查询所有女生的学号、姓名和出生年份;
(3)查询“计算机”系学生的最小年龄和最大年龄;
(4)查询姓名为四个字的学生的全部学生信息表中信息;
(5)查询“计算机”系学生中姓“刘”的学生的学号、姓名和班级;
(6)查询前序课程为“离散数学”的课程名称及学分;
(7)查询有平时成绩但是没有期末成绩的学生的学号和姓名;
(8)查询“计算2201”班学生“数据库原理”课程的平均成绩;
(9)查询“数据库原理”课程的学生的学号、姓名、平时成绩和期末成绩,按照期末成绩由多到少排序,期末成绩相同的依据平时成绩由少到多排序;
(10)查询“数据库原理”课程期末成绩低于平均成绩的学生的学号、姓名和所在系名;
(11)查询选修了本系老师开设课程的学生学号、姓名;
(12)查询必修课人数超过50人的课程编号;
(13)查询“计算机”系所有不及格的学生姓名和课程名;
(14)在“课程信息表”上给“课名”建立一个唯一索引,索引名自定;
(15)创建一个新表CCAG (SNO, CCAVGGRADE),用来记录每个学生必修课的平均成绩,其中SNO是主码,并且也是外码,参照Student表的Sno; SNO 为字符型,长度为9,CCAVGGRADE为整型;
(16)将(15)中创建的CCAG中的CCAVGGRADE修改为FLOAT类型;
(17)计算每个学生必修课的平均成绩,插入到CCAG中;
(18)将CCAG中平均成绩为0的CCAVGGRADE改为NULL;
(19)删除CCAG中平均成绩为NULL的记录;
(20)利用Student和CCAG,查询每个学生必修课的平均成绩,输出列中包括学号、姓名、必修课平均成绩,要求查询结果中包含所有学生,即使该学生没有必修课的平均成绩;
(21)创建视图,查询CCAG中,每个系有多少名学生的平均成绩小于70分,查询结果包括系名,人数,系主任姓名。
(22)为 T-Task表添加用户自定义约束条件;需要添加的约束条件有:年度(year)数据必须形如“2022-2023”、“2023-2024”,学期(term)数据必须为“春季学期”或“秋季学期”;
(23) 写一条SQL语句,向T-Task表中,插入一条不违背该表所有约束条件的记录;
(24) 创建一个新表,称为年度学期课程统计表(课程号,学期,年度,选修人数)YTC(Cno,Term, Year, CountStu),并根据学生选修情况和开课情况,填写该表,记录每学年每学期每门课的选课学生总人数。
(25) 基于数据库中的基本表,创建一个视图,视图中,能显示一个学生的学号,姓名,所属系,选修课程和该课程的期末成绩;
(26) 创建一个触发器,当某个学生选修、退选、改选某门课程后,在YTC表中,这门课的学生人数对应发生变化;
(27) 创建一个触发器,能实现,SC插入某条记录时,根据系统时间自动填写年度和学期信息;每学年学期以当年9.1日和3.1日为学期第一天。
页: [1]
查看完整版本: 机考真题