MySQL WHERE Cümlesi: AND, OR, IN, NOT IN Sorgu Örneği

İçindekiler:

Anonim

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.

MySQL'de WHERE cümlesi

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 email
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ır
SELECT * 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 email
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 email
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 email
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