Thứ tự run câu lệnh SQL query

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;
from sách: Simply SQL

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

from sách: Simply SQL

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

from sách: Simply SQL

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.

from sách: Simply SQL

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 nameprice, 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.

Image copy from bytebytego website

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ó SELECTFROM.

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.

5 4 votes
Article Rating
Subscribe
Notify of
guest
10 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Thanh
Thanh
2 years ago

Bài viết thực sự rất dễ hiểu. Cảm ơn anh ạ.

Thanh
Thanh
2 years ago

Bài viết thực sự rất khó hiểu

Bùi Bích Liên
Bùi Bích Liên
1 year ago

Cảm ơn ad rất nhiều, ad có mở lớp offline k ạ

Thọ
Thọ
1 year ago

Thực sự rất rõ ràng và trực quan. Thanks

nguyen
nguyen
11 months ago

Quá hay cảm ơn ạ