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:
- Evaluasi
FROM
klausa untuk mengidentifikasi tabel target. - Lanjutkan ke
WHERE
klausa untuk mengevaluasi kriteria pemilihan data. - 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