Bazy danych

Witryna zawiera podstawowe informacje odnośnie funkcji w bazach danych takich jak MySQL i Oracle oraz podstawowe informacje dotyczące zapytań.

czwartek, 26 kwietnia 2012

AND i OR

AND i OR - operatory używane do wyświetlania danych, w zależności od wartości logicznych operatorów.

AND
Wyświetla dane, jeżeli warunki zawarte w AND są poprawne (zwracają true).

OR
Wyświetla dane, jeżeli przynajmniej jeden z warunków zawarty w OR jest poprawny (zwraca true).


Postać instrukcji zawierającej AND i OR może wyglądać następująca:

SELECT kolumna FROM TABELA WHERE kolumna1='wartosc' AND kolumna2='wartosc';

SELECT kolumna FROM TABELA WHERE kolumna1='wartosc' OR kolumna2='wartosc';

Można łączyć warunki w jeden większy warunek:

SELECT kolumna FROM TABELA WHERE (kolumna1='wartosc' AND kolumna2='wartosc') OR kolumna3='wartosc';




Wartości logiczne AND:

PRAWDA AND PRAWDA = PRAWDA (TRUE)
PRAWDA AND FAŁSZ = FAŁSZ (FALSE)
FAŁSZ AND PRAWDA = FAŁSZ (FALSE)
FAŁSZ AND FAŁSZ = FAŁSZ (FALSE)


Wartości logiczne OR:

PRAWDA OR PRAWDA = PRAWDA (TRUE)
PRAWDA OR FAŁSZ = PRAWDA (TRUE)
FAŁSZ OR PRAWDA = PRAWDA (TRUE)
FAŁSZ OR FAŁSZ = FAŁSZ (FALSE)


Najlepiej zobrazują to praktyczne przykłady.


Przykład 1.
Wyświetlamy imię oraz stanowisko osoby, której zarobki wynoszą 5000 ORAZ (!!!) stanowiskiem, które obejmuje dana osoba jest PRESIDENT.

SELECT ENAME, JOB FROM EMP WHERE SAL='5000' AND JOB='PRESIDENT';

ENAME           JOB            
--------------- ---------------
KING            PRESIDENT      

1 rows selected

Zapytanie zwróciło rekord, gdyż istnieje osoba, której zarobki wynoszą 5000 (SAL='5000' - zwróciło TRUE) oraz stanowiskiem jest PRESIDENT (JOB='PRESIDENT' - zwróciło TRUE).



Spróbujmy teraz wykonać następujące polecenie:

SELECT ENAME, JOB FROM EMP WHERE SAL='4000' AND JOB='PRESIDENT';

ENAME           JOB            
--------------- ---------------

0 rows selected

Zapytanie nie zwróciło rekordów, gdyż warunki zawarte pomiędzy AND nie zwróciły wartości TRUE (brak jest osób, które zarabiają 4000 - zwróciło FALSE). Mimo tego, iż istnieje osoba na stanowisku PRESIDENT wartość logiczna TRUE AND FALSE zwraca FALSE.




Przykład 2.

Wyświetlamy imię oraz stanowisko osoby, której zarobki wynoszą 3000 LUB (!!!) stanowiskiem, które obejmuje dana osoba jest SALESMAN.

SELECT SAL, JOB FROM EMP WHERE SAL='3000' OR JOB='SALESMAN';

SAL                    JOB            
---------------------- ---------------
2400                   SALESMAN       
1875                   SALESMAN       
1875                   SALESMAN       
3000                   ANALYST        
3000                   ANALYST        

5 rows selected


Pierwsze trzy rekordy zostają wyświetlone dla warunku JOB='SALESMAN' (zauważmy, że zarobki są inne niż 3000), zaś ostatnie dwa rekordy zawierają inną nazwę stanowiska, jednakże zarobki wynoszą 3000.



Przykład 3.


Wyświetlamy zarobki oraz nazwę stanowiska na podstawie dwóch warunków:
- zarobki równe 5000 ORAZ nazwa stanowiska - PRESIDENT,
- zarobki mniejsze niż 1000.

SELECT SAL, JOB FROM EMP WHERE (SAL='5000' AND JOB='PRESIDENT') OR SAL < 1000;

SAL                    JOB            
---------------------- ---------------
800                    CLERK          
5000                   PRESIDENT      
950                    CLERK          

3 rows selected

Brak komentarzy:

Prześlij komentarz