Bài viết này trình bày cách sử dụng mệnh đề WHERE trong SQL một cách chi tiết, với các ví dụ thực tế sử dụng tập dữ liệu mẫu.
Bạn đang xem : điều kiện trong mệnh đề where trong sql
Chúng tôi giải thích cách sử dụng mệnh đề WHERE trong SQL với các ví dụ thực tế. Nếu bạn mới bắt đầu học SQL và muốn biết cách truy xuất hoặc làm việc chỉ với một phần dữ liệu cụ thể được lưu trữ trong bảng của mình, thì bài viết này là dành cho bạn!
Mệnh đề SQL WHERE
là thứ bạn phải nắm vững nếu muốn sử dụng SQL để làm việc với dữ liệu. Nó được cho là một trong những cấu trúc cơ bản và phải học nhất của SQL.
Trên thực tế, theo kinh nghiệm của tôi, tôi hầu như không tìm thấy bất kỳ truy vấn thao tác hoặc truy xuất dữ liệu nào không sử dụng mệnh đề WHERE
. Lọc thông tin chi tiết của nhân viên thuộc một bộ phận cụ thể, chọn đơn đặt hàng có giá trị trên một số tiền nhất định hoặc lấy danh sách khách hàng thuộc một khu vực địa lý cụ thể, tất cả đều yêu cầu bạn sử dụng mệnh đề WHERE
bằng cách này hay cách khác trong các truy vấn của bạn.
Tất nhiên, đây chỉ là một số ví dụ. Nói chung, bạn có thể sử dụng mệnh đề WHERE
trong SQL để lọc bất kỳ hàng nào khỏi bảng của mình.
Vì vậy, không cần phải lo lắng gì thêm, chúng ta hãy bắt đầu ngay lập tức!
Cú pháp cơ bản của truy vấn SQL với mệnh đề WHERE
Cú pháp cơ bản của truy vấn SQL sử dụng mệnh đề WHERE
là:
CHỌN & lt; tên cột & gt; TỪ & lt; tên bảng & gt; ĐÂU & lt; điều kiện & gt ;;
Mệnh đề WHERE
theo sau mệnh đề SELECT
và FROM
. Trong khi mệnh đề SELECT
chỉ định các cột được trả về từ (các) bảng, mệnh đề WHERE
chứa các điều kiện phải đánh giá là true để một hàng được trả về dưới dạng kết quả. Mỗi điều kiện được đánh giá cho mỗi hàng được trả về từ (các) bảng. SQL có nhiều toán tử điều kiện khác nhau để chỉ định cách lọc các hàng bạn cần.
Hãy để tôi đưa bạn qua một số ví dụ về SQL WHERE
để giải thích rõ hơn về vấn đề này.
Mệnh đề WHERE trong SQL với một điều kiện duy nhất
Hãy tưởng tượng bạn làm việc tại một công ty đa quốc gia có văn phòng trên toàn cầu. Thông tin chi tiết của các văn phòng này được lưu trữ trong cơ sở dữ liệu, trong bảng có tên office
.
Bảng office
:
office_codecitystatecountrypostal_codeterritory
1San FranciscoCAUSA94080NA
2BostonMAUSA02107NA
3NYCNYUSA10022NA
4ParisNULLFrance75017EMEA
5TokyoChiyoda-KuJapanNULLJAPAC
6SydneyNULLAustraliaNSW-2010JAPAC
7LondonNULLUKEC2N 1HNEMEA
Bây giờ, giả sử bạn muốn có danh sách các văn phòng ở Hoa Kỳ. Bạn có thể sử dụng điều khoản WHERE tại đây. Truy vấn của bạn trông giống như sau:
LỰA CHỌN * TỪ văn phòng WHERE country = 'USA';
Đầu ra:
office_codecitystatecountrypostal_codeterritory
1San FranciscoCAUSA94080NA
2BostonMAUSA02107NA
3NYCNYUSA10022NA
Đối với truy vấn này, SQL đầu tiên đánh giá từng hàng và so sánh giá trị của cột country
với ‘ USA
‘. Sau đó, nó chỉ trả về những hàng mà điều kiện đánh giá là true. Trong trường hợp của chúng tôi, chúng tôi có ba hàng trong đó quốc gia là Hoa Kỳ.
(Ở giai đoạn này, nếu bạn không rõ về cách viết truy vấn, tôi khuyến khích bạn tham gia khóa học SQL Basic từ LearnSQL.com . Không chỉ vậy nó có cấu trúc tốt, nhưng nó cũng có một số bài tập tuyệt vời để thúc đẩy quá trình học tập và phát triển của bạn.)
Bạn cũng có thể sử dụng các toán tử so sánh như & gt ;, & lt ;, & gt; =, & lt; = và & lt; & gt; để so sánh các giá trị. Ví dụ: giả sử bạn chỉ muốn truy xuất những hàng có office_code
lớn hơn 5.
Truy vấn:
LỰA CHỌN * TỪ văn phòng WHERE office_code & gt; Số 5;
Đầu ra:
office_codecitystatecountrypostal_codeterritory
6SydneyNULLAustraliaNSW-2010APAC
7LondonNULLUKEC2N 1HNEMEA
Hoặc, nếu bạn muốn truy xuất tất cả các hàng mà lãnh thổ
không phải là ‘ NA
‘, truy vấn sẽ giống như sau:
LỰA CHỌN * TỪ văn phòng Lãnh thổ WHERE & lt; & gt; 'NA';
Đầu ra:
office_codecitystatecountrypostal_codeterritory
4ParisNULLFrance75017EMEA
5TokyoChiyoda-KuJapanNULLJAPAC
6SydneyNULLAustraliaNSW-2010JAPAC
7LondonNULLUKEC2N 1HNEMEA
Mệnh đề WHERE trong SQL với nhiều điều kiện
Cho đến nay, tôi đã trình bày các ví dụ rất đơn giản về các truy vấn minh họa việc sử dụng mệnh đề WHERE trong SQL với một điều kiện duy nhất. Tuy nhiên, khi viết các truy vấn thực tế, cuộc sống thực, bạn thường sử dụng nhiều hơn một điều kiện để truy xuất kết quả bạn cần.
Sử dụng các toán tử có điều kiện
SQL có toán tử điều kiện VÀ, HOẶC và KHÔNG để mở rộng số lượng điều kiện được sử dụng trong truy vấn. Bạn có thể kết nối các điều kiện bằng toán tử AND
khi bạn chỉ muốn các hàng đáp ứng tất cả các điều kiện. Ngược lại, bạn sử dụng toán tử OR khi muốn truy xuất mọi hàng có ít nhất một trong các điều kiện là đúng.
Ví dụ: giả sử bạn muốn trả lại các thành phố và quốc gia của tất cả các văn phòng ở Vương quốc Anh hoặc Pháp. Như bạn có thể đã đoán, bạn sử dụng toán tử OR
để thực hiện việc này.
Truy vấn:
CHỌN thành phố, quốc gia TỪ văn phòng WHERE country = 'UK' OR country = 'France';
Đầu ra:
thành phố
Paris, Pháp
London, Vương quốc Anh
Ở đây, SQL trả về các hàng mà một hoặc cả hai điều kiện đều đúng. Trên thực tế, có một cách tốt hơn để viết truy vấn này bằng toán tử IN.
Sử dụng toán tử IN
Toán tử IN
cho phép bạn chỉ định danh sách các giá trị để kiểm tra. Xem truy vấn sau:
CHỌN thành phố, quốc gia TỪ văn phòng Ở đâu nước IN ('Anh', 'Pháp');
Đầu ra:
thành phố
Paris, Pháp
London, Vương quốc Anh
Tại đây, tất cả các hàng có quốc gia nằm trong danh sách các giá trị được chỉ định (trong trường hợp của chúng tôi là Vương quốc Anh và Pháp) đều được trả về.
Với toán tử IN
, bạn có thể chỉ định danh sách nhiều giá trị, không chỉ hai giá trị.
Bạn sử dụng toán tử NOT IN
để trả về các hàng có giá trị không có trong danh sách. Ví dụ: bạn có thể nhận mã bưu điện của tất cả các văn phòng không thuộc lãnh thổ JAPAC hoặc EMEA.
Sử dụng Toán tử IN trong Truy vấn con
Một cách khác để sử dụng toán tử IN
là sử dụng truy vấn con để tạo danh sách từ một bảng khác. Để hiểu rõ hơn điều này, hãy tưởng tượng bạn có một bảng khác có doanh thu cho từng văn phòng.
Bảng office_revenue
:
office_coderevenue
1100002
2232221
3545556
4543432
5765678
6433433
7123245
Bạn muốn biết văn phòng nào không tạo đủ doanh thu và bạn xác định văn phòng đó là những văn phòng có doanh thu dưới 200.000. Điều này có nghĩa là bạn cần tìm các thành phố có văn phòng có doanh thu dưới 200.000.
Truy vấn:
Lựa chọn thành phố TỪ văn phòng WHERE office_code IN (CHỌN office_code FROM office_revenue DOANH thu & lt; 200000);
Đầu ra:
thành phố
San Francisco
London
Trong truy vấn này, trước tiên SQL xử lý truy vấn con để trả về danh sách các mã văn phòng cho các văn phòng có doanh thu dưới 200.000. Sau đó, mã văn phòng trong bảng office
sẽ được đối chiếu với danh sách này để trả về các hàng khớp với các hàng trong danh sách.
Các điều kiện phức tạp hơn
Hãy thử một ví dụ phức tạp hơn một chút.
Điều gì xảy ra nếu bạn muốn nhận mã văn phòng và thành phố của tất cả các văn phòng trong lãnh thổ JAPAC hoặc EMEA, có mã bưu chính không phải là NULL
, không có trạng thái được chỉ định và có mã văn phòng lớn hơn hoặc bằng 5?
Một cách tốt để viết truy vấn này là tách biệt từng điều kiện một và liên hệ từng điều kiện với các cột có sẵn:
-
Lãnh thổ
là JAPAC hoặc EMEA. -
Postal_code
không phải là NULL. - Trạng thái là
NULL
hoặc trống. -
office_code
lớn hơn hoặc bằng 5.
Giờ bạn đã hiểu các điều kiện, việc viết truy vấn trở nên đơn giản. Lưu ý rằng tất cả các điều kiện này phải được đáp ứng để trả lại hàng.
Truy vấn:
SELECT office_code, city TỪ văn phòng Lãnh thổ WHERE IN ('JAPAC', 'EMEA') VÀ mã_số_chính_phí KHÔNG ĐẦY ĐỦ AND (trạng thái LÀ KHÔNG HOẶC trạng thái = '') AND office_code & gt; = 5;
Đầu ra:
office_codecity
6Sydney
7London
Các điều kiện được đánh giá theo cách sau. Với điều kiện đầu tiên, SQL chỉ trả về các hàng có lãnh thổ là JAPAC hoặc EMEA. Trong số các hàng đó, nó sẽ kiểm tra xem mã bưu chính có phải là NULL hay không
. Sau đó, nó xem xét điều kiện thứ ba mà chúng ta sử dụng dấu ngoặc đơn. Hai điều kiện trong dấu ngoặc đơn được đánh giá để đưa ra một kết quả chung: nó kiểm tra giá trị của trạng thái cột và trả về true khi nó trống hoặc NULL. Cuối cùng, điều kiện cuối cùng lọc các hàng có office_code
lớn hơn hoặc bằng 5. Do đó, chỉ các văn phòng ở Sydney và London được trả về trong kết quả.
Lưu ý rằng chúng tôi không sử dụng Postal_code & lt; & gt; NULL hoặc trạng thái = NULL
. Thay vào đó, chúng tôi đã sử dụng toán tử IS NOT và IS NOT, tương ứng, để lọc ra các giá trị với NULL . Điều này là do NULL là một cái gì đó không xác định hoặc không tồn tại và do đó không bao giờ có thể được đánh đồng với một giá trị khác. SQL không tạo ra lỗi nếu bạn sử dụng =
hoặc & lt; & gt;
, nhưng thay vào đó, bạn nhận được một tập hợp trống và không có hàng nào được trả về. Điều này rõ ràng là sai.
Bây giờ, giả sử bạn có cùng yêu cầu, chỉ là bây giờ bạn muốn nhận tất cả các mã văn phòng lớn hơn hoặc bằng 4 nhưng nhỏ hơn hoặc bằng 6. Bạn có thể sử dụng toán tử BETWEEN
cho điều này.
Truy vấn:
SELECT office_code, city TỪ văn phòng Lãnh thổ WHERE IN ('JAPAC', 'EMEA') VÀ mã_mã bưu chính KHÔNG ĐẦY ĐỦ AND (trạng thái là NULL HOẶC trạng thái = '') AND office_code GIỮA 4 VÀ 6;
Đầu ra:
office_codecity
4Paris
6Sydney
Toán tử BETWEEN
kiểm tra phạm vi giá trị từ 4 đến 6, bao gồm cả các giới hạn. Bây giờ bạn thấy hai hàng được trả về: Paris và Sydney.
Những gì bạn không thể sử dụng trong mệnh đề WHERE
Bạn không thể sử dụng các hàm tổng hợp trực tiếp trong mệnh đề WHERE
. Điều này là do các điều kiện trong mệnh đề WHERE
được đánh giá theo từng hàng, trong khi các hàm tổng hợp hoạt động trên nhiều hàng để trả về một kết quả.
Hãy xem xét ví dụ này. Bạn muốn trả lại tất cả các mã văn phòng có doanh thu trên mức trung bình. Có thể bản năng đầu tiên của bạn là viết một cái gì đó như thế này:
CHỌN office_code FROM office_revenue DOANH thu & gt; AVG (doanh thu);
Tuy nhiên, truy vấn này trả về một lỗi:
LỖI 1111 (HY000): Sử dụng chức năng nhóm không hợp lệ
Việc lọc bản ghi với các chức năng tổng hợp có thể được thực hiện bằng cách sử dụng truy vấn con. Hãy xem:
CHỌN office_code, doanh thu FROM office_revenue DOANH thu & gt; (CHỌN AVG (doanh thu) FROM office_revenue);
Đầu ra:
office_coderevenue
3545556
4543432
5765678
6433433
Trong truy vấn này, SQL trước tiên truy xuất doanh thu trung bình từ truy vấn con. Sau đó, nó sẽ so sánh giá trị đó với doanh thu cho mỗi hàng, chỉ trả về các mã văn phòng có doanh thu tương ứng trên giá trị trung bình.
Sẵn sàng sử dụng Mệnh đề SQL WHERE trong Truy vấn của bạn?
Sau khi đọc qua bài viết, bây giờ bạn đã hiểu rõ về cách sử dụng mệnh đề WHERE
trong SQL. Các truy vấn được cung cấp trong bài viết này là cơ bản và tốt cho người mới bắt đầu.
Nếu gần đây bạn đã bắt đầu hành trình học SQL và muốn thúc đẩy sự phát triển của mình, tôi khuyên bạn nên theo dõi này từ LearnSQL.com . Tôi thích cái này hơn vì nó toàn diện như thế nào đối với những người mới làm quen với SQL.
Nó đặt nền tảng tuyệt vời cho một nhà phân tích – hoặc bất kỳ ai sử dụng SQL cho vấn đề đó – và cung cấp cơ sở tốt để viết các truy vấn mà bạn sử dụng hàng ngày để thu thập thông tin chi tiết từ dữ liệu.
Nhưng có một điều tôi không thể nhấn mạnh đủ là sự cần thiết phải thực hành thực tế và tính nhất quán. Điều đó kết thúc tất cả việc học. Bạn có thể bắt đầu bằng cách viết 10-20 câu truy vấn mỗi ngày như một cách thực hành; trong vòng 3 tháng, bạn sẽ viết gần 1.800 truy vấn!
Điều tuyệt vời về SQL là nó đơn giản và mạnh mẽ như thế nào đồng thời. Bạn đang chờ đợi điều gì? Làm bẩn tay ngay đi !!
Xem thêm những thông tin liên quan đến chủ đề điều kiện trong mệnh đề where trong sql
Bài 4: Giới thiệu về điều kiện và vòng lặp trong SQL Server
- Tác giả: Anh Nguyen Ngoc
- Ngày đăng: 2020-06-01
- Đánh giá: 4 ⭐ ( 4979 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Quản trị Cơ sở dữ liệu SQL Server playlist: https://www.youtube.com/playlist?list=PLn9lhDYvf_3Gdiz6uY9HAztCKapCvzTPe
Nhóm thảo luận: https://www.facebook.com/groups/115838366528104
Mệnh đề lọc dữ liệu theo điều kiện
- Tác giả: kienit.com
- Đánh giá: 4 ⭐ ( 3323 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Mệnh đề WHERE trong SQL dùng để lọc dữ liệu theo điều kiện cho sẵn. Trong câu lệnh SELECT có điều kiện thì WHERE nằm sau mệnh đề FROM.
WHERE trong SQL Server
- Tác giả: comdy.vn
- Đánh giá: 4 ⭐ ( 1019 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Cách sử dụng mệnh đề WHERE trong SQL Server để lọc các bản ghi sẽ được trả về bởi một truy vấn.
Mệnh đề WHERE trong SQL
- Tác giả: vietjack.com
- Đánh giá: 3 ⭐ ( 4282 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Mệnh đề WHERE trong SQL – Học SQL cơ bản nâng cao. Học SQL trực tuyến theo các bước từ Khái niệm về database, Cú pháp SQL, Truy vấn SELECT, Truy vấn INSERT, Lệnh DELETE, Truy vấn UPDATE, Ràng buộc (Constraint), Truy vấn DROP, Lệnh TRUNCATE, Từ khóa DISTINCT, Mệnh đề ORDER BY, Mệnh đề GROUP BY, Mệnh đề WHERE, Sử dụng Join, Sử dụng View, Sử dụng Sequence, Transaction, Hàm xử lý, Bảng tạm, Toán tử.
Mệnh đề Where trong SQL Server
- Tác giả: freetuts.net
- Đánh giá: 5 ⭐ ( 1264 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Cách dùng mệnh đề Where trong SQL Server, đây là lệnh dùng để thêm điều kiện lọc dữ liệu, thường được dùng kết hợp trong lệnh Select và Update.
Mệnh đề WHERE trong SQL, cú pháp và cách sử dụng
- Tác giả: thuthuat.taimienphi.vn
- Đánh giá: 4 ⭐ ( 6328 lượt đánh giá )
- Khớp với kết quả tìm kiếm: menh de WHERE trong SQL , Mệnh đề WHERE trong SQL, cú pháp và cách sử dụng
Mệnh đề WHERE trong SQL
- Tác giả: viettuts.vn
- Đánh giá: 5 ⭐ ( 5524 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Mệnh đề WHERE trong SQL được sử dụng để chỉ định một điều kiện trong khi lấy dữ liệu từ một bảng hoặc bằng cách join với nhiều bảng. Nếu điều kiện thỏa mãn,
Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình