Câu lệnh SELECT trong MySQL

Câu lệnh SELECT trong MySQL

Trong hướng dẫn này, bạn sẽ học cách sử dụng dạng cơ bản của câu lệnh SELECT trong MySQL để truy xuất dữ liệu từ một bảng.

Giới thiệu về câu lệnh SELECT trong MySQL

Câu lệnh SELECT cho phép bạn truy xuất dữ liệu từ một hoặc nhiều bảng. Để viết câu lệnh SELECT trong MySQL, bạn sử dụng cú pháp sau:

SELECT select_list
FROM table_name;

Trong cú pháp này:

  • Đầu tiên, chỉ định một hoặc nhiều cột mà bạn muốn truy xuất dữ liệu sau từ khóa SELECT. Nếu select_list có nhiều cột, bạn cần phân tách chúng bằng dấu phẩy (,).
  • Thứ hai, chỉ định tên của bảng mà bạn muốn truy xuất dữ liệu sau từ khóa FROM.

Dấu chấm phẩy (;) là tùy chọn. Nó biểu thị sự kết thúc của một câu lệnh. Nếu bạn có hai hoặc nhiều câu lệnh, bạn cần sử dụng dấu chấm phẩy (;) phân tách chúng để MySQL sẽ thực thi từng câu lệnh riêng lẻ.

SELECTFROM là các từ khóa. Theo quy ước, bạn viết các từ khóa SQL bằng chữ hoa. Tuy nhiên, nó không phải là bắt buộc. Vì SQL không phân biệt chữ hoa chữ thường, bạn cũng có thể viết câu lệnh SQL bằng chữ thường. Ví dụ:

select select_list
from table_name;

Khi thực hiện câu lệnh SELECT, MySQL đánh giá mệnh đề FROM trước mệnh đề SELECT:

Câu lệnh SELECT trong MySQL

Ví dụ về câu lệnh SELECT trong MySQL

Chúng ta sẽ sử dụng employees bảng trong cơ sở dữ liệu mẫu cho các ví dụ sau.

Câu lệnh SELECT trong MySQL

Bảng employees có tám cột: employeeNumber, lastName, firstName, extension, email, officeCode, reportsTo và jobTitle. Bảng cũng có nhiều hàng như trong hình sau:

Câu lệnh SELECT trong MySQL

Sử dụng câu lệnh SELECT trong MySQL để truy xuất dữ liệu từ một cột

Ví dụ sau sử dụng câu lệnh SELECT để chọn họ của tất cả nhân viên:

SELECT lastName
FROM employees;

Đây là kết quả một phần:

+-----------+
| lastName  |
+-----------+
| Murphy    |
| Patterson |
| Firrelli  |
| Patterson |
| Bondur    |
| Bow       |
| Jennings  |
...

Kết quả của một câu lệnh SELECT được gọi là tập kết quả vì nó là một tập hợp các hàng là kết quả từ truy vấn.

Sử dụng câu lệnh SELECT trong MySQL để truy xuất dữ liệu từ nhiều cột

Ví dụ sau sử dụng câu lệnh SELECT để lấy tên, họ và chức danh của nhân viên:

SELECT 
    lastName, 
    firstName, 
    jobTitle
FROM
    employees;

Ngay cả khi bảng employees có nhiều cột, câu lệnh SELECT trên chỉ trả về dữ liệu của ba cột lastName, firstNamejobTitle được chỉ định trong mệnh đề SELECT:

+-----------+-----------+----------------------+
| lastname  | firstname | jobtitle             |
+-----------+-----------+----------------------+
| Murphy    | Diane     | President            |
| Patterson | Mary      | VP Sales             |
| Firrelli  | Jeff      | VP Marketing         |
| Patterson | William   | Sales Manager (APAC) |
| Bondur    | Gerard    | Sale Manager (EMEA)  |
...

Sử dụng câu lệnh SELECT trong MySQL để truy xuất dữ liệu từ tất cả các cột

Nếu bạn muốn truy xuất dữ liệu từ tất cả các cột của bảng employees, bạn có thể chỉ định tất cả các tên cột trongmệnh đề SELECT như sau:

SELECT employeeNumber,
       lastName,
       firstName,
       extension,
       email,
       officeCode,
       reportsTo,
       jobTitle
FROM   employees; 

Ngoài ra, bạn có thể sử dụng dấu hoa thị (*) là cách viết tắt cho tất cả các cột. Ví dụ:

SELECT * 
FROM employees;

Truy vấn trả về dữ liệu từ tất cả các cột của bảng employees.

SELECT * thường được gọi là “select star” hoặc “select all” vì nó truy xuất dữ liệu từ tất cả các cột của bảng. Trong thực tế, bạn chỉ nên sử dụng SELECT * cho các truy vấn đặc biệt.

Nếu bạn nhúng câu lệnh SELECT vào mã như PHP, Java, Python, Node.js, bạn nên chỉ định rõ ràng các cột mà bạn muốn chọn dữ liệu.

Câu lệnh SELECT không có mệnh đề FROM trong MySQL

Thông thường, bạn sử dụng câu lệnh SELECT để truy xuất dữ liệu từ một bảng trong cơ sở dữ liệu:

SELECT select_list
FROM table_name;

MySQL không yêu cầu mệnh đề FROM. Nó có nghĩa là bạn có thể có một câu lệnh SELECT mà không có mệnh đề FROM như thế này:

SELECT select_list;

Đây là một ví dụ nhỏ:

SELECT 1 + 1;    

Đầu ra:

+-------+
| 1 + 1 |
+-------+
|     2 |
+-------+
1 row in set (0.00 sec)    

MySQL có nhiều hàm tích hợp sẵn như các hàm chuỗi, ngày tháng và các hàm toán học. Và bạn có thể sử dụng câu lệnh SELECT để thực thi các hàm này.

Ví dụ sau trả về ngày và giờ hiện tại của máy chủ MySQL:

SELECT NOW();

Đầu ra:

+---------------------+
| NOW()               |
+---------------------+
| 2021-07-26 08:08:02 |
+---------------------+
1 row in set (0.00 sec)

Hàm NOW() trả về ngày và giờ hiện tại của máy chủ mà MySQL chạy trên đó. Hàm NOW() không có bất kỳ tham số nào. Để gọi nó, bạn đặt cặp dấu ngoặc đơn () sau tên hàm.

Nếu một hàm có các tham số, bạn cần truyền các đối số cho nó. Ví dụ: nối các chuỗi thành một chuỗi, bạn có thể sử dụng hàm CONCAT():

SELECT CONCAT('John',' ','Doe');

Đầu ra:

+--------------------------+
| CONCAT('John',' ','Doe') |
+--------------------------+
| John Doe                 |
+--------------------------+
1 row in set (0.00 sec)

Hàm CONCAT() chấp nhận một hoặc nhiều chuỗi và nối chúng thành một chuỗi duy nhất.

Bảng dual

Đôi khi, bạn vẫn cần sử dụng mệnh đề FROM nhưng bạn không muốn tham chiếu đến bất kỳ bảng thực tế nào. Trong trường hợp này, bạn có thể sử dụng bảng dual trong mệnh đề FROM:

SELECT select_list
FROM dual;

Bảng dual là một bảng giả, không phải là một bảng thực tế.

Bảng dual cần thiết trong trường hợp bạn cần các mệnh đề khác của câu lệnh SELECT. Nếu không có mệnh đề FROM, câu lệnh SELECT sẽ không hợp lệ.

Giới thiệu nhanh về bí danh cột

Theo mặc định, MySQL sử dụng biểu thức được chỉ định trong mệnh đề SELECT làm tên cột của tập kết quả. Để thay đổi tên cột của tập kết quả, bạn có thể sử dụng bí danh cột:

SELECT expression AS column_alias;

Để gán bí danh cho một cột, bạn đặt từ khóa AS sau biểu thức, theo sau là bí danh cột. Từ khóa AS là tùy chọn, vì vậy bạn có thể bỏ qua nó như sau:

SELECT expression column_alias;

Ví dụ:

SELECT CONCAT('John',' ','Doe') AS name;

Đầu ra:

+----------+
| name     |
+----------+
| John Doe |
+----------+
1 row in set (0.00 sec)

Nếu bí danh cột chứa khoảng trắng, bạn cần đặt nó bên trong dấu ngoặc kép như sau:

SELECT CONCAT('Jane',' ','Doe') AS 'Full name';

Đầu ra:

+-----------+
| Full name |
+-----------+
| John Doe  |
+-----------+
1 row in set (0.00 sec)

Tóm lược

  • Sử dụng câu lệnh SELECT để truy xuất dữ liệu từ một bảng.
  • Sử dụng SELECT * để truy xuất dữ liệu từ tất cả các cột của bảng.
  • Câu lệnh SELECT trong MySQL không yêu cầu mệnh đề FROM.
  • Sử dụng bảng dual nếu bạn muốn sử dụng mệnh đề FROM nhưng không muốn tham chiếu đến một bảng.
  • Gán một bí danh cho một cột để làm cho nó dễ đọc hơn.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *