0% found this document useful (0 votes)
14 views

PLSQL CLASS3

Uploaded by

krishna
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

PLSQL CLASS3

Uploaded by

krishna
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 33

ORACLE

GROUP FUNCTIONS:
AVG , MAX , MIN , SUM , COUNT , STDDEV( STANDERD DEVIATION ) , VARIANCE .

COLUMN HEADING DEFAULTS IN SQL*


PLUS:
DEFAULT JUSTIFICATION:

----LEFT : DATE AND CHARACTER DATA

----RIGHT : NUMERIC DATA.

DEFAULT DISPLAY :UPPERCASE

ARITHMETIC EXPRESSIONS:
+ ADD
-- SUBTRACT
* MULTIPLY
/ DIVIDE

SELECT ENAME,SAL,SAL+300,SAL-300,SAL*300,SAL/300 FROM EMP;

SQL> SELECT SAL,SAL+300,SAL-300,SAL*300,SAL/300 FROM EMP;

SAL SAL+300 SAL-300 SAL*300 SAL/300


---------- ---------- ---------- ---------- ----------
800 1100 500 240000 2.66666667
1600 1900 1300 480000 5.33333333
1250 1550 950 375000 4.16666667
2975 3275 2675 892500 9.91666667
1250 1550 950 375000 4.16666667
2850 3150 2550 855000 9.5
2450 2750 2150 735000 8.16666667
3000 3300 2700 900000 10
5000 5300 4700 1500000 16.6666667
1500 1800 1200 450000 5
1100 1400 800 330000 3.66666667
950 1250 650 285000 3.16666667
3000 3300 2700 900000 10
1300 1600 1000 390000 4.33333333

14 rows selected.

1 STRUCTURED QUERY LANGUAGE


ORACLE
OPERATOR PRECEDENCE:

* / + -

MULTIPLICATION AND DIVISION TAKE PRIORITY OVER ADDITION AND SUBTRACTION.

OPERATORS OF THE SAME PRIORITY ARE EVALUATED FROM LEFT TO RIGHT.

PARENTHESESES ARE USED TO FORCE PRIORITIZED EVALUTION.

NULL FUNCTION:
A NULL IS A VALUE THIS IS UNAVAILABLE,UNASSIGNED,UNKNOWN OR INAPPLICABLE.

A NULL IS NOT THE SAME AS ZERO OR A BLANKSPACE.

ARITHMETIC EXPRESSIONS CONTAINING A NULL VALUE EVALUATE TO NULL;

SQL> SELECT * FROM EMP WHERE MGR IS NULL;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 17-NOV-81 5000 10

1* SELECT * FROM EMP WHERE MGR IS NOT NULL


SQL> /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10

13 rows selected.

ANNUAL SALARY:
2 STRUCTURED QUERY LANGUAGE
ORACLE
HERE 12 IS FIRST MULTIPLIED BY 100 THEN IT IS ADDED TO SAL THAT IS WRONG.

SQL> SELECT SAL,SAL+100 *12 FROM EMP;

SAL SAL+100*12
---------- ----------
800 2000
1600 2800
1250 2450
2975 4175
1250 2450
2850 4050
2450 3650
3000 4200
5000 6200
1500 2700
1100 2300
950 2150
3000 4200
1300 2500

14 rows selected.

HERE BY PUTTING PARANTHESIS THAT OUT IS CORRECT.

1* SELECT SAL,(SAL+100) *12 FROM EMP

SQL> /

SAL (SAL+100)*12
---------- ------------
800 10800
1600 20400
1250 16200
2975 36900
1250 16200
2850 35400
2450 30600
3000 37200
5000 61200
1500 19200
1100 14400
950 12600
3000 37200
1300 16800

14 rows selected.

SQL> SELECT ENAME,SAL,SAL+COMM FROM EMP;

ENAME SAL SAL+COMM


---------- ---------- ----------
SMITH 800
ALLEN 1600 1900
WARD 1250 1750
3 STRUCTURED QUERY LANGUAGE
ORACLE
JONES 2975
MARTIN 1250 2650
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 1500 1500
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300

14 rows selected.

HERE THE SAL + COMM IS NULL FOR THE EMPLOYEES WHO HAS COMM IS NULL.

THAT MEANS WHEN EVER WE DO ANY ADDITION WITH NULL WHOLE RESULT IS NULL.

TO AVOID THAT WE USE NULL.

SQL> SELECT ENAME,SAL,COMM,SAL+COMM FROM EMP;

ENAME SAL COMM SAL+COMM


---------- ---------- ---------- ----------
SMITH 800
ALLEN 1600 300 1900
WARD 1250 500 1750
JONES 2975
MARTIN 1250 1400 2650
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 1500 0 1500
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300

14 rows selected.

HERE WHENEVER WE USED NVL IT SUBSTITUED ‘0’ IN PLACE OF NULL VALUES. THEN ADDTION
WITH 0 RESULTS CORRECT VALUE.

SQL> SELECT ENAME,SAL,NVL(COMM,0),SAL+NVL(COMM,0) FROM EMP;

ENAME SAL NVL(COMM,0) SAL+NVL(COMM,0)


---------- ---------- ----------- ---------------
SMITH 800 0 800

4 STRUCTURED QUERY LANGUAGE


ORACLE
ALLEN 1600 300 1900
WARD 1250 500 1750
JONES 2975 0 2975
MARTIN 1250 1400 2650
BLAKE 2850 0 2850
CLARK 2450 0 2450
SCOTT 3000 0 3000
KING 5000 0 5000
TURNER 1500 0 1500
ADAMS 1100 0 1100
JAMES 950 0 950
FORD 3000 0 3000
MILLER 1300 0 1300

14 rows selected.

HERE BECAUSE OF ORDER OF PRECEDENCE THE CONCEPT OF ANNUAL SALARY WAS CAME
WRONG. HERE FIRST 12 IS MULTIPLIED BY COMM THAT IS WHY FOR FIRST RWO THE ANNUAL
SALARY IS 800 ONLY.

1* SELECT ENAME,SAL,NVL(COMM,0),SAL+NVL(COMM,0)*12 FROM EMP


SQL> /

ENAME SAL NVL(COMM,0) SAL+NVL(COMM,0)*12


---------- ---------- ----------- ------------------
SMITH 800 0 800
ALLEN 1600 300 5200
WARD 1250 500 7250
JONES 2975 0 2975
MARTIN 1250 1400 18050
BLAKE 2850 0 2850
CLARK 2450 0 2450
SCOTT 3000 0 3000
KING 5000 0 5000
TURNER 1500 0 1500
ADAMS 1100 0 1100
JAMES 950 0 950
FORD 3000 0 3000
MILLER 1300 0 1300

14 rows selected.

WE HAVE TO KEEP PARANTHESIS FOR CORRECT ANNUAL SALARY.

1* SELECT ENAME,SAL,NVL(COMM,0),(SAL+NVL(COMM,0))*12 FROM EMP


SQL> /

ENAME SAL NVL(COMM,0) (SAL+NVL(COMM,0))*12


---------- ---------- ----------- --------------------
SMITH 800 0 9600
ALLEN 1600 300 22800
WARD 1250 500 21000
JONES 2975 0 35700
MARTIN 1250 1400 31800
BLAKE 2850 0 34200
CLARK 2450 0 29400

5 STRUCTURED QUERY LANGUAGE


ORACLE
SCOTT 3000 0 36000
KING 5000 0 60000
TURNER 1500 0 18000
ADAMS 1100 0 13200
JAMES 950 0 11400
FORD 3000 0 36000
MILLER 1300 0 15600

14 rows selected.

IN THE ABOVE OUTPUT THE HEADING FOR ANNUAL SALARY COLUMN IS NOT MEANING FULL.TO
ACHIVE COEERCT OUTPUT WE GO FOR COLUMN ALIASING.

COLUMN ALIASES:
SELECT ENAME AS NAME ,SAL SALARY FROM EMP;

SELECT ENAME “NAME”, SAL*12 “ANNUAL SALARY” FROM EMP;

SELECT ENAME NAME FROM EMP;

1* SELECT ENAME,SAL,NVL(COMM,0),(SAL+NVL(COMM,0))*12 "ANNUAL SALARY" FROM EMP


SQL> /

ENAME SAL NVL(COMM,0) ANNUAL SALARY


---------- ---------- ----------- -------------
SMITH 800 0 9600
ALLEN 1600 300 22800
WARD 1250 500 21000
JONES 2975 0 35700
MARTIN 1250 1400 31800
BLAKE 2850 0 34200
CLARK 2450 0 29400
SCOTT 3000 0 36000
KING 5000 0 60000
TURNER 1500 0 18000
ADAMS 1100 0 13200
JAMES 950 0 11400
FORD 3000 0 36000
MILLER 1300 0 15600

14 rows selected.

SQL> SELECT ENAME,SAL AS SALARY FROM EMP;

ENAME SALARY
---------- ----------
SMITH 800
ALLEN 1600
WARD 1250
JONES 2975
MARTIN 1250
BLAKE 2850
CLARK 2450
SCOTT 3000
6 STRUCTURED QUERY LANGUAGE
ORACLE
KING 5000
TURNER 1500
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300

14 rows selected.

SQL> SELECT ENAME,SAL SALARY FROM EMP;

ENAME SALARY
---------- ----------
SMITH 800
ALLEN 1600
WARD 1250
JONES 2975
MARTIN 1250
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 1500
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300

14 rows selected.

HERE WE HAD GIVEN GAP FOR COLUMN ALIASING. THAT IS WRONG. FOR CORRECT OUTPUT
WE HAVE TO GIVE “ “ FOR COLUMN ALIASING.

SQL> SELECT ENAME,SAL SALARY OF EMPLOYEE FROM EMP;

SELECT ENAME,SAL SALARY OF EMPLOYEE FROM EMP


*
ERROR at line 1:
ORA-00923: FROM keyword not found where expected

1* SELECT ENAME,SAL "SALARY OF EMPLOYEE" FROM EMP


SQL> /

ENAME SALARY OF EMPLOYEE


---------- ------------------
SMITH 800
ALLEN 1600
WARD 1250
JONES 2975
MARTIN 1250
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 1500
ADAMS 1100

7 STRUCTURED QUERY LANGUAGE


ORACLE
JAMES 950
FORD 3000
MILLER 1300

14 rows selected.

CONCATINATION OPERATOR:
SELECT ENAME||JOB AS “EMPLOYEES” FROM EMP;

SELECT ENAME || ‘IS A ’ || JOB AS “EMPLOYEE DETAILS” FROM EMP;

SQL> SELECT ENAME,JOB FROM EMP;

ENAME JOB
---------- ---------
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
JONES MANAGER
MARTIN SALESMAN
BLAKE MANAGER
CLARK MANAGER
SCOTT ANALYST
KING PRESIDENT
TURNER SALESMAN
ADAMS CLERK
JAMES CLERK
FORD ANALYST
MILLER CLERK

14 rows selected.

SQL> SELECT ENAME||JOB FROM EMP;

ENAME||JOB
-------------------
SMITHCLERK
ALLENSALESMAN
WARDSALESMAN
JONESMANAGER
MARTINSALESMAN
BLAKEMANAGER
CLARKMANAGER
SCOTTANALYST
KINGPRESIDENT
TURNERSALESMAN
ADAMSCLERK
JAMESCLERK
FORDANALYST
MILLERCLERK

14 rows selected.

8 STRUCTURED QUERY LANGUAGE


ORACLE
1* SELECT ENAME||' HAS A '||JOB FROM EMP
SQL> /

ENAME||'HASA'||JOB
--------------------------
SMITH HAS A CLERK
ALLEN HAS A SALESMAN
WARD HAS A SALESMAN
JONES HAS A MANAGER
MARTIN HAS A SALESMAN
BLAKE HAS A MANAGER
CLARK HAS A MANAGER
SCOTT HAS A ANALYST
KING HAS A PRESIDENT
TURNER HAS A SALESMAN
ADAMS HAS A CLERK
JAMES HAS A CLERK
FORD HAS A ANALYST
MILLER HAS A CLERK

14 rows selected.

1* SELECT ENAME||' JOB NAME IS '||JOB FROM EMP


SQL> /

ENAME||'JOBNAMEIS'||JOB
--------------------------------
SMITH JOB NAME IS CLERK
ALLEN JOB NAME IS SALESMAN
WARD JOB NAME IS SALESMAN
JONES JOB NAME IS MANAGER
MARTIN JOB NAME IS SALESMAN
BLAKE JOB NAME IS MANAGER
CLARK JOB NAME IS MANAGER
SCOTT JOB NAME IS ANALYST
KING JOB NAME IS PRESIDENT
TURNER JOB NAME IS SALESMAN
ADAMS JOB NAME IS CLERK
JAMES JOB NAME IS CLERK
FORD JOB NAME IS ANALYST
MILLER JOB NAME IS CLERK

14 rows selected.

COMPARISON OPERATORS:
= EQUAL TO

> GREATER THAN

>= GREATER THAN OR EQUAL TO

< LESS THAN

9 STRUCTURED QUERY LANGUAGE


ORACLE
<= LESS THAN OR EQUAL TO

<> NOT EQUAL TO

SELECT * FROM EMP WHERE SAL<=2000;

SELECT * FROM EMP WHERE SAL>=2000;

SELECT * FROM EMP WHERE SAL <> 2000;

SELECT ENAME,SAL FROM EMP WHERE SAL BETWEEN 1000 AND 1500;

SQL> SELECT * FROM EMP WHERE SAL < 1000;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7900 JAMES CLERK 7698 03-DEC-81 950 30

1* SELECT * FROM EMP WHERE SAL <= 1000


2 /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7900 JAMES CLERK 7698 03-DEC-81 950 30

1* SELECT * FROM EMP WHERE SAL > 1000


SQL> /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10

12 rows selected.

1* SELECT * FROM EMP WHERE SAL >= 1000


SQL> /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

10 STRUCTURED QUERY LANGUAGE


ORACLE
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10

12 rows selected.

1* SELECT * FROM EMP WHERE SAL <> 1000


SQL> /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10

14 rows selected.

1* SELECT * FROM EMP WHERE SAL =950


SQL> /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-DEC-81 950 30

SQL> SELECT * FROM EMP WHERE SAL BETWEEN 1000 AND 2000;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10

6 rows selected.

11 STRUCTURED QUERY LANGUAGE


ORACLE
HERE BOTH 1000 AND 2000 INCLUSIVE IN THE OUTPUT IF THEY EXIST IN THE OUPUT.

IN OPERATOR:
IF YOU WANT TO SELECT INFO FOR MORE THAN ONE EMPLOYEE YOU CANNOT
USE THE FOLLOWING QUERY:

SELECT * FROM EMP WHERE EMPNO=7369,7788,7566;

THE ABOVE QUERY WON’T WORK.


TO SLOVE THE ABOVE PROBLEM WE HAVE TO WRITE QUERY LIKE BELOW:

SELECT EMPNO,ENAME,SAL,MGR FROM EMP WHERE MGR IN (7902,7566,7788);

THE ABOVE QUERY WILL GIVE THE INFO OF THREE EMPLOYEES.

SQL> SELECT * FROM EMP WHERE EMPNO=7788;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3000 20

1* SELECT * FROM EMP WHERE EMPNO=7788,7369,7566


2 /
SELECT * FROM EMP WHERE EMPNO=7788,7369,7566
*
ERROR at line 1:
ORA-00933: SQL command not properly ended

1* SELECT * FROM EMP WHERE EMPNO IN (7788,7369,7566)


2 /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7566 JONES MANAGER 7839 02-APR-81 2975 20
7369 SMITH CLERK 7902 17-DEC-80 800 20
7788 SCOTT ANALYST 7566 19-APR-87 3000 20

NOT IN OPERATOR:
IF YOU DON’T WANT TO SEE THOSE EMPLOYEES INFO,YOU KEEP THEM IN NOT IN CLAUSE.

SELECT EMPNO,ENAME,SAL,MGR FROM EMP WHERE MGR NOT IN (7902,7566,7788);

12 STRUCTURED QUERY LANGUAGE


ORACLE
1* SELECT * FROM EMP WHERE EMPNO NOT IN (7788,7369,7566)
SQL> /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10

11 rows selected.

AND OPERATOR:
REQUIRES BOTH CONDITIONS TO BE TRUE:

IN ADD OPERATOR IF BOTH CONDITIONS ARE TRUE THEN ONLY RESULT COMES.

HERE WE GET INFO ABOUT CLERKS AND WHOSE SALARY >=THAN 1100;

SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE SAL>1100 AND JOB=’CLERK’;

SQL> SELECT * FROM EMP


2 WHERE SAL > 1000 AND JOB = 'CLERK';

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10

AND TRUE FALSE


TRUE TRUE FALSE
FALSE FALSE FALSE

OR OPERATOR:
REQUIRES EITHER CONDITION TO BE TRUE.

IN OR OPERATOR IF ONE CONDITION IS TRUE THEN ALSO RESULT COMES.

HERE WE GET INFO ABOUT CLERKS AND ALL THE INFO ABOUT EMPLOYEES WHOSE SALARY
>=1100.

SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE SAL>=1100 OR JOB=’CLERK’;

1 SELECT * FROM EMP


13 STRUCTURED QUERY LANGUAGE
ORACLE
2* WHERE SAL > 1000 OR JOB = 'CLERK'
3 /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO


---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10

14 rows selected.
OR TRUE FALSE
TRUE TRUE TRUE
FALSE TRUE FALSE

SORTING BY COLUMN ALIAS:


TILL NOW WE HAVE SORTED OUTPUT ASC OR DESC ACCORDING TO COLUMN THAT ARE
PRESENT IN THE TABLE.

NOW WE CAN SORT THE OUTPUT IN EITHER WAY ACCORDING TO COLUMN ALIASES.

SELECT EMPNO,ENAME,SAL*12 ANNSAL FROM EMP ORDER BY ANNSAL;

SQL> SELECT EMPNO,ENAME,JOB,SAL,(SAL+NVL(COMM,0)*12) ANSAL FROM EMP;

EMPNO ENAME JOB SAL ANSAL


---------- ---------- --------- ---------- ----------
7369 SMITH CLERK 800 800
7499 ALLEN SALESMAN 1600 5200
7521 WARD SALESMAN 1250 7250
7566 JONES MANAGER 2975 2975
7654 MARTIN SALESMAN 1250 18050
7698 BLAKE MANAGER 2850 2850
7782 CLARK MANAGER 2450 2450
7788 SCOTT ANALYST 3000 3000
7839 KING PRESIDENT 5000 5000
7844 TURNER SALESMAN 1500 1500
7876 ADAMS CLERK 1100 1100
14 STRUCTURED QUERY LANGUAGE
ORACLE
7900 JAMES CLERK 950 950
7902 FORD ANALYST 3000 3000
7934 MILLER CLERK 1300 1300

14 rows selected.

1* SELECT EMPNO,ENAME,JOB,SAL,(SAL+NVL(COMM,0)*12) ANSAL FROM EMP ORDER BY ANSAL


SQL> /

EMPNO ENAME JOB SAL ANSAL


---------- ---------- --------- ---------- ----------
7369 SMITH CLERK 800 800
7900 JAMES CLERK 950 950
7876 ADAMS CLERK 1100 1100
7934 MILLER CLERK 1300 1300
7844 TURNER SALESMAN 1500 1500
7782 CLARK MANAGER 2450 2450
7698 BLAKE MANAGER 2850 2850
7566 JONES MANAGER 2975 2975
7788 SCOTT ANALYST 3000 3000
7902 FORD ANALYST 3000 3000
7839 KING PRESIDENT 5000 5000
7499 ALLEN SALESMAN 1600 5200
7521 WARD SALESMAN 1250 7250
7654 MARTIN SALESMAN 1250 18050

14 rows selected.

1* SELECT EMPNO,ENAME,JOB,SAL,(SAL+NVL(COMM,0)*12) ANSAL FROM EMP ORDER BY ANSAL


DESC
SQL> /

EMPNO ENAME JOB SAL ANSAL


---------- ---------- --------- ---------- ----------
7654 MARTIN SALESMAN 1250 18050
7521 WARD SALESMAN 1250 7250
7499 ALLEN SALESMAN 1600 5200
7839 KING PRESIDENT 5000 5000
7788 SCOTT ANALYST 3000 3000
7902 FORD ANALYST 3000 3000
7566 JONES MANAGER 2975 2975
7698 BLAKE MANAGER 2850 2850
7782 CLARK MANAGER 2450 2450
7844 TURNER SALESMAN 1500 1500
7934 MILLER CLERK 1300 1300
7876 ADAMS CLERK 1100 1100
7900 JAMES CLERK 950 950
7369 SMITH CLERK 800 800

14 rows selected.

WHEN EVER IN INTERVIEW WHEN THEY ASK ABOUT JOINS U HAVE TO


EXPLAIN ANSWER WITH EMP,DEPT,SALGRADE TABLES.

15 STRUCTURED QUERY LANGUAGE


ORACLE
IT IS VERY DIFFICULT IF YOU TRY TO ANSWER WITH OTHER TABLES.

JOINS:
USE A JOIN TO QUERY DATA FROM MORE THAN ONE TABLE.WRITE THE JOIN CONDITION IN THE
WHERE CLAUSE.PREFIX THE COLUMN NAME WITH THE TABLE NAME WHEN THE SAME COLUMN
NAME APPEARS IN MORE THAN ONE TABLE.

THERE ARE FIVE TYPES OF JOINS EXISTS IN ORACLE.

 CARTESIAN PRODUCT

 EQUI-JOIN

 NON-EQUI JOIN

 OUTER-JOIN.

 SELF-JOIN.

CARTESIAN PRODUCT:
CARTESIAN PRODUCT IS FORMED WHEN A JOIN CONDITION IS OMITTED.TO
AVOID A CARTESIAN PRODUCT, ALWAYS INCLUDE A VALID CONDITION IN A
WHERE CLAUSE.

HERE FIRST TABLE EMP ROWS COMPLETELY MULTIPLIED BY FIRST ROW IN SECOND TABLE
DEPT AND SO ON

SQL> SELECT EMPNO,ENAME,EMP.DEPTNO,DNAME,LOC FROM EMP,DEPT;

EMPNO ENAME DEPTNO DNAME LOC


---------- ---------- ---------- -------------- -------------
7369 SMITH 20 ACCOUNTING NEW YORK
7499 ALLEN 30 ACCOUNTING NEW YORK
7521 WARD 30 ACCOUNTING NEW YORK
7566 JONES 20 ACCOUNTING NEW YORK
7654 MARTIN 30 ACCOUNTING NEW YORK
7698 BLAKE 30 ACCOUNTING NEW YORK
7782 CLARK 10 ACCOUNTING NEW YORK
7788 SCOTT 20 ACCOUNTING NEW YORK
7839 KING 10 ACCOUNTING NEW YORK
7844 TURNER 30 ACCOUNTING NEW YORK
7876 ADAMS 20 ACCOUNTING NEW YORK
7900 JAMES 30 ACCOUNTING NEW YORK
7902 FORD 20 ACCOUNTING NEW YORK
7934 MILLER 10 ACCOUNTING NEW YORK
16 STRUCTURED QUERY LANGUAGE
ORACLE
7369 SMITH 20 RESEARCH DALLAS
7499 ALLEN 30 RESEARCH DALLAS
7521 WARD 30 RESEARCH DALLAS
7566 JONES 20 RESEARCH DALLAS
7654 MARTIN 30 RESEARCH DALLAS
7698 BLAKE 30 RESEARCH DALLAS
7782 CLARK 10 RESEARCH DALLAS
7788 SCOTT 20 RESEARCH DALLAS
7839 KING 10 RESEARCH DALLAS
7844 TURNER 30 RESEARCH DALLAS
7876 ADAMS 20 RESEARCH DALLAS
7900 JAMES 30 RESEARCH DALLAS
7902 FORD 20 RESEARCH DALLAS

EMPNO ENAME DEPTNO DNAME LOC


---------- ---------- ---------- -------------- -------------
7934 MILLER 10 RESEARCH DALLAS
7369 SMITH 20 SALES CHICAGO
7499 ALLEN 30 SALES CHICAGO
7521 WARD 30 SALES CHICAGO
7566 JONES 20 SALES CHICAGO
7654 MARTIN 30 SALES CHICAGO
7698 BLAKE 30 SALES CHICAGO
7782 CLARK 10 SALES CHICAGO
7788 SCOTT 20 SALES CHICAGO
7839 KING 10 SALES CHICAGO
7844 TURNER 30 SALES CHICAGO
7876 ADAMS 20 SALES CHICAGO
7900 JAMES 30 SALES CHICAGO
7902 FORD 20 SALES CHICAGO
7934 MILLER 10 SALES CHICAGO
7369 SMITH 20 OPERATIONS BOSTON
7499 ALLEN 30 OPERATIONS BOSTON
7521 WARD 30 OPERATIONS BOSTON
7566 JONES 20 OPERATIONS BOSTON
7654 MARTIN 30 OPERATIONS BOSTON
7698 BLAKE 30 OPERATIONS BOSTON
7782 CLARK 10 OPERATIONS BOSTON
7788 SCOTT 20 OPERATIONS BOSTON
7839 KING 10 OPERATIONS BOSTON
7844 TURNER 30 OPERATIONS BOSTON
7876 ADAMS 20 OPERATIONS BOSTON
7900 JAMES 30 OPERATIONS BOSTON

EMPNO ENAME DEPTNO DNAME LOC


---------- ---------- ---------- -------------- -------------
7902 FORD 20 OPERATIONS BOSTON
7934 MILLER 10 OPERATIONS BOSTON

56 rows selected.

HERE WE GET NO OF ROWS IN FIRST TABLE * NO OF ROWS IN SECOND TABLE


AS OUTPUT.

WHEN EVER IN INTERVIEW IF THEY ASK ABOUT EXPLAIN OUTPUT U HAVE TO EXPLAIN LIKE THIS:

17 STRUCTURED QUERY LANGUAGE


ORACLE
HERE FIRST TABLE WHOLE ROWS ARE MULTIPLIED BY FIRST ROW N SECOND ROW AND AGAIN
FIRST TABLE WHOLE ROWS ARE THEN MULTIPLIED BY SECOND TABLE SECOND ROW AND SO
ON.

EQUI-JOIN:SIMPLE JOINS OR INNER JOINS:


THE RELATIONSHIP BETWEEN EMP AND DEPT TABLE IS A EQUI-JOIN.THAT IS
VALUES IN DEPTNO COLUMN ON BOTH TABLES ARE EQUAL.

HERE WE GET INFO THAT IS COMMON IN BOTH TABLES.

SQL> SELECT EMPNO,ENAME,DEPTNO,DNAME,LOC FROM EMP,DEPT


2 WHERE EMP.DEPTNO=DEPT.DEPTNO;
SELECT EMPNO,ENAME,DEPTNO,DNAME,LOC FROM EMP,DEPT
*
ERROR at line 1:
ORA-00918: column ambiguously defined

TO SLOVE THAT WE HAVE KEEP DEPT OR EMP BEFORE DEPTNO,BCOZ BOTH TABLES HAVE
DEPTNO COLUMN.

SQL> SELECT EMPNO,ENAME,EMP.DEPTNO,DNAME,LOC FROM EMP,DEPT


2 WHERE EMP.DEPTNO=DEPT.DEPTNO;

EMPNO ENAME DEPTNO DNAME LOC


---------- ---------- ---------- -------------- -------------
7369 SMITH 20 RESEARCH DALLAS
7499 ALLEN 30 SALES CHICAGO
7521 WARD 30 SALES CHICAGO
7566 JONES 20 RESEARCH DALLAS
7654 MARTIN 30 SALES CHICAGO
7698 BLAKE 30 SALES CHICAGO
7782 CLARK 10 ACCOUNTING NEW YORK
7788 SCOTT 20 RESEARCH DALLAS
7839 KING 10 ACCOUNTING NEW YORK
7844 TURNER 30 SALES CHICAGO
7876 ADAMS 20 RESEARCH DALLAS
7900 JAMES 30 SALES CHICAGO
7902 FORD 20 RESEARCH DALLAS
18 STRUCTURED QUERY LANGUAGE
ORACLE
7934 MILLER 10 ACCOUNTING NEW YORK

14 rows selected.

TABLE NAME ALIASING:


SELECT EMPNO,ENAME,SAL,E.DEPTNO,DNAME,LOC

FROM EMP E,DEPT D

WHERE E.DEPTNO=D.DEPTNO;

1 SELECT EMPNO,ENAME,E.DEPTNO,DNAME,LOC FROM EMP E,DEPT D


2* WHERE E.DEPTNO=D.DEPTNO
SQL> /

EMPNO ENAME DEPTNO DNAME LOC


---------- ---------- ---------- -------------- -------------
7369 SMITH 20 RESEARCH DALLAS
7499 ALLEN 30 SALES CHICAGO
7521 WARD 30 SALES CHICAGO
7566 JONES 20 RESEARCH DALLAS
7654 MARTIN 30 SALES CHICAGO
7698 BLAKE 30 SALES CHICAGO
7782 CLARK 10 ACCOUNTING NEW YORK
7788 SCOTT 20 RESEARCH DALLAS
7839 KING 10 ACCOUNTING NEW YORK
7844 TURNER 30 SALES CHICAGO
7876 ADAMS 20 RESEARCH DALLAS
7900 JAMES 30 SALES CHICAGO
7902 FORD 20 RESEARCH DALLAS
7934 MILLER 10 ACCOUNTING NEW YORK
14 rows selected.

NON-EQUI JOIN:
THE RELATIONSHIP BETWEEN THE EMP TABLE AND THE SALGRADE TABLE IS A NON-
EQUIJOIN,MEANING THAT NO COLUMN IN THE EMP TABLE CORRESPONDS DIRECTLY TO A
COLUMN IN THE SALGRADE TABLE.

SELECT ENAME,SAL,GRADE

FROM EMP,SALGRADE

WHERE SAL BETWEEN LOSAL AND HISAL.

19 STRUCTURED QUERY LANGUAGE


ORACLE
SELECT ENAME,SAL,GRADE

FROM EMP E ,SALGRADE S

WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;

SQL> SELECT EMPNO,ENAME,SAL,GRADE FROM EMP,SALGRADE


2 WHERE SAL BETWEEN LOSAL AND HISAL;

EMPNO ENAME SAL GRADE


---------- ---------- ---------- ----------
7369 SMITH 800 1
7876 ADAMS 1100 1
7900 JAMES 950 1
7521 WARD 1250 2
7654 MARTIN 1250 2
7934 MILLER 1300 2
7499 ALLEN 1600 3
7844 TURNER 1500 3
7566 JONES 2975 4
7698 BLAKE 2850 4
7782 CLARK 2450 4
7788 SCOTT 3000 4
7902 FORD 3000 4
7839 KING 5000 5

14 rows selected.

OUTER-JOIN:
WE USE AN OUTER JOIN TO ALSO SEE ROWS THAT DO NOT USUALLY MEET THE JOIN
CONDITION.THE OUTER JOIN OPERATOR IS THE PLUS SIGN(+).

HERE WE GET EXTRA INFORMATION IN DEPT TABLE.

THIS IS RIGHT OUTER JOIN.

SELECT E.EMPNO,E.ENAME,D.DEPTNO,D.DNAME

FROM EMP E,DEPT D

WHERE E.DEPTNO(+) = D.DEPTNO

HERE WE GET EXTRA INFORMATION IN EMP TABLE.

THIS LEFT OUTER JOIN.

SELECT E.EMPNO,E.ENAME,E.DEPTNO,D.DNAME

FROM EMP E,DEPT D

20 STRUCTURED QUERY LANGUAGE


ORACLE
WHERE E.DEPTNO = D.DEPTNO(+)

YOU CANNOT PLACE (+) SIGN ON BOTH


SIDES.

THIS IS RIGHT OUTER JOIN.

SQL> SELECT EMPNO,ENAME,EMP.DEPTNO,DNAME,LOC FROM EMP,DEPT


2 WHERE EMP.DEPTNO(+) = DEPT.DEPTNO;

EMPNO ENAME DEPTNO DNAME LOC


---------- ---------- ---------- -------------- -------------
7782 CLARK 10 ACCOUNTING NEW YORK
7839 KING 10 ACCOUNTING NEW YORK
7934 MILLER 10 ACCOUNTING NEW YORK
7369 SMITH 20 RESEARCH DALLAS
7876 ADAMS 20 RESEARCH DALLAS
7902 FORD 20 RESEARCH DALLAS
7788 SCOTT 20 RESEARCH DALLAS
7566 JONES 20 RESEARCH DALLAS
7499 ALLEN 30 SALES CHICAGO
7698 BLAKE 30 SALES CHICAGO
7654 MARTIN 30 SALES CHICAGO
7900 JAMES 30 SALES CHICAGO
7844 TURNER 30 SALES CHICAGO
7521 WARD 30 SALES CHICAGO
OPERATIONS BOSTON

15 rows selected.

1 SELECT EMPNO,ENAME,DEPT.DEPTNO,DNAME,LOC FROM EMP,DEPT


2* WHERE EMP.DEPTNO(+) = DEPT.DEPTNO
SQL> /

EMPNO ENAME DEPTNO DNAME LOC


---------- ---------- ---------- -------------- -------------
7782 CLARK 10 ACCOUNTING NEW YORK
7839 KING 10 ACCOUNTING NEW YORK
7934 MILLER 10 ACCOUNTING NEW YORK
7369 SMITH 20 RESEARCH DALLAS
7876 ADAMS 20 RESEARCH DALLAS
7902 FORD 20 RESEARCH DALLAS
7788 SCOTT 20 RESEARCH DALLAS
7566 JONES 20 RESEARCH DALLAS
7499 ALLEN 30 SALES CHICAGO
7698 BLAKE 30 SALES CHICAGO
7654 MARTIN 30 SALES CHICAGO
7900 JAMES 30 SALES CHICAGO
7844 TURNER 30 SALES CHICAGO
7521 WARD 30 SALES CHICAGO
21 STRUCTURED QUERY LANGUAGE
ORACLE 40 OPERATIONS BOSTON

15 rows selected.

THIS IS LEFT OUTER JOIN.

1 SELECT EMPNO,ENAME,DEPT.DEPTNO,DNAME,LOC FROM EMP,DEPT


2* WHERE EMP.DEPTNO=DEPT.DEPTNO(+)
SQL> /

EMPNO ENAME DEPTNO DNAME LOC


---------- ---------- ---------- -------------- -------------
7369 SMITH 20 RESEARCH DALLAS
7499 ALLEN 30 SALES CHICAGO
7521 WARD 30 SALES CHICAGO
7566 JONES 20 RESEARCH DALLAS
7654 MARTIN 30 SALES CHICAGO
7698 BLAKE 30 SALES CHICAGO
7782 CLARK 10 ACCOUNTING NEW YORK
7788 SCOTT 20 RESEARCH DALLAS
7839 KING 10 ACCOUNTING NEW YORK
7844 TURNER 30 SALES CHICAGO
7876 ADAMS 20 RESEARCH DALLAS
7900 JAMES 30 SALES CHICAGO
7902 FORD 20 RESEARCH DALLAS
7934 MILLER 10 ACCOUNTING NEW YORK

14 rows selected.

HERE WE DON'T HAVE ANY EXTRA INFO IN EMP TABLE BECAUSE OF FOREIGN KEY RELATION.

THAT IS WE SHOULD NOT ENTER OTHER DEPARTMENT NUMBERS THAT ARE NOT PRESENT IN
THE DEPT TABLE

SQL> CREATE TABLE EMP1


2 AS
3 SELECT * FROM EMP;

Table created.

SQL> CREATE TABLE DEPT1


2 AS
3 SELECT * FROM DEPT;

Table created.

HERE BOTH THE TABLES HAVE NO RELATION WITH FOREIGN KEY AND PRIMARY KEY.

HERE I AM INSERTING IN TO EMP1 TABLE DEPARTMENT 50,60,70 THAT ARE NOT THERE IN DEPT1
TABLE

22 STRUCTURED QUERY LANGUAGE


ORACLE
1 INSERT INTO EMP1
2 VALUES
3* (2,'KUMAR','MANAGER',7369,'01-JAN-90',1000,100,60)
SQL> /

1 row created.

1 INSERT INTO EMP1


2 VALUES
3* (3,'GAYATRI','MANAGER',7369,'01-JAN-90',1000,100,70)
SQL> /

1 row created.

SQL> COMMIT;

Commit complete.

SQL> SELECT EMPNO,ENAME,EMP1.DEPTNO,DNAME,LOC FROM EMP1,DEPT1


2 WHERE EMP1.DEPTNO=DEPT1.DEPTNO(+);

EMPNO ENAME DEPTNO DNAME LOC


---------- ---------- ---------- -------------- -------------
7782 CLARK 10 ACCOUNTING NEW YORK
7839 KING 10 ACCOUNTING NEW YORK
7934 MILLER 10 ACCOUNTING NEW YORK
7369 SMITH 20 RESEARCH DALLAS
7876 ADAMS 20 RESEARCH DALLAS
7902 FORD 20 RESEARCH DALLAS
7788 SCOTT 20 RESEARCH DALLAS
7566 JONES 20 RESEARCH DALLAS
7499 ALLEN 30 SALES CHICAGO
7698 BLAKE 30 SALES CHICAGO
7654 MARTIN 30 SALES CHICAGO
7900 JAMES 30 SALES CHICAGO
7844 TURNER 30 SALES CHICAGO
7521 WARD 30 SALES CHICAGO
1 PAVAN 50
2 KUMAR 60
3 GAYATRI 70

17 rows selected.

1 SELECT EMPNO,ENAME,EMP1.DEPTNO,DNAME,LOC FROM EMP1,DEPT1


2* WHERE EMP1.DEPTNO(+)=DEPT1.DEPTNO
SQL> /

EMPNO ENAME DEPTNO DNAME LOC


---------- ---------- ---------- -------------- -------------
7782 CLARK 10 ACCOUNTING NEW YORK
7839 KING 10 ACCOUNTING NEW YORK

23 STRUCTURED QUERY LANGUAGE


ORACLE
7934 MILLER 10 ACCOUNTING NEW YORK
7369 SMITH 20 RESEARCH DALLAS
7876 ADAMS 20 RESEARCH DALLAS
7902 FORD 20 RESEARCH DALLAS
7788 SCOTT 20 RESEARCH DALLAS
7566 JONES 20 RESEARCH DALLAS
7499 ALLEN 30 SALES CHICAGO
7698 BLAKE 30 SALES CHICAGO
7654 MARTIN 30 SALES CHICAGO
7900 JAMES 30 SALES CHICAGO
7844 TURNER 30 SALES CHICAGO
7521 WARD 30 SALES CHICAGO
OPERATIONS BOSTON

15 rows selected.

1 SELECT EMPNO,ENAME,DEPT1.DEPTNO,DNAME,LOC FROM EMP1,DEPT1


2* WHERE EMP1.DEPTNO(+)=DEPT1.DEPTNO
SQL> /

EMPNO ENAME DEPTNO DNAME LOC


---------- ---------- ---------- -------------- -------------
7782 CLARK 10 ACCOUNTING NEW YORK
7839 KING 10 ACCOUNTING NEW YORK
7934 MILLER 10 ACCOUNTING NEW YORK
7369 SMITH 20 RESEARCH DALLAS
7876 ADAMS 20 RESEARCH DALLAS
7902 FORD 20 RESEARCH DALLAS
7788 SCOTT 20 RESEARCH DALLAS
7566 JONES 20 RESEARCH DALLAS
7499 ALLEN 30 SALES CHICAGO
7698 BLAKE 30 SALES CHICAGO
7654 MARTIN 30 SALES CHICAGO
7900 JAMES 30 SALES CHICAGO
7844 TURNER 30 SALES CHICAGO
7521 WARD 30 SALES CHICAGO
40 OPERATIONS BOSTON

15 rows selected.

1 SELECT EMPNO,ENAME,DEPT1.DEPTNO,DNAME,LOC FROM EMP1,DEPT1


2* WHERE EMP1.DEPTNO(+)=DEPT1.DEPTNO(+)
SQL> /
WHERE EMP1.DEPTNO(+)=DEPT1.DEPTNO(+)
*
ERROR at line 2:
ORA-01468: a predicate may reference only one outer-joined table

YOU CAN NOT KEEP + SIGN ON BOTH SIDES.

UPDATING ROWS:
24 STRUCTURED QUERY LANGUAGE
ORACLE
UPDATE EMP
SET SAL = SAL+100,DEPTNO=10,JOB=’CLERK’;

UPDATE EMP
SET SAL = SAL+100,DEPTNO=10,JOB=’CLERK’;
WHERE <CONDITION>

YOU CAN UPDATE MORE THAN ONE COLUMN IN A TABLE AT A TIME.

SQL> CREATE TABLE EMPLOYEE


2 AS
3 SELECT * FROM EMP;

Table created.

SQL> UPDATE EMPLOYEE


2 SET SAL =1000, JOB = 'MANAGER';

14 rows updated.

THE ABOVE STATEMENT UPDATED WHOLE TABLE.

SQL> UPDATE EMPLOYEE


2 SET SAL =2000, JOB='CLERK'
3 WHERE DEPTNO=10;

3 rows updated.

IN THE ABOVE TABLE THE ONLY DEPTNO 10 ROWS ARE UPDATED.

WHAT NOT WITH ALTER:


WE CANNOT DECREASE COLUMN SIZE IF DATA EXISTS.
WE CANNOT CHANGE NAME OF TABLE USING ALTER.
WE CANNOT CHANGE COLUMN NAME.

RENAMING THE TABLE :


RENAME EMP TO EMP1 ;

SQL> RENAME EMPLOYEE TO EMP_INFO;

Table renamed.

IN THE ABOVE STATEMENT EMPLOYEE WAS RENAMED TO EMP_INFO;


IF YOU QUERY EMPLOYEE NOW U WILL GET ERROR.

SQL> SELECT * FROM EMPLOYEE;

25 STRUCTURED QUERY LANGUAGE


ORACLE
SELECT * FROM EMPLOYEE
*
ERROR at line 1:
ORA-00942: table or view does not exist

SAL> SELECT * FROM EMP_INFO;

THE ABOVE STATEMENT WILL WORK.

DEFAULT:

SQL> CREATE TABLE EMPLOYEE


2 (EMPNO NUMBER(10),
3 ENAME VARCHAR2(10),
4 DEPTNO NUMBER(10) DEFAULT 10);

Table created.

SQL> INSERT INTO EMPLOYEE


2 VALUES
3 (1,'PAVAN',10);

1 row created.

1 INSERT INTO EMPLOYEE


2 VALUES
3* (2,'KUMAR',20)
SQL> /

1 row created.

HERE WE HAD NOT GIVEN VALUE FOR DEPTNO.THEN IT HAD TAKEN 20 FOR DEPTNO, BCOZ WE
HAD GIVEN DEFAULT 20 FOR DEPTNO.

1 INSERT INTO EMPLOYEE


2 (EMPNO,ENAME)
3 VALUES
4* (2,'KUMAR')
5 /

1 row created.

1 INSERT INTO EMPLOYEE


2 VALUES
3* (2,'KUMAR')
4 /
INSERT INTO EMPLOYEE
*
ERROR at line 1:

26 STRUCTURED QUERY LANGUAGE


ORACLE
ORA-00947: not enough values

SQL> SELECT * FROM EMPLOYEE;

EMPNO ENAME DEPTNO


---------- ---------- ----------
1 PAVAN 10
2 KUMAR 20
2 KUMAR 10

IN THE ABOVE QUERY WHENEVER YOU DON'T GIVE VALUE FOR DEPTNO THERE DEFAULT VALUE
WILL BE TAKEN.

ADDING COMMENTS TO A TABLE .


YOU CAN ADD COMMENTS TO A TABLE USING THE COMMENT STATEMENT .

COMMENT ON TABLE EMP IS ‘ EMPLOYEE INFORMATION ‘ ;

IN THE REALTIME ENVIRONMENT WE WILL CREATING SO MANY TABLES THERE IT IS


VERY HARD TO FIND WHICH TABLE WILL HAVE WHAT INFO AT THAT TIME WE CREATE
COMMENTS ON TABLES.

NOW I AM CREATING COMMENTS ON THE TABLE EMP THAT IT SORES ALL THE
EMPLOYEE INFO.

COMMENT ON TABLE EMP IS ' IT STORES EMPLOYEE INFO '

SQL> /

Comment created.

VIEWING COMMENTS:
ALL_TAB_COMMENTS,USER_TAB_COMMENTS ;

SELECT * FROM USER_TAB_COMMENTS;

1* SELECT * FROM USER_TAB_COMMENTS WHERE TABLE_NAME='EMP'


SQL> /

TABLE_NAME TABLE_TYPE
------------------------------ -----------
27 STRUCTURED QUERY LANGUAGE
ORACLE
COMMENTS
----------------------------------------------------------------------------------------------------
EMP TABLE
IT STORES EMPLOYEE INFO

TO SEE WHAT TABLE HAVE WHAT COMMENT WE HAVE TO QUERY


USER_TAB_COMMENTS.

DROP COMMENTS:

COMMENT ON TABLE EMP IS ‘ ‘ ;


TO DELETE THE COMMENT ON TABLE WE WRITE QUERY LIKE BELOW.

COMMENT ON TABLE EMP IS ' ' ;

Comment created.

1 SELECT * FROM USER_TAB_COMMENTS


2* WHERE TABLE_NAME='EMP'

SQL> /

TABLE_NAME TABLE_TYPE
------------------------------ -----------
COMMENTS
----------------------------------------------------------------------------------------------------
EMP TABLE

REMOVE THE PRIMARY KEY CONSTRAINT


ON THE DEPT TABLE AND DEPTNO THE
ASSOCIATED FOREIGN KEY CONSTRAINT
ON THE EMP(DEPTN0) COLUMN:
WHEN EVER YOU RELATE BOTH EMP AND DEPT TABLES WITH FOREIGN KEY THEN U PRETTY
WELL KNOW DEPT TABLE DEPTNO SHOULD HAVE PRIMARY KEY. NOW IF YOU WANT TO DROP
PRIMARY KEY CONSTRAINT ON DEPT TABLE IT WON'T ALLOW YOU TO DROP BECAUSE IT IS
CONNECTED WITH FOREIGN KEY OF EMP TABLE DEPTNO COLUMN THEN IF YOU WANT TO DROP
PRIMARY KEY WHAT U SHOULD DO IS TYPE BELOW QUERY.

ALTER TABLE DEPT1


DROP CONSTRAINT DEPT1_PK CASCADE;

SQL> CREATE TABLE EMP1

28 STRUCTURED QUERY LANGUAGE


ORACLE
2 AS
3 SELECT * FROM EMP;

Table created.

SQL> CREATE TABLE DEPT1


2 AS
3 SELECT * FROM DEPT;

Table created.

SQL> ALTER TABLE DEPT1


2 ADD CONSTRAINT DEPT1_PK PRIMARY KEY(DEPTNO);

Table altered.

SQL> ALTER TABLE EMP1


2 ADD CONSTRAINT EMP1_FK FOREIGN KEY(DEPTNO) REFERENCES DEPT1(DEPTNO);

Table altered.

SQL> ALTER TABLE DEPT1


2 DROP CONSTRAINT DEPT1_PK;

DROP CONSTRAINT DEPT1_PK


*
ERROR at line 2:
ORA-02273: this unique/primary key is referenced by some foreign keys

SQL> ALTER TABLE DEPT1


2 DROP CONSTRAINT DEPT1_PK CASCADE;

Table altered.

NOW BOTH PRIMARY KEY FOR DEPT1 AND FOREIGN KEY FOR EMP1 BOTH ARE DELETED.

IF YOU WANT TO SEE WHAT COULMNS


HAVE CONSTRAINTS,WE USE BELOW
TABLE.
SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME='DEPT1';

SET OPERATORS:

 UNION ALL

29 STRUCTURED QUERY LANGUAGE


ORACLE
 UNION

 INTERSECT

 MINUS

SET OPERATORS ARE USED TO COMBINE INFORMATION OF SIMILAR TYPE FROM ONE OR MORE
THAN ONE TABLE.DATATYPES OF CORRESPONDING COLUMNS MUST BE SAME.

UNION: ROWS OF FIRST QUERY + ROWS OF SECOND


QUERY LESS DUPLICATE ROWS
LIST OF JOBS IN DEPTNO=10 AND 20 LESS DUPLICATION.

SELECT JOB FROM EMP WHERE DEPTNO=10


UNION
SELECT JOB FROM EMP WHERE DEPTNO=20 ;

1 SELECT JOB FROM EMP WHERE DEPTNO=10


2 UNION
3* SELECT JOB FROM EMP WHERE DEPTNO=20

SQL> /

JOB
---------
ANALYST
CLERK
MANAGER
PRESIDENT

UNION ALL: ROWS OF FIRST QUERY + ROWS OF


SECOND QUERY WITH DUPLICATE ROWS:
LIST OF JOBS IN DEPTNO=10 AND 20.

SELECT JOB FROM EMP WHERE DEPTNO=10


UNION ALL
SELECT JOB FROM EMP WHERE DEPTNO=20 ;

SQL> SELECT JOB FROM EMP WHERE DEPTNO=10


2 UNION ALL
3 SELECT JOB FROM EMP WHERE DEPTNO=20;

JOB
---------
MANAGER
PRESIDENT
30 STRUCTURED QUERY LANGUAGE
ORACLE
CLERK
CLERK
MANAGER
ANALYST
CLERK
ANALYST

8 rows selected.

INTERSECT : COMMON ROWS FROM 2 QUERIES.


LIST OF JOBS COMMON IN DEPTNO=10 AND 20.

SELECT JOB FROM EMP WHERE DEPTNO=10


INTERSECT
SELECT JOB FROM EMP WHERE DEPTNO=20 ;

1 SELECT JOB FROM EMP WHERE DEPTNO=10


2 INTERSECT
3* SELECT JOB FROM EMP WHERE DEPTNO=20

SQL> /

JOB
---------
CLERK
MANAGER

MINUS: WHICH GIVES UNIQUE ROWS:


LIST OFJOBS UNIQUE IN DEPTNO=20

SELECT JOB FROM EMP WHERE DEPTNO=20


MINUS
SELECT JOB FROM EMP WHERE DEPTNO=10
MINUS
SELECT JOB FROM EMP WHERE DEPTNO=30;

WITH IN OPERATOR:

SELECT JOB FROM EMP WHERE DEPTNO=20


MINUS
SELECT JOB FROM EMP WHERE DEPTNO IN(10,30);

1 SELECT JOB FROM EMP WHERE DEPTNO=10


2 MINUS
3* SELECT JOB FROM EMP WHERE DEPTNO=20
SQL> /

JOB
---------
31 STRUCTURED QUERY LANGUAGE
ORACLE
PRESIDENT

1 SELECT JOB FROM EMP WHERE DEPTNO=10


2 MINUS
3 SELECT JOB FROM EMP WHERE DEPTNO=20
4 MINUS
5* SELECT JOB FROM EMP WHERE DEPTNO=30
SQL> /

JOB
---------
PRESIDENT

1 SELECT JOB FROM EMP WHERE DEPTNO=10


2 MINUS
3* SELECT JOB FROM EMP WHERE DEPTNO IN (20,30)
SQL> /

JOB
---------
PRESIDENT

1* SELECT JOB FROM EMP WHERE DEPTNO IN (10,20) – THIS IS UNION ALL
SQL> /

JOB
---------
CLERK
MANAGER
MANAGER
ANALYST
PRESIDENT
CLERK
ANALYST
CLERK

8 rows selected.

SQL> SELECT DISTINCT(JOB) FROM EMP WHERE DEPTNO IN (10,20); - THIS IS UNION.

JOB
---------
ANALYST
CLERK
MANAGER
PRESIDENT

32 STRUCTURED QUERY LANGUAGE


ORACLE

33 STRUCTURED QUERY LANGUAGE

You might also like