Skip to main content

Aliases (AS)

Learning Focus

Use this lesson to understand Aliases (AS) with practical syntax and examples.

Concept Overview​

Definition:

In MySQL, an alias is a temporary name assigned to a table or a column, using the AS keyword. It is commonly used to rename fields in query results or to simplify complex expressions.

Why It Matters:

  • Enhances readability of query outputs.
  • Simplifies referencing expressions or aggregate results.
  • Helps align column names with business reporting terminology.
  • Makes complex subqueries and joins easier to manage.

Where It Fits:

Aliases are used alongside:

  • SELECT statements
  • Filtering (WHERE, HAVING)
  • Aggregations (SUM, AVG, etc.)
  • Subqueries and views

Basic Syntax & Rules​

Column Alias Syntax​

SELECT column_name AS alias_name
FROM table_name;

Table Alias Syntax​

SELECT t.column_name
FROM table_name AS t;

Key Notes:​

  • The AS keyword is optional; you can use whitespace alone: SELECT column_name alias_name.
  • Table aliases must be used if referenced more than once or in joins.
  • Aliases exist only during query execution; they don't affect the actual table or column names.

Limitations:​

  • You can't use a column alias in the WHERE clause.
  • Aliases cannot contain reserved SQL keywords unless enclosed in backticks (`).

Step-by-Step Examples​

Sample Table: employees​

+----+------------+-----------+--------+----------+
| id | first_name | last_name | salary | dept_id |
+----+------------+-----------+--------+----------+
| 1 | Alice | Smith | 70000 | 1 |
| 2 | Bob | Jones | 55000 | 2 |
| 3 | Carol | Miller | 80000 | 1 |
+----+------------+-----------+--------+----------+


Example 1: Simple Column Alias​

SELECT first_name AS 'First', last_name AS 'Last'
FROM employees;

Output:

+--------+--------+
| First | Last |
+--------+--------+
| Alice | Smith |
| Bob | Jones |
| Carol | Miller |
+--------+--------+


Example 2: Aliases with Expressions​

SELECT first_name, salary * 1.10 AS adjusted_salary
FROM employees;

Output:

+------------+-----------------+
| first_name | adjusted_salary |
+------------+-----------------+
| Alice | 77000.00 |
| Bob | 60500.00 |
| Carol | 88000.00 |
+------------+-----------------+


Example 3: Table Alias in Join​

Assume another table: departments

+----+-------------+
| id | dept_name |
+----+-------------+
| 1 | Engineering |
| 2 | HR |
+----+-------------+

SELECT e.first_name, d.dept_name
FROM employees AS e
JOIN departments AS d ON e.dept_id = d.id;

Output:

+------------+-------------+
| first_name | dept_name |
+------------+-------------+
| Alice | Engineering |
| Bob | HR |
| Carol | Engineering |
+------------+-------------+


Practical Use Cases​

1. Report-Friendly Column Names​

Make outputs more user-friendly for non-technical stakeholders:

SELECT first_name AS 'First Name', salary AS 'Annual Salary'
FROM employees;

2. Renaming Aggregated Columns​

SELECT dept_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY dept_id;

3. Joining Large Tables Efficiently​

SELECT e.first_name, d.dept_name
FROM employees AS e
JOIN departments AS d ON e.dept_id = d.id;

4. Use in BI Tools or Dashboards​

When integrating with tools like Tableau or Power BI, aliasing helps make column labels intuitive.

5. Simplifying Subqueries​

SELECT e.first_name
FROM (SELECT * FROM employees WHERE salary > 60000) AS e;


Common Mistakes & Troubleshooting​

Mistake 1: Using Alias in WHERE​

SELECT salary * 1.10 AS adjusted_salary
FROM employees
WHERE adjusted_salary > 70000; -- [X] Error!

Fix:

Use the expression directly:

WHERE salary * 1.10 > 70000;


Mistake 2: Confusing Alias with Real Column​

An alias only exists within the query's scope and cannot be used in other clauses unless wrapped in a subquery.


Mistake 3: Forgetting Quotes for Space Names​

SELECT first_name AS First Name  -- [X] Error!

Fix:

SELECT first_name AS 'First Name';


Best Practices​

  • Use aliases to improve clarity, especially with joins and expressions.
  • Always quote aliases with spaces or special characters.
  • Avoid reserved keywords as aliases unless enclosed in backticks.
  • Don't overuse aliases when not necessary; they can make queries harder to follow.

Hands-On Practice​

Setup Sample Tables​

CREATE TABLE employees (
id INT, first_name VARCHAR(50), last_name VARCHAR(50), salary DECIMAL(10,2), dept_id INT
);

INSERT INTO employees VALUES
(1, 'Alice', 'Smith', 70000, 1),
(2, 'Bob', 'Jones', 55000, 2),
(3, 'Carol', 'Miller', 80000, 1);


Exercise 1 (Easy)​

Q: Display full names using alias Full Name.

-- Your Query Here

SELECT CONCAT(first_name, ' ', last_name) AS 'Full Name'
FROM employees;


Exercise 2 (Medium)​

Q: Show First Name and Adjusted Salary (salary + 5000).

SELECT first_name AS 'First Name', salary + 5000 AS 'Adjusted Salary'
FROM employees;


Exercise 3 (Hard)​

Q: Join with departments and show names with department titles.

SELECT e.first_name AS 'Name', d.dept_name AS 'Department'
FROM employees AS e
JOIN departments AS d ON e.dept_id = d.id;


Connection to Other Concepts​

Related ConceptsDescription
SELECTAliases are part of the output control in SELECT
JOINTable aliases simplify joins
WHERE/HAVINGImportant to note WHERE cannot use column aliases
SubqueriesAliases are essential for subquery referencing
GROUP BYAggregated columns are often aliased

Prerequisites: Basic SELECT, understanding tables and columns

What's Next: CASE statements, views, stored procedures


Visual Learning Diagram​

graph TD
A[SELECT Statement] --> B[Expressions]
A --> C[Column Filtering]
C --> D[WHERE Clause]
C --> E[HAVING Clause]
B --> F[Aliasing with AS]
F --> G[Renaming Columns]
F --> H[Table Aliases]
F --> I[Used in Joins]
F --> J[Used in Subqueries]
G --> K[Readable Outputs]
H --> L[Shorter Join Syntax]
I --> M[Multiple Table References]
J --> N[Logical Query Division]
F:::highlightTopic

classDef allNodes fill:#3e3e3e,stroke:#ffffff,stroke-width:2px,color:#f5f5f5
class A,B,C,D,E,F,G,H,I,J,K,L,M,N allNodes
class F stroke-width:4px


Common Pitfalls​

PitfallConsequencePrevention
Executing queries without validating sample rowsLogic errors reach production data or reportsStart with SELECT ... LIMIT 10 and inspect edge cases
Ignoring NULL and duplicate behaviorAggregations and filters return misleading resultsTest with NULL, duplicates, and empty sets explicitly
Using advanced syntax before checking schemaQueries fail due to missing columns/indexesVerify structure with DESCRIBE table_name; and adapt query design

Quick Reference​

SELECT first_name AS firstName FROM users;
SELECT COUNT(*) AS total_orders FROM orders;

What's Next​