SQL别名

广告位

在本教程中,您将了解SQL别名,包括表和列别名,以使查询更短,更易理解。 1. SQL别名简介 SQL别名用于…

在本教程中,您将了解SQL别名,包括表和列别名,以使查询更短,更易理解。

1. SQL别名简介

SQL别名用于在执行查询期间为表或列分配临时名称。 有两种类型的别名:表别名和列别名。
几乎所有关系数据库管理系统都支持列别名和表别名。
SQL别名

1.1. 列别名

当我们设计表时,经常将列名称保持简短或另起新名称,例如,销售订单号为:so_no,发票号码为:inv_no。在使用SELECT语句从表中查询数据返回输出时不具有描述性。

要在查询中为列指定新名称,请使用列别名。 列别名只是执行查询期间列的临时名称。

请参阅以下查询:

SELECT     inv_no AS invoice_no,     amount,     due_date AS '截止日期',     cust_no '客户编号' FROM     invoices; 
  • invoice_noinv_no列的别名
  • 'Due date'due_date列的列别名。 因为别名包含空格,所以必须使用单引号(')或双引号(")来包围别名。
  • 'Customer no'cust_no列的别名。注意这里没有使用AS关键字。AS关键字是可选的,因此可以省略它。

我们经常对选择列表中的表达式使用列别名。 例如,以下查询使用headcount作为返回雇员数量的表达式的列别名:

SELECT     count(employee_id) headcount FROM     employees; 

执行上面示例代码,得到以下结果 –

mysql> SELECT     count(employee_id) headcount FROM     employees; +-----------+ | headcount | +-----------+ |        40 | +-----------+ 1 row in set 

可以在SELECT子句之后评估的任何子句中使用列别名,例如。 请参阅以下示例:

SELECT     department_id,     count(employee_id) headcount FROM     employees GROUP BY     department_id HAVING     headcount >= 5; 

执行上面示例代码,得到以下结果 –

SQL别名

HAVING子句中,我们不是引用表达式count(employee_id),而是引用列别名headcount

1.2. 表别名

SELECT语句中临时为表分配一个不同的名称。这个表的新名称称为表别名。 表别名也称为相关名称。

请注意,分配别名实际上并不重命名表。 它只是在执行查询时为表提供另一个名称。

在实践中,我们保持表别名简短且易于理解。 例如,e代表员工,d代表部门,j代表职位,l代表位置。

那么为什么必须使用表别名呢?

第一个原因:使用表别名的是节省输入冗长名称的时间并使查询更容易理解。 请参阅以下查询:

SELECT      d.department_name FROM     departments AS d 

ddepartments表的表别名。 AS关键字是可选的,因此可以省略它。

departments表具有别名d时,您可以使用别名d来引用该表。

例如,d.department_name引用departments表的department_name字段。 如果不使用表别名,则必须使用departments.department_name来引用更长的department_name字段。

第二个原因:使用表别名,希望在单个查询中多次引用同一个表。例如经常在,和中找到此类查询。

以下查询使用inner join子句从employeesdepartments表中选择数据。

SELECT     employee_id,     first_name,     last_name,     department_name FROM     employees INNER JOIN departments ON department_id = department_id ORDER BY     first_name; 

执行上面查询语句后,数据库系统将发出错误:

Column 'department_id' in on clause is ambiguous 

要避免这个错误,需要使用表名限定列,如下所示:

SELECT     employee_id,     first_name,     last_name,     employees.department_id,     department_name FROM     employees INNER JOIN departments ON departments.department_id = employees.department_id ORDER BY     first_name; 

要使查询更短,可以使用表别名,例如,e表示employees表,d表示departments表,如下面的查询:

SELECT     employee_id,     first_name,     last_name,     e.department_id,     department_name FROM     employees e INNER JOIN departments d ON d.department_id = e.department_id ORDER BY     first_name; 

以下查询使用self-joinemployee表自联接。

SELECT     e.first_name AS employee,     m.first_name AS manager FROM     employees e LEFT JOIN employees m ON m.employee_id = e.manager_id ORDER BY     manager; 

因为employees表在查询中出现两次,所以需要使用两个表别名:em; e代表员工,而m代表经理。

在本教程中,您学习了如何使用SQL别名(包括列别名和表别名)来使查询更短,更易理解。

  

洁姐我爱你

关于作者: 洁姐我爱你

为您推荐

广告位

发表评论