PLSQL CLASS3
PLSQL CLASS3
GROUP FUNCTIONS:
AVG , MAX , MIN , SUM , COUNT , STDDEV( STANDERD DEVIATION ) , VARIANCE .
ARITHMETIC EXPRESSIONS:
+ ADD
-- SUBTRACT
* MULTIPLY
/ DIVIDE
14 rows selected.
* / + -
NULL FUNCTION:
A NULL IS A VALUE THIS IS UNAVAILABLE,UNASSIGNED,UNKNOWN OR INAPPLICABLE.
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.
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.
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.
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.
14 rows selected.
HERE WHENEVER WE USED NVL IT SUBSTITUED ‘0’ IN PLACE OF NULL VALUES. THEN ADDTION
WITH 0 RESULTS CORRECT VALUE.
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.
14 rows selected.
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;
14 rows selected.
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.
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.
14 rows selected.
CONCATINATION OPERATOR:
SELECT ENAME||JOB AS “EMPLOYEES” 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.
ENAME||JOB
-------------------
SMITHCLERK
ALLENSALESMAN
WARDSALESMAN
JONESMANAGER
MARTINSALESMAN
BLAKEMANAGER
CLARKMANAGER
SCOTTANALYST
KINGPRESIDENT
TURNERSALESMAN
ADAMSCLERK
JAMESCLERK
FORDANALYST
MILLERCLERK
14 rows selected.
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.
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
SELECT ENAME,SAL FROM EMP WHERE SAL BETWEEN 1000 AND 1500;
12 rows selected.
12 rows selected.
14 rows selected.
SQL> SELECT * FROM EMP WHERE SAL BETWEEN 1000 AND 2000;
6 rows selected.
IN OPERATOR:
IF YOU WANT TO SELECT INFO FOR MORE THAN ONE EMPLOYEE YOU CANNOT
USE THE FOLLOWING QUERY:
NOT IN OPERATOR:
IF YOU DON’T WANT TO SEE THOSE EMPLOYEES INFO,YOU KEEP THEM IN NOT IN CLAUSE.
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;
OR OPERATOR:
REQUIRES EITHER CONDITION TO BE TRUE.
HERE WE GET INFO ABOUT CLERKS AND ALL THE INFO ABOUT EMPLOYEES WHOSE SALARY
>=1100.
14 rows selected.
OR TRUE FALSE
TRUE TRUE TRUE
FALSE TRUE FALSE
NOW WE CAN SORT THE OUTPUT IN EITHER WAY ACCORDING TO COLUMN ALIASES.
14 rows selected.
14 rows selected.
14 rows selected.
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.
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
56 rows selected.
WHEN EVER IN INTERVIEW IF THEY ASK ABOUT EXPLAIN OUTPUT U HAVE TO EXPLAIN LIKE THIS:
TO SLOVE THAT WE HAVE KEEP DEPT OR EMP BEFORE DEPTNO,BCOZ BOTH TABLES HAVE
DEPTNO COLUMN.
14 rows selected.
WHERE E.DEPTNO=D.DEPTNO;
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
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(+).
SELECT E.EMPNO,E.ENAME,D.DEPTNO,D.DNAME
SELECT E.EMPNO,E.ENAME,E.DEPTNO,D.DNAME
15 rows selected.
15 rows selected.
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
Table created.
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
1 row created.
1 row created.
SQL> COMMIT;
Commit complete.
17 rows selected.
15 rows selected.
15 rows selected.
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>
Table created.
14 rows updated.
3 rows updated.
Table renamed.
DEFAULT:
Table created.
1 row created.
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 row created.
IN THE ABOVE QUERY WHENEVER YOU DON'T GIVE VALUE FOR DEPTNO THERE DEFAULT VALUE
WILL BE TAKEN.
NOW I AM CREATING COMMENTS ON THE TABLE EMP THAT IT SORES ALL THE
EMPLOYEE INFO.
SQL> /
Comment created.
VIEWING COMMENTS:
ALL_TAB_COMMENTS,USER_TAB_COMMENTS ;
TABLE_NAME TABLE_TYPE
------------------------------ -----------
27 STRUCTURED QUERY LANGUAGE
ORACLE
COMMENTS
----------------------------------------------------------------------------------------------------
EMP TABLE
IT STORES EMPLOYEE INFO
DROP COMMENTS:
Comment created.
SQL> /
TABLE_NAME TABLE_TYPE
------------------------------ -----------
COMMENTS
----------------------------------------------------------------------------------------------------
EMP TABLE
Table created.
Table created.
Table altered.
Table altered.
Table altered.
NOW BOTH PRIMARY KEY FOR DEPT1 AND FOREIGN KEY FOR EMP1 BOTH ARE DELETED.
SET OPERATORS:
UNION ALL
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.
SQL> /
JOB
---------
ANALYST
CLERK
MANAGER
PRESIDENT
JOB
---------
MANAGER
PRESIDENT
30 STRUCTURED QUERY LANGUAGE
ORACLE
CLERK
CLERK
MANAGER
ANALYST
CLERK
ANALYST
8 rows selected.
SQL> /
JOB
---------
CLERK
MANAGER
WITH IN OPERATOR:
JOB
---------
31 STRUCTURED QUERY LANGUAGE
ORACLE
PRESIDENT
JOB
---------
PRESIDENT
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