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

Xem Thêm  Cách thêm đường viền vào bảng HTML - bảng chiều rộng đường viền html

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?

Xem Thêm  Bảng định kiểu bên ngoài trong CSS: Định nghĩa & Ví dụ - Video & Bản ghi bài học - mã mẫu bảng định kiểu bên ngoài

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.

Xem Thêm  Hình ảnh HTML - thêm hình ảnh và liên kết html

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

By ads_php