Mysql ćwiczenie 2.

Transkrypt

Mysql ćwiczenie 2.
Ćwiczenia:
1. Pobierz wszystkie rekordy z twojej tabeli.
2. Pobierz imiona wszystkich osób.
3. Pobierz wszystkie nazwiska osób i wyświetl pod nazwą buraki.
4. Wyświetl pensje osoby o ID równym 12;
5. Wyświetl wszystkie pensje większe od 1000.
Instrukcja Select.
Teraz zajmiemy się najbardziej rozbudowanym i chyba najczęściej używanym poleceniem jest nim
SELECT, za pomocą którego możemy pobierać dane.
Składnia tego zapytania wygląda następująco:
Kod:
SELECT * FROM nazwa_tabeli;
Czyli słowo kluczowe SELECT, następnie kolumny z których mają być pobrane wartości i po
słowie FROM nazwa tabeli lub kilku tabel udzielonych przecinkami z której będą pobrane dane.
Gwiazdka oznacza, że dane będą pobrane ze wszystkich kolumn.
Operator DISTINCT
MySQL domyślnie zwraca wszystkie wartości niezależnie od tego czy są takie same czy nie, jeśli
nie chcemy powtarzających się wyników użyjmy wtedy operatora DISTINCT, którego składnia
wygląda następująco:
Kod:
SELECT DISTINCT username FROM users;
Aliasy
Za pomocą słowa AS możemy utworzyć alias dla nazw kolumn, tabel.
Kod:
SELECT id as ajdi FROM users;
I w ten sposób słowo id zostało zastąpione słowem ajdi, aliasów możemy używając także w
klauzuli FROM dla tabel.
W praktyce do ustalenia aliasu nie trzeba używać słowa AS, można to zrobić także odzielając
nazwe kolumny, tabeli spacją.
Uwaga: klauzula GROUP BY oraz ORDER BY jako argument nie może używać wyrazów
złożonych, wtedy koniecznie należy zastąpić je aliasami.
Klauzula WHERE
Służy do warunkowego pobierania danych.
Kod:
SELECT username FROM nazwa_tabeli WHERE user_id=10;
Pobierze tylko te wartości z pola username gdzie user_id jest równe 10
Klauzuli tej można także używając przy zapytaniach typu UPDATE, DELETE etc.
W wyrażeniu WHERE możemy używać różnych operatorów:
= - równy
<> - nierówny
< - mniejszy od
> - większy od
<= - mniejszy lub równy
>= - większy lub równy
!- negacja
AND - i
OR - lub
Możemy także użyć nawiasów w celu ustawienia kolejności wykonywania działań
matematycznych (i nie tylko).
Operator IS NULL
Jeśli miałeś już do czynienia z innymi językami programowania (chociażby PHP), to możliwe że to
co powiem teraz zdziwi cię, ale w MySQL pusta wartość (także 0) nie jest tym samym co NULL .
Jeśli chcesz pobrać tylko niewypełnione wartości powinieneś skorzystac z polecenia IS NULL.
Przykład:
Kod:
SELECT user_id FROM users WHERE email IS NULL;
Operator LIKE
Służy do przeszukiwania pól w poszukiwaniu danego wyrażenia. W operatorze LIKE możemy
korzystać z dwóch metaznaków:
% - zastępuje dowolny ciąg
_ - zastępuje dowolny znak
Przykład:
Kod:
SELECT user_id FROM nazwa_tabeli WHERE username LIKE '%ma%';
zapytanie to będzie pasowało do każdego username w którego wartości jest wyrażenie 'ma', czyli
będzie pasowało zarówno do marek jak i akam.
Operator ten znajduje często zastosowanie przy budowie wszelkiego rodzaju wyszukiwarek.
Operator IN
Za pomocą tego operatora możemy sprawdzić czy wartość należy do danego zbioru. Zamiast
zapisywac zapytanie w ten sposób:
Kod:
SELECT username FROM nazwa_tabeli WHERE user_id =1 OR user_id=5 OR
user_id=10;
Możemy zapisać to tak:
Kod:
SELECT `username` FROM nazwa_tabeli WHERE `user_id` IN (1,5,10);
Operator BETWEEN
Pobiera dane znajdujące się pomiędzy określonymi wartościami. Przykład takiego wyrażenia:
Kod:
SELECT username FROM users WHERE username BETWEEN 5 AND 10;
Operator REGEXP
Z tego powodu ucieszą się pewnie osoby mające już doświadczenie z innymi językami
programowania typu php, c++, perl etc ; ) MySQL umożliwia także korzystanie z wyrażeń
regularnych za pomocą polecenia REGEXP, przykładowa składnia:
Kod:
SELECT user_id FROM users WHERE username REGEXP '^[a-z]$';
Dzięki takiemu zapytaniu pobrane zostaną wszystkie pola user_id gdzie username zawiera tylko
małe litery.
Nie będe się tutaj rozpisywał na temat wyrażen regularnych, w internecie napisano już dość dużo
na ten temat.
Operator NOT
Do wszystkich powyższych operatorów możemy także użyć operatora negacji, przykład:
Kod:
SELECT id FROM nazwa_tabeli WHERE email IS NOT NULL;
Klauzula ORDER BY
Za pomocą tej klauzuli możemy określić kolumny według której będą posortowane wyniki.
Domyślnie wyniki sortowane są od najmniejszego do największego (ASC), możemy to zmienic
dodająć po nazwie pola słowo DESC.Należy także wspomnieć, że można podać kilka kolumn
według których dane będą sortowane, w przypadku gdy pierwsze wyrażenie będzie takie samo dla
kilku pól to pod uwage będzie brane drugie wyrażenie itd.
Do losowego uporządkowania wyników możemy użyc funkcji RAND().
Przykłady:
Kod:
SELECT username FROM users ORDER BY username,user_id DESC;
Kod:
SELECT username FROM users ORDER BY RAND();
Klauzula GROUP BY
Dzięki klauzuli GROUP BY możemy pogrupować wiersze według danego pola, pewnie niewiele ci
to mówi więc najlepiej będzie to przedstawić na przykładzie:
Kod:
SELECT user_id, username,email FROM users GROUP BY user_id;
Takie zapytanie zwróci wyniki w postaci kolejnych wierszych pogrupowanych według każdego
user_id, klauzula ta nie zwraca powtarzających się wierszy.
Klauzula HAVING
Określa warunki według których będą pogrupowane wyniki, w przypadku gdy nie będzie użyta
razem z klauzulą GROUP BY będzie tym samym co WHERE.
Różnicą pomiędzy zapytaniem z WHERE jest taka, że HAVING odrzuci wszystkie nie potrzebne
wiersze dopiero po zgrupowaniu, a WHERE zrobi to przed zgrupowaniem.
Funkcje agregujące
Za pomocą tych funkcji możemy uzyskać różne informacje statystyczne.
Dostępnie funkcje agregujące to:
COUNT(kolumna) - zlicza liczbe pól występujących w kolumnie
SUM(kolumna) - sumuje wszystkie wartości w danej kolumnie
MAX(kolumna) - zwraca największą wartość w danej kolumie
MIN(kolumna) - zwraca najmniejszą wartość w danej kolumnie
AVG(kolumna) - zwraca średnią wartość w danej kolumnie
W zapytaniach korzystajacych z tych funkcji możemy także używać klauzuli WHERE w celu
określenia które dane wyliczyć.
Przykład:
Kod:
SELECT count(username) FROM nazwa_tabeli WHERE user_id > 5;
W przypadku gdybyśmy chcieli zrobić tak:
Kod:
SELECT username, COUNT(user_id) FROM users;
Mysql wyrzuci błąd bo i nie będzie wiedziało jakie wiersze zwrócić, wtedy należy użyć klauzuli
grupującej.
Klauzula LIMIT
Bardzo przydatna klauzula za pomocą której możemy określić ilość rekordów które chcemy
pobrać.
Przykład:
Kod:
SELECT * FROM users LIMIT 3;
w ten sposób pobierzemy trzy rekordy, istnieje też drugi sposób zapisu który często jest
wykorzystywany m.in. przy stronnicowaniu danych:
Kod:
SELECT * FROM users LIMIT 3,5;
Pobierze 5 rekordów licząc od trzeciego wiersza.
Uwaga: LIMIT nie jest częścią standardu ANSI SQL, więc inne bazy danych mogą uzywać do tego
innego polecenia albo w ogóle nie mieć wbudowanej takiej klauzuli.
brana wartość z pola username tylko wtedy gdy id będzie równe 2

Podobne dokumenty