Trong nội dung bài viết này mình sẽ trình bày về Alias trong MySQL. Thì alias là cái gì và chúng có vai trò như thế nào? Chúng ta sẽ đi tìm hiểu tìm hiểu một số nội dung sau:
- Alias là gì
- Có bao nhiều loại Alias
- Alias được dùng như thế nào.
1. Alias là gì.
Alias là một tên giả hay còn gọi là bí danh được sử dụng trong câu lệnh Select nhằm thay đổi tên tạm thời cho một cột hoặc một bảng bằng một cái tên khác. Việc thay đổi này chỉ mang tính chất tạm thời chứ tên bảng hoặc cột thực tế không bị thay đổi.
2. Có bao nhiêu loại Alias
Như đã nói ở trên thì MySQL hỗ trợ hai loại Alias đó là Alias danh cho cột và Alias danh cho bảng.
Để hiểu dõ về chúng ta sẽ đi tìm hiều chi tiết từng loại Alias này.
2.1 Alias dành cho cột.
Trong một số trường hợp thì tên của cột là kết quả của một phép tính, kết quả của một hay nhiều câu lệnh subquery hay tên một colum trong một bảng nào đó qua phép Join. Những tên cột như vậy nó mang tính chất kỹ thuật, máy móc chúng làm cho kết quả trở nên khó hiểu, bạn cần đặt cho chúng một tên đơn giản, dễ thao tác. Để gán cho cột đó một cái tên ta sử dụng Alias.
1 2 | SELECT [column_1 | expression] AS Colum_Name FROM Table_Name; |
Để gán một alias cho cột bạn sử dụng từ khóa AS tiếp theo sau là tên alias. Nếu tên alias của bạn có chưa dấu cách, khoảng trắng thì bạn phải đưa chúng vào giữa dấu trích dẫn, hoặc dấu ngoặc kép như sau:
1 2 | SELECT [column_1 | expression] AS `Colum Name ` FROM Table_Name; |
Lưu ý: Từ khóa AS là tùy chọn, bạn có thể bỏ nó trong câu lệnh. Ngoài ra bạn có thể gán alias cho một biểu thức.
Ví dụ: Sử dụng hàn coun(*) để đến tổng cộng có bao nhiêu bản ghi trong bảng employees.
1 2 3 | SELECT count (*) AS totalItem FROM employees |
Try In Out
Ví dụ 2: Sử dụng hàm CONCAT_WS để ghép hai cột là firstname và lastname trong bảng employees thành một tên đây đủ.
1 2 3 4 | SELECT CONCAT_WS( ', ' , lastName, firstname) FROM employees; |
Try In Out
Nhìn vào kết quả ta thấy rằng tiêu đề(label) cột rất khó để đọc. Nếu tiếp theo ta cần sắp xếp kết quả này theo một trật tự là từ A-Z.
Bằng việc sử dụng alias thì chúng ta sẽ đặt cho nó một alias để cho nó chở nên dễ đọc hiểu hơn như ví dụ dưới đây.
1 2 3 4 | SELECT CONCAT_WS( ', ' , lastName, firstname) as FullName FROM employees; |
Try In Out
Chú ý rằng bạn không được sử dụng cột alias trong mệnh đề WHERE. Tại sao lại vậy? vì khi MySQL thực hiện đánh giá mệnh đề WHERE thì các giá trị của cột được chỉ định trong mệnh đề SELECT có thể không xác định.
2.2 Alias danh cho bảng.
Cũng giống như cách tạo một alias cho cột bất kỳ. Bạn cũng hoàn toàn có thể tạo một alias cho một bảng bất kỳ bằng việc sử dụng từ khóa AS theo cú pháp dưới đây.
1 | table_name AS table_alias OR table_name table_alias |
Chúng ta thường sử dụng alias cho bảng trong những câu lênh truy vấn như INNER JOIN, OUTER JOIN, và SubQuery. Khi chúng ta cần truy xuất tới bảng đó bằng một alias đơn giản và ngắn gọn.
OK ! Hãy xem hai bảng customers orders
Cả hai bảng này đều có một cột có tên là customerNumber. Trong trường hợp này nếu chúng ta không sử dụng alias thì sẽ xảy ra lỗi.
Ví dụ: Xuất ra danh sách thống kê tổng số đơn hàng của mỗi khách hàng.
1 2 3 4 5 6 7 8 9 10 | SELECT customerName, COUNT (o.orderNumber) total FROM customers c INNER JOIN orders o ON c.customerNumber = o.customerNumber GROUP BY customerName ORDER BY total DESC ; |
Try In Out
Ở trong câu lệnh Select thì tôi đã đặt alias cho bảng customers là c và đặt codealias cho bảng orders là o. Từ bây giờ chúng ta có thể gọi các cột trong mỗi bảng thông qua alias của chúng e.g c.customerName hoặc c.city.
Ngoài việc sử dụng alias, Nếu bạn không muốn sử dụng alias thì chúng ta buộc phải sử dụng tên bảng để tham chiếu tới các các cột của nó.
Ví dụ:
1 2 3 4 5 6 7 8 9 10 | SELECT customers.customerName, COUNT (orders.orderNumber) total FROM customers INNER JOIN orders ON customers.customerNumber = orders.customerNumber GROUP BY customerName ORDER BY total DESC |
Try In Out
3. Tổng kết.
Trong bài này mình đã giới thiệu về alias và cách sử dụng nó. Thực chất việc sử dụng alias chỉ đơn thuần làm cho câu lệnh của chúng ta nó đơn giản hơn, dễ đọc và hiểu hơn.