- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第5章数据库系统基础-10年11月9
WHERE子句的应用 关系表达式或逻辑表达式. 例:给出管理系的学生学号和姓名。系名=“管理系” 给出计算机系男生的学号和姓名。 系名=“计算机系”AND SEX=“男” 范围条件 表达式1 [NOT] BETWEEN 表达式2 AND 表达式3 例:给出年龄在18-19岁之间的学生学号和系. AGE BETWEEN 18 AND 19 枚举条件 表达式 [NOT] IN (取值清单或子查询) 例:给出管理和经济学学生的学号和姓名. 给出不及格的学生学号,姓名. 给出不及格的学生学号.姓名及课程名称. 语法格式: SELECT [ALL/ DISTINCT] 字段名表 FROM 表名或查询名 [WHERE 条件][GROUP BY 字段名1 HAVING 过滤表达式] [ORDER BY 字段名2[ASC/DESC]] 功能:根据WHERE子句中的条件,从FROM子句指定的基本表或视图中找出满足条件的记录,再按SELECT子句中的字段名表显示数据。 如果有GROUP子句,则按字段名1的值进行分组,字段名1值相等的记录分在一组,每一组产生一条记录。 如果GROUP子句再带有HAVING短语,则只有满足过滤表达式的组才予以输出。 如果有ORDER BY子句,则查询结果按字段名2的值进行排序。 下面分别说明各子句的应用。 单表查询 单表查询是指仅涉及一个表的查询。 查询指定字段 可以通过在SELECT子句中的字段名表中指定要查询的字段 查询全部字段 在SELECT关键字后面列出所有字段名; 若显示的顺序与其在表中的顺序相同,则可以将字段名表指定为*。 例 查询所有学生的基本情况。 SELECT 学号,姓名,性别,婚否,籍贯,专业,出生年月,奖学金 FROM Students因为*号可以表示所有的字段,所以上述语句可以改为: SELECT * FROM Students 查询结果如图5.3.2所示。 查询经过计算的值 SELECT子句中的字段名表不仅可以是表中的字段名,还可以是表达式,也就是说可以将查询出来的字段经过某种计算后列出。 该表达式可以是一个使用SQL库函数构成的式子。常用的函数见表5.3.3。 例 查询学生人数、最低奖学金、最高奖学金和平均奖学金。 SELECT Count(*) AS 人数, Min(奖学金)AS 最低奖学金, Max(奖学金)AS 最高奖学金, Avg(奖学金)AS 平均奖学金 FROM Students; 其中Count(*)可以改为Count(学号),因为学号是惟一的,一个学号对应一条记录。 消除取值重复的行 如果想去掉结果表中的重复记录,必须指定DISTINCT短语;如果没有指定DISTINCT短语,则默认为ALL,即保留结构表中取值重复的记录. 例 查询所有的专业,查询结果中不出现重复的记录。 如果删掉DISTINCT,则得到图5.3.5所示的结果,出现了重复的记录。 查询满足条件的记录 查询满足条件的记录可以通过WHERE子句实现. 例 查询计算机专业学生的学号、姓名和专业。命令如下: 例 查询所有未婚学生的学号和姓名,并按奖学金从小到大排序。命令如下: SELECT 学号,姓名 FROM Students WHERE 婚否=False ORDER BY 奖学金 ASC; 对查询结果分组 GROUP BY 子句用来对查询结果进行分组,把某一字段的值相同的记录分成一组,一组产生一条记录。 HAVING子句用来对分组后的结果进行过滤,选择由GROUP BY子句分组后的并且满足HAVING子句条件的所有记录。 例如,子语句“GROUP BY 专业”,它将专业相同的记录分在一组。表Students共有5个专业,按专业分组将被分为5个组,查询结果中也就只有5条记录。 例 查询平均分在75分以上,并且没有一门课程在70分以下的同学的学号。 命令如下: SELECT 学号 FROM Scores GROUP BY 学号 HAVING Avg(成绩)>= 75 AND Min(成绩)>=70; ORDER BY 的使用: ASC(升序,可省略)/DESC(降序) 举例说明: 将选课表按课程号升序排序 SELECT * FROM SC ORDER BY 课程号 ASC ; 统计各个课程的人数,并将人数按照从小到大排列. SELECT 课程号,COUNT(学号) AS 人数
文档评论(0)