第8章节SQL知识归纳与实例.docVIP

  • 5
  • 0
  • 约7.8千字
  • 约 10页
  • 2017-03-18 发布于四川
  • 举报
第8章 查询、视图与SQL知识归纳与实例 查询设计时应注意的问题 关于字段选项卡 若要将查询结果进行排序,则排序的字段必须在字段选项卡中被选中。 例:查询STUDENT中所有学生的学号、姓名,并将结果按照入学成绩的降序排列。 分析:该例中虽然查询结果不要求包含入学成绩字段,但是因为查询结果必须根据入学成绩排序,因此也必须在字段选项卡下,将入学成绩字段添加进选定字段中。 若要查询的数据不是数据表本身的字段,可使用字段选项卡下的“函数和表达式”功能表示要查找的数据,并将该数据添加进选定字段栏中。 例:查询STUDENT中所有学生的学号、姓名和年龄。 分析:STUDENT中本身并无年龄字段,但是查询结果中必须包含年龄,因此可以通过字段选项卡下的“函数和表达式”功能生成一个虚拟字段,并添加进选定字段栏中,生成年龄的具体表达式为:YEAR(DATE())-YEAR(出生日期) AS 年龄(AS子句通常用于将生成的数据以一个指定的虚拟字段形式表示) 关于筛选选项卡 若查询结果中不包含某字段的数据,但是该字段也可以用于设置筛选条件。 例:查询STUDENT中所有男生的学号、姓名。 分析:则只需在字段选择时选择学号和姓名,无需选择性别字段,而在筛选选项卡下可以直接选择性别字段进行设置。(与排序必须选择排序字段不同) 若设置筛选条件的字段不是表中的实际字段,则也可以通过筛选选项卡下的表达式功能生成一个表达式表示筛选条件。 例:查询STUDENT中所有年龄在25岁以上的学生的学号、姓名。 分析:STUDENT本身并无年龄字段,则可以在筛选选项卡下,通过表达式生成一个表达式来设置筛选条件,表达式为:YEAR(DATE())-YEAR(出生日期)。 若有多个筛选条件,则可以通过逻辑运算符OR或AND进行连接,但是要注意逻辑运算符的优先级顺序为NOT→AND→OR。 例:查询STUDENT中所有入学成绩500以上或者男团员的学号、姓名。 分析:查询条件为两个,且通过OR连接,但第二个条件中实际为两个条件,使用AND连接 虽然OR在前,AND在后,但是根据优先级顺序,在计算条件时,仍然先计算AND,再将结果通过OR与第1个条件进行连接。 关于排序依据选项卡 设置排序的步骤为首选将所有排序字段依次添加到排序条件中,再分别对每个排序条件设置升序或者降序。排序时,若将结果先后根据多个字段进行排序,则必须在添加字段按照排序的先后顺序依次添加排序字段,次序不能交换。 例:查询STUDENT中所有学生的学号、姓名、性别和入学成绩,并将结果按照性别的升序排列,若性别相同,再按照入学成绩的降序排列,若性别和入学成绩均相同,再按照学号的升序排列。 分析:根据要求,排序的先后顺序为先看性别,性别相同再看入学成绩,若性别和入学成绩均相同,最后再看学号,因此添加排序字段时,先后顺序必须为首先添加性别、其次为入学成绩、最后为学号;并在所有字段都添加到右侧的排序条件后,再分别对每个排序字段设置升序或降序。 关于分组依据选项卡 对表中数据进行统计时,往往要先根据不同的字段值进行分组,然后再分别计算每一组的数据,统计的函数一般包括SUM和AVG等。分别用于计算表中某一列的总和或者平均值。 例:计算STUDENT中各系的入学成绩平均值、入学成绩总和。 分析:统计前必须将各系的学生分成若干组,再分别计算每组的数据。因此首先在查询设计器中的分组依据选项卡下,选择分组字段为系别号,将所有学生按照不同的系别号分成若干组;并且在字段选项卡下通过表达式功能使用SUM(入学成绩) AS 平均成绩 和AVG(入学成绩) AS 总成绩 分别生成统计数据。 关于杂项选项卡 通常用于查询指定数目的查询结果,设置前必须设置排序字段,否则默认为查询所有满足条件的数据。 例:显示STUDENT中入学成绩前3名的学生姓名、学号和入学成绩。 分析:将排序字段设置为入学成绩的降序,并在杂项选项卡中将结果数目设置为3条。 关于多表查询 利用查询对多个表进行查询时,查询自动为表间创建内部连接(INNER JOIN),一般不需要用户单独再为表创建连接。若是查询两个表,则添加时不区分添加表的先后顺序;若为三个或三个以上的表查询,则在添加时必须按照三表的逻辑连接关系按次序添加。 设计视图时应注意的问题 视图的创建、设计、修改、运行和打开必须依附于数据库,若没有打开数据库,将不能创建视图,也不能打开和运行、修改视图。 视图和查询的比较 视图和查询均能对表(自由表或数据库表)进行查询,但是查询不依附于数据库,视图必须依附于数据库。 查询可以对查询结果设置查询去向,并指定结果的保存方式;视图不能指定查询去向,视图的查询结果均为一个虚拟的表,和查询去向设置的保存结果的实际表文件不同。 查询不能通过更新功能直接修改数据源表中的数

文档评论(0)

1亿VIP精品文档

相关文档