MySQL'de WHERE Cümlesi nedir?
MySQL'deki WHERE İfadesi , belirtilen SQL ifadesinden etkilenecek veri veya satırların kesin kriterlerini belirtmek için kullanılan bir anahtar kelimedir. WHERE yan tümcesi, kayıtları filtrelemek ve veriler üzerinde çeşitli işlemleri gerçekleştirmek için INSERT, UPDATE, SELECT ve DELETE gibi SQL ifadeleriyle birlikte kullanılabilir.
Önceki öğreticide bulunan SELECT deyimini kullanarak bir veritabanındaki verileri nasıl sorgulayacağımızı inceledik. SELECT ifadesi, sorgulanan veritabanı tablosundaki tüm sonuçları döndürdü.
Ancak, sorgu sonuçlarını belirli bir koşulla sınırlamak istediğimiz zamanlardır. SQL'deki WHERE cümlesi bu tür durumlarda kullanışlıdır.
WHERE yan tümcesi Sözdizimi
Bir MySQL SELECT WHERE deyiminde kullanıldığında WHERE yan tümcesi için temel sözdizimi aşağıdaki gibidir.
SELECT * FROM tableName WHERE condition;
İŞTE
- "SELECT * FROM tableName" standart SELECT ifadesidir
- "NEREDE" , seçme sorgu sonuç kümemizi kısıtlayan anahtar kelimedir ve "koşul" , sonuçlara uygulanacak filtredir. Filtre bir aralık, tek değer veya alt sorgu olabilir.
Şimdi pratik bir örneğe bakalım .
Bir üyenin kişisel bilgilerini 1 numaralı üyelik verilen üye tablosundan almak istediğimizi varsayalım, bunu başarmak için aşağıdaki komut dosyasını kullanırız.
SELECT * FROM `members` WHERE `membership_number` = 1;
Yukarıdaki komut dosyasını "myflixdb" üzerindeki MySQL çalışma tezgahında çalıştırmak aşağıdaki sonuçları verecektir.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
- AND LOGICAL Operator ile birleştirilmiş WHERE cümlesi
MySQL'deki WHERE koşulu, AND mantıksal işleci ile birlikte kullanıldığında, yalnızca belirtilen TÜM filtre kriterleri karşılanırsa çalıştırılır. Şimdi pratik bir örneğe bakalım - Diyelim ki 2008'de 2. kategoriye giren tüm filmlerin bir listesini almak istiyoruz, bunu başarmak için aşağıda gösterilen senaryoyu kullanacağız.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Yukarıdaki komut dosyasını MySQL çalışma tezgahında "myflixdb" ile çalıştırmak aşağıdaki sonuçları verir.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
- OR LOGICAL Operator ile birleştirilmiş WHERE cümlesi
OR işleciyle birlikte kullanıldığında WHERE yan tümcesi, yalnızca belirtilen filtre ölçütlerinden herhangi biri veya tamamı karşılanırsa çalıştırılır. Aşağıdaki komut dosyası, kategori 1 veya kategori 2'deki tüm filmleri alırSELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Yukarıdaki komut dosyasını MySQL çalışma tezgahında "myflixdb" ile çalıştırmak aşağıdaki sonuçları verir.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE cümlesi - IN Anahtar Kelime ile birleştirilir
WHERE in MySQL deyimi, IN anahtar sözcüğüyle birlikte kullanıldığında yalnızca değerleri IN anahtar sözcüğünde sağlanan değerler listesiyle eşleşen satırları etkiler. MySQL IN ifadesi, kullanmanız gerekebilecek OR cümlelerinin sayısını azaltmanıza yardımcı olur. Aşağıdaki MySQL WHERE IN sorgusu, üyelik_sayısının 1, 2 veya 3 olduğu satırlar verir.SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Yukarıdaki komut dosyasını MySQL çalışma tezgahında "myflixdb" ile çalıştırmak aşağıdaki sonuçları verir.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
WHERE cümlesi - NOT IN Keyword ile birleştirilir
NOT IN anahtar sözcüğü ile birlikte kullanıldığında WHERE yan tümcesi, değerleri NOT IN anahtar sözcüğünde sağlanan değerler listesiyle eşleşen satırları ETKİLEMEZ. Aşağıdaki sorgu, üyelik_sayısının 1, 2 veya 3 OLMADIĞI satırları verir.SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Yukarıdaki komut dosyasını MySQL çalışma tezgahında "myflixdb" ile çalıştırmak aşağıdaki sonuçları verir.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
WHERE cümlesi - COMPARISON Operatörleri ile birleştirilir
Küçüktür (), eşittir (=), eşit değildir () karşılaştırma işleçleri WHERE Cümlesi ile kullanılabilir= Eşittir
Aşağıdaki komut dosyası, karşılaştırma işlecini kullanarak tüm kadın üyeleri üyeler tablosundan alır.SELECT * FROM `members` WHERE `gender` = 'Female';
Yukarıdaki komut dosyasını MySQL çalışma tezgahında "myflixdb" ile çalıştırmak aşağıdaki sonuçları verir.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> Büyüktür
Aşağıdaki komut dosyası, 2.000'den fazla olan tüm ödemeleri ödemeler tablosundan alır. SEÇİN * "ödemeler" NEREDE "tutar_ödendi"> 2000; Yukarıdaki komut dosyasını MySQL çalışma tezgahında "myflixdb" ile çalıştırmak aşağıdaki sonuçları verir.payment_id | membership_number | payment_date | description | amount_paid | external_reference_number |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
<> Eşit Değil
Aşağıdaki komut dosyası, kategori kimliği 1 olmayan tüm filmleri alır.SELECT * FROM `movies` WHERE `category_id`<> 1;Yukarıdaki komut dosyasını MySQL çalışma tezgahında "myflixdb" ile çalıştırmak aşağıdaki sonuçları verir.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
Özet
- SQL WHERE yan tümcesi, bir SELECT, UPDATE veya DELETE sorgusundan etkilenen satırların sayısını kısıtlamak için kullanılır.
- SQL'deki WHERE koşulu, AND ve OR gibi mantıksal operatörler, = vb. Gibi karşılaştırma operatörleri ile birlikte kullanılabilir.
- AND mantıksal işleci ile kullanıldığında, tüm kriterler karşılanmalıdır.
- OR mantıksal işleci ile kullanıldığında, kriterlerden herhangi biri karşılanmalıdır.
- IN anahtar sözcüğü, bir değerler listesiyle eşleşen satırları seçmek için kullanılır.
Zeka Oyunları 25/06/2012 tarihinde iade edilmeyen kiralanmış filmlerin bir listesini almak istediğimizi varsayalım. Bunu başarmak için SQL WHERE deyimi cümlesini küçüktür karşılaştırma operatörü ve AND mantıksal operatörüyle birlikte kullanabiliriz.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Yukarıdaki betiği MySQL çalışma tezgahında çalıştırmak aşağıdaki sonuçları verir.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |