c学生表课程表成绩表
① SQL命令 “学生”数据库中有 “学生表”、“课程表”和 “成绩表”。 “学生表”中包含学号、姓名
1、首先在电脑上打开数据库软件。然后附加有学生表和成绩表的数据库。
② 学生表、成绩表、课程表作为数据基础表,写出如下SQL语句,谢谢
查询所有学生的成绩信息(无成绩的学生也需显示)
SELECT ST.SNO, ST.SNAME, AVG(GRD.GRADE) AS AVG_GRADE FROM STUDENT ST LEFT JOIN GRADE GRD
ON (ST.SNO = GRD.SNO) GROUP BY ST.SNO, ST.NAME
查询8002课程的平均分、最高分以及课程名称,且平均分保留2位小数
SELECT C.CNAME, ROUND(AVG(GRD.GRADE),2) AS AVERAGE_GRADE, ROUND(MAX(GRD.GRADE),2) AS MAX_GRADE FROM COURSE C INNER JOIN GRADE GRD ON (C.CNO = GRD.CNO)
WHERE C.CNO = 8002
③ 数据库多表查询,学生表,课程表,成绩表
直接将三表关联查询就可以了
select
b.姓名,c.课程,a.成绩
from
成绩表
a,学生表
b,课程表
c
where
a.学生学号
=
b.学号
and
a.课程编号
=
c.编号
and
a.成绩
<
60
④ 数据表 学生表,老师表,课程表,成绩表 S(S#,Sname)T(T#,Tname,age)C(C#,Cname,T#) SC(S#,c#,sore)
1. select 学号,avg(成绩复) from 表名 where avg(成绩)>60 group by 学号
2、制update 表名 set 名字=’王文‘ where 课程=‘地理’
3和4 我不写了 我不清楚字段是什么 。这个都应该是操作多张表 你根据他们的关联性去写吧 关联性 有找主外键用主外键作为条件,没有就找关联性 相同的字段,进行修改、删除操作
⑤ 学生表(学号,姓名)、课程表(课程编号,课程名)、成绩表(自动编号、学号,课程编号,成绩) 查询各个学生学
select A.姓名,
sum(case B.课程名 when '语文' then C.成绩 else 0 end) as 语文,
sum(case B.课程名 when '数学' then C.成绩 else 0 end) as 数学,
sum(case B.课程名 when '英语' then C.成绩 else 0 end) as 英语,
sum(case B.课程名 when '历史' then C.成绩 else 0 end) as 历史,
from 学生表 A left join 成绩表 C on 学生表.学号=成绩表.学号
left join 课程表 B on 成绩表.课程编号=课程表.课程编号
group by A.姓名
刚刚不是在那边回答你了么~~~
⑥ 给定数据库中,包括“学生表”,“课程表”,“选课表”等三个数据表,表结构如下: 学生表:学号(C,6),姓
用LINQ(语言集成查询)完成你说的这些任务很方便,具体的细节问题还得你自己做。下面举出两个例子供你参考,这两个例子用数组代替数据库,对数据库也可用同样的方法。
例1,用bool值作关键字区分两组的结果,注意group子句中的表达式产生的结果。
public class Student
{
public string Name { get; set; }
public int ID { get; set; }
public List<int> Scores;
}
public static List<Student> GetStudents()
{
//实例化数据源,注意各成员内部成绩序列的初始化
List<Student> students = new List<Student>
{
new Student {Name="张勇", ID=1, Scores= new List<int> {97, 72, 81, 60}},
new Student {Name="王磊", ID=2 Scores= new List<int> {75, 84, 91, 39}},
new Student {Name="孙敏", ID=3, Scores= new List<int> {88, 94, 65, 85}},
new Student {Name="刘晓", ID=4, Scores= new List<int> {97, 89, 85, 82}},
new Student {Name="扬帆", ID=5, Scores= new List<int> {35, 72, 91, 70}}
};
return students;
}
static void Main()
{
List<Student> students = GetStudents();
//用true或false分组,查询变量是IEnumerable<IGrouping<bool, Student>>类型
var booleanGroupQuery = from student in students
group student by student.Scores.Average() >= 80;
foreach (var studentGroup in booleanGroupQuery)
{
Console.WriteLine(studentGroup.Key == true ? "平均分高于80" : "平均分低于80");
foreach (var student in studentGroup)
Console.WriteLine("{0,4} {1} {2}", student.ID, student.Name, student.Scores.Average());
}
}
输出:
平均分低于80
1 张勇 77.5
2 王磊 72.25
5 扬帆 67
平均分高于80
3 孙敏 83
4 刘晓 88.25
例2,查询人名先排序再分组,可以用姓作为分组关键字。
string[] Name = {"张明","刘新","王宏","刘洋","张媛","张宝","王金贵","刘东","王凯","刘芳"};
var sortedGroups = from name in Name
orderby name
group name by name[0] into newGroup
select newGroup;
foreach (var nameGroup in sortedGroups)
{
Console.WriteLine(nameGroup.Key);
foreach (var name in nameGroup)
Console.WriteLine(" "+name);
}
输出:
刘
刘东 刘芳 刘新 刘洋
王
王宏 王金贵 王凯
张
张宝 张明 张媛
输出结果按姓分类,组内排序。
《C#编程指南》(清华大学出版社2011年1月出版,可网购)第5章和第17章专门讨论LINQ查询更新数据库。
⑦ SQL查询,学生表,课程表,成绩表的一个查询要求如下怎么写呢
selects.sid,s.sname,sc.scorefromstudent,course,scwherestudent.sid=sc.sidandcourse.cid=sc.cidandcourse.cname='影视设计';
注意一下,你自己写的sid和sname中间没有逗号,到时候一定执行报错
⑧ 数据库多表查询,学生表,课程表,成绩表
直接将三表关联查询就可以了
select b.姓名,c.课程,a.成绩
from 成绩表 a,学生表 b,课程表 c
where a.学生学号 = b.学号 and a.课程编号 = c.编号 and a.成绩 < 60
⑨ 有四张表 student(s#,sname,sage,sex)学生表,Course(c#,cname,t#)课程表,SC(s#,c#,score)成绩表,
全部通过测试-----
第一题
select a.sno,count(a.sno) as 选课数,Sum(c.score) as 总成绩
from student as a,course as b,SC as c
where a.sno=c.sno and b.cno=c.cno
group by a.sno
第二题
select sno,sname from student
where sno in(
select distinct(d.sno)
from student as d,sc as e
where
d.sno=e.sno and e.sno<>'001' and
e.cno in
(
select b.cno
from student as a,course as b,SC as c
where a.sno=c.sno and b.cno=c.cno and a.sno='001'
))
第三题
update sc
set score=(select e.cavgScore from(
select cno as classno,avg(score) as cavgScore
from sc
where cno in(
select cno
from course as a,teacher as b
where tname='叶平')
group by cno) as e where classno=cno)
第四题
delete from sc
where sc.cno in
(
select a.cno
from course as a,teacher as b
where a.tno=b.tno and b.tname='叶平'
)
⑩ 跪求大神帮帮忙!!!有一个【学生选修课】数据库,数据库中包括三个表,学生表,课程表,成绩表
//自己把中文替换成英文字段名 我用的sql server数据库
select 学号、姓名、性别、年龄、所在系 from 学生 order by 年龄 desc, 学号 asc
select 学号,姓名 from 学生 where 姓名 in( select 姓名 from 学生 group by 姓名 having count(*)>1 )
update 成绩 set 成绩=0 where CNO=1
如果/不是除法的话 只是字符串 (除法暂时有问题)下班了 明天再来写
select C.课程号,D.课程名,D.成绩 from COURSE C,(
select CONVERT(VARCHAR(50),A.排名)+'/'+CONVERT(VARCHAR(50),B.ZS) as '排名/人数',a.学号,a.课程名,a.成绩 FROM (
select ROW_NUMBER() over(partition BY 课程名 order by 成绩 desc) as 排名 ,* from GRADE where 学号='1') A,
(SELECT COUNT(*) as zs,课程名
FROM GRADE group by 课程名 ) B where a.课程名=b.课程名) D WHERE C.课程名=D.课程名