Nội dung bài viết
1. FROM
Điểm xuất phát của 1 câu SQL Select sẽ là FROM (Not Required). Đó là lý do trong cuốn Simply SQL, ngta nói cái đó đầu tiên.
Mặc dù nó được note là NOT required nhưng bạn phải hiểu như sau: thực ra theo SQL chuẩn thì FROM là required (bắt buộc) nhưng nhiều Database như MySQL hay MS SQL không yêu cầu vì nếu bạn bỏ trống, nó sẽ tự điền phần đó, ví dụ như dual
được MySQL dùng.
select 1; giống với select 1 from dual;
Vì sao?
- Đầu tiên bạn phải xác định được data mà bạn cần ở nơi đâu? ở 1 hay nhiều tables? Xác định sai thì nhận kết quả sai.
- Và đó là phần đầu tiên mà DB sẽ parse từ câu SQL của bạn, nói đơn giản, đó là phần chạy đầu tiên.
Nếu cái bạn cần ở nhiều table, thì bạn cần phải “nối” những table này theo các tiêu chí khác nhau, đó chính là JOIN table.
2. WHERE
Tiếp theo, bạn sẽ sử dụng WHERE chọn lấy những row nào thỏa mãn điều kiện (Optional)
VD: Chỉ lấy row nào mà có id=9
3. GROUP BY
Đôi khi, bạn cần GROUP BY gộp nhiều row có cùng điều kiện lại (Optional)
VD: gộp những row nào mà có name
trùng nhau
4. HAVING
Sau khi đã group, bạn có thể 1 filter row thêm 1 lần nữa bằng cách dùng HAVING (Optional)
VD: đã group theo name rồi, nhưng chỉ lấy những cái group thỏa mãn điều kiện:
SUM(cartitems.qty) > 5
5. SELECT
Bây giờ, bạn mới dùng SELECT để chỉ rõ bạn muốn lấy column nào (Required)
Bạn có thể làm nhiều thứ với nó, nhưng đơn giản nhất chỉ là nói cái cột (column) mà bạn muốn lấy.
6. ORDER BY
Bạn đã có cái bạn cần rồi, nhưng để dễ theo dõi, bạn sẽ dùng ORDER BY để sắp xếp dữ liệu theo 1 hoặc nhiều tiêu chí (Optional)
SELECT name, price FROM items ORDER BY price
VD: lấy name
và price
, rồi sắp xếp data theo price
7. Tổng kết
Hình vẽ dưới đây sẽ tổng kết lại nội dung của bài viết.
Như vậy, trong 1 câu SQL select thì chỉ có 1 thành phần bắt buộc phải có SELECT, những thành phần khác không bắt buộc, tùy từng hoàn cảnh mà dùng thôi, thông thường sẽ có SELECT và FROM.
Nhưng tại sao người ta lại viết SELECT FROM, mà không phải là FROM SELECT?
Theo mình, vì SQL là 1 ngôn ngữ dạng declarative language, nôm na là dạng ngôn ngữ tập trung vào “What – mong muốn cái gì”, không phải là “How – làm cách nào để lấy”. Do vậy, người ta xếp SELECT lên trước, để người dùng có thể nhìn thấy ngay data nào sẽ được trả lại, nó tập trung vào What.
Vậy khi viết câu query, mình nên viết từ SELECT rồi FROM, hay viết FROM rồi quay lại SELECT?
Cá nhân mình thấy, viết theo thứ tự run của SQL như trên (bắt đầu từ FROM) sẽ giúp ích cho mình viết đúng câu query, mắc ít lỗi hơn kiểu viết SELECT đầu tiên.
Trên đây là những thứ mình biết về thứ tự run 1 câu SQL, hi vọng qua đây các bạn thấy rõ ràng, không còn mù mờ về cách viết câu SQL nữa. Nếu có ích cho bạn, xin hãy để lại 1 Like động viên tác giả. Thanks.
Bài viết thực sự rất dễ hiểu. Cảm ơn anh ạ.
Thanks bạn 😀
Bài viết thực sự rất khó hiểu
Nếu bạn ko biết basic SQL thì bài viết này rất khó hiểu.
Cảm ơn ad rất nhiều, ad có mở lớp offline k ạ
Mình ko có lớp offline cho SQL, chỉ có lớp online, sẽ available vào cuối năm 2023. Thông tin chi tiết https://giangtester.com/khoa-hoc-sql/
Thực sự rất rõ ràng và trực quan. Thanks
Thanks ^^
Quá hay cảm ơn ạ
Thanks!