--------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
1.ORDER BY子句:ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,缺省值为升序。
- 查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排序
SELECT StudentNo,Grade FROM SC WHERE CourseNo=3 ORDER BY Grade DESC;
2.聚集函数:
-
查询学生总人数
SELECT COUNT(*) FROM Student;
-
计算1号课程的平均成绩
SELECT AVG(Grade) FROM SC WHERE CourseNo=1;--与下句等价 SELECT SUM(Grade)/COUNT(*) FROM SC WHERE CourseNo=1;
3. GROUP BY子句:GROUP BY子句将查询按某一列或多列的值分组,值相等的为一组。对查询结果分组的目的是为了细化聚集函数的作用对象。如果为对查询结果分组,聚集函数将作用于整个查询结果。分组后的聚集函数将作用于每一个组,即每一组都有一个函数值。
-
求各个课程号及相应的选课人数
SELECT CourseNo,COUNT(CourseNo) FROM SC GROUP BY CourseNo;--与下句等价 SELECT CourseNo,COUNT(*) FROM SC GROUP BY CourseNo;
-
查询选修了2门以上课程的学生学号
SELECT StudentNo FROM SC GROUP BY StudentNo HAVING COUNT(*)>2;
4.多表查询:
- 等值连接:
SELECT Student.*,SC.* FROM Student,SC WHERE Student.No=SC.StudentNo;--与下两行等价 SELECT * FROM Student JOIN SC ON Student.No=SC.StudentNo; SELECT * FROM Student INNER JOIN SC ON Student.No=SC.StudentNo;
- 自然连接:
SELECT Student.*,SC.StudentNo,Grade FROM Student,SC WHERE Student.No=SC.StudentNo; SELECT Student.*,SC.StudentNo,Grade FROM Student INNER JOIN SC ON Student.No=SC.StudentNo;
- 自身连接:在同一个表之间进行连接操作,则为自身连接。
SELECT FIRST.No,SECOND.PreNo FROM Course AS FIRST,Course AS SECOND WHERE FIRST.PreNo=SECOND.No AND SECOND.PreNo IS NOT NULL;
- 外连接:有时想以Student表为主题列出每个学生的基本情况及选修课情况。若某个学生没有选课,仍把舍弃的Student元组保存在结果关系中,而在SC表的属性上填空NULL,这时就需要使用外连接(OUTER JOIN,其中“OUTER”关键字可省略)。
SELECT Student.*,SC.StudentNo,Grade FROM Student LEFT OUTER JOIN SC ON Student.No=SC.StudentNo;
- 复合连接查询:当WHERE子句中有多个连接条件时则称为复合条件连接。
/*查询选修了2号课程且成绩在80分以上的所有学生*/ SELECT Student.No,Name FROM Student,SC WHERE Student.No=SC.StudentNo AND SC.CourseNo=2 AND SC.Grade>80;
- 嵌套查询:在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。
SELECT Name /*外层查询或父查询*/ FROM Student WHERE No IN (SELECT StudentNo /*内层查询或子查询*/ FROM SC where CourseNo=2);
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看: http://edu.csdn.net