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