除了SQL还有其它形式的关系语言:元组关系演算和域关系演算都是基于数理逻辑的声明式查询语言。
下面介绍两种用户友好的查询语言QBE和DataLog
1.元组关系演算
元组关系演算是非过程化的查询语言,它只描述所需要的信息,而不给出获得该信息的具体过程。
元组关系演算中的查询表达式为:
也就是说,它是所有谓词P为真的元组t的集合。
形式化定义
其中P是一个公式。公式中可以出现多个元组变量。 如果元组变量不被或
修饰,则称为自由变量。
元组关系演算的公式由原子构成,原子可以为如下形式
其中s是元组变量,而r是关系
其中s和u是元组变量,x是s所基于的关系模式中的属性,y是u所基于的关系模式中的属性,
是比较运算符。
其中s是元组变量,x是s所基于的关系模式中的属性,
是比较运算符,c是属性x所属域的常量
2.域关系演算
形式化定义:
其中x代表域变量,P代表由原子构成的公式。域关系演算的原子具有如下形式之一
,其中r是n个属性上的关系,x是域变量或者域常量
,其中x和y是域变量,而
是比较运算符
其中x是域变量,
是比较运算符,c是x作为域变量的那个属性中的常量
3.QBE Query-by-Example
二维文法,类似表格
查询是基于例子的,用户不是写一个过程获得所需答案,而是举出所需答案的一个例子,然后系统把这个例子一般化并计算查询结果
基于文本的版本和基于图形的版本
查询用框架表表示
微软Access中的QBE
4.DataLog
基于逻辑编程语言Prolog的非过程化查询语言。
由一组规则构成
正的文字量:
其中p是关系名,有n个属性,
或者是常数或者是变量
负的文字量:
not其中p是关系名 ,p有n个属性。
事实形式:
表示元组
在关系p中,关系的一组事实可以写成通常的表达格式形式。数据库模式中所有关系的事实集合和数据库模式的一个实例等价。规则建立在文字量的基础上,形式为:
其中每个是一个正的或者负的文字量,文字量
称做规则的头部,规则中其余的文字量构成规则的主体。
一个Datalog有一组规则构成
DataLog的递归和非递归
传递闭包