1
Do tabeli pracownicy dodać kolumnę Pensja, dla informacji nt. rocznej pensji i uzupełnić
danymi wg wzoru:
SQL (Structured Query Language)
PROSTE ZAPYTANIA
Przykład 1.
Wyszukiwanie wszystkich kolumn i wierszy.
Podaj wszystkie kategorie produktów i ich opisy.
Zamknąć okno kwerendy, zapisać jako Kwerenda1
Przykład 2.
Wyszukanie wybranych kolumn i wszystkich wierszy
Podaj listę płac wszystkich pracowników; lista płac powinna zawierać jedynie pola:
IDpracownika, imię, nazwisko oraz pensję
Zamknąć okno kwerendy, zapisać jako Kwerenda2.
Przykład 3.
Wykorzystanie DISTINCT
Podaj wszystkie kraje, w których mają siedzibę firmy z tabeli Dostawcy.
Zamknąć okno kwerendy, zapisać jako Kwerenda3
Przykład 4.
Pola wyliczane
Podaj listę miesięcznych płac wszystkich pracowników; lista powinna zawierać numer
pracownika, jego imię nazwisko oraz płacę ( w tabeli personel w kolumnie pensja
zapisane są roczne pobory)
Zamknąć okno kwerendy, zapisać jako Kwerenda4
Przykład 5.
Warunek selekcji: porównanie
Podaj wszystkich pracowników, których pensja jest wyższa niż 45000; lista powinna
zawierać IDpracownika, jego imię nazwisko, płacę oraz stanowisko
Zamknąć okno kwerendy, zapisać jako Kwerenda5.
W SQL dostępne są następujące proste operatory porównania:
= równe
<> różne
< mniejsze niż
> większe niż
<= mniejsze niż lub równe
>= większe niż lub równe
Bardziej skomplikowane warunki można budować używając spójników logicznych AND (i),
OR (lub), oraz NOT (nie) a także nawiasów w celu wskazanie kolejności działań.
Zasady obliczania wartości wyrażenia logicznego są następujące:
••••
wyrażenia oblicza się od lewej do prawej
••••
w pierwszej kolejności obliczane są podwyrażenia w nawiasach
••••
NOT jest obliczane prze AND i OR
2
••••
AND jest obliczane przed OR
Przykład 6.
Złożony warunek selekcji: porównanie
Podaj adresy korespondencyjne wszystkich dostawców z USA lub Francji; lista powinna
zawierać pola: Nazwafirmy, adres, kraj.
Zamknąć okno kwerendy, zapisać jako Kwerenda6.
Przykład 7.
Warunek selekcji: wartości z zakresu (BETWEEN i NOT
BETEEEN)
Podaj wszystkich pracowników mających roczną pensję pomiędzy 40 000 a 55 000; lista
powinna zawierać pola: Imię, Nazwisko, Stanowisko, Pensja
Zamknąć okno kwerendy, zapisać jako Kwerenda7
!!Zastanów się w jaki inny sposób można zapisać w SQL zapytania z przykładu 7.
Przykład 8.
Warunek selekcji: dopasowanie do wzorca (LIKE lub NOT LIKE)
Znajdź wszystkich przedstawicieli na stanowisku dyrektor niezależnie od specjalizacji
spośród dostawców; lista powinna zawierać pola: Przedstawiciel (imię nazwisko),
StanowiskoPrzedstawiciela
W tym zapytaniu należy szukać słowa ‘Dyrektor’ pojawiającego się w kolumnie
StanowiskoPrzedstawiciela. W SQL występują dwa szczególne symbole zastępcze
ANSI
–
89
(Access 03)
Opis
ANSI - 92
*
zastępuje ciąg znaków dowolnej długości (także zero)
%
?
zastępuję dowolny (jeden) znak
_
Wszystkie pozostałe znaki we wzorcu reprezentują same siebie, np.:
•
Adres LIKE „H*” oznacza, ze pierwszym znakiem musi być H, ale pozostałe znaki
mogą być dowolne
•
Adres LIKE „H????” oznacza, że w adresie musza być dokładnie cztery znaki, z
których pierwszy to H
•
Adres LIKE „*e” oznacza dowolny ciąg znaków o długości co najmniej jeden, w
którym ostatni znak jest równy e
•
Adres LIKE „*ds.*” oznacza dowolny ciąg znaków dowolnej długości
zawierający skrót ds.
•
Adres NOT LIKE „H*” oznacza, ze pierwszym znakiem nie może być H
Zamknąć okno kwerendy, zapisać jako Kwerenda8.
Przykład 9.
Warunek selekcji: wartości puste (IS NULL lub IS NOT NULL)
Podaj dostawców, dla których nie ma numeru FAX (pole: Faks); lista powinna zawierać
wszystkie kolumny z tabeli dostawcy
Zamknąć okno kwerendy, zapisać jako Kwerenda9.
PORZĄDKOWANIE WYNIKU – klauzula ORDER BY
Przykład 10.
Porządkowanie według jednej kolumny
Wygeneruj listę pensji wszystkich pracowników uporządkowana malejąco według pensji;
lista niech zawiera pola: Imię, Nazwisko, Stanowisko, Pensja
Zamienić wyrażenie DESC (ang. descending) na ASC (ang. ascending); jaka jest różnica w
tabeli wynikowej?
Zamknąć okno kwerendy, zapisać jako Kwerenda10.
3
Przykład 11.
Porządkowanie według wielu kolumn
Wygeneruj listę wybranych informacji dotyczących produktów uporządkowaną według
kategorii(pole IDkategorii).
W wyniku dostajemy listę posortowaną wg kategorii, otrzymaliśmy m.in. 11 produktów z
kategorii Napoje, ponieważ nie podaliśmy podrzędnego klucza sortowania, więc system
przedstawił wiersze zawierające poszczególne produkty w losowy sposób. Aby
uporządkować produkty wartości pola CenyJednostkowej
Wynik jest uporządkowany najpierw wg kategorii w rosnącym porządku alfabetycznym (ASC
jest wartością domyślną), a w ramach tej samej kategorii – wg malejącej wartości z pola Cena
jednostkowa.
ZASTOSOWANIE FUNKCJI AGREGUJĄCYCH
Wyróżnia się pięć funkcji agregujących:
COUNT – zwraca liczbę wartości występujących w określonej kolumnie
SUM – zwraca sumę wartości występujących w określonej kolumnie
AVG – zwraca średnią wartości występujących w określonej kolumnie
MIN – zwraca najmniejszą wartości występujących w określonej kolumnie
MAX – zwraca największą wartość występujących w określonej kolumnie
Wymienione funkcje są obliczane na podstawie wartości jednej kolumny tabeli i zwracają
w wyniku jedną wartość.
!!Funkcje …………………………………. można stosować zarówno do pól liczbowych,
jak i nieliczbowych.
!!Funkcje …………………………………. można stosować jedynie do pól liczbowych.
Przykład 12.
Zastosowanie COUNT(*)
Ile produktów ma cenę jednostkowa(CenaJednostkowa)poniżej 10 zł?
Przykład 13.
Zastosowanie MIN, MAX i AVG
Oblicz najmniejszą, największą i średnią pensję pracownika.
Zamknąć okno kwerendy, zapisać jako Kwerenda13
Przykład 14.
Zastosowanie COUNT i SUM
Oblicz ilu jest przedstawicieli handlowych w tabeli Pracownicy i jaka jest ich sumaryczna
pensja?
Zamknąć okno kwerendy, zapisać jako Kwerenda14
Przykład 15.
Zastosowanie GROUP BY tzw. Zapytania grupujące.
Oblicz dla każdej kategorii liczbę produktów.
Przykład 16.
Zastosowanie COUNT (DISTINCT) -extra
Z ilu krajów pochodzą dostawcy?
Przykład 17.
Zastosowanie COUNT (DISTINCT) c.d. -extra
Ile firm złożyło zamówienia (tbl: Zamówenia) w okresie (pole: DataZamówienia) od
1996-10-15 do 1997-10-1?