Podstawowe klauzule MYSQL

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;