3.4 附加的基本运算 3.4.1 更名运算

3.4 附加的基本运算

SQL中还支持几种附加的基本运算。

3.4.1 更名运算

1
2
3
select name, course_id
from instructor,teaches
where instructor.ID = teaches.ID;

as子句

SQL提供了一个重命名结果关系中属性的方法。即使用如下形式的as子句:
old-name as new-name
as子句既可出现在select子句中,也可出现在rom子句中

重命名属性

例如,如果我们想用名字instructor_name来代替属性名nme,我们可以重写上述查询如下:

1
2
3
select name as instructor_name, course_id
from instructor, teaches
where instructor.ID = teaches.ID;

重命名关系

将长的关系名换成短的关系名

as子句在重命名关系时特别有用。重命名关系的一个原因是把一个长的关系名替换成短的,这样在査询的其他地方使用起来就更为方便。为了说明这一点,我们重写查询”对于大学中所有讲授课程的教师,找出他们的姓名以及所讲述的所有课程标识”:

1
2
3
select T.name,S.course_id
from instructor as T, teaches as S
where T.ID =S.ID;

重命名关系以便同一个关系中的元组

重命名关系的另一个原因是为了适用于需要比较同一个关系中的元组的情况
为此我们需要把个关系跟它自身进行笛卡儿积运算,如果不重命名的话,就不可能把一个元组与其他元组区分开来。
假设我们希望写出查询:”找出满足下面条件的所有教师的姓名,他们的工资至少比Biology系某一个教师的工资要高“,我们可以写出这样的SQL表达式:

1
2
3
select distinct T.name
from instructor as T,instructor as S
where T.salary > S.salary and S.dept_name ='Biology';

在上述查询中,TS被声明为instructor关系的别名。

表别名的其他等效说法

TS那样被用来重命名关系的标识符SQL标准中被称作相关名称(correlation name),但通常也被称作表别名( table alias),或者相关变量( correlation variable),或者元组变量(tuple variable)。