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ếuselect_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ẻ.
SELECT
và FROM
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
:
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.
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:
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
, firstName
và jobTitle
đượ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.