Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kondisi WHERE di MySQL dengan 16 Contoh Query Berbeda

Pada artikel ini, kita akan berbicara tentang WHERE klausa dan cara menggunakannya di MySQL. Selain SELECT , cakupan WHERE klausa termasuk UPDATE dan DELETE pernyataan. WHERE klausa sangat diperlukan untuk kualitas kerja dengan database MySQL. Itulah mengapa artikel saat ini akan membahas klausa ini dan mengeksplorasi fitur-fiturnya yang membedakan secara mendalam.

Ketika kita berurusan dengan MySQL, kita membutuhkan klausa bersyarat untuk pernyataan SELECT di sebagian besar kasus. Klausa tersebut menentukan kriteria pemilihan, jadi kami hanya mendapatkan data yang kami butuhkan.

MySQL WHERE klausa adalah cara paling mudah untuk menyaring hasil. Ini fleksibel, memungkinkan pengguna untuk menentukan berbagai kondisi untuk pemilihan data dan menggabungkan beberapa kondisi dalam satu pernyataan. Untuk membuat rutinitas kerja sehari-hari Anda menjadi lebih menyenangkan, selalu lebih baik untuk menggunakan profil MySQL dan optimasi kueri.

Isi

  • Sintaksis MySQL WHERE
  • Menggunakan WHERE di MySQL
  • WHERE query contoh kondisi tunggal
  • Beberapa ketentuan WHERE
  • DIMANA DAN operator
  • DIMANA ATAU operator
  • Menggunakan DAN dengan ketentuan ATAU
  • MANA ANTARA operator
  • Operator LIKE MANA
  • DI MANA TIDAK SEPERTI contoh
  • Operator DI MANA
  • DI MANA TIDAK DI contoh
  • DIMANA ADANYA operator NULL
  • DI MANA BUKAN NULL contoh
  • DI MANA TIDAK ADA
  • DI MANA ADA
  • Menggunakan klausa WHERE MySQL dengan operator perbandingan
  • Ringkasan

Sintaksis MySQL WHERE

Untuk memulainya, mari kita lihat lebih dekat menggunakan WHERE di SELECT penyataan. Sintaks dasarnya adalah sebagai berikut:

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

SELECT … FROM adalah pernyataan standar yang mendefinisikan kolom mana dan tabel mana yang kita targetkan. WHERE kata kunci mengidentifikasi kriteria pemilihan data. Mungkin ada satu nilai, rentang antara nilai, subkueri, dan lebih dari satu kondisi.

Otomatiskan pekerjaan Anda dengan kriteria kueri. Lihat dan edit secara visual pada tab terpisah dari visual kami Alat kueri MySQL tempat Anda menggambar kueri. Anda tidak perlu mengetikkan nama kolom atau mengingat aturan yang rumit. Cukup pilih data yang diperlukan dari daftar dan nikmati hasilnya.

Menggunakan WHERE di MySQL

MySQL bekerja dengan cara berikut saat menjalankan SELECT pernyataan yang berisi WHERE klausa:

  1. Evaluasi FROM klausa untuk mengidentifikasi tabel target.
  2. Lanjutkan ke WHERE klausa untuk mengevaluasi kriteria pemilihan data.
  3. Periksa SELECT pernyataan untuk mendefinisikan kolom yang akan diambil.

Catatan :SELECT pernyataan sering menyertakan ORDER BY klausa yang menempatkan hasil dalam urutan menaik atau menurun. Jika demikian, MySQL akan mengevaluasinya pada akhirnya.

Prinsip kerja MySQL WHERE mirip dengan IF kondisi dalam bahasa pemrograman. Ini membandingkan nilai yang kami berikan dengan nilai tabel MySQL target. Ketika nilai-nilai ini cocok, RDBMS mengambil catatan tersebut ke pengguna.

Saat kondisi WHERE klausa adalah nilai teks, kami menempatkan teks itu ke dalam tanda kutip tunggal. Namun, tidak ada tanda kutip yang diperlukan untuk nilai numerik.

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

SELECT * 
FROM Readers
WHERE CustomerID = 24;

Tingkatkan kemampuan skrip Anda dengan formatter MySQL canggih yang memungkinkan mempercantik kode Anda untuk membuatnya persis seperti yang Anda suka.

Sekarang, mari kita tinjau penggunaan WHERE ayat. Ini melibatkan banyak kasus tertentu. Cara terbaik untuk menjelajahinya adalah dengan merujuk ke MySQL WHERE practical yang praktis contoh untuk setiap skenario.

WHERE query contoh kondisi tunggal

Skenario paling sederhana menggunakan klausa ini adalah MySQL WHERE memiliki satu kriteria tunggal untuk pemilihan data. Asumsikan bahwa beberapa perusahaan ingin mengambil daftar karyawannya yang bekerja di departemen Layanan Pelanggan sebagai manajer pendukung:

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

Kueri akan mengambil data dari karyawan tabel dan filter catatan sesuai dengan nilai di job_title kolom. Ini harus mengembalikan daftar semua nama belakang dan depan semua karyawan yang bekerja sebagai manajer pendukung. Outputnya di bawah ini:

nama_belakang nama_depan job_title
Rubah Maria Dukungan
Hitam John Dukungan
Johnson Steve Dukungan
Hudson Diana Dukungan
Williams Katie Dukungan
Hijau Jake Dukungan

Catatan :ode less dan capai lebih banyak dengan pemeriksa sintaks MySQL. dbForge Studio for MySQL adalah IDE kaya fitur yang dirancang untuk memfasilitasi pengembangan, pemeliharaan, dan administrasi database MySQL dan MariaDB.

Beberapa kondisi WHERE

Contoh yang diberikan di atas membuktikan bahwa MySQL WHERE klausa membawa data yang sesuai dengan kondisi. Dalam hal ini, ini memfilter semua karyawan yang memiliki jabatan pekerjaan yang ditentukan. Namun, kita sering perlu menetapkan beberapa kriteria untuk mengambil data. Itu layak – kita perlu menerapkan WHERE MySQL dengan operator tertentu – AND operator dan OR operator.

WHERE AND operator

Mari kita buat contoh sebelumnya sedikit lebih rumit. Kami ingin daftar karyawan yang bekerja di departemen Dukungan, yang direkrut tahun lalu.

Untuk mencapai itu, kami akan menetapkan dua kondisi dan menyatukannya dengan AND operator logika:

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

Keluaran:

nama_belakang nama_depan job_title hire_year
Rubah Maria Dukungan 2020
Hitam John Dukungan 2020
Johnson Steve Dukungan 2020

Penulisan kode itu sendiri mengambil bagian terbesar dari total waktu yang Anda habiskan untuk pengembangan dan administrasi basis data. Gandakan kecepatan pengkodean Anda dengan editor kode Server MySQL yang disempurnakan dan dioptimalkan yang hadir dengan dbForge Studio untuk MySQL.

WHERE OR operator

Menggunakan OR operator logika adalah metode lain untuk bekerja dengan beberapa kondisi di MySQL WHERE ayat. Jika kami mengirimkan kueri ini, itu akan mengembalikan data yang cocok dengan kriteria yang kami tetapkan.

Perusahaan ingin memeriksa pelanggan tetap yang datang dari dua kota. Untuk itu, kami akan menentukan kota-kota tersebut dan menggunakan OR operator.

SELECT 
    lastName, 
    firstName, 
    city 
FROM
    customers
WHERE
    city = 'Seattle' OR 
    city = 'Bellevue';
nama_belakang nama_depan kota
Anderson Maria Seattle
Hitam John Seattle
Thompson Steve Bellevue
Smith Diana Bellevue
Williams Katie Seattle
Peter Jake Seattle

Menggunakan DAN dengan kondisi ATAU

MySQL memungkinkan untuk menggabungkan MySQL WHERE AND OR – kedua operator logika dapat hadir dalam satu pernyataan. Dalam hal ini, MySQL akan memeriksa tiga kondisi sekaligus.

Misalnya, perpustakaan ingin mendapatkan informasi tentang pembacanya yang tinggal di Bellevue, yang menjadi pembaca tetap perpustakaan pada tahun 2021 atau telah membaca lebih dari 20 buku.

Dalam hal ini, MySQL WHERE string menjadi lebih kompleks. Untuk menyesuaikan dan mengatur AND &OR kondisi, kami menggunakan tanda kurung untuk menentukan bagaimana MySQL harus mengevaluasinya.

Lihat contoh di bawah ini:

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

Keluaran:

nama_belakang nama_depan kota reg_year books_read
Anderson Maria Seattle 2020 25
Jones Chris Bellevue 2020 12
Thompson Lora Seattle 2020 35
Farrell Brian Bellevue 2020 48
Smith Jeff Bellevue 2020 50
Peter Anna Bellevue 2020 10
Patterson John Bellevue 2020 11

Output ini menunjukkan beberapa hasil yang cocok dengan kondisi kota tempat tinggal + tahun pendaftaran. Ini juga mencakup hasil yang cocok dengan kondisi kedua setelah membaca lebih dari 20 buku.

WHERE ANTARA operator

Operator BETWEEN memungkinkan untuk menetapkan batas yang lebih luas. Asumsikan perpustakaan ingin mendapatkan daftar pembacanya yang bergabung pada 2019, 2020, dan 2021. Alih-alih mengirimkan beberapa kueri atau menggunakan AND operator, kita dapat mengatur rentang untuk WHERE kondisi menggunakan BETWEEN operator.

Untuk mengambil daftar pembaca yang bergabung antara 2019 dan 2022, kami mengirimkan kueri berikut:

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

Keluaran:

nama_belakang nama_depan reg_year
Anderson Maria 2019
Jones Chris 2019
Thompson Lora 2019
Farrell Brian 2019
Smith Jeff 2020
Peter Anna 2020
Patterson John 2020
Williams Tandai 2020
Hiks Andrew 2020
Hibah Valentina 2020

operator SEPERTI DI MANA

Menerapkan operator LIKE memungkinkan Anda menggunakan klausa WHERE untuk memilih record tertentu yang menyertakan pola tertentu. Untuk menentukan pola itu, kami menggunakan tanda persen (%) untuk mengganti karakter atau string dari beberapa karakter dengan panjang berapa pun.

Pola paling umum untuk MySQL SELECT WHERE LIKE adalah sebagai berikut:

WHERE nilai LIKE 'abc% ‘ – menemukan dan mengembalikan semua nilai yang dimulai dengan “abc”

WHERE nilai LIKE '%abc' – menemukan dan mengembalikan semua nilai yang diakhiri dengan “abc”

WHERE nilai LIKE '%abc%' – menemukan dan mengembalikan nilai yang memiliki “abc” di mana saja antara awal dan akhir

Mari kita lihat WHERE LIKE contoh. Perusahaan ingin mendapatkan daftar pelanggannya dari Amerika Serikat dan Inggris. Pertanyaannya adalah sebagai berikut:

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

Outputnya adalah:

ContactName Negara Kota
Helen Bennett Inggris Raya Sapi
Simon Crowther Inggris Raya London
Hari Kumar Inggris Raya London
Howard Snyder AS Eugene
Yoshi Latimer AS Elgin
John Steel AS Walla Walla
Jaime Torres AS San Francisco
Fran Wilson AS Portland

TIDAK SEPERTI DI MANA contoh

Ada kasus lain di mana Anda perlu mengecualikan beberapa data dari hasil. Kita bisa menggunakan MySQL WHERE NOT LIKE operator. Ia menemukan dan mengembalikan data yang tidak memiliki karakter tertentu.

Perusahaan menginginkan daftar pelanggannya dari semua negara kecuali Inggris dan Amerika Serikat. Sintaks WHERE NOT LIKE di MySQL akan terlihat seperti di bawah ini:

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

Keluaran:

ContactName Negara Kota
Roland Mendel Austria Graz
Georg Pipps Austria Salzburg
Catherine Dewey Belgia Bruxelles
Kereta Pascale Belgia Charleroi
Elizabeth Lincoln Kanada Tsawassen
Yoshi Tannamuri Kanada Vancouver
Jean Fresnière Kanada Montréal
Jytte Petersen Denmark København
Palle Ibsen Denmark Århus
Pirkko Koskitalo Finlandia Oulu
Matti Karttunen Finlandia Helsinki
Annette Roulet Prancis Toulouse
Marie Bertrand Prancis Paris
Maria Anders Jerman Berlin
Hanna Mooss Jerman Mannheim

operator WHERE IN

Menggunakan IN dan NOT IN kata kunci adalah opsi lain untuk memfilter baris dan mengambil hanya sebagian data yang cocok dengan kriteria ketat kami. Tujuan utamanya adalah untuk mengurangi jumlah OR klausa dalam satu SELECT penyataan.

MySQL WHERE IN menarik baris yang berisi nilai yang kami tentukan untuk WHERE kondisi. Misalnya, kami ingin mengambil daftar pelanggan yang tinggal di beberapa negara Eropa. WHERE IN sintaksnya adalah sebagai berikut di MySQL:

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

Harap perhatikan bahwa kami menyertakan nilai kami yang menentukan kondisi pencarian dalam tanda kurung. Dalam hal bekerja dengan nilai teks, kita harus memasukkan semuanya ke dalam tanda kutip tunggal. Namun, jika nilai dan numerik kami, kami akan mencantumkannya tanpa tanda kutip tunggal, mis., (25, 35, 45).

Output dari MySQL di atas WHERE IN klausa dalam SELECT pernyataannya adalah:

ContactName Negara Kota
Catherine Dewey Belgia Bruxelles
Kereta Pascale Belgia Charleroi
Frédérique Citeaux Prancis Strasbourg
Laurence Lebihans Prancis Marseille
Janine Labrune Prancis Nantes
Martine Rancé Prancis Lille
Alexander Feuer Jerman Leipzig
Henriette Pfalzheim Jerman Köln
Horst Kloss Jerman Cunewalde
Karin Josephs Jerman Münster
Rita Müller Jerman Stuttgart
Thomas Hardy Inggris Raya London
Victoria Ashworth Inggris Raya London
Elizabeth Brown Inggris Raya Manchester
Ann Devon Inggris Raya London

contoh DI MANA TIDAK

Kasus sebaliknya adalah MySQL WHERE NOT IN ayat. Ini digunakan untuk memastikan bahwa kueri Anda akan mengabaikan baris yang berisi nilai yang ditentukan untuk kondisi tersebut. Dalam contoh di atas, kami meminta pelanggan dari 4 negara Eropa tertentu. MySQL WHERE NOT IN SELECT permintaan untuk permintaan yang sama akan mengembalikan semua pelanggan yang berada di negara lain kecuali 4 yang ditentukan sebelumnya.

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

Keluaran:

ContactName Negara Kota
Patricio Simpson Argentina Buenos Aires
Sergio Gutiérrez Argentina Buenos Aires
Brian Citeaux Kanada Montréal
Laura Smith Kanada Toronto
Jane Green Kanada Toronto
Martine Rancé Kanada Vancouver
Alexander Feuer Kanada Århus
Paolo Accorti Italia Roma
Giovanni Rovelli Italia Torino
Anna Moroni Italia Pavia

Catatan :Sebaiknya gunakan [NOT] EXISTS lebih dari [NOT] IN sejak EXISTS operator logika bekerja lebih cepat daripada IN , saat membandingkan kumpulan data menggunakan subkueri. Selain itu, NOT EXISTS akan menghindari hasil yang tidak diharapkan ketika data sumber berisi NULL nilai.

DIMANA operator NULL

Untuk memeriksa apakah suatu nilai adalah NULL atau tidak, gunakan IS NULL operator. Pernyataan berikut menggunakan WHERE klausa dengan IS NULL operator untuk mendapatkan baris tanpa nilai di books_read kolom:

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

Outputnya akan terlihat seperti ini:

nama_belakang nama_depan reg_year books_read
Janett Overracker 2020 NULL
Lidia Swenson 2017 NULL
Albert Crepeau 2018 NULL
Anastasia Johnson 2020 NULL
Akan Smith 2017 NULL

WHERE NOT NULL contoh

Berbeda dengan perintah sebelumnya, WHERE IS NOT NULL , sebaliknya, hanya menampilkan baris yang berisi semacam nilai dalam kolom yang dimaksud. Dalam contoh berikut, kita akan memilih hanya baris yang membaca_buku kolom tidak kosong:

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

Pada output, Anda hanya akan melihat baris yang berisi nilai di books_read kolom:

nama_belakang nama_depan 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 operator. 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

Summary

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. Perbaiki "ERROR 1136 (21S01):Jumlah kolom tidak sesuai dengan jumlah nilai pada baris 1" saat Memasukkan Data di MySQL

  2. JSON_OBJECT() – Buat Objek JSON dari Daftar Pasangan Kunci/Nilai di MySQL

  3. Tips untuk Migrasi dari HAProxy ke ProxySQL

  4. Aktifkan Dukungan Mesin Penyimpanan MySQL InnoDB di Instalasi XAMPP

  5. Bagaimana cara menjalankan perintah MySQL dari skrip shell?