Język SQL: wykonywanie kwerend

article-thumbnail

Wykonywanie zapytań


Tabela zabytki została uzupełniona na potrzeby dalszych przykładów

W celu określenia, jakie dane zawiera poszczególna tabela, stosujemy instrukcję SELECT.

SELECT kolumna1, kolumna2, …
FROM tabela1;

Przykładowo, wypisanie danych z kolumn Nazwa i Data_znalezienia w tabeli zabytki:

SELECT Nazwa, Data_znalezienia
FROM zabytki;

Eliminowanie powtórek

Aby wyeliminować powtarzające się wiersze używa się DISTINCT.

Przykładowo, porównamy tutaj wybranie powtarzających się i niepowtarzających się dat z tabeli: zabytki.

SELECT Nazwa, Data_znalezienia
FROM zabytki;

SELECT DISTINCT Nazwa, Data_znalezienia
FROM zabytki;

Kopiowanie danych

Polecenie SELECT INTO stosuje się, aby przenieść dane z jednej tabeli do nowej tabeli. Klauzulę IN używa się jeśli nowa tabela ma zostać utworzona w innej bazie danych niż baza, w której jest przechowywana kopiowana tabela.

SELECT kolumna1, kolumna2, kolumna3 ...
INTO nowa_tabela [IN zewnetrzna_baza_danych]
FROM oryginalna_tabela
WHERE warunek;

Przykładowo, przekopiowanie wszystkich kolumn (realizowane za pomocą operatora *) z tabeli zabytki to tabeli zabytki_kopia:

SELECT *
INTO zabytki_kopia
FROM zabytki

Sortowanie, grupowanie

ORDER BY to klauzula, która sortuje otrzymane wyniki według wskazanej kolumny. Sortowanie może odbywać się malejąco (DESC) lub rosnąco (ASC).

Przykładowo, sortowanie danych malejąco według Data_znalezienia:

SELECT Nazwa, Data_znalezienia, Kraj_pochodzenia
FROM zabytki
ORDER BY Data_znalezienia DESC;

Klauzula LIMIT jest wykorzystywana do wybrania określonej liczby wierszy z tabeli. Można ją zdefiniować za pomocą liczby całkowitej lub jako wartość procentową.

Przykładowo, wyszukanie najwcześniej znalezionego zabytku:

SELECT Nazwa, Data_znalezienia, Kraj_pochodzenia
FROM zabytki
ORDER BY Data_znalezienia LIMIT 1;

GROUP BY jest klauzulą grupującą dane według zdefiniowanej kolumny.

Przykładowo, pogrupowanie danych według kolumny Kraj_pochodzenia:

SELECT Nazwa, Data_znalezienia, Kraj_pochodzenia
FROM zabytki
GROUP BY  Kraj_pochodzenia;

Warunki

Za ograniczenie wyników zapytania odpowiedzialna jest klauzula WHERE. Klauzula WHERE zawsze musi być umieszczona po klauzuli FROM.

Przykładowo, wyszukanie zabytków znalezionych w roku 1970:

SELECT Nazwa, Data_znalezienia, Kraj_pochodzenia
FROM zabytki
GROUP BY  Data_znalezienia = 1970;

Klauzula WHERE nie współpracuje z funkcjami agregującymi. Z tego powodu w przypadku używania funkcji agregujących należy użyć HAVING.

Przykładowo, policzenie ilości zabytków, pogrupowanie ich według kraju pochodzenia, gdzie znaleziono ich więcej niż 1:

SELECT COUNT(Id_zabytku), Kraj_pochodzenia
FROM zabytki
GROUP BY Kraj pochodzenia
HAVING  (Kraj pochodzenia) > 1;

Autor tekstu: Filip Kmiecik