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