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.
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:
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 (,
).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
:
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:
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.
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) |
...
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.
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.
Đô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ệ.
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)
SELECT
để truy xuất dữ liệu từ một bảng.SELECT *
để truy xuất dữ liệu từ tất cả các cột của bảng.SELECT
trong MySQL không yêu cầu mệnh đề FROM
.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.Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử MySQL IS NULLđể kiểm tra xem một giá trị có NULL hay không.
Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh UPDATE JOIN trong MySQL để thực hiện cập nhật bảng chéo.
Trong hướng dẫn này, bạn sẽ học cách sử dụng mệnh đề LIMIT trong MySQL để hạn chế số hàng được trả về bởi một truy vấn.
Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử LIKE trong MySQL để truy vấn dữ liệu dựa trên một mẫu được chỉ định.