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:
-- 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:
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:
SELECT name
FROM departments
WHERE city IN ('Milano', 'Roma');Ayrıca tam tersini yapan NOT IN (...) da vardır:
-- 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:
-- 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:
-- 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
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.
İ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
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.
İpucu göster
WHERE departman_id IN (1, 2, 4), üç OR'nin kompakt versiyonudur.
3 denemeden sonra çözüm mevcut