2017.03.22:數據庫SQL語句

Student(SId,Sname,Sage,Ssex)           學生表(學號、姓名、年齡、性別)

Course(CId,Cname,TId)                課程表(課程編號、課程名字、教師編號)

SC(SId,CId,score)                     成績表(學號、課程編號、成績)

Teacher(TId,Tname)                   教師表(教師編號、教師名字)

1. having: 對由sum或其他集合函數運算結果的輸出進行限制。

e.g. 查詢平均成績大於60分的同學的學號和平均成績

select SId,ave(score) from sc group by SId having(score)>60

2. LEFT JOIN: 關鍵字會從左表(table_name1) 那裏返回所有的行,即使在右表(table_name2) 中沒有匹配的行。

e.g. 查詢所有同學的學號、姓名、選課數、總成績

select Student.SId,Student.Sname,count(SC.CId),sum(score) fromStudent left Outer join SC on Student.SId=SC.SId group by Student.SId,Sname

3. WHERE 子句不能包含聚集函數; 因爲試圖用聚集函數判斷那些行輸入給聚集運算是沒有意義的。 相反,HAVING 子句總是包含聚集函數。

4. CONVERT() 函數是把日期轉換爲新數據類型的通用函數。CONVERT()函數可以用不同的格式顯示日期/時間數據。

e.g. 1981年出生的學生名單(注:Student表中Sage列的類型是datetime)

select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age fromstudent where CONVERT(char(11),DATEPART(year,Sage))='1981';

5. 微軟的ISNULL() 函數用於規定如何處理 NULL 值。

e.g. 查詢課程名稱爲“數據庫”,且分數低於60的學生姓名和分數

Select Sname,isnull(score,0) from Student,SC,Course whereSC.SId=Student.SId and SC.CId=Course.CId and Course.Cname='數據庫'and score <60;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章