Office中国论坛/Access中国论坛

标题: 查询实例 [打印本页]

作者: 红尘如烟    时间: 2009-6-14 08:41
标题: 查询实例
示例表:
学生表(学号,姓名,年龄,性别)
成绩表(学号,课程号,成绩)
课程表(课程号,课程名,教师)

关系代数运算应用实例:
1)查询学习课程号为"C2"的学生学号与成绩.
SELECT  学号,成绩 FROM 成绩表  WHERE 课程号='C2'

2)查询学习课程号为"C2"的学生学号与姓名.
写法1(联接查询,作笛卡儿积操作,速度最慢):
SELECT 学生表.学号,姓名 FROM 学生表,成绩表 WHERE 学生表,学号=成绩表.学号 AND 课程号='C2'
写法2(嵌套查询):
SELECT 学号,姓名 FROM 学生表 WHERE 学号 IN (SELECT 学号  FROM 成绩表 WHERE 课程号='C2')
写法3(嵌套查询):
SELECT  学号,姓名 FROM 学生表 WHERE 'C2' IN (SELECT 学号  FROM 成绩表 WHERE 学号=学生表.学号)
写法4(使用存在量词的嵌套查询):
SELECT 学号,姓名 FROM 学生表 WHERE EXISTS (SELECT *  FROM 成绩表  WHERE 学号=学生表.学号 AND 课程号='C2')

3)查询查询课程名为"英语"的学生的学号与姓名.
写法1:
SELECT 学号,姓名 FROM 学生表 WHERE 学号 IN (SELECT 学号 FROM 成绩表 WHERE 课程号 IN (SELECT 课程号 FROM 课程表 WHERE 课程名='英语'))
写法2:
SELECT 学号,姓名 FROM 学生表,成绩表,课程表 WHERE 学生表.学号=成绩表.学号 AND 课程表.课程号=成绩表.课程号 AND 课程表.课程名='英语'

4)查询选修课程号为"C2"和"C4"的学生学号.
SELECT 学号 FROM 成绩表 WHERE 课程号='C2' AND  课程号='C4'

5)查询至少选修课程号为"C2"和"C4"的学生学号.
SELECT X.学号 FROM 成绩表 AS X,成绩表 AS Y WHERE X.学号=Y.学号 AND X.课程号='C2' AND  Y.课程号='C4'

6)查询不学"C2"课程的学生的姓名和年龄.
SELECT 姓名,年龄 FROM 学生表 WHERE NOT EXISTS (SELECT * fROM 成绩表  WHERE 学号=学生表.学号 AND 课程号='C2')

7)查询学习全部课程的学生的姓名.
SELECT 姓名 FROM 学生表  WHERE NOT EXISTS (SELECT *  FROM  课程表  WHERE  NOT EXISTS (SELECT * FROM 成绩表 WHERE 学号=学生表.学号 AND  课程号=课程表.课程号))

8)查询所学课程包含学号为"S3"的学生所学课程的学生学号.
SELECT DISTINCT 学号  FROM  成绩表 AS X  WHERE NOT EXISTS  (SELECT *  FROM 成绩表 AS Y  WHERE 学号='S3'  AND NOT EXISTS  (SELECT * FROM 成绩表 AS Z WHERE 学号=X.学号 AND 课程号=Y.课程号))

聚合函数应用实例:
1)查询男学生的总人数和平均年龄.
SELECT COUNT(*),AVG(年龄)  FROM   学生表  WHERE  性别='男'

2)查询选修了课程的学生人数.
SELECT COUNT(DISTINCT 学号)  FROM   课程表

SELECT语句完整句法实例:
1)查询每一年龄选修课程的学生人数.  
SELECT 年龄,COUNT(DISTINCT 学生表.学号)  FROM   学生表,成绩表 WHERE  学生表.学号=成绩表.学号  GROUP BY 年龄

2)查询男同学的每一年龄组(超过50人)的人数,要求查询结果按人数升序排序,人数相同时按年龄降序排序.
SELECT 年龄,COUNT(学号)  FROM   学生表  WHERE  性别='男'  GROUP BY 年龄  HAVING COUNT(*)>50  GROUP BY 2,AGE DESC

未完待续......
作者: asklove    时间: 2009-6-15 08:32
学习下
作者: xuwenning    时间: 2009-6-15 10:45
学习
学习
谢谢
作者: kaya0701    时间: 2009-6-16 23:51
yun
作者: czsjw    时间: 2009-6-20 10:05
真系统!
作者: gona    时间: 2009-6-20 12:05
多多学习,天天向上啊  谢谢楼主!~~
作者: minikooo    时间: 2014-11-5 16:45
继续,继续
作者: minikooo    时间: 2014-12-6 09:08
安德森的孙菲菲大方
作者: xh666666    时间: 2015-9-1 14:47
过来学习




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3