常用SQL 语句(二)

一.涉及空值的查询

如:
查询grade为空和不为空的学生信息:

SELECT * FROM SC1 WHERE grade IS NULL /* 查询成绩为空的学生信息 */
SELECT * FROM SC1 WHERE grade IS NOT NULL AND cno='002' /* 查询成绩不为空且选修了编号为002的课程的学生信息 */

二.ORDER BY 子句

ORDER BY子句可以按一个或多个属性列排序;
升序:ABS, 降序:DESC (默认为升序)
例如:
按grade降序排列:

GO
SELECT * FROM SC1 WHERE cno='001' ORDER BY grade DESC /* 将选修了001课程的学生按成绩降序排列 */

限制返回条数

SELECT * FROM student ORDER BY score ASC LIMIT 1, 2; /*跳过前一条数据,返回两条数据*/
SELECT * FROM student ORDER BY score ASC LIMIT 2 OFFSET 1; /*跳过前一条数据,返回两条数据*/

三.聚集函数

(1).统计元组个数(即总共有多少行):COUNT(*)

SELECT COUNT(*) FROM student1 /* 查询学生总人数 */

(2).查询某一列中值的个数:COUNT( [DISTINCT|ALL] <列名>)

SELECT COUNT(DISTINCT sno) FROM SC1 /*查询选修了课程的学生人数(去掉重复的)*/

(3).计算一列值的平均值:AVG( [DISTINCT|ALL] <列名>)

SELECT AVG(grade) FROM SC1 WHERE cno='002' /* 计算课程002的平均成绩 */

(4).计算一列值得总和:SUM( [DISTINCT|ALL] <列名>)

SELECT SUM(ccredit) FROM course1 /* 查询所有课程得学分总和 */

(5).计算某一列中得最大值和最小值:MAX( [DISTINCT|ALL] <列名>),MIN( [DISTINCT|ALL] <列名>)

SELECT MAX(grade) FROM SC1 WHERE cno='003' /* 查询选修了003号课程的最高分数 */
SELECT MIN(grade) FROM SC1 WHERE cno='003' /* 查询选修了003号课程的最低分数 */

四.GROUP BY子句

GROUP BY 子句用于分组,具体使用如下:

GO
SELECT cno,COUNT(sno) FROM SC1 GROUP BY cno /* 查询每门课程相应的选课人数 */
SELECT cno,COUNT(sno) FROM SC1 WHERE grade < 60 GROUP BY cno /* 统计每门课程的不及格人数,显示该课程号及该课程的不及格人数 */
SELECT sno,COUNT(*) FROM SC1 GROUP BY sno HAVING COUNT(*) > 1/* 查询选修了一门课程以上的学生信息,WHERE不能用聚集函数座位条件表达式,因此要用HAVING */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值