Oracle SQL - What is the output: NOT AND and OR

Question

Are the following two sql would output the same result?

select * from emp where NOT (ename = 'BLAKE' AND init = 'R')
select * from emp where      ename <> 'BLAKE' OR init <> 'R'


Click to view the answer

Yes

Note

Demo

SQL>
SQL>-- from  w  ww . j  a va2s  . co m
SQL> drop table emp;

Table dropped.

SQL> create table emp(
  2  empno      NUMBER(4)    primary key,
  3  ename      VARCHAR2(8)  not null   ,
  4  init       VARCHAR2(5)  not null   ,
  5  job        VARCHAR2(8)             ,
  6  mgr        NUMBER(4)               ,
  7  bdate      DATE         not null   ,
  8  msal       NUMBER(6,2)  not null   ,
  9  comm       NUMBER(6,2)             ,
 10  deptno     NUMBER(2)    default 10) ;

Table created.

SQL>
SQL> insert into emp values(7001,'SMITH','N',  'TRAINER', 7902,date '1975-12-17',  1800 , NULL, 20);
SQL> insert into emp values(7002,'ALLEN','JAM','SALESREP',7006,date '1971-05-20',  1600, 300,   30);
SQL> insert into emp values(7003,'WARD', 'TF' ,'SALESREP',7006,date '1972-03-02',  1250, 500,   10);
SQL> insert into emp values(7004,'JACK', 'JM', 'MANAGER', 7009,date '1977-04-02',  2975, NULL,  20);
SQL> insert into emp values(7005,'BROWN','P',  'SALESREP',7006,date '1976-09-28',  1250, 1400,  30);
SQL> insert into emp values(7006,'BLAKE','R',  'MANAGER', 7009,date '1973-11-01',  2850, NULL,  10);
SQL> insert into emp values(7007,'CLARK','AB', 'MANAGER', 7009,date '1975-06-09',  2450, NULL,  10);
SQL> insert into emp values(7008,'SCOTT','DEF','TRAINER', 7004,date '1979-11-26',  3000, NULL,  20);
SQL> insert into emp values(7009,'KING', 'CC', 'DIRECTOR',NULL,date '1972-10-17',  5000, NULL,  10);
SQL> insert into emp values(7010,'BREAD','JJ', 'SALESREP',7006,date '1978-09-28',  1500, 0,     30);
SQL> insert into emp values(7011,'ADAMS','AA', 'TRAINER', 7008,date '1976-12-30',  1100, NULL,  20);
SQL> insert into emp values(7012,'JONES','R',  'ADMIN',   7006,date '1979-10-03',  8000, NULL,  30);
SQL> insert into emp values(7902,'FORD', 'MG', 'TRAINER', 7004,date '1979-02-13',  3000, NULL,  20);
SQL> insert into emp values(7934,'MARY', 'ABC','ADMIN',   7007,date '1972-01-23',  1300, NULL,  10);
SQL>
SQL>
SQL> select * from emp where NOT (ename = 'BLAKE' AND init = 'R');

     EMPNO ENAME    INIT  JOB             MGR BDATE           MSAL       COMM
---------- -------- ----- -------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7001 SMITH    N     TRAINER        7902 17-DEC-75       1800
        20

      7002 ALLEN    JAM   SALESREP       7006 20-MAY-71       1600        300
        30

      7003 WARD     TF    SALESREP       7006 02-MAR-72       1250        500
        10

      7004 JACK     JM    MANAGER        7009 02-APR-77       2975
        20

      7005 BROWN    P     SALESREP       7006 28-SEP-76       1250       1400
        30

      7007 CLARK    AB    MANAGER        7009 09-JUN-75       2450
        10
      7008 SCOTT    DEF   TRAINER        7004 26-NOV-79       3000
        20

      7009 KING     CC    DIRECTOR            17-OCT-72       5000
        10

      7010 BREAD    JJ    SALESREP       7006 28-SEP-78       1500          0
        30
      7011 ADAMS    AA    TRAINER        7008 30-DEC-76       1100
        20

      7012 JONES    R     ADMIN          7006 03-OCT-79       8000
        30

      7902 FORD     MG    TRAINER        7004 13-FEB-79       3000
        20
      7934 MARY     ABC   ADMIN          7007 23-JAN-72       1300
        10



Elapsed: 00:00:00.09
SQL> select * from emp where      ename <> 'BLAKE' OR init <> 'R';

     EMPNO ENAME    INIT  JOB             MGR BDATE           MSAL       COMM
---------- -------- ----- -------- ---------- --------- ---------- ----------
    DEPTNO
----------
      7001 SMITH    N     TRAINER        7902 17-DEC-75       1800
        20

      7002 ALLEN    JAM   SALESREP       7006 20-MAY-71       1600        300
        30

      7003 WARD     TF    SALESREP       7006 02-MAR-72       1250        500
        10
      7004 JACK     JM    MANAGER        7009 02-APR-77       2975
        20

      7005 BROWN    P     SALESREP       7006 28-SEP-76       1250       1400
        30

      7007 CLARK    AB    MANAGER        7009 09-JUN-75       2450
        10

      7008 SCOTT    DEF   TRAINER        7004 26-NOV-79       3000
        20

      7009 KING     CC    DIRECTOR            17-OCT-72       5000
        10

      7010 BREAD    JJ    SALESREP       7006 28-SEP-78       1500          0
        30
      7011 ADAMS    AA    TRAINER        7008 30-DEC-76       1100
        20

      7012 JONES    R     ADMIN          7006 03-OCT-79       8000
        30

      7902 FORD     MG    TRAINER        7004 13-FEB-79       3000
        20
      7934 MARY     ABC   ADMIN          7007 23-JAN-72       1300
        10


13 rows selected.

Elapsed: 00:00:00.09
SQL>

Related Quiz