Witam w kolejnej lekcji kursu Oracle SQL.
W tej lekcji zobaczymy jak limitować rekordy przy pomocy klauzuli WHERE.
Zapraszam do lektury!
Podłączamy się do bazy danych jako użytkownik HR tak jak w trakcie ostatniej lekcji.
WHERE
Po WHERE stawiamy warunek – w wyniku działania zapytania znajdą się tylko i wyłącznie rekordy spełniające ten warunek.
Jakie można wykorzystywać operatory? Całkiem sporo:
- Porównań (<, <=, =, =>, >, <>, !=, ^=)
- Dopasowania wzorca (LIKE)
- Logiczne (AND, OR, NOT)
- Sprawdzania wartości NULL (IS NULL)
Tyle suchej wiedzy – zatem do dzieła 🙂
Przykład 1. Wybierz pracowników imiona i nazwiska pracowników oraz ich pensję. Wybierz tylko tych zarabiających więcej niż 10 000.
SELECT first_name, last_name, salary FROM employees WHERE salary>10000;
WHERE “stoi” zawsze po FROM.
Przykład 2. Wybierz imiona, nazwiska, pensję oraz job_id dla pracowników zarabiających powyżej 5000. Wybierz tylko pracowników, którzy mają job_id inne niż IT_PROG.
SELECT first_name, last_name, salary FROM employees WHERE salary > 5000 AND job_id != 'IT_PROG';
W przypadku zastosowania AND rekord zostanie wyświetlony tylko i wyłącznie, gdy oba warunki będą spełnione.
W przypadku zastosowania OR rekord zostanie wyświetlony wtedy, gdy co najmniej jeden warunek zostanie spełniony.
Przykład 3. Wybierz imiona, nazwiska, pensję oraz job_id z tabeli employees. Wybierz tylko pracowników, którzy mają job_id IT_PROG lub zarabiają powyżej 5000.
SELECT first_name, last_name, salary FROM employees WHERE salary > 5000 OR job_id = 'IT_PROG';
W tym przykładzie do wyświetlenia rekordu wystarczy, że jeden z dwóch warunków będzie prawdziwy. Mogą być oczywiście spełnione oba 🙂
Co w przypadku, gdy nie możemy precyzyjnie określić czego szukamy? Operator LIKE
Przykład 4. Wybierz pracowników, których imię zaczyna się na Alex.
SELECT * FROM employees WHERE first_name LIKE 'Alex%';
Wybraliśmy pracowników o imionach Alexis oraz Alexander. Dlaczego?
W przypadku, gdy zastosujemy operator LIKE możemy użyć:
- % – zastępuje dowolny ciąg znaków
- _ – zastępuje dowolny jeden znak
Czy można używać tych znaków specjalnych razem? Ależ oczywiście 🙂
Przykład 5. Wybierz pracowników, którzy czwartą literę w imieniu mają ‘x’, piątą literę mają ‘a’.
SELECT * FROM employees WHERE first_name LIKE '___xa%';
A co z wartościami pustymi?
I na nie pokażemy sobie sposób 🙂
Przykład 6. Wybierz pracowników, którzy w commission_pct mają wartość pustą.
SELECT *
FROM employees
WHERE commission_pct IS NULL;
Uwaga! Nie należy używać kolumna = NULL, gdyż w takim wypadku nie wybierzemy żadnych rekordów.
Przykład 7. Wybierz pracowników, którzy w commission_pct mają wartość pustą – sposób niepoprawny.
SELECT *
FROM employees
WHERE commission_pct = NULL;
Co w następnej lekcji?
Sortowanie rekordów – klauzula ORDER BY. Czyli co zrobić, żeby rekordy wyświetlały się w konkretnej kolejności.