📅  最后修改于: 2020-12-01 00:53:24             🧑  作者: Mango
在本节中,我们将了解PostgreSQL别名和PostgreSQL表别名的工作原理,该别名用于在特定命令中为表指定一个临时名称。
PostgreSQL别名用于为特定语句中的SELECT命令的选择列表中的表或表达式赋予简称。
PostgreSQL别名的优点如下:
在本节中,我们将了解PostgreSQL表别名及其一些示例。
Table别名用于缩写我们的命令,以使其更易于阅读,或者当我们实现Self-Join时,它在FROM子句中多次列出一个相似的表。
表别名用作表名称的昵称,这使表名称更易读和更短。
它在命令的整个执行过程中短暂存在。当表名不是实时友好的用户时,表别名非常有用。
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表别名。
通常,我们使用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
假设我们要在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部分中,我们学习了以下主题: