Ana içeriğe geç
Modül 4 · Ders 1 ders 4Kurstaki 13/57~8 min
Modül dersleri (1/4)

Listeler ve aralıklar: IN ve BETWEEN

Önceki modüllerde eşitlikleri kullanarak WHERE ile filtrelediniz ve karşılaştırmalar: salary > 30000, department_id = 1, hired_on >= '2020-01-01'. Ancak koşul "değer bu beşten biri olmalıdır" olduğunda, zincirlenmiş OR'ler birikiyor:

SQL
-- Heavy and fragile: adding a department means touching the query
SELECT first_name, last_name
FROM   employees
WHERE  department_id = 1
   OR  department_id = 2
   OR  department_id = 3;

SQL bunu okunabilir kılmak için iki kısayol sunar.

IN — "bunlardan biri"

IN (...) operatörü değerlerin listesini alır ve eğer sütun bunlardan _herhangi birine eşittir:

SQL
SELECT first_name, last_name, department_id
FROM   employees
WHERE  department_id IN (1, 2, 3);

Anlamsal olarak yukarıdaki OR'lerle aynıdır ancak çok daha okunabilirdir: doğal olarak "burada department_id (1, 2, 3)'tedir" şeklinde okunur. Aynı zamanda işe yarıyor dizeler ve tarihlerle:

SQL
SELECT name
FROM   departments
WHERE  city IN ('Milano', 'Roma');

Ayrıca tam tersini yapan NOT IN (...) da vardır:

SQL
-- Employees who are NOT in Engineering or Sales:
SELECT first_name, last_name
FROM   employees
WHERE  department_id NOT IN (1, 2);

ARASINDA — "A ile B arasında, her ikisi de dahil"

Koşul sürekli bir aralık (sayılar, tarihler) olduğunda, column >= A AND column <= B yazdığınızda BETWEEN A AND B var:

SQL
-- Employees with a salary between 30000 and 50000 (both inclusive):
SELECT first_name, last_name, salary
FROM   employees
WHERE  salary BETWEEN 30000 AND 50000;

BETWEEN her iki uç noktada da kapsayıcıdır. ile çok güzel çalışıyor tarihler de:

SQL
-- Everyone hired in 2020:
SELECT first_name, last_name, hired_on
FROM   employees
WHERE  hired_on BETWEEN '2020-01-01' AND '2020-12-31';

Deneyin

Egzersiz#sql.m4.l1.e1
Denemeler: 0Yükleniyor…

Maaşı 30000 ile 50000 dahil arasında olan çalışanların adını (adını), soyadını (soyadı) ve maaşını (maaşını) gösterin. Üç sütun.

Düzenleyici yükleniyor…
İpucu göster

30000 VE 50000 ARASINDA kullanın — AND ile birleştirilen iki karşılaştırmadan daha kompakt ve okunabilir.

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#sql.m4.l1.e2
Denemeler: 0Yükleniyor…

Bölüm 1, 2 veya 4'te çalışan çalışanların adını (adını) ve soyadını (soyadı) listeleyin (IN kullanın). Soyadına göre alfabetik olarak sıralayın.

Düzenleyici yükleniyor…
İpucu göster

WHERE departman_id IN (1, 2, 4), üç OR'nin kompakt versiyonudur.

3 denemeden sonra çözüm mevcut