Autor: Joanna Karwowska
SELECT [DISTINCT] <
lista kolumn/wyrażeń
>FROM
<lista tablic>
[WHERE <
warunek>
][GROUP BY <
lista kolumn>
] [HAVING <warunek>
][ORDER BY <
lista kolumn/numerów>
][ ]
instrukcja może wystąpić, ale nie musi.
SELECT - określa, które kolumny z tablic
podanych we frazie FROM mają zostać włączone do wyniku (projekcja). Dodatkowo, mogą zostać włączone wyrażenia.
DISTINCT - powoduje wyeliminowanie duplikatów (wierszy powtarzających się).
FROM - określa tablice, na jakich działa instrukcja SELECT. Jeśli jest kilka tablic,
dokonywany jest produkt kartezjański tych tablic.
WHERE - określa warunki wyboru wierszy z
tablic wymienionych we frazie FROM (selekcja).
GROUP BY - powoduje wiązanie wierszy wynikowych w grupy o jednakowych
wartościach we wskazanych kolumnach, a następnie redukowanie tych grup do
pojedynczych wierszy.
HAVING - określa warunki wyboru dla wierszy powstałych w wyniku działania frazy GROUP BY.
ORDER BY - porządkuje wiersze wynikowe rosnąco lub malejąco według wartości
wskazanych kolumn:
ASC – rosnąco (domyślne sortowanie) DESC - malejąco
Uwaga 1!
Każda kolumna występująca we frazie GROUP BY musi wystąpić na liście wyboru instrukcji SELECT, i na odwrót.
Uwaga 2!
W warunku HAVING może wystąpić funkcja agregująca (ale nie w warunku WHERE!).
SELECT [DISTINCT] <
lista kolumn/wyrażeń>
FROM <
nazwa tablicy>
[ WHERE <
warunek> ]
Uwaga: <
lista kolumn> może przybrać formę *
(co oznacza wybór wszystkich kolumn).
Przykład 1
Pokaż identyfikatory i nazwiska wszystkich pracowników.
SELECT nazwisko, pesel FROM pracownicy;
Przykład 2
Pokaż nazwy wszystkich miast, skąd pochodzą pracownicy.
SELECT DISTINCT miasto FROM pracownicy;
Uwaga:
Bez słowa DISTINCT nazwy miast mogłyby się powtarzać.
Przykład 3
Pokaż imiona i nazwiska pracowników, którzy pochodzą z Sopotu.
SELECT imie, nazwisko FROM pracownicy
WHERE miasto = ‘Sopot’;
Przykład 4
Pokaż imiona i nazwiska i pensje wszystkich pracowników.
SELECT imie, nazwisko, pensja FROM pracownicy, stanowiska
WHERE stanowisko=stanowiska.id_stanowiska;
Relacja:
{klucz_obcy=nazwa_tabeli.klucz_podstawowy}
Bez frazy ORDER BY wyniki zapytania ukazują się w porządku nieokreślonym (w porządku
wstawienia ich do tablicy).
Przykład 5
Posortuj alfabetycznie (rosnąco) dane o pracownikach według pola nazwisko.
SELECT nazwisko, imie, pesel FROM pracownicy ORDER BY nazwisko ASC;
Przykład 6
Policz ilość pracowników w każdym mieście.
SELECT miasto, COUNT(*) FROM pracownicy GROUP BY miasto;
Operatory języka SQL występujące w wyrażeniach we frazie SELECT, WHERE i in.:
Operatory arytmetyczne:
** ^ potęgowanie
* / mnożenie, dzielenie
+ - dodawanie, odejmowanie
Operatory logiczne:
NOT AND OR
Operatory porównania:
= > < >= <= <>
Operatory specjalne:
IN BETWEEN LIKE
• Operatory porównania z wartością pustą:
IS NULL IS NOT NULL
IN - sprawdza, czy wartość w kolumnie jest równa jednej z wartości określonej na liście wartości lub będących wynikiem instrukcji SELECT.
Przykład:
WHERE miasto = ‘Gdansk’ OR miasto =
‘Gdynia’ OR miasto = ‘Sopot’
jest równoważne:
WHERE miasto IN (‘Gdansk’, ‘Gdynia’, ‘Sopot’)
BETWEEN - sprawdza, czy wartość
w kolumnie jest zawarta w przedziale wartości.
Przykład:
WHERE pensja>=3000 AND pensja<=5000 jest równoważne:
WHERE pensja BETWEEN 3000 AND 5000
LIKE - porównuje zawartość kolumny znakowej z łańcuchem znaków, który może zawierać symbole wieloznaczne.
Symbole wieloznaczne:
_ (podkreślenie) - pasuje do dowolnego pojedynczego znaku,
% (procent) - pasuje do dowolnej liczby dowolnych znaków.
Przykład
Pokaż wszystkich pracowników o nazwiskach zaczynających się na literę B.
SELECT nazwisko FROM pracownicy WHERE nazwisko LIKE ‘B%’;
COUNT()-zwraca liczbę wierszy wybranych w zapytaniu.
AVG()-oblicza średnią arytmetyczną w kolumnie numerycznej.
SUM()-sumuje wartości kolumn numerycznych.
MIN()-znajduje wartość minimalną w kolumnie znakowej, numerycznej lub daty.
MAX()-znajduje wartość maksymalną w kolumnie znakowej, numerycznej lub daty.
COUNT(*) - zwraca liczbę wierszy w tablicy wynikowej.
COUNT(DISTINCT <
nazwa kolumny>)
- zwraca liczbę różnych wartości we wskazanejkolumnie.
Przykład 1
Ilu pracowników pochodzi z Sopotu?
SELECT COUNT(*) FROM pracownicy WHERE miasto = ‘Sopot’;
Przykład 2
Z ilu różnych miast pochodzą pracownicy?
SELECT COUNT(DISTINCT miasto) FROM pracownicy;
Przykład 1
Podaj sumę zarobków wszystkich pracowników.
SELECT SUM(pensja) FROM pracownicy, stanowiska WHERE stanowisko=stanowiska.id_stanowiska;
Przykład 2
Zmodyfikuj poprzednie zapytanie. Zmień nazwę kolumny zawierającej efekt działania funkcji.
SELECT SUM(pensja) AS „Suma zarobków”
FROM pracownicy, stanowiska
WHERE stanowisko=stanowiska.id_stanowiska;
Przykład 1
Podaj średnie wynagrodzenie wszystkich pracowników.
SELECT AVG(pensja) FROM pracownicy, stanowiska WHERE stanowisko=stanowiska.id_stanowiska;
Przykład 2
Zmodyfikuj poprzednie zapytanie. Zmień nazwę kolumny zawierającej efekt działania funkcji.
SELECT AVG(pensja) AS „Średnie wynagrodzenie”
FROM pracownicy, stanowiska
WHERE stanowisko=stanowiska.id_stanowiska;
Przykład 1
Znajdź największą pensję pracownika.
SELECT MAX(pensja) FROM pracownicy, stanowiska WHERE stanowisko=stanowiska.id_stanowiska;
Przykład 2
Zmodyfikuj poprzednie zapytanie. Zmień nazwę kolumny zawierającej efekt działania funkcji.
SELECT MAX(pensja) AS „Najwyższewynagrodzenie”
FROM pracownicy, stanowiska
WHERE stanowisko=stanowiska.id_stanowiska;
Przykład 1
Znajdź najmniejszą pensję pracownika.
SELECT MIN(pensja) FROM pracownicy, stanowiska WHERE stanowisko=stanowiska.id_stanowiska;
Przykład 2
Zmodyfikuj poprzednie zapytanie. Zmień nazwę kolumny zawierającej efekt działania funkcji.
SELECT MIN(pensja) AS „Minimalne wynagrodzenie”
FROM pracownicy, stanowiska
WHERE stanowisko=stanowiska.id_stanowiska;