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;