26、查询每门课程被选修的学生数
sql
select c#,count(S#) from sc group by C#;
select SC.S#,Student.Sname,count(C#) AS 选课数 from SC ,Student where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;
Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男'; Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女';
SELECT Sname FROM Student WHERE Sname like '张%';
select Sname,count(*) from Student group by Sname having count(*)>1;
select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age from student where CONVERT(char(11),DATEPART(year,Sage))='1981';
Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;
select Sname,SC.S# ,avg(score) from Student,SC where Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;
Select Sname,isnull(score,0) from Student,SC,Course where SC.S#=Student.S# and SC.C#=Course.C# and Course.Cname='数据库'and score <60;
SELECT SC.S#,SC.C#,Sname,Cname FROM SC,Student,Course where SC.S#=Student.S# and SC.C#=Course.C# ;
SELECT distinct student.S#,student.Sname,SC.C#,SC.score FROM student,Sc WHERE SC.score>=70 AND SC.S#=student.S#;
select c# from sc where scor e <60 order by C# ;
select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';
select count(*) from sc;
select Student.Sname,score from Student,SC,Course C,Teacher where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# );
select count(*) from sc group by C#;
select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数 FROM SC t1 WHERE score IN (SELECT TOP 2 score FROM SC WHERE t1.C#= C# ORDER BY score DESC ) ORDER BY t1.C#;
select C# as 课程号,count(*) as 人数 from sc group by C# order by count(*) desc,c#
select S# from sc group by s# having count(*) > = 2
select C#,Cname from Course where C# in (select c# from sc group by c#)
select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='叶平');
select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score <60 group by S# having count(*)>2)group by S#;
select S# from SC where C#='004'and score <60 order by score desc;
delete from Sc where S#='001'and C#='001';
补充:SQL左右链接 数据库
left join :左链接,返回左表中全部的记录以及右表中链接字段相等的记录。 c#
right join :右链接,返回右表中全部的记录以及左表中链接字段相等的记录。 spa
inner join: 内链接,又叫等值链接,只返回两个表中链接字段相等的行。 code
两个表: class
A(id,name) date
数据:(1,张三)(2,李四)(3,王五) select
B(id,name) im
数据:(1,学生)(2,老师)(4,校长) 统计
左链接结果:
select A.*,B.* from A left join B on A.id=B.id;
1 张三 1 学生
2 李四 2 老师
3 王五 NULL NULL
右连接结果:
select A.*,B.* from A right join B on A.id=B.id;
1 张三 1 学生
2 李四 2 老师
NULL NULL 4 校长
****************
补充:下面这种状况就会用到外链接
好比有两个表一个是用户表,一个是交易记录表,若是我要查询每一个用户的交易记录就要用到左外外链接,由于不是每一个用户都有交易记录。
用到左外链接后,有交易记录的信息就会显示,没有的就显示NULL,就像上面我举得例子同样。
若是不用外链接的话,好比【王五】没有交易记录的话,那么用户表里的【王五】的信息就不会显示,就失去了查询全部用户交易记录的意义了。