2.5.1 ALPHA
一种典型的元组关系演算语言,以元组变量作为谓词变元的基本对象。是E.F.Codd提出的,这一语言虽然没有实际实现,但关系数据库管理系统INGRES所用的QUEL语言是参照ALPHA语言研制的,与ALPHA十分类似。
ALPHA语言主要有GET、PUT、HOLD、UPDATE、DELETE、DROP六条语句。
语句基本格式:操作语句 工作空间名(表达式):操作条件
- 检索操作
- GET 工作空间名[(定额)](表达式)[:条件][排序要求]
- 简单检索(即不带条件的检索)
GET W ( SC.Sno )
GET W ( Student )
- 限定的检索(即带条件的检索)
例:查询信息系中所有年龄小于20的学生的学号和姓名
GET W ( Student.Sno, Student.Sname ) : Student.Sdept = 'IS' ∧ Student.Sage < 20
- 带排序的检索
例:查询计科系中学生的学号和年龄,结果按年龄降序排列
GET W ( Student.Sno, Student.Sage ) : Student.Sdept = 'CS' DOWN Student.Sage
- 带定额的检索
例:查询信息系中年龄最大的三个学生的学号和年龄,结果按年龄降序排列
GET W (3) ( Student.Sno, Student.Sage ) : Student.Sdept = 'IS' DOWN Student.Sage
- 用元组变量的检索
- 元组变量(范围变量 Range Variable)
RANGE 关系名 变量名
- 代表某一关系
- 代表某一关系中某一元组
- 例:查询信息系学生的名字
RANGE Student X
GET W ( X.Sname ) : X.Dept = 'IS'
- 量词后必须使用元组变量
- 存在量词检索
- 例:查询选修2号课程的学生的名字
RANGE SC X
GET W ( Student.Sname ) : $ X ( X.Sno = Student.Sno ∧ X.Cno = '2' )
- 量词后必须使用元组变量
- 全称量词检索
- 例:查询不选2号课程的学生的名字
RANGE SC X
GET W ( Student.Sname ) : " X ( X.Sno≠Student.Sno ∨ X.Cno≠'2' )
- 量词后必须使用元组变量
- 带有多个关系的表达式的检索
- 例:查询成绩90以上的学生的名字和相应课程名
RANGE SC SCX
GET W ( Student.Sname, Course.Cname )
: $SCX ( SCX.Grade ≥90
∧ SCX.Sno = Student.Sno
∧ SCX.Cno = Course.Cno )
- 蕴函
例:查询所有至少选了95002号学生所选课程的学生学号
P:学生95002选修了课程CX。
q:学生Y也选了课程CX。
转换为"CX(p→q)的问题。
RANGE Course CX
SC SCX
SC SCY
GET W ( Student.Sno )
: " CX ( $SCX ( SCX.Sno = '95002' ∧ SCX.Cno = CX.Cno )
→$SCY ( SCY.Sno = Student.Sno ∧ SCY.Cno = CX.Cno ) )
- 集函数
GET W ( COUNT ( Student.Sdept ) )
GET W ( AVG ( Student.Sage ) : Student.Sdept = 'IS' )
- 更新操作
- 修改
- HOLD 工作空间名(表达式)[:条件]
- MOVE 新值 TO 工作空间.属性名
- UPDATE 工作空间
- 插入
- MOVE 新值 TO 工作空间.属性名
- ......
- PUT W(关系名)
- 删除
- HOLD 工作空间名(关系名)[:条件]
- DELETE 工作空间
NEXT