SQL em Oracle > DML > SELECT > Operadores lógicos
Operadores lógicos tl_logo2.jpg

Os operadores AND e OR podem ser utilizados para construir expressões lógicas compostas. AND será True quando ambas condições forem True. OR será True quando uma das condições for True. Ex: listar os empregados de escritório que ganham entre 1000 e 2000 e o seu JOB é CLERK:

SELECT empno, ename, job, sal
FROM emp
WHERE sal BETWEEN 1000 AND 2000
AND job = 'CLERK';
    EMPNO ENAME      JOB             SAL
--------- ---------- --------- ---------
     7876 ADAMS      CLERK          1100
     7934 MILLER     CLERK          1300

2 rows selected.

Ex: listar todos os empregados que, ou ganham entre 1000 e 2000 ou são 'CLERK':

SELECT ename, job, sal
FROM emp
WHERE sal BETWEEN 1000 AND 2000
OR job = 'CLERK';
ENAME      JOB             SAL
---------- --------- ---------
SMITH      CLERK           800
ALLEN      SALESMAN       1600
WARD       SALESMAN       1250
MARTIN     SALESMAN       1250
TURNER     SALESMAN       1500
ADAMS      CLERK          1100
JAMES      CLERK           950
MILLER     CLERK          1300

8 rows selected.

Como o operador AND tem prioridade mais elevada que OR, a instrução de SQL seguinte devolve todos os chefes com salário acima de 1500 e todos os vendedores:

SELECT empno, ename, job, sal, deptno
FROM emp
WHERE sal > 1500
AND job = 'MANAGER'
OR job = 'SALESMAN';
    EMPNO ENAME      JOB             SAL    DEPTNO
--------- ---------- --------- --------- ---------
     7499 ALLEN      SALESMAN       1600        30
     7521 WARD       SALESMAN       1250        30
     7566 JONES      MANAGER        2975        20
     7654 MARTIN     SALESMAN       1250        30
     7698 BLAKE      MANAGER        2850        30
     7782 CLARK      MANAGER        2450        10
     7844 TURNER     SALESMAN       1500        30
     7798 CHARLES    MANAGER        5000        10

8 rows selected.

Se pretendermos os chefes e vendedores que ganham acima de 1500 necessitariamos de utilizar parentesis para alterar a prioridade:

SELECT empno, ename, job, sal, deptno
FROM emp
WHERE sal > 1500
AND (job ='MANAGER'
OR job = 'SALESMAN');
    EMPNO ENAME      JOB             SAL    DEPTNO
--------- ---------- --------- --------- ---------
     7499 ALLEN      SALESMAN       1600        30
     7566 JONES      MANAGER        2975        20
     7698 BLAKE      MANAGER        2850        30
     7782 CLARK      MANAGER        2450        10
     7798 5CHARLES   MANAGER        5000        10

5 rows selected.

bthome.gifTopo


Realizado por Turtle Learning ®. Última alteração em 2011-02-26