MySQL 别名

2024年10月22日 MySQL 别名 极客笔记

MySQL 别名

别名在MySQL中用于给表或表中的列起一个临时名称,以便于特定查询的目的。它作为一个别名来表示表或列名称。它使查询变短且整洁。

当表或列名称在实时环境中不友好时,它非常有用。它使列的名称更易读。MySQL别名仅在查询的 持续时间 内存在。

MySQL别名的优点

MySQL中别名的优点如下:

  • 在查询中使用多个表时,它是首选。
  • 它提供了一个非常有用和灵活的功能,可以快速实现复杂的任务。
  • 它使列或表名更易读。
  • 在查询中使用函数时非常有用。
  • 它还可以允许我们合并两个或更多列。
  • 当列名很长或不可读时,它也非常有用。

语法

MySQL中别名的基本语法如下所示:

对于列

SELECT col_name AS alias_name FROM table_name;

表格

SELECT col_name1, col_name2,... FROM table_name AS alias_name;

参数解释

以下表格详细解释了参数:

参数 描述
Column_Name 这是我们要创建别名的列名。
Table_Name 这是我们要创建别名的表名。
Alias_Name 这是我们给列或者表分配的临时名称。
AS 这是可选项。如果你没有指定它,在查询执行上没有影响。这是程序员在给列名起别名时使用的,而不是在表名上起别名时使用的。

如果您想给别名取名为 空格 ,那么它必须用引号括起来。通常,在给列名取别名时提供空格是一个好的做法,而不是在表名上。以下语法更清楚地解释了这一点:

SELECT col_name AS 'alias_name' FROM table_name;

现在,我们要了解MySQL中的别名是如何工作的。让我们首先使用以下查询语句创建一个名为” Student_info “的表:

CREATE TABLE Student_info(
  stud_id int PRIMARY KEY NOT NULL,
  stud_code varchar(15),
  stud_name varchar(35),
  subject varchar(25),
  marks int
);

在创建表格之后,我们需要插入一条记录。假设该表格包含以下数据:

示范列别名

如果我们想要从上面的表中获取 ‘Roll No’ 别名为 stud_code 的内容,执行以下语句:

mysql> SELECT stud_code AS Roll_No FROM Student_info;

它将返回以下输出:

再次,如果我们想要用“Roll No”来获取包含空格和分数的stud_code,请执行以下语句:

mysql> SELECT stud_code AS 'Roll No', marks AS scores FROM Student_info;

它将返回以下结果:

这是另一个例子,将返回分数大于70的 学生姓名科目

mysql> SELECT stud_name AS 'Student Name', subject AS 'Subject', marks
FROM Student_info  
HAVING marks > 70
ORDER BY stud_name;

执行成功后,我们会看到结果集仅包含那些成绩大于70分的记录。

说明表别名

它允许我们使用不同的名称指定表名。大多数情况下,表别名用于多个表并使用 JOIN 操作连接它们。

假设我们的数据库中有一个名为” Students “的表,其中包含以下数据:

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

mysql> SELECT Student_details.stud_name, Student_details.phone, Student_details.marks 
FROM Students AS Student_details;

将会输出以下内容:

让我们看一个例子来理解使用JOIN操作的表别名。假设我们的数据库还有一张名为” Student_detail “的表,其中包含以下数据:

在两个表中,我们可以看到它们都包含一个名为‘stud_code’的列。如果我们在没有使用表别名的情况下使用它,会出现一个 错误 ,错误提示为:一个子句中的列‘stud_code’引起歧义。

因此,如果我们想避免这种类型的错误,就要使用表别名的概念。下面的语句更清楚地解释了这一点:

mysql> SELECT stud_name, branch, grade, phone
FROM Students AS S
INNER JOIN Student_detail AS D
ON S.stud_code=D.stud_code
ORDER BY grade;

在上面语句成功执行之后,我们将得到以下输出:

如果您不想在查询中使用别名概念,那么MySQL将使用表名来识别列名。这个过程使语句变得冗长且难以阅读,如下所示:

mysql> SELECT stud_name, branch, grade, phone
FROM Students INNER JOIN Student_detail 
ON Students.stud_code=Student_detail.stud_code
ORDER BY grade;

本文链接:http://so.lmcjl.com/news/15970/

展开阅读全文