Hướng dẫn dùng mysql alias trong PHP

Ở trong bài học phép tích trong MySQL chúng ta có làm một số ví dụ và tôi cũng có nói rằng khi tích hai bảng với nhau nếu có tên column trùng nhau thì phải sử dụng cú pháp ten_tabe.ten_field. Điều này thật là phiền nếu như tên bảng quá dài như ví dụ dưới đây:

Hướng dẫn dùng mysql alias trong PHP

Hướng dẫn dùng mysql alias trong PHP

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

SELECT tb_freetuts_product.cate_id, tb_freetuts_product.title, tb_freetuts_product_cate.title
FROM tb_freetuts_product, tb_freetuts_product_cate
WHERE tb_freetuts_product.cate_id = tb_freetuts_product_cate.id

Chưa tính đến chuyện tên column bị trùng nên dẫn đến sai. Vậy có giải pháp nào xử lý vụ này không? Chúng ta cùng tìm hiểu nhé.

1. Sử dụng AS (Alias) trong MySQL

Câu trả lời cho câu hỏi trên là ta sẽ sử dụng từ khóa AS (Alias) để đặt lại cái định danh mới cho Table, Column.

Bài viết này được đăng tại [free tuts .net]

Chúng ta có hai cách viết như sau:

  • old_name AS new_name
  • old_name new_name

Nghĩa là ta sử dụng từ khóa AS để đặt tên mới hoặc là bỏ luôn chữ AS.

Sau đây là một số ví dụ:

# Sử dụng AS (Alias) cho column

Ví dụ: Trường hợp này cả hai bảng trùng tên column title nên ta phải dùng AS để định cái tên mới cho cả hai.

SELECT 
	tb_freetuts_product.cate_id AS cate_id, 
	tb_freetuts_product.title AS product_title, 
	tb_freetuts_product_cate.title AS cate_title
FROM 
	tb_freetuts_product, tb_freetuts_product_cate
WHERE 
	tb_freetuts_product.cate_id = tb_freetuts_product_cate.id

Hoặc:

SELECT 
	tb_freetuts_product.cate_id cate_id, 
	tb_freetuts_product.title product_title, 
	tb_freetuts_product_cate.title cate_title
FROM 
	tb_freetuts_product, tb_freetuts_product_cate
WHERE 
	tb_freetuts_product.cate_id = tb_freetuts_product_cate.id

Kết quả trả về của ví dụ này gồm các column: cate_id | product_title | cate_title

# Sử dụng AS (Alias) cho table

Ví dụ: Trường hợp này tên dài quá nên sử dụng AS để viết ngắn gọn hơn.

SELECT 
	product.cate_id AS cate_id, 
	product.title AS product_title, 
	cate.title AS cate_title
FROM 
	tb_freetuts_product AS product, tb_freetuts_product_cate AS cate
WHERE 
	product.cate_id = product.id

Như vậy khi ta đặt alias cho tên table thì ở WHERE và SELECT sử dụng ngắn gọn hơn rất nhiều.

2. Lời kết

Việc sử dụng AS (Alias) trong MySQL khi viết câu truy vấn giúp câu SQL ngắn gọn hơn rất nhiều. Trường hợp tên field bị trùng nhau thì chúng ta phải sử dụng AS để đặt một cái tên định danh mới cho các field. Riêng với Table thì nếu dùng AS thì ở WHERE và SELECT có thể lấy tên của AS thay vì lấy tên gốc của table.

Xin chào các bạn, trong bài ngày hôm nay mình sẽ giới thiệu đến các bạn một phần mới trong MySQL đó là Alias hay còn gọi là bí danh. As (Alias) trong MySQL được sử dụng để cải thiện khả năng đọc dữ liệu của các truy vấn. MySQL hỗ trợ hai loại alias được gọi là alias column và alias table. Bây giờ chúng ta sẽ đi vào chi tiết cho từng loại alias nhé.

  • As (Alias) trong Mysql cho cột
  • As (Alias) trong Mysql cho Bảng
  • Kết luận

As (Alias) trong Mysql cho cột

Đôi khi tên của các cột rất rắc rối khiến cho đầu ra của truy vấn rất khó hiểu. Ví vậy chúng ta cần đặt cho cột đó một bí danh (alias).

Câu lệnh sau minh họa cách sử dụng alias column:

Hướng dẫn dùng mysql alias trong PHP

Để cung cấp cho một alias cho cột, bạn sử dụng từ khóa AS theo sau là alias. Nếu alias chứa khoảng trắng, bạn phải khai báo nó như sau:

Bởi vì từ khóa AS là tùy chọn, bạn có thể bỏ qua nó trong câu lệnh. Lưu ý rằng bạn cũng có thể cho một biểu thức một alias.

Bây giờ các bạn hãy xem ví dụ sau: mình có bảng employees

Hướng dẫn dùng mysql alias trong PHP
Truy vấn sau đây chọn tên và họ của nhân viên và kết hợp chúng để tạo ra tên đầy đủ. Hàm CONCAT_WS được sử dụng để nối tên và họ.

Các bạn có thể thấy tiêu đề cột khá khó đọc, bây giờ bạn có thể gán tiêu đề của cột đó với một alias_column để làm cho nó dễ đọc hơn như sau:

Trong MySQL, bạn có thể sử dụng alias column trong câu lệnh ORDER BYGROUP BY và HAVING để tham chiếu đến cột.

Ví dụ: truy vấn sau sử dụng alias column trong mệnh đề ORDER BY để sắp xếp tên đầy đủ của nhân viên theo thứ tự abc:

Lưu ý: Bạn không thể sử dụng một alias column trong câu lệnh WHERE. Lý do là vì khi MySQL đánh giá câu lệnh WHERE, các giá trị của các cột được chỉ định trong câu lệnh SELECT có thể chưa được xác định.

As (Alias) trong Mysql cho Bảng

Bạn có thể sử dụng alias để đặt tên cho một bảng. Bạn chỉ định một alias table bằng cách sử dụng từ khóa AS như sau:

Giống như bí alias cho cột, từ khóa AS là tùy chọn để bạn có thể bỏ qua nó.

Bạn thường sử dụng alias table trong câu lệnh INNER JOINLEFT JOIN

Bây giờ mình có 2 bảng là customers  và orders

Cả hai bảng có cùng tên cột: customerNumber. Nếu không sử dụng alias table để cột customerNumber đủ điều kiện, bạn sẽ nhận được thông báo lỗi như sau:

Để tránh lỗi này, bạn sử dụng alias table để cột customerNumber đủ điều kiện :

Truy vấn ở trên chọn ra tên khách hàng và số lượng đơn đặt hàng từ bảng customers và orders. Nó sử dụng c làm bí danh cho bảng customers và o làm bí danh cho bảng orders. Các cột trong bảng customers và orders được gọi qua alias table.

Nếu bạn không sử dụng bí danh trong truy vấn ở trên, bạn phải sử dụng tên bảng để tham chiếu đến các cột của nó, làm cho truy vấn dài và gặp rắc rối khi đọc nó.

Mời bạn tham khảo các bài viết liên quan:

  • Lệnh ORDER BY trong MySQL
  • Mệnh đề like trong MySQL
  •  Cách sử dụng toán tử between trong MySQL

Kết luận

Như vậy trong bài ngày hôm nay mình đã giới thiệu đến các bạn As (Alias) trong MySQL. Trong bài tiếp theo chúng ta sẽ tìm hiểu về câu lệnh JOIN trong MySQL.

Chúc các bạn học tập tốt!