Lekcja w formie wideo

Wstęp

Być może zauważasz, w wynikach zapytań z poprzednich lekcji, powtarzające się wartości w kolumnie owner. Jest to nazwa twórcy, właściciela tabeli.

Jak wybrać listę właścicieli posiadających choć jedną tabelę z widoku all_tables?

Rozwiązaniem prezentowanym w tej lekcji jest użycie słowa kluczowego DISTINCT.

Użycie DISTINCT

DISTINCT służy do eliminacji duplikatów danych ze zwracanego wyniku. W poleceniu SQL wstawiasz DISTINCT zaraz po poleceniu SELECT. Dzięki temu wiersze wyniku składające się z danych, ze wszystkich kolumn wypisanych po DISTINCT będą unikalne.

Na początek spróbuj z jedną kolumną. Napisz zapytanie zwracające unikalne wartości z kolumny owner widoku all_tables. Może wyglądać tak:

SELECT
  DISTINCT owner
FROM
  all_tables;

A mój wynik wygląda tak:

OWNER
---------------------
OUTLN
SYS
DBSNMP
SYSTEM
XDB
APPQOSSYS
AUDSYS

7 rows selected.

Pokazuje unikalne wartości kolumny owner.

Gdy po DISTINCT wypiszesz dwie kolumny motor bazy danych zwróci Ci unikalne pary wartości. To samo oczywiście z większą ilością kolumn.

Użycie DISTINCT w celu zapewnienia unikalności wyniku zapytania SQL.

Wydajność DISTINCT

Warto pamiętać, że użycie DISTINCT oznacza sortowanie. Gdy piszesz zapytanie ad hoc, na stosunkowo małej ilości danych, to nie powinno być problemu.

Niemniej gdy zamierzasz użyć takiej formuły w zapytaniu, które będzie wykonywane wielokrotnie i to przez wielu użytkowników to lepiej znaleźć inny sposób uzyskania unikalności danych. Użycie DISTINCT spowoduje większe zużycie zasobów motoru bazy danych. Twoja aplikacja może nie działać tak wydajnie jak by mogła.

W internetach można się spotkać z opiniami, że użycie DISTINCT wynika z nieumiejętności w SQL, nieznajomości danych lub złego projektu bazy danych. Podzielam te opinie.

Podsumowanie

Gratuluję Ci ukończenia szóstej lekcji darmowej edycji mojego kursu 'Podstawy SQL dla użytkowników Oracle’. Wiesz z niej jak w najprostszy sposób uzyskać unikalność danych w wyniku zapytania.

Zadanie dla Ciebie: napisz zapytanie zwracające unikalne pary wartości kolumn owner i tablespace_name z widoku all_tables. Wynik ogranicz do dziesięciu wierszy zaczynając od piątego. Zrób zrzut ekranu i pochwal się swoim osiągnięciem na discordzie. Dedykowany serwer: Marcin Badtke – bazy danych i SQL.

Wiesz już jak wymuszać unikalność wyniku zapytania. W następnej lekcji pokażę Ci jak policzyć interesujące Cię wiersze w tabeli.

Gratuluję Ci ukończenia szóstej lekcji darmowej edycji mojego kursu 'Podstawy SQL dla użytkowników Oracle’. Skomentuj poniżej jak Ci się podobała.

Jak policzyć wiersze w tabeli? Pokażę Ci w następnej lekcji. Chodź.

Idź do następnej lekcji

Wróć do poprzedniej lekcji

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *