Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Điều kiện WHERE trong MySQL với 16 ví dụ truy vấn khác nhau

Trong bài viết này, chúng ta sẽ nói về WHERE và cách sử dụng nó trong MySQL. Bên cạnh SELECT , phạm vi của WHERE mệnh đề bao gồm UPDATEDELETE các câu lệnh. WHERE điều khoản không thể thiếu để làm việc chất lượng với cơ sở dữ liệu MySQL. Đó là lý do tại sao bài viết hiện tại sẽ đề cập đến điều khoản này và khám phá chuyên sâu các đặc điểm phân biệt của nó.

Khi chúng ta xử lý MySQL, chúng ta cần các mệnh đề điều kiện cho các câu lệnh SELECT trong phần lớn các trường hợp. Các điều khoản như vậy xác định tiêu chí lựa chọn, vì vậy chúng tôi chỉ nhận được dữ liệu chúng tôi cần.

MySQL WHERE mệnh đề là phương tiện lọc kết quả hữu ích nhất. Nó linh hoạt, cho phép người dùng chỉ định các điều kiện khác nhau cho việc lựa chọn dữ liệu và kết hợp một số điều kiện trong một câu lệnh. Để làm cho thói quen làm việc hàng ngày của bạn trở nên dễ chịu hơn, tốt hơn hết là bạn nên sử dụng tối ưu hóa truy vấn và cấu hình MySQL.

Nội dung

  • Cú pháp MySQL WHERE
  • Sử dụng WHERE trong MySQL
  • Ví dụ về truy vấn điều kiện đơn WHERE
  • Nhiều điều kiện WHERE
  • Toán tử WHERE VÀ
  • Toán tử WHERE HOẶC
  • Sử dụng AND với các điều kiện OR
  • WHERE GIỮA toán tử
  • Toán tử WHERE LIKE
  • Ví dụ WHERE NOT LIKE
  • Toán tử WHERE IN
  • Ví dụ WHERE NOT IN
  • Toán tử NULL LÀ ĐÂU
  • Ví dụ WHERE IS NOT NULL
  • Ở ĐÂU KHÔNG TỒN TẠI
  • TỒN TẠI TẠI ĐÂU
  • Sử dụng mệnh đề WHERE của MySQL với các toán tử so sánh
  • Tóm tắt

Cú pháp WHERE của MySQL

Để bắt đầu, hãy xem xét kỹ hơn bằng cách sử dụng WHERE trong SELECT tuyên bố. Cú pháp cơ bản như sau:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

SELECT … FROM là câu lệnh chuẩn xác định cột nào và bảng nào chúng ta nhắm mục tiêu. WHERE từ khóa xác định các tiêu chí lựa chọn dữ liệu. Có thể có một giá trị duy nhất, phạm vi giữa các giá trị, truy vấn con và nhiều hơn một điều kiện.

Tự động hóa công việc của bạn với các tiêu chí truy vấn. Xem và chỉnh sửa trực quan chúng trên các tab riêng biệt của hình ảnh của chúng tôi Công cụ truy vấn MySQL nơi bạn đang vẽ truy vấn của mình. Bạn không cần phải nhập tên của các cột hoặc ghi nhớ các quy tắc phức tạp. Chỉ cần chọn dữ liệu cần thiết từ danh sách và tận hưởng kết quả.

Sử dụng WHERE trong MySQL

MySQL hoạt động theo cách sau khi thực thi SELECT câu lệnh chứa WHERE mệnh đề:

  1. Đánh giá FROM mệnh đề để xác định bảng mục tiêu.
  2. Tiếp tục đến WHERE để đánh giá các tiêu chí lựa chọn dữ liệu.
  3. Kiểm tra SELECT câu lệnh để xác định các cột cần truy xuất.

Lưu ý :SELECT câu lệnh thường bao gồm ORDER BY mệnh đề đặt kết quả theo thứ tự tăng dần hoặc giảm dần. Nếu vậy, MySQL sẽ đánh giá nó cuối cùng.

Nguyên lý hoạt động của MySQL WHERE tương tự như IF điều kiện trong ngôn ngữ lập trình. Nó so sánh các giá trị chúng tôi cung cấp với các giá trị của bảng MySQL đích. Khi các giá trị này khớp, RDBMS tìm nạp các bản ghi đó cho người dùng.

Khi điều kiện cho WHERE mệnh đề là một giá trị văn bản, chúng tôi đặt văn bản đó vào các dấu ngoặc kép. Tuy nhiên, không cần dấu ngoặc kép cho các giá trị số.

SELECT first_name, last_name, city 
FROM Readers
WHERE City = ‘Seattle’;

SELECT * 
FROM Readers
WHERE CustomerID = 24;

Nâng cấp khả năng viết kịch bản của bạn với trình định dạng MySQL nâng cao cho phép làm đẹp mã của bạn để mã của bạn chính xác như bạn muốn.

Bây giờ, chúng ta hãy xem lại việc sử dụng WHERE mệnh đề. Nó liên quan đến nhiều trường hợp cụ thể. Cách tốt nhất để khám phá chúng là tham khảo một MySQL thực tế WHERE ví dụ cho từng tình huống.

Ví dụ về truy vấn điều kiện duy nhất của WHERE

Kịch bản đơn giản nhất của việc sử dụng mệnh đề này là MySQL WHERE có một tiêu chí duy nhất cho việc lựa chọn dữ liệu. Giả sử rằng một số công ty muốn truy xuất danh sách nhân viên của họ làm việc trong bộ phận Chăm sóc khách hàng với tư cách là người quản lý hỗ trợ:

SELECT 
    last_name, 
    first_name, 
    job_title
FROM
    employees
WHERE
    jobtitle = 'Support';

Truy vấn sẽ truy xuất dữ liệu từ nhân viên bảng và lọc các bản ghi theo giá trị trong job_title cột. Nó sẽ trả về danh sách tất cả họ và tên của tất cả nhân viên làm việc với tư cách là người quản lý hỗ trợ. Kết quả là bên dưới:

last_name first_name job_title
Cáo Mary Hỗ trợ
Đen John Hỗ trợ
Johnson Steve Hỗ trợ
Hudson Diana Hỗ trợ
Williams Katie Hỗ trợ
Màu xanh lá cây Jake Hỗ trợ

Lưu ý :Сode ít hơn và hoàn thành nhiều hơn với trình kiểm tra cú pháp MySQL. dbForge Studio cho MySQL là một IDE giàu tính năng được thiết kế để hỗ trợ phát triển, bảo trì và quản trị cơ sở dữ liệu MySQL và MariaDB.

Nhiều điều kiện WHERE

Ví dụ được cung cấp ở trên chứng minh rằng MySQL WHERE mệnh đề mang dữ liệu phù hợp với điều kiện. Trong trường hợp này, nó lọc tất cả những nhân viên có chức danh công việc được chỉ định. Tuy nhiên, chúng ta thường cần thiết lập một số tiêu chí để truy xuất dữ liệu. Nó là khả thi - chúng ta cần áp dụng MySQL WHERE với các toán tử cụ thể - AND toán tử và OR nhà điều hành.

Toán tử WHERE VÀ

Hãy làm cho ví dụ trước của chúng ta phức tạp hơn một chút. Chúng tôi muốn có danh sách các nhân viên làm việc trong bộ phận Hỗ trợ, được thuê vào năm ngoái.

Để đạt được điều đó, chúng tôi sẽ đặt hai điều kiện và hợp nhất chúng với AND toán tử logic:

SELECT 
    last_name, 
    first_name, 
    job_title,
    hire_year
FROM
    employees
WHERE
    jobtitle = 'Support' AND 
    hire_year = 2021;

Đầu ra:

last_name first_name job_title Rent_year
Cáo Mary Hỗ trợ 2021
Đen John Hỗ trợ 2021
Johnson Steve Hỗ trợ 2021

Bản thân việc viết mã chiếm tỷ trọng của sư tử trong tổng thời gian bạn dành cho việc phát triển và quản trị cơ sở dữ liệu. Nhân đôi tốc độ viết mã của bạn với trình chỉnh sửa mã MySQL Server được tinh chỉnh và tối ưu hóa đi kèm với dbForge Studio cho MySQL.

Toán tử WHERE HOẶC

Sử dụng OR toán tử logic là một phương pháp khác làm việc với một số điều kiện trong MySQL WHERE mệnh đề. Nếu chúng tôi gửi truy vấn này, nó sẽ trả về dữ liệu phù hợp với tiêu chí chúng tôi đặt ra.

Công ty muốn kiểm tra các khách hàng thường xuyên đến từ hai thành phố. Đối với điều đó, chúng tôi sẽ chỉ định các thành phố đó và sử dụng OR nhà điều hành.

SELECT 
    lastName, 
    firstName, 
    city 
FROM
    customers
WHERE
    city = 'Seattle' OR 
    city = 'Bellevue';
last_name first_name thành phố
Anderson Mary Seattle
Đen John Seattle
Thompson Steve Bellevue
Smith Diana Bellevue
Williams Katie Seattle
Peters Jake Seattle

Sử dụng AND với điều kiện HOẶC

MySQL cho phép kết hợp MySQL WHERE AND OR - cả hai toán tử logic đều có thể có trong một câu lệnh. Trong trường hợp này, MySQL sẽ kiểm tra ba điều kiện cùng một lúc.

Ví dụ:thư viện muốn nhận thông tin về những độc giả của mình cư trú ở Bellevue, người đã trở thành độc giả thường xuyên của thư viện vào năm 2021 hoặc đã đọc hơn 20 cuốn sách.

Trong trường hợp này, MySQL WHERE chuỗi trở nên phức tạp hơn. Để phù hợp và sắp xếp AND &OR điều kiện, chúng tôi sử dụng dấu ngoặc đơn để xác định cách MySQL phải đánh giá chúng.

Hãy xem ví dụ dưới đây:

SELECT *
FROM readers
WHERE (city = 'Bellevue' AND reg_year = '2020')
OR (books_read > 20);

Đầu ra:

last_name first_name thành phố reg_year books_read
Anderson Mary Seattle 2021 25
Jones Chris Bellevue 2020 12
Thompson Lora Seattle 2020 35
Farrell Brian Bellevue 2021 48
Smith Jeff Bellevue 2020 50
Peters Anna Bellevue 2020 10
Patterson John Bellevue 2020 11

Kết quả này hiển thị một số kết quả phù hợp với điều kiện của thành phố cư trú + năm đăng ký. Nó cũng bao gồm các kết quả phù hợp với điều kiện thứ hai là đã đọc hơn 20 cuốn sách.

WHERE GIỮA toán tử

Toán tử GIỮA cho phép thiết lập các giới hạn rộng hơn. Giả sử rằng thư viện muốn nhận danh sách độc giả đã tham gia vào các năm 2019, 2020 và 2021. Thay vì gửi một số truy vấn hoặc sử dụng AND , chúng ta có thể đặt phạm vi cho WHERE điều kiện sử dụng BETWEEN nhà điều hành.

Để truy xuất danh sách độc giả tham gia từ năm 2019 đến năm 2022, chúng tôi gửi truy vấn sau:

SELECT 
    last_Name, 
    first_Name, 
    reg_year
FROM
    readers
WHERE
    reg_year BETWEEN 2019 AND 2021
ORDER BY reg_year;

Đầu ra:

last_name first_name reg_year
Anderson Mary 2019
Jones Chris 2019
Thompson Lora 2019
Farrell Brian 2019
Smith Jeff 2020
Peters Anna 2020
Patterson John 2020
Williams Đánh dấu 2021
Đi bộ đường dài Andrew 2021
Cấp Valentina 2021

Toán tử WHERE LIKE

Việc áp dụng toán tử LIKE cho phép bạn sử dụng mệnh đề WHERE để chọn các bản ghi nhất định bao gồm một mẫu cụ thể. Để xác định mẫu đó, chúng tôi sử dụng dấu phần trăm (%) để thay thế một ký tự hoặc một chuỗi gồm một số ký tự có độ dài bất kỳ.

Các mẫu phổ biến nhất cho MySQL SELECT WHERE LIKE như sau:

WHERE giá trị LIKE 'abc% ‘- tìm và trả về tất cả các giá trị bắt đầu bằng“ abc ”

WHERE giá trị LIKE '%abc' - tìm và trả về tất cả các giá trị kết thúc bằng “abc”

WHERE giá trị LIKE '%abc%' - tìm và trả về các giá trị có “abc” ở bất kỳ đâu giữa đầu và cuối

Hãy xem WHERE LIKE ví dụ. Công ty muốn có được danh sách khách hàng của mình từ Mỹ và Anh. Truy vấn như sau:

SELECT ContactName, Country, City
FROM Customers
WHERE Country LIKE 'U%'
ORDER BY ContactName;

Đầu ra là:

Tên liên hệ Quốc gia Thành phố
Helen Bennett Vương quốc Anh
Simon Crowther Vương quốc Anh Luân Đôn
Hari Kumar Vương quốc Anh Luân Đôn
Howard Snyder Hoa Kỳ Eugene
Yoshi Latimer Hoa Kỳ Elgin
John Steel Hoa Kỳ Walla Walla
Jaime Torres Hoa Kỳ San Francisco
Fran Wilson Hoa Kỳ Portland

Ví dụ WHERE NOT LIKE

Có một trường hợp khác mà bạn cần loại trừ một số dữ liệu khỏi kết quả. Chúng ta có thể sử dụng MySQL WHERE NOT LIKE nhà điều hành. Nó tìm và trả về dữ liệu không có các ký tự cụ thể.

Công ty muốn có một danh sách khách hàng của mình từ tất cả các quốc gia ngoại trừ Anh và Mỹ. Cú pháp của WHERE NOT LIKE trong MySQL sẽ như sau:

SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT LIKE 'U%'
ORDER BY Country;

Đầu ra:

Tên liên hệ Quốc gia Thành phố
Roland Mendel Áo Graz
Georg Pipps Áo Salzburg
Catherine Dewey Bỉ Bruxelles
Pascale Cartrain Bỉ Charleroi
Elizabeth Lincoln Canada Tsawassen
Yoshi Tannamuri Canada Vancouver
Jean Fresnière Canada Montréal
Jytte Petersen Đan Mạch København
Palle Ibsen Đan Mạch Århus
Pirkko Koskitalo Phần Lan Oulu
Matti Karttunen Phần Lan Helsinki
Annette Roulet Pháp Toulouse
Marie Bertrand Pháp Paris
Maria Anders Đức Berlin
Hanna Mooss Đức Mannheim

Toán tử WHERE IN

Sử dụng INNOT IN từ khóa là một tùy chọn khác để lọc các hàng và chỉ lấy một phần dữ liệu phù hợp với tiêu chí nghiêm ngặt của chúng tôi. Mục đích chính là giảm số lượng OR mệnh đề trong một SELECT tuyên bố.

MySQL WHERE IN kháng cáo các hàng chứa các giá trị mà chúng tôi đã chỉ định cho WHERE điều kiện. Ví dụ:chúng tôi muốn truy xuất danh sách khách hàng cư trú ở một số quốc gia Châu Âu. WHERE IN cú pháp như sau trong MySQL:

SELECT ContactName, Country, City
FROM Customers
WHERE Country IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;

Xin lưu ý rằng chúng tôi đặt các giá trị chỉ định điều kiện tìm kiếm trong ngoặc đơn. Trong trường hợp làm việc với các giá trị văn bản, chúng ta phải đặt tất cả chúng vào các dấu nháy đơn. Tuy nhiên, nếu giá trị và số của chúng tôi, chúng tôi sẽ liệt kê chúng mà không có dấu ngoặc kép, ví dụ:(25, 35, 45).

Kết quả của MySQL ở trên WHERE IN mệnh đề trong SELECT tuyên bố là:

Tên liên hệ Quốc gia Thành phố
Catherine Dewey Bỉ Bruxelles
Pascale Cartrain Bỉ Charleroi
Frédérique Citeaux Pháp Strasbourg
Laurence Lebihans Pháp Marseille
Janine Labrune Pháp Nantes
Martine Rancé Pháp Chữ nổi
Alexander Feuer Đức Leipzig
Henriette Pfalzheim Đức Köln
Horst Kloss Đức Cunewalde
Karin Josephs Đức Münster
Rita Müller Đức Stuttgart
Thomas Hardy Vương quốc Anh Luân Đôn
Victoria Ashworth Vương quốc Anh Luân Đôn
Elizabeth Brown Vương quốc Anh Manchester
Ann Devon Vương quốc Anh Luân Đôn

Ví dụ WHERE NOT IN

Trường hợp ngược lại là MySQL WHERE NOT IN mệnh đề. Nó được sử dụng để đảm bảo rằng truy vấn của bạn sẽ bỏ qua những hàng có chứa các giá trị được chỉ định cho điều kiện. Trong ví dụ trên, chúng tôi đã yêu cầu khách hàng từ 4 quốc gia châu Âu xác định. MySQL WHERE NOT IN SELECT truy vấn cho cùng một yêu cầu sẽ trả về tất cả khách hàng cư trú ở các quốc gia khác ngoại trừ 4 khách hàng được xác định trước đó.

SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;

Đầu ra:

Tên liên hệ Quốc gia Thành phố
Patricio Simpson Argentina Buenos Aires
Sergio Gutiérrez Argentina Buenos Aires
Brian Citeaux Canada Montréal
Laura Smith Canada Toronto
Jane Green Canada Toronto
Martine Rancé Canada Vancouver
Alexander Feuer Canada Århus
Paolo Accorti Ý Rome
Giovanni Rovelli Ý Torino
Anna Moroni Ý Pavia

Lưu ý :Chúng tôi khuyên bạn nên sử dụng [NOT] EXISTS trên [NOT] IN kể từ EXISTS toán tử logic hoạt động nhanh hơn IN , khi so sánh các tập dữ liệu bằng truy vấn con. Hơn nữa, NOT EXISTS sẽ tránh kết quả không mong muốn khi dữ liệu nguồn chứa NULL giá trị.

WHERE IS NULL toán tử

Để kiểm tra xem một giá trị có phải là NULL không hoặc không, hãy sử dụng IS NULL nhà điều hành. Câu lệnh sau sử dụng WHERE mệnh đề với IS NULL toán tử để lấy các hàng không có giá trị trong books_read cột:

SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NULL;

Đầu ra sẽ như thế này:

last_name first_name reg_year books_read
Janett Overacker 2020 NULL
Lidia Swenson 2017 NULL
Albert Crepeau 2018 NULL
Anastasia Johnson 2021 NULL
Sẽ Smith 2017 NULL

Ví dụ WHERE IS NOT NULL

Không giống như lệnh trước, WHERE IS NOT NULL , ngược lại, chỉ hiển thị những hàng có chứa một số loại giá trị trong cột được đề cập. Trong ví dụ sau, chúng tôi sẽ chỉ chọn những hàng có books_read cột không trống:

SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NOT NULL;

Trong đầu ra, bạn sẽ chỉ thấy những hàng chứa giá trị trong books_read cột:

last_name first_name reg_year books_read
Cory Baster 2021 8
Maddison Winston 2022 3
Isabella Garsia 2014 45
Jeremy Koh 2022 1
Aaron Peterson 2021 15

WHERE EXISTS

EXISTS operator checks if the subquery returns any value at all. Typically, this operator is used to indicate that at least one row in a table satisfies a certain condition.

In the example below,

SELECT last_name, first_name
FROM customers
WHERE EXISTS 
(SELECT * FROM discounts WHERE customers.id = discounts.customer_id)

WHERE NOT EXISTS

However, the NOT EXISTS operator is there for us in case we want to make sure whether there are rows in the table that do not satisfy a certain condition. For example, let’s find all products from the Products table for which there were no orders in the Orders table:

SELECT last_name, first_name
FROM customers
WHERE NOT EXISTS 
(SELECT * FROM discounts WHERE customers.id = discounts.customer_id)

There is a separate article in our blog for those willing to learn more about the difference between EXISTS and NOT EXISTS in SQL.

Using MySQL WHERE clause with comparison operators

As we know, the WHERE condition value can be any number, text, string, or subquery. Besides specifying the condition strictly, we can set a wider meaning for it by using the comparison operators. One example of a similar function is using the BETWEEN nhà điều hành. Now, let us review other options to set the condition range.

Operator Description Example
= Equal to the value. It is applicable for almost any data type. SELECT * FROM VisitorsWHERE City =’London’;
<> or != Not equal to. It excludes the rows matching the value from the results. SELECT * FROM CustomersWHERE Country=’Germany’ AND City !=’Berlin’;
< Less than. Mostly applies to numbers and date/time. SELECT * FROM CustomersWHERE CustomerID <7;
> Greater than. Works in the same way, for numeric values and date/time. SELECT * FROM CustomersWHERE CustomerID> 10;
<= Less than or equal to. The results set includes the rows with the same values or less than the condition value. SELECT * FROM CustomersWHERE CustomerID <=5;
>= Greater than or equal to. The result set includes rows having the same values exceeding the condition values. SELECT * FROM CustomersWHERE CustomerID>=55;

In our example, we want to retrieve the list of customers with a customer ID lower than 90 who reside in the USA. The query is the following:

SELECT CustomerID, ContactName, City, Country 
FROM Customers
WHERE CustomerID < 90 AND Country ='USA';

The output is:

CustomerID ContactName City Country
65 Paula Wilson Albuquerque USA
55 Rene Phillips Anchorage USA
78 Liu Wong Butte USA
36 Yoshi Latimer Elgin USA
32 Howard Snyder Eugene USA
82 Helvetius Nagy Kirkland USA
48 Fran Wilson Portland USA
77 Liz Nixon Portland USA
45 Jaime Torres San Francisco USA
89 Karl Jablonski Seattle USA
55 Rene Phillips Anchorage USA

Tóm tắt

As you see, MySQL WHERE is among the most helpful clauses for all MySQL users. The variety of different logical operators lets you focus on the specific portion of data only, filter it correctly, and receive the results you need. Besides, modern professional tools for MySQL databases allow you to perform all tasks faster and easier. They take the burden of manual routines off your shoulders and make the performance much more stable and reliable. To sum up, working with a WHERE statement is not too complicated. However, it requires being familiar with the corresponding commands. The command-line tools are more oriented toward experienced tech-savvy users. On the contrary, dbForge Studio for MySQL can boast an intuitive graphical interface. The intelligent code completion feature will be of use while working with the WHERE clause, navigating the code, obtaining quick object information, and instantly performing syntax checks. Moreover, dbForge Query Builder will be of use to easily build WHERE clauses visually.

Useful Links

  • Joins in MySQL
  • MySQL update query

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các thủ tục được lưu trữ trong MySQL sử dụng chúng hoặc không sử dụng chúng

  2. Công cụ LINQ dành cho Java

  3. Cách thực hiện xếp hạng theo nhóm trong MySQL

  4. Làm thế nào để chuyển đổi dấu thời gian thành datetime trong MySQL?

  5. có hàm group_concat trong ms-access không?