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 WHERE
mantıksal işlemlerini de kullanabilirsiniz . Ve tam olarak burada tanımladığım gibi yazılırlar. Yok veya _AND
OR
NOT
&&
||
!
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, BETWEEN
bir 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 BETWEEN
yalnı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 IN
bir 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. not
Sorgu şö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 LIKE
dizelerle çalışmaz. Ne yapamaz ama sevinir.