operatory w SQL, do konstruowania zapytań WHERE - Wersja do druku +- Forum hosting 4un.eu (http://www.4un.eu/forum) +-- Dział: Inne (/Forum-Inne) +--- Dział: Tworzenie stron (/Forum-Tworzenie-stron) +---- Dział: MySQL (/Forum-MySQL) +---- Wątek: operatory w SQL, do konstruowania zapytań WHERE (/Thread-operatory-w-SQL-do-konstruowania-zapyta%C5%84-WHERE) |
operatory w SQL, do konstruowania zapytań WHERE - deros - 04-21-2012 11:42 PM Jak wcześniej zapowiadałem opiszę dziś operatory bardzo przydatne przy korzystaniu z baz danych, kiedy zachodzi potrzeba dokładnego określenia rekordu, do którego się odwołujemy. Poniżej przedstawiam operatory odnoszące się do wartości pola: = równe, operator ten określa, że wartość pola powinna być taka sama, jak podana w poleceniu SQL, baza danych odrzuci inne wartości i wykona polecenie tylko w tym przypadku. <> różne, operator ten określa, że polecenie zostanie wykonane tylko przypadku, wartość pola będzie inna niż podana w poleceniu SQL. > wieksze, operacja wykona się gdy wartość pola będzie większa niż podana w poleceniu SQL < mniejsze, operacja wykona się gdy wartość pola będzie mniejsza niż podana w poleceniu SQL >= wieksze lub równe, operacja wykona się gdy wartość pola będzie większa lub równa podanej w poleceniu SQL <= mniejsze lub równe, operacja wykona się gdy wartość pola będzie mniejsza lub równa podanej w poleceniu SQL AND(można również &&) - operator pozwalający na określenie warunków dla dwóch pól, przy czym oba warunki muszą być spełnione OR (można również ||) - operator pozwala na określenie warunków dla dwóch pół, przy czym jeden z nich musi zostać spełniony. IN - za pomocą tego operatora sprawdzamy czy dana wartość należy do określonego zbioru. Elementy zbioru podaje się w nawiasach i oddziela przecinkami. BETWEEN - pomiędzy , jeżeli odwołujemy się do rekordów z określonego przedziału IS NULL - jest pusty czyli wartość pola nie została przypisana. LIKE - podobny do (LIKE'e%' pokaże np. rekordy zaczynające się na literę e) ANY - od jakiejś / jakiejkolwiek wartości ALL - od każdej wartości REGEXP zawierający ciąg znaków, do tego polecenia stosuje się następujące wyrażenia regularne: . - dowolny znak ^ - początek ciągu $ - koniec ciągu [...] - dowolny znak ze zbioru (...) [^...] - dowolny znak spoza zbioru (...) [:k:] - dowolny znak z danej klasy k a* - liczba wystąpień znaku a wynosi zero lub więcej a+ - co najmniej jedno wystąpienie znaki a a? - co najwyżej jedno wystąpienie znaku a a{5} – pięciokrotne wystąpienie znaku a a{1,5} – wystąpienie znaku a od jednego do pięciu razy a{5,} - wystąpienie znaku a co najmniej 5 razy a|b – wystąpienie znaku a lub b gdzie :(...) - definicja wyrażenia składowego W poprzednich wątkach przykładem była tabela chemia zawierająca 3 uczniów. Do posługiwałem się wtedy operatorami porównań czy jest większe oraz czy wartość pola jest równa. Wyobraźmy sobie, że nasza tabela chemia zawiera 15 uczniów (15 rekordów w tabeli). Nauczyciel obiecał, każdemu uczniowi, że jeśli dostaną ocenę 5 z aktywności i ocenę 4 z odpowiedzi, sprawdzian będą mieli zaliczony na 5. W takiej sytuacji posłużymy się operatorem AND a nasze zapytanie w języku SQL będzie miało postać: Cytat:UPDATE chemia SET sprawdzian=5 WHERE aktywnosc=5 AND odpowiedz=4Polecenie to uzupełni ocenę ze sprawdzianu, ale tylko tych uczniów, którzy mają 5 z aktywności i 4 z odpowiedzi, czyli tak jak założyliśmy. Postać polecenia z wykorzystaniem języka PHP będzie miało postać: Cytat:$ocenagratis = mysql_query("UPDATE chemia SET sprawdzian=5 WHERE aktywnosc=5 AND odpowiedz=4");Oczywiście wartości pól można pobrać ze zmiennych np. Cytat:$dodaj=5; $aktywny=5; $odpowiedzial=4; A co zrobić, gdy chcemy naszym uczniom, którzy dostali ze sprawdzianu ocenę conajmniej 3 i z aktywności 5 wystawić ocenę z odpowiedzi 4? Posłużymy się operatoremBETWEEN Cytat:UPDATE chemia SET odpowiedz=4 WHERE (sprawdzian BETWEEN 3 AND 5) AND (aktywnosc=5)A z wykorzystaniem języka PHP polecenie będzie miało następującą postać: Cytat:$ocenagratis = mysql_query("UPDATE chemia SET odpowiedz=4 WHERE (sprawdzian BETWEEN 3 AND 5) AND (aktywnosc=5)"); |