《关系数据库与 SQL 语言》复习资料(5)

2019-09-01 18:29

SELECT COUNT(DISTINCT Sno) FROM SC;

[例19] 计算1号课程的学生平均成绩。 SELECT AVG(Grade) FROM SC

WHERE Cno= ' 1 '; 分组处理

[例20] 求各个课程号及相应的选课人数。 SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno; 查询结果:

Cno COUNT(Sno)

1 22 2 34 3 44 4 33

5 48

[例21] 查询选修了3门以上课程的学生学号。 SELECT Sno FROM SC GROUP BY Sno

HAVING COUNT(*) >3; 2 )连接查询(多表查询);

[例22] 查询每个学生及其选修课程的情况

SELECT Student.*,SC.*

FROM Student,SC

WHERE Student.Sno = SC.Sno;

[例23] 对[例33]用自然连接完成。

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SC

WHERE Student.Sno = SC.Sno;

21

[例24]查询每一门课的间接先修课(即先修课的先修课) SELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST,Course SECOND WHERE FIRST.Cpno = SECOND.Cno; [例 25]

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT OUT JOIN SC ON (Student.Sno=SC.Sno); [例26]查询选修2号课程且成绩在90分以上的所有学生

SELECT Student.Sno, Sname FROM Student, SC

WHERE Student.Sno = SC.Sno AND

/* 连接谓词*/ SC.Cno= ?2? AND SC.Grade > 90;

/* 其他限定条件 */

3 )嵌套查询(子查询)。

将第一步查询嵌入到第二步查询的条件中 SELECT Sno,Sname,Sdept

FROM Student

WHERE Sdept IN

(SELECT Sdept FROM Student

WHERE Sname= ? 刘晨 ?); 此查询为不相关子查询。

[例27]查询选修了课程名为“信息系统”的学生学号和姓名

SELECT Sno,Sname ③ 最后在Student关系中 FROM Student 取出Sno和Sname WHERE Sno IN

(SELECT Sno ② 然后在SC关系中找出选 FROM SC 修了3号课程的学生学号 WHERE Cno IN

(SELECT Cno ① 首先在Course关系中找出 FROM Course “信息系统”的课程号,为3号

22

WHERE Cname= ?信息系统? ) );

4 掌握数据操纵命令:基本表数据的插入、删除、修改。 基本表数据的插入。 INSERT

INTO <表名> [(<属性列1>[,<属性列2 >?)] VALUES (<常量1> [,<常量2>] ? )

[例1] 将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。

INSERT

INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES ('200215128','陈冬','男','IS',18); INSERT

INTO <表名> [(<属性列1> [,<属性列2>? )] 子查询;

[例2] 对每一个系,求学生的平均年龄,并把结果存入数据库。

第一步:建表

CREATE TABLE Dept_age

(Sdept CHAR(15) /* 系名*/ Avg_age SMALLINT); /*学生平均年龄*/ INSERT

INTO Dept_age(Sdept,Avg_age) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept; 基本表数据的修改。 UPDATE <表名>

23

SET <列名>=<表达式>[,<列名>=<表达式>]? [WHERE <条件>];

[例1] 将学生200215121的年龄改为22岁 UPDATE Student SET Sage=22

WHERE Sno=' 200215121 '; 基本表数据的删除。 DELETE

FROM <表名> [WHERE <条件>];

[例1] 删除学号为200215128的学生记录。 DELETE FROM Student

WHERE Sno= 200215128 ';

5 掌握有关视图的操作:定义视图、查询视图、更新视图、撤消视图。 定义视图 CREATE VIEW

<视图名> [(<列名> [,<列名>]?)] AS <子查询>

[WITH CHECK OPTION]; [例1] 建立信息系学生的视图。 CREATE VIEW IS_Student AS

SELECT Sno,Sname,Sage FROM Student WHERE Sdept= 'IS';

[例2]建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生 。

CREATE VIEW IS_Student AS

SELECT Sno,Sname,Sage FROM Student

24

WHERE Sdept= 'IS' WITH CHECK OPTION; 撤消视图

DROP VIEW <视图名>; 例1:删除视图BT_S: DROP VIEW BT_S; 查询视图

用户角度:查询视图与查询基本表相同

[例1] 在信息系学生的视图中找出年龄小于20岁的学生。 SELECT Sno,Sage FROM IS_Student WHERE Sage<20; 视图消解转换后的查询语句为: SELECT Sno,Sage FROM Student

WHERE Sdept= 'IS' AND Sage<20; 更新视图

[例1] 将信息系学生视图IS_Student中学号200215122的学生姓名改为“刘辰”。 UPDATE IS_Student SET Sname= '刘辰'

WHERE Sno= ' 200215122 '; 转换后的语句: UPDATE Student SET Sname= '刘辰'

WHERE Sno= ' 200215122 ' AND Sdept= 'IS';

[例2] 向信息系学生视图IS_S中插入一个新的学生记录:200215129,赵新,20岁 INSERT

INTO IS_Student

VALUES(?95029?,?赵新?,20); 转换为对基本表的更新: INSERT

INTO Student(Sno,Sname,Sage,Sdept)

25


《关系数据库与 SQL 语言》复习资料(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:福建省泉州市洛江区中考数学模拟试卷(含解析)[含解析]

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: