3.1 Karşılaştırma değerleri: <, >, =, <>

SQL sorguları yazarken kullanılan en yaygın anahtar sözcüklerden biri WHERE. Onun yardımıyla MySQL'e hangi tablo satırlarını filtrelemek (seçmek) istediğimizi söyleriz.

Anahtar kelimeden sonra WHEREçok karmaşık ve zor koşullar yazabilirsiniz. Peki bu koşul hangi işlemleri içerebilir?

Şebeke Tanım Örnek
< Az maaş < 40000
> Daha maaş > 100000
<= Daha az veya eşit yaş <= 25
>= Daha fazla veya eşit yaş >= 18
= eşittir meslek = 'Programcı'
<>, != Eşit değil Yıl(join_date) != 2015

Java dilinden farklı olarak, katı eşitlik için burada iki değil, bir eşittir karakteri kullanılır .

Değerlerin eşit olmadığını kontrol etmek istiyorsanız, bu iki şekilde yapılabilir: <>İlk !=yaklaşım Pascal gibi dillerde kullanılır, ikincisi C ++ gibi diller için tipiktir. ve Java.

SQL'de atama için Pascal'daki gibi kullanılır :=, ancak atamanın kendisi çok nadiren kullanılır.

2015'te işe alınmayan tüm çalışanları gösterdiğimiz bir sorgu yazalım.


SELECT * FROM employee WHERE YEAR(join_date) != 2015
        

Ve aşağıdaki sorgu sonucunu alıyoruz:

İD isim meslek maaş yaş katılmak_tarihi
1 İvanov İvan Programcı 100.000 25 2012-06-30
2 Petrov Petr Programcı 80.000 23 2013-08-12
3 İvanov Sergey test cihazı 40.000 otuz 2014-01-01
6 Vaska kedi 1.000 3 2018-01-01

3.2 Mantıksal işlemler VE, VEYA, DEĞİL

, ve WHEREmantıksal işlemlerini de kullanabilirsiniz . Ve tam olarak burada tanımladığım gibi yazılırlar. Yok veya _ANDORNOT&&||!

20 yaşından büyük ve 50 binden az maaş alan çalışanları seçtiğimiz bir SQL sorgusu yazalım.


SELECT * FROM employee WHERE age > 20 AND salary < 50000
        

Ve aşağıdaki sorgu sonucunu alıyoruz:

İD isim meslek maaş yaş katılmak_tarihi
3 İvanov Sergey test cihazı 40.000 otuz 2014-01-01
5 Kirienko Anastasia Ofis Yöneticisi 40.000 25 2015-10-10

Çok kolay. 100.000'den fazla alan ve yönetici olarak çalışmayan çalışanları seçtiğimiz bir sorgu yazalım:


SELECT * FROM employee WHERE salary >= 100000 AND NOT occupation = 'Director'
        

Burada özellikle sembol yerine !=işleci kullandık NOT.

Ve aşağıdaki sorgu sonucunu alıyoruz:

İD isim meslek maaş yaş katılmak_tarihi
1 İvanov İvan Programcı 100.000 25 2012-06-30

3.3 ARASINDA: değer aralığı

Ayrıca SQL'de, BETWEENbir değişkenin iki değer arasında olup olmadığını kontrol edebileceğiniz özel bir operatör vardır. Bu işleç, boole ifadelerinde kullanılır. Böyle bir operatörün genel formu şöyledir:


variable BETWEEN bottom line AND top_bound
        

Bu durumda Java dilinden farklı olarak izin verilen aralığa hem alt hem de üst sınırlar dahil edilir.

40K ile 100K arasında maaş alan tüm çalışanları seçtiğimiz bir örnek yazalım. İstek şöyle görünecektir:

SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000

Ve aşağıdaki sorgu sonucunu alıyoruz:

İD isim meslek maaş yaş katılmak_tarihi
1 İvanov İvan Programcı 100.000 25 2012-06-30
2 Petrov Petr Programcı 80.000 23 2013-08-12
3 İvanov Sergey test cihazı 40.000 otuz 2014-01-01
5 Kirienko Anastasia Ofis Yöneticisi 40.000 25 2015-10-10

Operatör BETWEENyalnızca sayısal türleri değil, tarihleri ​​ve hatta dize türlerini de destekler . Dizelerle çalışma durumunda, sözlük düzeni kullanılır: aaba, aabb'den önce gelir

3.4 IN: değer listesi

Ek olarak, SQL'de INbir değişkenin belirtilen listede bulunup bulunmadığını kontrol edebileceğiniz özel bir işleç vardır. Bu işleç, boole ifadelerinde kullanılır. Böyle bir operatörün genel formu şöyledir:

variable IN (value 1 , value 2 , ... value N)

20, 25 veya 30 yaşında olan çalışanları seçtiğimiz bir sorgu yazalım. İstek şöyle görünecektir:

SELECT * FROM employee WHERE age IN (20, 25, 30)

Ve aşağıdaki sorgu sonucunu alıyoruz:

İD isim meslek maaş yaş katılmak_tarihi
1 İvanov İvan Programcı 100.000 25 2012-06-30
3 İvanov Sergey test cihazı 40.000 otuz 2014-01-01
5 Kirienko Anastasia Ofis Yöneticisi 40.000 25 2015-10-10

Ve şimdi tam tersine yaşı 20, 25 veya 30 olan çalışanları seçtiğimiz bir sorgu yazalım. notSorgu şöyle görünecek:

SELECT * FROM employee WHERE age NOT IN (20, 25, 30)

Ve aşağıdaki sorgu sonucunu alıyoruz:

İD isim meslek maaş yaş katılmak_tarihi
2 Petrov Petr Programcı 80.000 23 2013-08-12
4 Rabinovich Moisha Müdür 200.000 35 2015-05-12
6 Vaska kedi 1.000 3 2018-01-01

Her şey beklendiği gibi çalıştı. Güzellik.

3.5 GİBİ: dizi deseni

Ve son olarak, başka bir önemli ve çok sık kullanılan operatör - LIKE. Dizeleri karşılaştırırken kullanılır. Bir dizi deseni ayarlamak için kullanılabilir. Bu işleç, boole ifadelerinde kullanılır. Böyle bir operatörün genel formu şöyledir:

variable LIKE 'sample'

Kalıpta özel karakterler kullanılabilir: %ve _.

  • Alt çizgi herhangi bir karakter anlamına gelir, her zaman 1 adet.
  • Yüzde, herhangi bir karakter ve herhangi bir sayıda (0 kez dahil) anlamına gelir.

Soyadı "I" harfi ile başlayan tüm kişileri seçecek bir sorgu yazalım. İstek şöyle görünecektir:

SELECT * FROM employee WHERE name LIKE 'I%'

Ve aşağıdaki sorgu sonucunu alıyoruz:

İD isim meslek maaş yaş katılmak_tarihi
1 İvanov İvan Programcı 100.000 25 2012-06-30
3 İvanov Sergey test cihazı 40.000 otuz 2014-01-01

Şimdi görevi karmaşıklaştıralım - ad "o" içermeli ve ad "a" ile bitmelidir. İstek şöyle görünecektir:

SELECT * FROM employee WHERE name LIKE '%o%a'

Ve aşağıdaki sorgu sonucunu alıyoruz:

İD isim meslek maaş yaş katılmak_tarihi
4 Rabinovich Moisha Müdür 200.000 35 2015-05-12

Tamam, biraz daha zorlaştıralım. Yaşı "3" ile başlayan tüm çalışanları filtreleyelim. İstek şöyle görünecektir:

SELECT * FROM employee WHERE age LIKE '3%'

Ve aşağıdaki sorgu sonucunu alıyoruz:

İD isim meslek maaş yaş katılmak_tarihi
3 İvanov Sergey test cihazı 40.000 otuz 2014-01-01
4 Rabinovich Moisha Müdür 200.000 35 2015-05-12
6 Vaska kedi 1.000 3 2018-01-01

Bu arada, yaş sütunumuz türündedir int, bu nedenle yalnızca LIKEdizelerle çalışmaz. Ne yapamaz ama sevinir.