- 6
- 0
- 约2.5千字
- 约 15页
- 2017-07-15 发布于浙江
- 举报
03-2 关系数据库标准语言SQL(续1)
* 第3章 关系数据库标准语言SQL Structured Query language 数据定义 数据操纵 数据控制 数据约束 * SELECT SNAME,AGE FROM S WHERE AGE ALL (SELECT AGE FROM S WHERE DEPT=计算机); ALL 变为 ANY含义如何? 比计算机系所有学生年龄都小的学生姓名和年龄 ALL 与 ANY 的使用 * ANY,ALL谓词与集函数的等价含义 运算符 ANY ALL MIN MAX MAX MIN = =MIN =MAX = =MAX =MIN = IN ---- != ---- NOT IN * COUNT([DISTINCT?ALL] *) 统计元组个数 COUNT([DISTINCT? ALL] 列名) 一列中值的个数 SUM([DISTINCT? ALL]列名)按列求和 AVG([DISTINCT? ALL]列名)按列求平均值 MAX([DISTINCT? ALL]列名)求一列中最大值 MIN([DISTINCT? ALL]列名)求一列中最小值 * SELECT Count (*) FROM S; SELECT AVG (AGE) FROM S; SELECT MAX (AGE) FROM S; 思考题:找出最大年龄学生的姓名和 年龄? * SELECT C.CNAME, Count(S_C.SNO) FROM C, S_C WHERE C.CNO = S_C.CNO GROUP BY C.CNAME; 注:此处group by 不可省略!!! SELECT 子句中的列名必须为分组列或列函数。列函数对于 GROUP BY 子句定义的每个组各返回一个结果。 求每门课程的选修人数,显示其课程名及人数 * 求选修3门以上课程的学生学号及选修门次 SELECT SNO, Count(CNO) FROM S_C GROUP BY SNO HAVING Count(CNO)2; WHERE与HAVING的区别在于作用对象不同。 WHERE作用于表,选择满足条件的元组。 HAVING作用于组,从中选择满足条件的组。 WHERE 与HAVING有何区别? * 找出课程平均成绩最高的课程号 Select cno from s_c Group by cno Having avg(grade)=all(select avg(grade) from s_c group by cno) 注意:在SQL中聚集函数是不能嵌套的,即max(avg(…)) * 查询成绩前五名的学生学号,课程号及成绩 SELECT TOP 5 SNO, CNO, GRADE FROM S_C ORDER BY GRADE DESC; 思考:查询成绩在6-10名之间的学生学号,课程号及成绩? * 一、插入数据 1 插入单个元组 INSERT INTO 表名 [(属性列1[,属性列2…)] VALUES (常量1[,,常量2]…); 2 插入子查询结果 INSERT INTO 表名 [(属性列1[,属性列2…)] 子查询; * INSERT INTO S VALUES(‘02901’,’JOIN’,’F’,20,’CS’); INSERT INTO S(SNO,SNAME) VALUES(‘02902’,’MARY’) 对每个系求平均年龄,并把结果存入数据库 CREATE TABLE DEPTAGE (DEPT CHAR(20), AVGAGE SMALLINT) INSERT INTO DEPTAGE (DEPT,AVGAGE) SELECT DEPT,AVG(AGE) FROM S GROUP BY DEPT * 二、删除数据 删除语句的一般格式: DELETE FROM 表名 [ WHERE 条件 ]; 删除某一个元组的值 删除多个元组的值 带子查询的删除语句 * DELETE FROM SWHERE SNO=‘S01’ DELETE FROM SC WHERE ‘计算机’= (SELEC
原创力文档

文档评论(0)