Câu lệnh SELECT
trong MySQL là một trong những câu lệnh quan trọng nhất, được sử dụng để truy vấn và lấy dữ liệu từ cơ sở dữ liệu. Để hiểu rõ về SELECT
, chúng ta sẽ đi từ những ví dụ cơ bản đến các tình huống nâng cao hơn.
Cú pháp cơ bản của câu lệnh SELECT
như sau:
column1
Lệnh này sẽ lấy thông tin về name
và age
của tất cả nhân viên trong bảng employees
.
*
Nếu muốn lấy tất cả các cột trong bảng, bạn có thể sử dụng ký tự *
.
employees
Câu lệnh này trả về danh sách nhân viên có tuổi lớn hơn 30.
Bạn có thể sử dụng AND
và OR
để kết hợp nhiều điều kiện trong WHERE
.
ORDER BY
Lệnh này sẽ sắp xếp danh sách nhân viên theo lương giảm dần.
LIMIT
Để giới hạn số lượng kết quả trả về, chúng ta sử dụng LIMIT
.
LIKE
Lệnh này sẽ trả về danh sách nhân viên có tên bắt đầu bằng chữ 'J'. Ký tự %
đại diện cho bất kỳ chuỗi ký tự nào.
IN
để kiểm tra nhiều giá trịMệnh đề IN
giúp kiểm tra một cột có thuộc vào một tập hợp giá trị cụ thể không.
BETWEEN
Lệnh này trả về danh sách nhân viên có mức lương từ 3000 đến 6000.
Bí danh (AS
) được sử dụng để đặt tên tạm cho cột hoặc bảng, giúp kết quả dễ đọc hơn.
EmployeeName
Lệnh này sẽ trả về tên nhân viên và tên phòng ban tương ứng, chỉ với những nhân viên có phòng ban (bảng employees
có department_id
khớp với bảng departments
).
MySQL cung cấp các hàm tổng hợp để thực hiện các tính toán trên dữ liệu như COUNT
, SUM
, AVG
, MIN
, MAX
.
GROUP BY
Lệnh này trả về mức lương trung bình của từng phòng ban.
HAVING
để lọc dữ liệu sau khi nhómKhác với WHERE
, HAVING
được sử dụng để lọc dữ liệu sau khi đã sử dụng GROUP BY
.
SELECT
Lệnh này trả về danh sách nhân viên có lương lớn hơn mức lương trung bình của tất cả nhân viên.
DISTINCT
để loại bỏ bản ghi trùng lặpMệnh đề DISTINCT
được sử dụng để loại bỏ các kết quả trùng lặp trong dữ liệu.
department_id
Lệnh này sẽ trả về tên nhân viên, mức lương, và phân loại mức lương (Cao, Trung bình, Thấp) dựa trên giá trị của salary
.
UNION
để kết hợp nhiều truy vấnUNION
được sử dụng để kết hợp kết quả của nhiều truy vấn SELECT
khác nhau. Các truy vấn phải có cùng số lượng cột và kiểu dữ liệu tương ứng.
department_id
Lệnh này sẽ trả về tên nhân viên và tên của người quản lý của họ. Trong bảng employees
, cột manager_id
là khóa ngoại trỏ đến id
của người quản lý trong cùng bảng.
EXISTS
để kiểm tra sự tồn tạiEXISTS
được sử dụng để kiểm tra xem một truy vấn con có trả về kết quả nào hay không. Điều này rất hữu ích khi bạn muốn biết một điều kiện có thỏa mãn trong một tập hợp con dữ liệu hay không.
EXISTS
Lệnh này sẽ trả về các nhân viên không thuộc phòng ban nào (tức là không có giá trị department_id
trong bảng departments
).
Bạn có thể sử dụng các phép toán số học phức tạp trong câu lệnh SELECT
. Ví dụ sau sẽ tính tổng mức lương cho tất cả nhân viên và cộng thêm 10% tiền thưởng.
FROM
Lệnh này sẽ tính mức lương trung bình của từng phòng ban bằng cách kết hợp dữ liệu từ hai bảng và nhóm chúng lại với GROUP BY
.
FULLTEXT
để tìm kiếm văn bảnFULLTEXT
cho phép tìm kiếm toàn văn bản trong MySQL trên các cột dạng chuỗi. Chỉ hỗ trợ trên bảng có kiểu MyISAM
hoặc InnoDB
với các cột đã lập chỉ mục.
ALL
Lệnh này trả về những nhân viên có lương lớn hơn tất cả nhân viên thuộc phòng ban có department_id = 2
.
ANY
:SELECT name, salary FROM employees WHERE salary > ANY (SELECT salary FROM employees WHERE department_id = 2);
Lệnh này trả về những nhân viên có lương lớn hơn ít nhất một nhân viên thuộc phòng ban có department_id = 2
.
Các ví dụ nâng cao trên minh họa những tính năng mạnh mẽ của câu lệnh SELECT
trong MySQL. Bạn có thể thực hiện các phép tính phức tạp, kết hợp nhiều bảng, làm việc với dữ liệu con, và sử dụng các hàm đặc biệt để khai thác dữ liệu hiệu quả hơn trong các ứng dụng thực tế.