Kurs SQL online – Oracle: Limitowanie rekordów

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.

 

 

 

 

 

 

About Rafal Stryjek

My LinkedIn profile. Passionate about data. Data Warehousing Expert. Snowflake Data SuperHero & Oracle ACE Associate Alumni. International conferences Speaker: Snowflake Build Summit-BUILD.local 2021, Oracle Open World, DOAG, UKOUG, APEX World,.. Visit dataconsulting.pl website!
This entry was posted in Oracle, Oracle SQL, Oracle SQL Podstawy, SQL and tagged , , . Bookmark the permalink.

Leave a Reply