3. Filtrowanie WHERE 🔍 - ritaly/wprowadzenie-do-sql GitHub Wiki

Czasem nie chcemy wszystkich rekordów z tabeli, dlatego potrzebne jest nam filtrowanie za pomocą słowa kluczowego WHERE.

SELECT wybrane kolumny
FROM tabela, z której wybieramy
WHERE kryteium wybierania danych

Znajdźmy wszystkie pracownice firmy o imieniu Jessica

SELECT employee_id, first_name, last_name
FROM employee
WHERE first_name = 'Jessica';

Wszystkich pracowników o nazwisku

SELECT employee_id, first_name, last_name
FROM employee
WHERE last_name = 'Bennett';

Zadanie: Sprawdź, ilu pracowników o nazwisku Smith pracuje w tej firmie, a Jones?

⚠️ Przy porównywaniu tekstów wielkość liter ma znaczenie

Operatory

  • równe =
  • nierówna się != / <>
  • operatory porównania: <, >, >=, <=
  • BETWEENAND … - wartość pomiędzy przedziałem
SELECT employee_id, first_name, last_name
FROM employee
WHERE last_name <> 'Bennett';

Filtrowanie za pomocą LIKE

Możemy wyszukiwać nie za pomocą operatorów matematycznych, ale z użyciem słówka LIKE, które dopasuje nam część tekstu.

Dodatkowo znak % zastępuje dowolną liczbę znaków. Znak _ zastępuje dokładnie 1 znak.

Sprawdź jak zadziała poniższy kod:

SELECT employee_id, first_name, last_name
FROM employee
WHERE last_name LIKE '%ry';

Zadania:

  1. Wyszukaj wszystkich pracowników, których id jest większe niż 10
  2. Wyszukaj praconików, którzy mają na nazwisko Berry
  3. Wyszukaj wszystkich pracowników o nazwisku różnym od Jones
  4. Wyszukaj zarabiających więcej niż 50000
  5. Znajdź rekordy pracowników o nazwiskach zaczynających się od Bu
  6. Znajdź pracowników, których nazwisko zawiera w środku literę t (nie na końcu, nie na początku).
  7. Znajdź zarówno pracownice o imieniu Anna, jak i Anne.

Łączenie filtrów

  • AND
  • OR

Wyszukajmy pracowników nazwisku Berry oraz zarabiających ponad 80000.

SELECT first_name, last_name, salary
FROM employee 
WHERE last_name = 'Berry' AND salary > 80000;

Zadania:

  1. Zmodyfikuj to zapytanie tak by znaleźć pracowników, których nazwisko zawiera dwie litery r w środku obok siebie np. Berry, Perry, Garrett, etc.
  2. Znajdź pracowników o pensji wyższej lub równej 60 tys a niższej niż 90 tys.
  3. Znajdź pracowników o imieniu Justin lub o nazwisku Little
  4. Znajdź pracowników, których pensja jest wyższa niż 6500 i imię to Barbara lub nazwisko zawiera literę o

⚠️ Łączenie wielu zapytań wymaga od nas zachowania kolejności lub dodania nawiasów, określających kolejność wykonywania

NULL

To specjalna wartość oznaczająca brak wartości.

⚠️ Nie można porównać wartości której nie ma! Taki kod nie zadziała ...WHERE column = NULL

Prawidłowa składnia to IS NULL, a przeczenie to IS NOT NULL

Zadanie: Znajdź pracowników, których pensja nie została podana

⚠️ **GitHub.com Fallback** ⚠️