
SQL là viết tắt của Ngôn ngữ truy vấn có cấu trúc ; nó là ngôn ngữ cơ sở dữ liệu toàn diện hoặc khai báo được sử dụng để truy cập dữ liệu từ cơ sở dữ liệu.
Biểu đồ so sánh
Cơ sở để so sánh | Ở ĐÂU | ĐANG CÓ |
---|---|---|
Căn bản | Thực hiện trong các hoạt động hàng. | Thực hiện trong các hoạt động cột. |
Áp dụng cho | Hàng đơn | Tóm tắt hàng hoặc nhóm. |
Tìm nạp dữ liệu | Nó chỉ lấy dữ liệu cụ thể từ các hàng cụ thể theo điều kiện. | Lúc đầu, dữ liệu hoàn chỉnh được tìm nạp sau đó được phân tách theo điều kiện. |
Chức năng tổng hợp | Không thể xuất hiện trong mệnh đề WHERE. | Có thể xuất hiện trong mệnh đề HAVING. |
Được sử dụng với | CHỌN và các câu lệnh khác như CẬP NHẬT, XÓA hoặc một trong số chúng. | Không thể được sử dụng mà không có câu lệnh CHỌN. |
Hành động như | Bộ lọc trước | Bộ lọc sau |
NHÓM THEO | Đến sau WHERE. | Đến sau khi có. |
Định nghĩa mệnh đề ở đâu
Mệnh đề WHERE của SQL được sử dụng để mô tả một điều kiện tại thời điểm truy xuất dữ liệu từ một bảng hoặc bằng cách nối với nhiều bảng. Nó chỉ trả về giá trị cụ thể từ bảng nếu điều kiện đã cho được thỏa mãn. Mệnh đề WHERE được sử dụng để thẩm thấu các bản ghi và chỉ truy xuất các bản ghi cần thiết.
SQL cũng thực hiện các kết nối logic và, hoặc không trong mệnh đề WHERE còn được gọi là điều kiện boolean ; điều kiện phải đúng để lấy các bộ dữ liệu. Các toán hạng của các biểu thức kết nối logic liên quan đến các toán tử so sánh, chẳng hạn như <, <=, >, > =, = và . Các toán tử so sánh này so sánh các chuỗi và biểu thức số học. Nó có thể được sử dụng trong câu lệnh CHỌN, cũng như trong các câu lệnh CẬP NHẬT, XÓA .
Hãy lấy một ví dụ. Bảng hiển thị bên dưới có tên là bảng ' Bán hàng ' bao gồm các thuộc tính ' Sản phẩm ' và ' Sales_amount '.

CHỌN Sản phẩm, tổng (Sales_amount) NHƯ Total_sales TỪ Doanh số WHERE Sản phẩm trong ('Điện thoại', 'Loa') NHÓM THEO Sản phẩm;

Định nghĩa có khoản
SQL cung cấp mệnh đề HAVING có thể được sử dụng cùng với mệnh đề GROUP BY . Điều khoản HAVING này giúp lấy các giá trị cho các nhóm đáp ứng các điều kiện nhất định. Mệnh đề WHERE cũng có thể sử dụng kết hợp với mệnh đề HAVING trong quá trình lựa chọn, mệnh đề WHERE lọc hàng riêng lẻ. Các hàng sau đó được nhóm lại và các phép tính tổng hợp được thực hiện, tại mệnh đề HAVING cuối cùng lọc các nhóm.
Nó hoạt động giống như WHERE khi từ khóa GROUP BY không được sử dụng. Các hàm Nhóm như min, max, avg, sum và Count chỉ có thể xuất hiện trong hai mệnh đề: mệnh đề SELECT và HAVING. Nó cung cấp một điều kiện trên các bộ dữ liệu tương ứng với từng giá trị trong nhóm các thuộc tính. Tập hợp duy nhất của các bản ghi thỏa mãn điều kiện sẽ được hiển thị như là kết quả.
Ở đây, chúng tôi cũng lấy ví dụ tương tự như mệnh đề WHERE và xem xét cùng bảng ' Bán hàng '. Khi chúng tôi muốn tính Total_sales của điện thoại và loa bằng mệnh đề HAVING, chúng tôi sẽ viết truy vấn sau.
CHỌN Sản phẩm, tổng (Sales_amount) NHƯ Total_sales TỪ NHÓM BÁN HÀNG THEO Sản phẩm CÓ sản phẩm trong ('phone', 'Loa');
Truy vấn tạo ra đầu ra sau trong đó các sản phẩm được truy xuất trước, sau đó hàm tổng hợp (tổng) được thực hiện và tại các nhóm cuối cùng được lọc không giống như mệnh đề WHERE.

Khi chúng tôi chỉ muốn tìm những sản phẩm có Total_sales lớn hơn 1000. Truy vấn có thể được viết là:
CHỌN Sản phẩm, tổng (Sales_amount) NHƯ Total_sales TỪ NHÓM BÁN HÀNG THEO Tổng sản phẩm CÓ (Sales_amount)> 1000;
Sản lượng được sản xuất là:

Điều này không thể được thực hiện bằng cách sử dụng mệnh đề WHERE mặc dù có HAVING và nó tạo ra một thông báo lỗi vì mệnh đề WHERE không thể được sử dụng với các hàm tổng hợp.
Sự khác biệt chính giữa nơi và có khoản
- Mệnh đề WHERE được sử dụng trong các hoạt động hàng và được áp dụng trên một hàng trong khi mệnh đề HAVING được sử dụng trong các hoạt động cột và có thể được áp dụng cho các hàng hoặc nhóm tóm tắt.
- Trong mệnh đề WHERE, dữ liệu mong muốn được tìm nạp theo điều kiện được áp dụng. Ngược lại, mệnh đề HAVING tìm nạp toàn bộ dữ liệu sau đó phân tách được thực hiện theo điều kiện.
- Các hàm tổng hợp như min, sum, max, avg không bao giờ có thể xuất hiện cùng với mệnh đề WHERE. Đối với, các hàm này có thể xuất hiện trong mệnh đề HAVING.
- Mệnh đề HAVING không thể sử dụng nếu không có câu lệnh SELECT. Ngược lại, WHERE có thể được sử dụng với CHỌN, CẬP NHẬT, XÓA, v.v.
- Mệnh đề WHERE hoạt động như một bộ lọc trước trong khi mệnh đề HAVING hoạt động như một bộ lọc hậu.
- Mệnh đề WHERE khi được sử dụng với GROUP BY, xuất hiện trước GROUP BY. Điều này biểu thị rằng các hàng bộ lọc WHERE trước khi tính toán tổng hợp được thực hiện. Mặt khác, HAVING xuất hiện sau GROUP BY, có nghĩa là nó lọc sau khi tính toán tổng hợp được thực hiện.
Phần kết luận
Mệnh đề WHERE và HAVING hoạt động theo cùng một cách ngoại trừ tính năng bổ sung mà mệnh đề HAVING phổ biến cho. Mệnh đề HAVING có thể hoạt động hiệu quả với các hàm tổng hợp trong khi WHERE không thể được vận hành với các hàm tổng hợp.