|
|
|
| 下面我们以学生-课程关系数据库为例,说明QBE的用法。 |
| 一、 | 检索操作 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (1) 简单查询 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例1 求信息系全体学生的姓名 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
操作步骤为: 3) 用户在最左边一栏输入关系名Student
4) 屏幕显示该关系的栏名,即Student关系的各个属性名
5) 用户在上面构造查询要求
这里T是示例元素,即域变量。QBE要求示例元素下面一定要加下划线。CI是查询条件,不用加下划线。P.是操作符,表示打印(Print),实际上就是显示。
这里的查询条件是Sdept='IS',其中“=”被省略。
这里T是示例元素,即域变量。QBE要求示例元素下面一定要加下划线。CI是查询条件,不用加下划线。P.是操作符,表示打印(Print),实际上就是显示。
这里的查询条件是Sdept='IS',其中“=”被省略。
根据用户构造的查询要求,这里只显示计算机科学系的学生姓名属性值。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例2 查询全体学生的全部数据 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
显示全部数据也简单地把P.操作符作用在关系名上。因此本查询也可以简单地表示如下:
显示全部数据也简单地把P.操作符作用在关系名上: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (2) 条件查询 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例3 求年龄大于19岁的学生的学号 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
注意,查询条件中只能省略=比较运算符,其他比较运算符(如>)不能省略。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例4 求计算机科学系年龄大于19岁的学生的学号 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1) 把两个条件写在同一行上:
2) 把两个条件写在不同行上,但使用相同的示例元素值:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例5 查询计算机科学系或者年龄大于19岁的学生的学号 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
本查询的条件是Sdept='CS'和Sage>19两个条件的“或”。在QBE中把两个条件写在不同行上,并且使用不同的示例元素值,即表示条件的“或”。
对于多行条件的查询,如例4中的2)和例5,先输入哪一行是任意的,查询结果相同。这就允许查询者以不同的思考方式进行查询,十分灵活、自由。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例6 查既选修了1号课程又选修了2号课程的学生的学号 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
本查询条件是在一个属性中的“与”关系,它只能用“与”条件的第2)种方法表示,即写两行,但示例元素相同。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例7 查询选修1号课程的学生姓名 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
本查询涉及两个关系:SC关系和Student关系。在QBE中实现这种查询的方法是通过相同的连接属性值把多个关系连接起来。
这里示例元素Sno是连接属性,其值在两个表中要相同。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例8 查询未选修1号课程的学生姓名 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
这里的查询条件中用到逻辑非。在QBE&127;中表示逻辑非的方法是将逻辑非写在关系名下面。
这个查询就是显示学号为95001的学生名字,而该学生选修了1号课程的情况为假。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例9 查询有两个人以上选修的课程号 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
本查询是在一个表内连接。
这个查询就是要显示这样的课程号1,它不仅被95001选修,而且另一个学生(フ95001)也选修了。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (3) 集函数 为了方便用户,QBE提供了一些集函数,主要包括CNT,SUM,AVG,MAX,MIN等,其含义如表所示。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 详细信息… | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
表2-6 QBE中的集函数
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例10 查询信息系学生的平均年龄 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (4)对查询结果排序 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 详细信息… | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
对查询结果按某个属性值的升序排序,只需在相应列中填入“AO.”,按降序排序则填“DO.”。如果按多列排序,用“AO(i).”或“DO(i).”表示,其中i为排序的优先级,i值越小,优先级越高。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例11 查全体男生的姓名,要求查询结果按所在系升序排序,对相同系的学生按年龄降序排序 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 二、 | 更新操作 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (1) 修改操作 修改操作符为“U.”。关系的主码不允许修改,如果需要修改某个元组的主码,只能间接进行,即首先删除该元组,然后再插入新的主码的元组。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例12 把95001学生的年龄改为18岁 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
·将操作符“U.”放在关系上
这里,码95001标别要修改的元组。“U.”标明所在的行是修改后的新值。&127;由于主码是不能修改的,所以即使在第二种写法中,系统也不会混淆要修改的属性。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例13 把95001学生的年龄增加1岁 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
这个修改操作涉及表达式,所以只能将操作符“U.”放在关系上。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例14 将计算机科学系所有学生的年龄都增加1岁 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (2) 插入操作 插入操作符为“I.”。新插入的元组必须具有码值,其他属性值可以为空。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例15 把信息系女生95701,姓名张三,年龄17岁存入数据库中 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (3) 删除操作 删除操作符为“D.”。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 例16 删除学生95089 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
由于SC关系与Student关系之间的具有参照关系,为保证参照完整性,删除95089学生后,通常还应删除95089学生选修的全部课程:
|

