图3-12 QBE的操作框架

 1.检索操作:
  (1) 简单查询:
  用户提出要求,在最左边的关系名一栏中输入查询相应关系的关系名。系统显示该关系的所有属性名。
  例如,在图3-13中,给定关系名称student,系统自动显示该关系的全部属性。

  图3-13 简单查询示例

  在图3-14中,用户对简单查询示例构造查询要求。图中P(Print)为操作符,表示显示输出。QBE要求查询输出的示例元素下面加上下划线,在这里输入的'19'无任何意义,可能在计算机系中并不存在这样一个学生有19岁,可是它是这个域的示例元素,说明这个域的数据是什么样的类型(此处19表示为整数类型)。而对应在Sdept下面的是查询条件CS(计算机系)。本例说明要查询计算机系学生的年龄。

  图3-14 构造查询要求


  屏幕上会显示结果如图3-15。显示结果说明计算机系所有学生的年龄为21或23岁,实际的显示结果下面不带下划线。

  图3-15 显示查询结果

Student Sno Sname Ssex Sage Sdept
        19
21
23
CS


  (2) 条件查询:
  条件查询中可以使用比较运算符>,<,=等。其中=可以省略。
  例1:查询年龄大于19岁的学生学号。如图3-16。


  图3-16 简单条件查询

Student Sno Sname Ssex Sage Sdept
  P.3339     >19
 

  也可以对查询使用逻辑运算AND(与)和OR(或)。
  例2:查询关系Student中的学号,要求年龄>19并且为计算机系的学生。如图3-17。


  图3-17 两个条件与的查询

Student Sno Sname Ssex Sage Sdept
  P.3339     >19
CS

  例3:查询关系Student中的学号,要求为计算机系的学生或者年龄>19的学生。查询条件构造如图3-18。

  图3-18 两个条件或的查询

Student Sno Sname Ssex Sage Sdept
  P.3339
P.3333
    >19


CS

  区别在于与操作是在一行中输入多个查询条件,这些条件作与操作。得出最后满足条件的元组。而或操作在多行中输入查询条件,每行只输入一个查询条件。注意每行都要输入示例元素值,如P.3339和P.3333,示例元素值不能相同,如果每行的示例元素值都相同,那么就成了与操作。
  下面的操作是与操作,查询计算机系并且年龄>19岁的学生学号,如图3-19。


  图3-19 两个条件与的查询

Student Sno Sname Ssex Sage Sdept
  P.3339
P.3339
    >19


CS

  (3)集合函数
  为了方便使用,QBE提供了集合函数。包括CNT(对元组计数),SUM(求总和),AVG(求平均值),MAX(求最大值),MIN(求最小值)
  例如:查询计算机系学生的平均年龄,如图3-20。


  图3-20 求平均年龄的查询

Student Sno Sname Ssex Sage Sdept
        P.AVG.ALL.

CS

  (4) 对查询结果进行排序
  对查询结果按照某个属性值进行升序排列,只要填入AO.,按照降序排序,只要填入DO。
  例如:查询计算机系全体学生学号,按照年龄升序排列。如图3-21。


  
图3-21 对查询结果升序排列

Student Sno Sname Ssex Sage Sdept
  P.3339

    AO.

CS