Odpowiedz 
 
Ocena wątku:
  • 1 Głosów - 5 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
operatory w SQL, do konstruowania zapytań WHERE
04-21-2012, 11:42 PM
Post: #1
operatory w SQL, do konstruowania zapytań WHERE
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=4
Polecenie 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;
$ocenagratis = mysql_query("UPDATE chemia SET sprawdzian='$dodaj' WHERE aktywnosc='$aktywny' AND odpowiedz='$odpowiedzial'");

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)");
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości