📜  PostgreSQL别名

📅  最后修改于: 2020-12-01 00:53:24             🧑  作者: Mango

PostgreSQL别名

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

什么是PostgreSQL别名?

PostgreSQL别名用于为特定语句中的SELECT命令的选择列表中的表或表达式赋予简称。

PostgreSQL别名的优点

PostgreSQL别名的优点如下:

  • PostgreSQL别名使列或表名更易于理解。
  • 在查询中要使用多个表的情况下,这是首选方法。
  • 它提供了方便且灵活的功能,使我们能够快速完成复杂的任务。
  • 当我们在语句中使用函数时,PostgreSQL别名是有用的。
  • 在PostgreSQL别名中,我们可以合并两个或更多列。
  • 当列名有意义或不可读时,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];

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

Parameters Description
table_name The table name parameter is used to define the original name, where we want to perform alias.
column_name The column name is used to define the column name for a particular table.
alias_name The alias name is used to describe the temporary name, which is given to the column.
AS The AS is an optional keyword used by most developers while aliasing a column name, but not used when performing the table aliasing.

PostgreSQL表别名的示例

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

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

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

如果我们使用相似的列名,而该列名来自一个或多个表而没有完全限定它们,则会出现错误。

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

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内部联接子句来组合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;

输出量

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

总览

在PostgreSQL表Alias部分中,我们学习了以下主题:

  • 我们将使用提供PostgreSQL表别名的方式在执行命令时临时为表赋予新名称。
  • 我们将在PostgreSQL Join子句中实现表别名。