Bài 09: Lệnh SELECT lấy dữ liệu trong 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 ...
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 đó:
- SELECT và FROM 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à AND và OR. 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 !