Bài 09: Lệnh SELECT lấy dữ liệu trong MySQL

Học Mysql 13/01/2017 07:24 1829
Nếu nói rằng INSERT là lệnh quan trọng bậc nhất thì SELECT cũng không hề kém cạnh. Hiểu về mọi góc cạnh của SELECT là một lợi thế vô cùng và sẽ tránh khỏi những câu lệnh luẩn quẩn khó hiểu trong truy vấn dữ liệu với MySQL.

Câu lệnh SELECT cho phép bạn lấy dữ liệu từ một bảng hoặc một view. Một bảng bao gồm danh sách các hàng và cột được hiển thị như một bảng tính. Thông thường, bạn sẽ nhìn thấy một tập hợp các hàng, và một tập hợp các cột, hoặc một sự kết hợp của hai. Kết quả của câu lệnh SELECT là một danh sách các hàng, mỗi hàng đều có cùng số cột.

Xem bảng nhân viên(employees) trong cơ sở dữ liệu mẫu. Nó có 8 cột: employee number, last name, first name, extension, email, office code, reports to, job title và nhiều hàng(row).

Cú pháp của câu lệnh SELECT.

SELECT 
    column_1, column_2, ...
FROM
    table_name
[INNER | LEFT |RIGHT] JOIN table_2 ON conditions
WHERE
    
GROUP BY column_name
HAVING group_conditions
ORDER BY column_name
LIMIT offset, length;
Trong đó:
  • SELECTFROM là hai mệnh đề được yêu cầu, còn các mệnh đề khác là tùy chọn.
  • SELECT column_1, column_2, column_3, ... là danh sách các fields cần lấy
  • FROM table_name tên table cần lấy
  • WHERE  là các điều kiện để lấy các dòng dữ liệu
  • ORDER BY column_name, ASC|DESC: là cách sắp xếp cho column_name theo kiểu ASC (tăng dần) hoặc DESC (giảm dần)
  • LIMIT offset, length là lấy length records kể từ record thứ offset trong kết quả.

Bạn sẽ tìm hiểu về từng mệnh đề chi tiết hơn trong các bài hướng dẫn tiếp theo. Trong hướng dẫn này, chúng ta sẽ tập trung vào các mẫu đơn giản của câu lệnh SELECT.

1. Lệnh SELECT lấy một phần dữ liệu của bảng.

Câu lệnh SELECT cho phép bạn truy vấn dữ liệu một phần của một hoặc nhiều bảng bằng cách xác định một số các cột trong mệnh đề SELECT. Ví dụ, nếu bạn muốn chỉ xem first name, last name, và job title của bảng employees, bạn sử dụng các truy vấn sau:

SELECT 
    lastname, firstname, jobtitle
FROM
    employees;

Try In Out

Mặc dù có rất nhiều cột trong bảng nhân viên, câu lệnh SELECT chỉ trả về dữ liệu của ba cột trong tất cả các hàng của bảng employees.

2. Lệnh SELECT lấy tất cả dữ liệu của bảng.

Nếu bạn muốn để có được dữ liệu cho tất cả các cột trong bảng employees, bạn có thể liệt kê tất cả các tên cột trong mệnh đề SELECT. Hoặc bạn đơn giản là sử dụng dấu hoa thị (*) để chỉ ra rằng bạn muốn lấy tất cả dữ liệu của bảng bao gồm các hàng,cột.

Ví dụ:

SELECT * FROM employees;

Try In Out

Bạn chỉ nên sử (*) cho các bảng có số lượng cột nhỏ. Chúng ta nên liệt kê danh sách các cột một cách rõ ràng vì những lý do sau:

  • Dấu (*) sẽ trả về dữ liệu cả các cột mà bạn không sử dụng.
  • Nếu bạn chỉ định các cột, thì kết quả có trả về sẽ dễ dàng hơn và nhanh hơn.

 

3. Lệnh SELECT có WHERE

Để lọc danh sách employees theo một hoặc nhiều tiêu chí nào đó thì ta sử dụng thêm mệnh đề WHERE trong SELECT. Ví dụ tôi muốn lấy những nhân viên nào có jobTitle='Sales Rep' thì tôi sẽ viết câu truy vấn như sau:

SELECT lastName,firstName,jobTitle
FROM employees
WHERE jobTitle = 'Sales Rep'

Try In Out

 

Trong mện đề WHERE bạn sẽ sử dụng một số toán tử để lọc dữ liệu như ví dụ trên tôi sử dụng toán tử So sánh bằng (=).

Bạn có thể sử dụng một hoặc nhiều các tiêu chí lọc bằng cách sử dụng một số toán tử luận lý thông dụng là ANDOR. Thông thường chúng ta sử dụng hay toán tử này là quá đủ rồi.

Ký hiệu

Diễn giải

AND nếu cả hai mệnh đề đều đúng thì kết quả là đúng
OR Nếu một trong hai mệnh đề đúng thì sẽ trả kết quả đúng

Ví dụ AND:  Lấy ra những nhân viên có jobTitle='Sales Rep' và officeCode='1'

SELECT lastName,firstName,officeCode,jobTitle
FROM employees
WHERE jobTitle = 'Sales Rep' AND officeCode='1'
Try In Out

 

Ví dụ OR:  Lấy ra những nhân viên có jobTitle='Sales Rep' và jobTitle='President'

SELECT lastName,firstName,officeCode,jobTitle
FROM employees
WHERE jobTitle = 'Sales Rep' OR jobTitle='President'

Try In Out

 

4. Lệnh SELECT có ORDER BY

ORDER dùng để sắp xếp kết quả trả về của câu truy vấn, nó có hai tham số là tên column và kiểu sắp xếp.

  • Kiểu ASC: Sắp xếp tăng dần.
  • Kiểu DESC: Sắp xếm giảm dần

Ví dụ: Sắp xếp các nhân viên(employees) có officeCode theo thứ tự tăng dần.

SELECT lastName,firstName,officeCode,jobTitle
FROM employees
ORDER BY officeCode ASC

Try In Out

 

5. Lênh SELECT có LIMIT

LIMIT dùng để giới hạn hết quả trả về và rất thường hay sử dụng kết hợp với thuật toán phân trang để tốc độ website chạy nhanh hơn.  Nó có hai tham số đó là vị trí record cần lấy (offset) và lấy bao nhiêu record (limit).

Ví dụ: Lấy 5 nhân viên từ bảng employees bắt đầu từ vị trí thứ 0.

SELECT lastName,firstName,officeCode,jobTitle
FROM employees
ORDER BY officeCode ASC
LIMIT 0,5

Try In Out

Kết thúc !

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.