已知有三个表:学生表(学号,姓名,性别,年龄,院系号,入学成绩)
课程表(课程号,课程名,学分,先修课)
成绩表(学号,课程号,成绩)
1、查询选修了“数据结构”或者“网络工程”课程的学生学号,课程号,成绩
2、查询院系号为“06”的选修了“数据结构”课程的学生学号,姓名,性别
3、查询年龄最大的学生信息
4、查询“06”或者“02”院系的学生学号,课程号和所选课程的成绩,按课程号降序排列,课程号相同的按学号升序排列
5、在学生表中插入一条新记录,学号为“s9”,姓名为“张英”,年龄18,性别女,院系号为“01”
6、删除所有先修课程为空的课程记录
7、更新所有选修了“C++”课程的同学这门课的成绩,提高5分
8、查询选修了两门课程以上的同学的所选课程数、平均分、最高分、最低分
课程表(课程号,课程名,学分,先修课)
成绩表(学号,课程号,成绩)
1、查询选修了“数据结构”或者“网络工程”课程的学生学号,课程号,成绩
2、查询院系号为“06”的选修了“数据结构”课程的学生学号,姓名,性别
3、查询年龄最大的学生信息
4、查询“06”或者“02”院系的学生学号,课程号和所选课程的成绩,按课程号降序排列,课程号相同的按学号升序排列
5、在学生表中插入一条新记录,学号为“s9”,姓名为“张英”,年龄18,性别女,院系号为“01”
6、删除所有先修课程为空的课程记录
7、更新所有选修了“C++”课程的同学这门课的成绩,提高5分
8、查询选修了两门课程以上的同学的所选课程数、平均分、最高分、最低分
解决方案 »
- select * from sysobjects where type='p'有存储过程,但是在用到这个sp的时候却说不存在的问题!
- []简单问题,关于取最大值
- MSSQL表按时间分区后,增加的记录没有写入到指定的分区文件
- 數據庫TestDB中有很多個表,表owner爲(myowner.*),如何一次將所有的表owner改爲dbo?
- sqlserver导出数据库
- 老问题,刚才的时间转换问题
- SET QUOTED_IDENTIFIER OFF 的作用是什么?
- 谁能告诉我toad在哪儿下载,谢谢?
- SQL,怎么把两个表的数据和在一起,安字段分组?
- 这个怎么办 只有大神能解答了
- SQLserver 2005
- 求SQL语句,判断值是否在另外一个表(范围)中,详情如下:
select a.学号 , b.课程号, b.成绩
from 学生表 a , 成绩表 b , 课程表 c
where a.学号 = b.学号 and b.课程号 = c.课程号 and (c.课程名 = '数据结构' or c.课程名 = '网络工程')select a.学号 , b.课程号, b.成绩
from 学生表 a , 成绩表 b , 课程表 c
where a.学号 = b.学号 and b.课程号 = c.课程号 and c.课程名 in ('数据结构' , '网络工程')
2、查询院系号为“06”的选修了“数据结构”课程的学生学号,姓名,性别
select a.学号 , b.课程号, b.成绩
from 学生表 a , 成绩表 b , 课程表 c
where a.院系号 = '06' and a.学号 = b.学号 and b.课程号 = c.课程号 and (c.课程名 = '数据结构' or c.课程名 = '网络工程')select a.学号 , b.课程号, b.成绩
from 学生表 a , 成绩表 b , 课程表 c
where a.院系号 = '06' and a.学号 = b.学号 and b.课程号 = c.课程号 and c.课程名 in ('数据结构' , '网络工程')
3、查询年龄最大的学生信息
--如果年龄最大的只有一个人
select top 1 a.* from 学生表 a order by 年龄 desc--如果年龄最大的有多个人
select a.* from 学生表 a where 年龄 = (select max(年龄) from 学生表)4、查询“06”或者“02”院系的学生学号,课程号和所选课程的成绩,按课程号降序排列,课程号相同的按学号升序排列
select a.学号 , b.课程号, b.成绩
from 学生表 a , 成绩表 b , 课程表 c
where a.学号 = b.学号 and b.课程号 = c.课程号
order by b.课程号 desc , a.学号5、在学生表中插入一条新记录,学号为“s9”,姓名为“张英”,年龄18,性别女,院系号为“01”
--插入的字段顺序为:学号,姓名,性别,年龄,院系号,入学成绩,
--如果入学成绩初始为0
insert into 学生表 values('s9' , '张英' , '女' , 18 , '01' , 0)
--如果入学成绩初始为null
insert into 学生表 values('s9' , '张英' , '女' , 18 , '01' , null)--如果你的表字段顺序不是:学号,姓名,性别,年龄,院系号,入学成绩,则在插入时写完全。
--如果入学成绩初始为0
insert into 学生表(学号,姓名,性别,年龄,院系号,入学成绩) values('s9' , '张英' , '女' , 18 , '01' , 0)
--如果入学成绩初始为null
insert into 学生表(学号,姓名,性别,年龄,院系号,入学成绩) values('s9' , '张英' , '女' , 18 , '01' , null)
6、删除所有先修课程为空的课程记录
delete from 课程表 where 先修课 is null7、更新所有选修了“C++”课程的同学这门课的成绩,提高5分
update 成绩表
set 成绩 = 成绩 + 5
from 成绩表 m , 课程表 n
where m.课程号 = n.课程号 and n.课程名 = 'C++'
8、查询选修了两门课程以上的同学的所选课程数、平均分、最高分、最低分
select a.学号,
a.姓名,
所选课程数 = count(1),
平均分 = avg(b.成绩),
最高分 = max(b.成绩),
最低分 = min(b.b.成绩)
from 学生表 a , 成绩表 b
where a.学号 = b.学号
group by a.学号,a.姓名
having count(1) > 1
select a.学号 , b.课程号, b.成绩
from 学生表 a , 成绩表 b , 课程表 c
where a.院系号 = '06' and a.学号 = b.学号 and b.课程号 = c.课程号 and c.课程名 = '数据结构'