fczhoumail neu edu cn http decweb neu edu
计算机软件技术基础 主讲:周福才 教授 fczhou@mail. neu. edu. cn http: //decweb. neu. edu. cn
4. 3. 3 数据查询 (SELECT) 课程表(表名为:cur_info) CNO(� 程� 号 DESCP(� 程名称 PERIOD(学� ) ) ) TNO(主� 老�� 号) 005036 高等数学 64 808 005067 微机基� 40 805 005132 数据� 构 64 856 005004 程制� 64 808 成绩表(表名为:sco_info) SNO(学号) CNO(� 程� 号) SCORE(成� ) 021601 005036 96 021635 005036 100 021608 005036 92 021638 005036 93 24 021601 005067 东北大学网络学院计算机软件技术基础课程组 91
o 4. 3. 3 数据查询 (SELECT) 用WHERE子句查询 输出分数在 90至 95区段的所有学生的学号。 SELECT DISTINCT SNO FROM sco_info WHERE SCORE BETWEEN 90 AND 95 结果为: SNO -----021601 021608 021638 31 东北大学网络学院计算机软件技术基础课程组
4. 3. 3 数据查询(SELECT)—多表连接查询 o 多表连接查询例子 例:输出"高等数学"课程的编号、学时和主讲老师的姓名、 职称。 SELECT cur_info. CNO, cur_info. PERIOD, tea_info. NAME, tea_info. TITLE from cur_info, tea_info WHERE cur_info. TNO=tea_info. TNO AND cur_info. DESCP='高等数学' 结果为: CNO PERIOD NAME TITLE ---------005036 64 张学成 教授 42 东北大学网络学院计算机软件技术基础课程组
4. 3. 3 数据查询(SELECT)—多表连接查询 o 多表连接查询例子 输出张力同学的"微机基础"课程的成绩。 SELECT stu_info. NAME, cur_info. DESCP, sco_info. SCORE FROM stu_info, cur_info, sco_info WHERE stu_info. SNO=sco_info. SNO AND cur_info. CNO=sco_info. CNO AND stu_info. NAME='张力' AND cur_info. DESCP='微机基础' 这一个三个表连接的例子,结果为: NAME DESCP SCORE ------------------张力 微机基础 96 45 东北大学网络学院计算机软件技术基础课程组
4. 3. 3 数据查询(SELECT)—嵌套查询 o 嵌套查询 例:输出所有与张力同学同班的学生。 SELECT * FROM stu_info WHERE CLASS IN (SELECT CLASS FROM stu_info WHERE NAME='张力') 结果为: SNO NAME GE BIRDAY CLASS ----- -- -----------021601 李平 男 11 -NOV-80 自-0205 021608 张力 男 03 -MAR-79 自-0205 47 东北大学网络学院计算机软件技术基础课程组
o 4. 3. 3 数据查询 (SELECT) 嵌套查询 输出李奇老师任课班级的所有学生的成绩。 SELECT * FROM sco_info WHERE CNO=(SELECT B. CNO FROM tea_info A, cur_info B WHERE A. TNO=B. TNO AND A. NAME='李奇') ???注意子查询不能位于等号之前。 运行结果为: SNO CNO SCORE -----------------021601 005067 91 021635 005067 88 021608 005067 96 021638 005067 91 49 东北大学网络学院计算机软件技术基础课程组
o 4. 3. 3 数据查询 (SELECT) 嵌套查询 o 例: 输出成绩比该课程平均成绩低的学生的成绩信息 SELECT * FROM sco_info A WHERE SCORE< (SELECT AVG(SCORE) FROM sco_info B WHERE A. CNO=B. CNO) 结果为: SNO CNO SCORE -----------------021608 005036 92 021638 005036 93 021601 005067 91 021635 005067 88 021638 005067 91 021601 005132 87 50 东北大学网络学院计算机软件技术基础课程组
o 4. 3. 3 数据查询(SELECT)—嵌套查询 n n 在处理子查询返回值时,也可以使用ANY和ALL谓 词。例如,>ANY表示大于子查询结果中的某一个值; >ALL表示大于子查询结果中的所有值。 例:输出其他课程中比 005036课程所有分数更低的 学号、课程号和成绩。 SELECT * FROM sco_info WHERE SCORE<ALL (SELECT SCORE FROM sco_info WHERE CNO='005036') AND CNO<>'005036' 结果为: SNO CNO SCORE -----------------021601 005067 91 021635 005067 88 021638 005067 91 021601 005132 87 021608 005132 91
- Slides: 65