DQL – wyszukiwanie danych w bazie danych

Wyobraź sobie ogromną bibliotekę książek. Żeby znaleźć konkretną książkę, nie musisz przeglądać wszystkich półek – wystarczy, że zapytasz bibliotekarza w odpowiedni sposób.
W języku SQL tym „bibliotekarzem” jest właśnie DQL (Data Query Language) – czyli język zapytań, który pozwala wydobywać konkretne informacje z bazy danych.

Polecenia DQL nie zmieniają danych – one tylko pytają o to, co już istnieje.


Podstawowe polecenie: SELECT

Polecenie SELECT służy do wybierania danych z tabeli.
To tak, jakbyś powiedział: „Pokaż mi wszystkie książki autorstwa Sienkiewicza”.


Składnia:

SELECT kolumna1, kolumna2, ...
FROM nazwa_tabeli;
  • SELECT – określa, które kolumny mają zostać wyświetlone,
  • FROM – wskazuje tabelę, z której pobieramy dane.

Przykład:

SELECT imie, nazwisko FROM klienci;

Wyświetli kolumny imie i nazwisko z tabeli klienci.


SELECT * – wybór wszystkich kolumn

Jeśli chcesz zobaczyć wszystkie kolumny z tabeli, możesz użyć symbolu *:

SELECT * FROM klienci;

Oznacza: pokaż wszystkie dane o klientach.


Filtrowanie danych – klauzula WHERE

Często nie chcemy widzieć wszystkiego, tylko wybrane rekordy.
Klauzula WHERE pozwala wybrać tylko te dane, które spełniają określony warunek.


Przykłady:

Wszyscy klienci powyżej 18 lat

SELECT imie, nazwisko FROM klienci WHERE wiek > 18;

Klienci z Warszawy

SELECT imie, nazwisko FROM klienci WHERE miasto = 'Warszawa';

Najczęstsze operatory porównania

OperatorZnaczeniePrzykład
=równemiasto = 'Warszawa'
<> lub !=różnemiasto != 'Kraków'
<, >, <=, >=mniejsze, większewiek >= 18
BETWEEN … AND …przedział wartościwiek BETWEEN 18 AND 25
IN (…)jedna z wartościmiasto IN ('Warszawa', 'Kraków')
LIKEdopasowanie wzorcanazwisko LIKE 'K%'

Przykłady z użyciem operatorów:

Klienci w wieku od 18 do 25 lat

SELECT * FROM klienci WHERE wiek BETWEEN 18 AND 25;

Klienci z Warszawy lub Krakowa

SELECT * FROM klienci WHERE miasto IN ('Warszawa', 'Kraków');

Klienci, których nazwisko zaczyna się na „K”

SELECT * FROM klienci WHERE nazwisko LIKE 'K%';

Sortowanie danych – klauzula ORDER BY

Czasem chcemy, żeby wyniki były uporządkowane – alfabetycznie, rosnąco lub malejąco.
Do tego służy ORDER BY.


Składnia:

SELECT kolumna1, kolumna2, ...
FROM nazwa_tabeli
ORDER BY kolumna_sortowania [ASC | DESC];
  • ASC – sortowanie rosnąco (domyślne),
  • DESC – sortowanie malejąco.

Przykład:

Wyświetl klientów alfabetycznie po nazwisku:

SELECT imie, nazwisko, miasto
FROM klienci
ORDER BY nazwisko ASC;

Sortowanie po wielu kolumnach

Można sortować jednocześnie po kilku kolumnach:

SELECT imie, nazwisko, miasto
FROM klienci
ORDER BY miasto ASC, nazwisko DESC;

Najpierw posortuje po miasto, a w obrębie każdego miasta – odwrotnie po nazwisku.


DISTINCT, CONCAT i LIMIT

Te trzy elementy pozwalają jeszcze lepiej kontrolować wyniki zapytań.


DISTINCT – usuwanie duplikatów

Czasem w wynikach pojawiają się powtarzające wartości.
Słowo DISTINCT sprawia, że każda wartość pojawia się tylko raz.

SELECT DISTINCT miasto FROM klienci;

Zwróci listę unikalnych miast, w których mieszkają klienci.


CONCAT – łączenie tekstów

Funkcja CONCAT pozwala połączyć kilka kolumn w jeden tekst.

SELECT CONCAT(imie, ' ', nazwisko) AS pelne_imie
FROM klienci;

Zwróci kolumnę pelne_imie, np. „Jan Kowalski”.


LIMIT – ograniczenie liczby wyników

Jeśli tabela ma dużo danych, możesz ograniczyć liczbę zwracanych wierszy.

SELECT imie, nazwisko
FROM klienci
LIMIT 5;

Zwróci tylko 5 pierwszych rekordów.


Przykład złożony:

Pokaż 10 klientów, którzy wydali najwięcej pieniędzy:

SELECT id_klienta, SUM(wartosc_zamowienia) AS suma_wydatkow
FROM zamowienia
GROUP BY id_klienta
ORDER BY suma_wydatkow DESC
LIMIT 10;

Wynik: lista 10 klientów z najwyższą sumą zamówień.


Podsumowanie

PolecenieZastosowaniePrzykład
SELECTwybiera daneSELECT * FROM klienci
WHEREfiltruje wynikiWHERE wiek > 18
ORDER BYsortuje daneORDER BY nazwisko ASC
DISTINCTusuwa duplikatySELECT DISTINCT miasto FROM klienci
CONCATłączy tekstyCONCAT(imie, ' ', nazwisko)
LIMITogranicza wynikLIMIT 10

DQL to najczęściej używana część SQL. To właśnie dzięki niemu potrafimy zadawać bazie danych konkretne pytania i otrzymywać precyzyjne odpowiedzi.


Ćwiczenia praktyczne

Zadanie 1 – Proste zapytania SELECT

  1. Wyświetl wszystkie kolumny z tabeli klienci.
  2. Wyświetl tylko imie i nazwisko klientów.
  3. Wyświetl unikalne miasta, w których mieszkają klienci.

Zadanie 2 – Filtrowanie danych (WHERE)

  1. Wyświetl klientów w wieku powyżej 25 lat.
  2. Wyświetl klientów z Krakowa lub Warszawy.
  3. Wyświetl klientów, których nazwisko zaczyna się na literę „M”.

Zadanie 3 – Sortowanie i ograniczanie wyników

  1. Wyświetl listę klientów posortowaną po nazwisku (malejąco).
  2. Wyświetl 3 najmłodszych klientów (jeśli masz kolumnę wiek).
  3. Wyświetl 5 pierwszych klientów z tabeli.