Podstawowe klauzule MYSQL
Podstawowe klauzule które można użyć w technologii MYSQL to:
SELECT nazwy_kolumn
FROM nazwa_tabeli
WHERE warunek;
Pozwalają nam one na wybór tabeli z określonych kolumn i rekordów, które spełniają ustalony warunek. Warunek jest formułowany jako złożone wyrażenie porównania.
Przykład:
Tabela o nazwie ?Nazwiska? może zawierać na przykład kolumny:
– > LP
-> Imię
-> Nazwisko
-> Adres
-> Stanowisko
-> Pensja
Klauzule SELECT i FROM
SELECT- jest podstawową klauzulą w MYSQL– używana do wyszukiwania danych w tabeli. SELECT stosuje się razem z klauzulą FROM
SELECT *FROM nazwa-tabeli;
Wpisywana gwiazdka w poleceniu oznacza, że należy wyszukać wszystkie kolumny w tabeli. W klauzuli SELECT określa się nazwy kolumn, których wartości, z rekordów spełniających warunek zapytania (formułowany przy pomocy klauzuli WHERE), są dołączane do odpowiedzi. Klauzula FROM jest stosowana do określania tabeli, której dotyczy zapytanie.
Klauzula WHERE
W tej klauzuli można sformułować warunek, który odpowiada warunkowi wyboru (selekcji) w algebrze relacyjnej i który określa ograniczenia, jakie mają spełniać rekordy, aby zostać wybrane w dalszym zapytaniu. Gdy rekord spełnia te ograniczenia wówczas zostaje dołączony do tabeli wynikowej.
Zapytanie wygląda następująco:
SELECT *FROM nazwa-tabeli WHERE warunek;
Czyli inaczej mówiąc klauzula WHERE pozwala na wybranie tych wierszy, które spełniają określone warunki:
SELECT *FROM NAZWISKA WHERE STANOWISKO = ?STARZYSTA?;
Powyższe zapytanie umożliwi wyświetlenie z tabeli tych rekordów, w których w polu STANOWISKO jest wpisane ?STARZYSTA?
Formułowanie warunku
Po kluczowym słowie WHERE występuje wyrażenie warunkowe. Aby zapisać porównanie wartości w technologii MYSQL należy użyć operatorów:
- Równy =
- Nierówny <>
- Mniejszy <
- Większy >
- Mniejszy lub równy <=
- Większy lub równy >=
W wyrażeniu mogą występować stałe oraz nazwy kolumn tabel wymienionych w klauzuli FROM. Dla wartości numerycznych można budować stałe arytmetyczne wyrażenia wykorzystując operatory + – * / i nawiasów ( ) . Jeśli chodzi o stałe tekstowe w MYSQL to są one ujmowane w tak zwane ?pazurki? czyli:
?Przykład tekstu?.
W wyniku porównania powstaje logiczna wartość TRUE (prawda) lub FALSE (fałsz). Te wartości logiczne można łączyć w wyrażenia logiczne przy pomocy operatorów logicznych AND, OR i NOT. Gdy chodzi o porównywanie tekstów to dwa teksty są równe sobie jeśli występują w nich kolejno te same znaki. Przy wykonywaniu porównania takiego jak < lub >= , o wartości porównania decyduje, czy kolejne znaki z tekstu z lewej strony są alfabetycznie wcześniejsze, czy dalsze w stosunku do znaków z tekstu zamieszczonego po prawej stronie wyrażenia.
Przykład:
Piotrowski > Piotrowicz
Piotr < Piotrowicz
Jeśli chodzi o wartość NULL to jest ona wyjątkiem ponieważ nie podlega żadnym operacjom porównania, jest ona traktowana jako wartość nieznana. Język MYSQL umożliwia testowania pól w poszukiwaniu wartości NULL. Aby sprawdzić czy pole zawiera wartość NULL, należy użyć w klauzuli WHERE zwrotu IS NULL.
Rzutowanie i selekcja
Z wybranych rekordów można dokonywać eliminacji składowych, które nie są potrzebne. Tabelę uzyskaną jako wynik zapytania można rzutować na pewne kolumny, czyli ograniczyć w tabeli wynikowej liczbę kolumn.
Postać zapytania:
SELECT nazwy-kolumn FROM nazwa-tabel i WHERE warunek;
Przykład instrukcji która wybiera kolumny zawierające imię i nazwisko z tabeli NAZWISKA:
SELECT IMIE, NAZWISKO FROM NAZWISKA;
Wybór rekordów, dla których pole STANOWISKO spełnia warunek sformułowany w klauzuli WHERE:
SELECT IMIE, NAZWISKO, ADRES FROM NAZWISKA WHERE STANOWISKO = ?STAZYSTA?;
Postać polecenia:
SELECT Imię, Nazwisko, Stanowisko, Pensja FROM NAZWISKA WHERE (Stanowisko =’STAZYSTA’ OR Stanowisko = ‚SPECJALISTA’) AND Pensja >= 1500;
Z tabeli nazwiska zostaną wybrane wszystkie rekordy które zawierają kolumny: Imię, Nazwisko, Stanowisko i Pensja ? wszystkich ludzi pracujących na stanowiskach Stażysta i Specjalista, których pensja jest równa, bądź większa od 1500 zł
Klauzula IN
Gdy zapytanie jest bardzo złożone dochodzi do trudności z ustalaniem kolejności wykonywanych operacji, dlatego stosuje się nawiasy wykorzystywane do grupowania wyrażeń w klauzuli WHERE. Nawiasy kolejność ustalają w ten sposób że najpierw wykonywane są instrukcję połączone z operatorem OR, a następnie wykonywana jest operacja z operatorem AND. Technologia MYSQL posiada dodatkowe elementy, które znacznie upraszczają zapytania z wieloma operatorami. Klauzula IN może zastąpić dużo operatorów OR w instrukcjach sprawdzających, czy wybrana grupa wartości znajduje się w kolumnie. Operator IN może określać czy testowana wartość jest taka sama co jedna z wartości z listy.
Przykład zapytania pokazujący jak można uprościć poprzednie zapytanie:
SELECT Imie, Nazwisko, Pensja, Miasto
FROM NAZWISKA
WHERE Adres IN(‚Gdansk’, ‚Gdynia’) AND Pensja IS NOT NULL
ORDER BY Nazwisko DESC;
Klauzula NOT IN
Wartość logiczną wyrażenia które jest zawarte wewnątrz klauzuli IN, można zaprzeczyć operatorem NOT. Ta klauzula IN wybiera wszystkie wiersze, gdzie testowana wartość równa jest jednej z wartości umieszczonej na liście. Klauzula NOT IN wybiera tylko te wiersze, gdzie testowana wartość jest różna od każdej wartości z listy.
Zapytanie które wybiera wszystkich ludzi nie posiadających adresu zamieszkania w Gdańsku i w Gdyni, którzy mają ustalone pensje.
SELECT Imie, Nazwisko, Pensja, Miasto
FROM NAZWISKA
WHERE Miasto NOT IN(‚Gdansk’,’Gdynia’) AND Pensja IS NOT NULL
ORDER BY Nazwisko DESC;
Klauzula BETWEEN
BETWEEN i NOT BETWEEN są klauzulami wykorzystywanymi do sprawdzania, czy wartość należy lub nie należy do określonego przedziału wartości. BETWEEN jest pomocna do sprawdzania czy wartość należy do podanego zakresu z uwzględnieniem wartości granicznych. Można ją zastąpić przez dwa porównania połączone operatorem AND.
Przykładem takiego zapytania, wyszukującego wszystkich ludzi posiadających pensje w przedziale 1000 ? 4000, sortowanych rosnąco według pensji, może mieć postać.
SELECT Imie, Nazwisko, Pensja, Miasto FROM NAZWISKA WHERE Pensja BETWEEN 1100 AND 3000 ORDER BY Pensja;