Oracle ALIASES
可用于为列或表创建临时名称(或叫作别名)。
- 列别名用于使结果集中的列标题更容易阅读。
-
表别名用于缩短SQL,或者当执行自连接时(即:在
FROM
子句中多次列出同一个表)以使其更容易阅读。
句法
Oracle / PLSQL中的列别名的语法是:
column_name AS alias_name
或者-
Oracle / PLSQL中的表别名语法是:
table_name alias_name
参数
- column_name
想要使用别名的列的原始名称。 - table_name
想要使用别名的表的原始名称。 - alias_name
要分配的临时名称(也是使用的别名名称)。
注意
- 如果
alias_name
包含空格,则必须用引号括起alias_name
。 - 在对列名称进行别名时,可以使用空格。 但是,在对表名进行别名时,通常不要使用空格。
-
alias_name
仅在SQL语句的作用域内有效。
示例1 - 在列上使用别名
通常,别名用于使结果集中的列标题更容易阅读。 例如,将字段连接在一起时,可能在结果中使用别名。
例如:
SELECT contact_id, first_name || last_name AS NAME
FROM contacts
WHERE last_name = 'Anderson';
在本例中将第二列(即:first_name
和last_name
连接)使用别名为NAME
。 因此,当返回结果集时,NAME
将显示为第二列的标题。 因为alias_name
不包含任何空格,所以不需要在引号中包含alias_name
。
但是,使用引号编写此示例也是完全没有问题的,如下所示:
SELECT contact_id, first_name || last_name AS "NAME"
FROM contacts
WHERE last_name = 'Anderson';
接下来,再来看看另外一个例子,需要在引号中包含alias_name
。
例如:
SELECT contact_id, first_name || last_name AS "CONTACT NAME"
FROM contacts
WHERE last_name = 'Anderson';
在此示例中,我们将第二列(即:first_name
和last_name
连接)使用一个别名为“CONTACT NAME
”。 由于alias_name
中有空格,因此“CONTACT NAME
”必须用引号括起来。
示例2 - 在表上使用别名
当在表上创建别名时,它是因为要在FROM
子句中多次列出同一个表名(即:自连接),或者想要缩短表的名称以缩短SQL语句,使SQL语句更容易阅读。
让我们来看看如何在Oracle / PLSQL中对表名使用别名。
例如:
SELECT p.product_id, p.product_name, categories.category_name
FROM products p
INNER JOIN categories
ON p.category_id = categories.category_id
ORDER BY p.product_name ASC, categories.category_name ASC;
在此示例中,products
表创建了一个别名为p
。 现在在这个SQL语句中,可以参考products
表为p
,也就是可以直接写p
来表示products
表。
创建表别名时,不必在FROM
子句中列出的所有表创建别名。可以选择在任何或所有表上创建别名。
例如,可以修改上面的示例,并为 categories
表创建别名。
SELECT p.product_id, p.product_name, c.category_name
FROM products p
INNER JOIN categories c
ON p.category_id = c.category_id
ORDER BY p.product_name ASC, c.category_name ASC;
现在我们有一个名称为c
的categories
表别名,和一个名称为p
的products
表的别名。