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,就像上面我舉得例子同樣。
若是不用外鏈接的話,好比【王五】沒有交易記錄的話,那麼用戶表裏的【王五】的信息就不會顯示,就失去了查詢全部用戶交易記錄的意義了。