PostgreSQL 别名

在本节中,我们将了解PostgreSQL 别名和 PostgreSQL 表别名的工作原理,它用于在特定命令中为表提供临时名称。

什么是 PostgreSQL 别名?

PostgreSQL别名用于给特定语句中SELECT 命令的选择列表中的表或表达式起一个短名称。

PostgreSQL 别名的优点

PostgreSQL 别名的优点如下:

  • PostgreSQL 别名使列名或表名更易于理解。
  • 在一个查询中要使用多个表的情况下,这是首选。
  • 它提供了一个方便灵活的特性,使我们能够快速完成复杂的任务。
  • 当我们在语句中使用函数时,PostgreSQL 别名很有用。
  • 在 PostgreSQL Aliasing 中,我们可以组合两个或多个列。
  • 当列名很重要或不可读时,PostgreSQL 别名非常有用。

可以通过两种方式定义 PostgreSQL 别名:

  • PostgreSQL 表别名
  • PostgreSQL 列别名

在本节中,我们将了解PostgreSQL 表别名及其一些示例。

什么是 PostgreSQL 表别名?

Table别名用于缩写我们的命令以使其更易于阅读,或者当我们实施Self-Join时,它会在FROM子句中多次列出类似的表。

表别名作为表示表名的昵称,使表名更易读,更短。

它在命令的执行过程中暂时存在。当表名不是实时用户友好时,表别名非常有用。

PostgreSQL 表别名的语法

PostgreSQL 表别名的语法如下:

SELECT column1, column2....,columnN  
FROM table_name AS alias_name  
WHERE [condition];

或者在下面的语法中,我们忽略了AS关键字,因为它是可选的,并且表 _name被赋予别名alias_name。

SELECT column_name  
FROM table_name alias_name;  
WHERE [condition];  

在上面的语法中,我们有以下参数:

参数 描述
table_name 表名参数用于定义原始名称,我们要在这里进行别名。
column_name 列名用于定义特定表的列名。
alias_name 别名用于描述赋予列的临时名称。
as AS是大多数开发人员在为列名设置别名时使用的可选关键字,但在执行表别名时不使用。

PostgreSQL 表别名示例

让我们看一些例子,以便更好地理解 PostgreSQL 表别名。

  • 在连接子句中执行表别名

通常,我们使用连接子句从一个或多个表中获取记录,这些表包含相似的列名。

如果我们使用来自一个或多个表但没有完全限定它们的相似列名,我们将得到一个错误。

要忽略此错误,我们需要借助以下语法来限定这些列:

table_name.column_name  

表别名用于一个或多个表,并将它们与JOIN子句的帮助链接起来。在这里,我们为FROM 子句中指定的表名使用表别名,以及使命令更具可读性的INNER JOIN子句。

在下面的示例中,我们有一个名为Employee 的表,其中包含以下数据:

此语句将使用表别名返回记录:

SELECT employee_details.emp_id, employee_details.emp_fname,   
employee_details.emp_lname  
FROM employee AS employee_details;   

执行上述命令后,我们将得到以下结果:

让我们假设我们的数据库还有一个名为department的表,它具有以下数据,我们可以在下面的屏幕截图中看到:

正如我们所观察到的,两个表都包含一个相似的列emp_fname。

SELECT e.emp_id, emp_fname, emp_lname,location,dept_name    
FROM Employee  e    
INNER JOIN department  d     
ON e.emp_id= d.dept_id;  

在执行上述命令时,我们将得到以下输出,其中显示以下错误:如果我们在没有表别名的情况下使用它,则一个子句中的列 'emp_fname' 是不明确的。

因此,如果我们想避免上述错误,我们将使用表别名。

在下面的命令中,我们将使用 PostgreSQL Inner Join 子句来合并Employee 和 Department 表;并对其执行表别名。

SELECT e.emp_id, e.emp_fname, emp_lname,  
location, dept_name    
FROM Employee  e    
INNER JOIN department  d     
ON e.emp_id= d.dept_id  
ORDER BY location desc;      

执行上述命令后,我们将得到以下输出:

如果我们不想在命令中使用别名概念,那么 PostgreSQL 会使用表名来查找列名,这会使语句变长且可读性降低,如下例所示

SELECT emp_fname, emp_lname,location   
FROM employee      
INNER JOIN employee_details   
ON employee.emp_id= employee_details.emp_id;  

执行上述语句后,我们将得到以下输出:

  • 对长表名进行表别名的示例

为了使我们的命令更具可读性并节省一些键入时间来编写冗长的表名,我们可以使用表别名。

例如,不是在命令中使用以下表达式

Long_table_name.column_name  

我们可以给表long_table_name一个别名,如下所示:

Long_table_name AS alias

并借助表别名引用表Long_table_name中的column_name :

alias.column_name  
  • 在 PostgreSQL 自连接子句中执行表别名

假设我们想在 Self-join 子句中使用表别名。self-join 子句用于将表合并到自身,它在一条语句中多次引用相似的表。

在下面的示例中,我们将展示如何借助表别名在类似命令中两次引用Customer表:

SELECT  
c.first_name Customer,  
o.first_name Orders  
FROM Customer c  
INNER JOIN Customer o ON o.order_id = c.order_id  
ORDER BY Orders;  

执行以上命令后,我们会得到如下结果:

热门文章

优秀文章