SQL & PL/SQL Hands on Oracle 11g DB Enterprise · PDF fileOracle 11g DB Enterprise Edition...

14
SQL & PL/SQL Hands on Oracle 11g DB Enterprise Edition Writtent By: Abaid ur Rehman Project Manager +966506220025 ICM Software House www.icm-pak.com

Transcript of SQL & PL/SQL Hands on Oracle 11g DB Enterprise · PDF fileOracle 11g DB Enterprise Edition...

Page 1: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

SQL & PL/SQL Hands on Oracle 11g DB Enterprise Edition

Writtent By: Abaid ur Rehman Project Manager

+966506220025

ICM Software House

www.icm-pak.com

Page 2: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 2 of 14

Contents SQL(Structured Query Languages) ................................................................................................................ 4

DCL(Data Control Languages) ................................................................................................................... 4

DDL(Data Definition Language) ................................................................................................................. 4

DML (Data Manipulation Language) ......................................................................................................... 4

TCL (Transaction Control Language) ......................................................................................................... 6

Functions ................................................................................................................................................... 6

Single Row Functions ............................................................................................................................ 6

Group Functions .................................................................................................................................... 7

Having Clause ........................................................................................................................................ 7

Joins .......................................................................................................................................................... 8

Sub-Query ................................................................................................................................................. 8

Views ......................................................................................................................................................... 8

Sequence ................................................................................................................................................... 8

Synonym.................................................................................................................................................... 8

Index.......................................................................................................................................................... 8

Constraints ................................................................................................................................................ 9

Security ..................................................................................................................................................... 9

PL/SQL NOTES ............................................................................................................................................. 10

Block ........................................................................................................................................................ 10

Variable ................................................................................................................................................... 10

DML in PL/SQL ......................................................................................................................................... 10

Flow Control ............................................................................................................................................ 11

If condition .......................................................................................................................................... 11

Loops ................................................................................................................................................... 11

Exceptions ............................................................................................................................................... 12

Cursor ...................................................................................................................................................... 12

Cursor for Loop ................................................................................................................................... 12

Procedures .............................................................................................................................................. 13

IN PARAMETER .................................................................................................................................... 13

OUT PARAMETER ................................................................................................................................ 13

Page 3: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 3 of 14

IN OUT PARAMETER ............................................................................................................................ 13

Functions ................................................................................................................................................. 14

CALL FUNCTION ................................................................................................................................... 14

TRIGGER .................................................................................................................................................. 14

Page 4: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 4 of 14

SQL(Structured Query Languages) Standard Languages for Databases ANSI (American National Standard Institute) Standard Used to Interact / communicate with database Once Learned user every where

SQL is re-categorized in sub-languages according to tasks:

DCL(Data Control Languages) Used to Control Database Security Create User, Change Password, Assign Rights, snatch rights CREATE USER, GRANT RIGHTS, REVOKE RIGHTS

CREATE USER

You can create new users by this command and assign password to it. CREATE USER SCOTT IDENTIFIED BY TIGER;

ALTER USER ALTER USER SCOTT IDENTIFIED BY TIGERS; GRANT RIGHTS

GRANT RESOURCE, CONNECT, CREATE TABLE, CREATE SESSION,DBA TO SCOTT;

REVOKE RIGHTS REVOKE CREATE SESSION FROM SCOTT;

DDL(Data Definition Language) Used to interact with database Define objects, change objects, remove objects CREATE, ALTER, DROP CREATE TABLE CREATE TABLE EMP(

EMPNO NUMBER(10) primary key, ENAME VARCHAR2(30), SAL NUMBER(12,2), COMM NUMBER(12,2), DEPTNO NUMBER(10) ); ALTER TABLE ALTER TABLE EMP ADD MGR NUMBER(5); ALTER TABLE EMP MODIFY ENAME VARCHAR2(50); DROP TABLE DROP TABLE EMP;

DML (Data Manipulation Language) Used to interact with tables Store new records, change records, remove records, select data from tables. INSERT,UPDATE, DELETE, SELECT INSERT INSERT INTO EMP VALUES (1,’ASAD’,5000,500,7787,10);

Page 5: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 5 of 14

INSERT INTO EMP(EMPNO,ENAME,SAL) VALUES (2,’ALEEM’,7000); INSERT INTO EMP(EMPNO,ENAME,SAL) VALUES (&no,’&name’,&salary); UPDATE UPDATE EMP SET MGR = 7767;

UPDATE EMP

SET COMM = 200

WHERE COMM IS NULL;

DELETE DELETE FROM EMP; DELETE FROM EMP WHERE SAL < 2000; SELECT SELECT * FROM EMP;

SELECT ENAME,JOB,SAL FROM EMP; SELECT ENAME EMPLOYEE,JOB DESIGNATION, SAL SALARY FROM EMP; SELECT ENAME,JOB,SAL,SAL*.2 BONUS FROM EMP; SELECT ‘The name of Employee is’||ENAME FROM EMP; SELECT * FROM EMP ORDER BY ENAME; SELECT * FROM EMP ORDER BY 2; SELECT * FROM EMP ORDER BY JOB,DEPTNO; SELECT * FROM EMP ORDER BY JOB DESC,DEPTNO; SELECT * FROM EMP WHERE SAL < 3000; SELECT * FROM EMP WHERE SAL > 5000; SELECT * FROM EMP WHERE DEPTNO = 20; SELECT * FROM EMP WHERE DEPTNO IN (10,30,40); SELECT * FROM EMP WHERE SAL BETWEEN 2000 AND 5000; SELECT * FROM EMP WHERE ENAME LIKE ‘A%;’ SELECT * FROM EMP

Page 6: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 6 of 14

WHERE ENAME LIKE ‘%ALI%’; SELECT * FROM EMP WHERE JOB = ‘MANAGER’ AND SAL < 3000; SELECT * FROM EMP WHERE JOB = ‘CLERK’ OR SAL > 2000; SELECT * FROM EMP WHERE COMM IS NOT NULL;

TCL (Transaction Control Language) Used to control Transactions COMMIT, ROLLBACK, SAVEPOINT COMMIT; ROLLBACK; SAVEPOINT;

Functions

Single Row Functions

CHARACTER FUNCTIONS

UPPER SELECT UPPER(ENAME) FROM EMP; LOWER SELECT LOWER(ENAME FROM EMP; INITCAP SELECT INITCAP(ENAME) FROM EMP; LENGTH

SELECT LENGTH(ENAME) FROM EMP; SUBSTR

SELECT SUBSTR(ENAME,2,3) FROM EMP; INSTR

SELECT INSTR(ENAME,’A’) FROM EMP; LPAD

SELECT LPAD(ENAME,10,’~’) FROM EMP;

RPAD SELECT RPAD(ENAME,10,’~’) FROM EMP;

NUMERIC FUNCTIONS

ROUND SELECT ROUND(17879.879,2) FROM DUAL; SELECT ROUND(17879.241,2) FROM DUAL; TRUNC SELECT TRUNC(17879.879,2) FROM DUAL; SELECT TRUNC(17879.241,2) FROM DUAL; MOD SELECT MOD(15,4) FROM DUAL;

Page 7: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 7 of 14

DATE FUNCTIONS

ADD_MONTHS

SELECT ADD_MONTHS(HIREDATE,10) FROM EMP; MONTHS_BETWEEN SELECT MONTHS_BETWEEN(SYSDATE,HIREDATE) FROM EMP; LAST_DAY SELECT LAST_DAY(SYSDATE) FROM DUAL;

CONVERSION FUNCTIONS

TO_CHAR SELECT TO_CHAR(SYSDATE,’DD-MM-RR HH:MI’) FROM DUAL; SELECT TO_CHAR(SAL,’999,999.00’) FROM EMP; TO_NUMBER SELECT TO_NUMBER(SUBSTR(HIREDATE,1,2)) FROM EMP; TO_DATE SELECT TO_DATE(’10-10-04’,’MM-DD-YY’) FROM DUAL;

OTHER FUNCTIONS

NVL SELECT NVL(SAL,100) FROM EMP; DECODE

SELECT DECODE(JOB,’MANAGER’,SAL*.2,’CLERK’,SAL*.1,SAL*.05) FROM EMP;

Group Functions SUM SELECT SUM(SAL) FROM EMP; SELECT SUM(SAL) FROM EMP GROUP BY DEPTNO; SELECT SUN(SAL) FROM EMP GROUP BY JOB; AVG SELECT AVG(SAL) FROM EMP GROUP BY DEPTNO;

MIN SELECT MIN(SAL) FROM EMP; MAX SELECT MAX(SAL) FROM EMP;

COUNT SELECT COUNT(*) FROM EMP; SELECT COUNT(*) FROM EMP GROUP BY JOB;

Having Clause SELECT SUM(SAL) FROM EMP GROUP BY JOB HAVING SUM(SAL) > 5000;

Page 8: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 8 of 14

Joins INNER JOIN SELECT DNAME,ENAME,JOB,SAL FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; OUTER JOIN

SELECT DNAME,ENAME,JOB,SAL FROM EMP,DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO; SELF JOIN SELECT A.ENAME MANAGER,A.EMPNO MANAGERID, B.ENAME SUBORDINATE,B.EMPNO SUBORDINATEID FROM EMP A,EMP B WHERE A.EMPNO = B.MGR;

Sub-Query SELECT * FROM EMP WHERE SAL < (SELECT SAL FROM EMP WHERE ENAME = ‘SMITH’);

Views CREATE VIEW ORG_EMP_V AS SELECT A.ENAME MANAGER,A.EMPNO MANAGERID, B.ENAME SUBORDINATE,B.EMPNO SUBORDINATEID FROM EMP A,EMP B WHERE A.EMPNO = B.MGR;

Sequence CREATE SEQUENCE SEQ_EMP1 START WITH 1 INCREMENT BY 1 NOCACHE; CREATE SEQJUENCE SEQ_EMP2 START WITH 100 INCREMENT BY 1 MINVALUE 90 MAXVALUE 150 CYCLE; SELECT SEQ_EMP1.NEXTVAL

FROM DUAL; SELECT SEQ_EMP1.CURRVAL FROM DUAL;

Synonym CREATE SYNONYM E FOR EMP;

Index CREATE INDEX IDX_EMP_ENAME ON EMP(ENAME);

Page 9: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 9 of 14

Constraints PRIMARY KEY UNIQUE NOT NULL FOREIGN KEY CHECK CREATE TABLE DEPT( DEPTNO NUMBER(10) PRIMARY KEY, DNAME VARCHAR2(100) NOT NULL); CREATE TABLE EMP( EMPNO NUMBER(10) PRIMARY KEY, ENAME VARCHAR2(100) NOT NULL, PHONE VARCHAR2(15) UNIQUE, SAL NUMBER(15,2), DEPTNO NUMBER(10), CHECK (SAL < 3000), FOREIGN KEY (DEPTNO) REFERENCES EMP);

Security CREATE ROLE R1 IDENTIFIED BY R1; GRANT SELECT ON EMP TO R1; GRANT UPDATE,DELETE ON EMP TO R1; GRANT R1 TO SCOTT;

Page 10: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 10 of 14

PL/SQL NOTES

Block Declaration Section (Declare all variable, constants, cursors, exceptions) Executable Section (All executable PL/SQL Commands, call other procedures,DML) Exception Section (Tran Run time errors and give your own messages)

Variable PL/SQL Variable Simple Variables Scalar variable Composite variable Declare X number(10); V_EMPNO EMP.EMPNO%TYPE; V_EMP EMP%ROWTYPE; BEGIN SELECT * INTO V_EMP FROM EMP WHERE EMPNO = 7788; DBMS_OUTPUT.PUT_LINE(V_EMP.ENAME); END;

DML in PL/SQL SELECT INSERT UPDATE DELETE Declare X number(10); V_EMPNO EMP.EMPNO%TYPE; V_EMP EMP%ROWTYPE; BEGIN SELECT * INTO V_EMP FROM EMP WHERE EMPNO = 7788; DBMS_OUTPUT.PUT_LINE(V_EMP.ENAME);

INSERT INTO EMP1 (EMPNO,ENAME,JOB,SAL) VALUES (V_EMP.EMPNO,V_EMP.ENAME,V_EMP.JOB,V_EMP.SAL);

UPDATE EMP1 SET SAL = V_EMP.SAL WHERE EMPNO = V_EMP.EMPNO; DELETE FROM EMP1 WHERE DEPTNO = V_EMP.DEPTNO;

END;

Page 11: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 11 of 14

Flow Control

If condition DECLARE V_EMP EMP%ROWTYPE; BEGIN SELECT * INTO V_EMP FROM EMP WHERE ENAME = ‘SCOTT’; IF V_EMP.SAL < 3000 THEN DBMS_OUTPUT.PUT_LINE(‘A’); ELSIF V_EMP.SAL < 2000 THEN DBMS_OUTPUT.PUT_LINE(‘B’); ELSIF V_EMP.SAL < 1000 THEN DBMS_OUTPUT.PUT_LINE(‘C’); ELSE DBMS_OUTPUT.PUT_LINE(‘D’); END IF; END;

Loops

Basic loop

DECLARE X NUMBER := 1; BEGIN

LOOP X := X +1 ; DBMS_OUTPUT.PUT_LINE(X); EXIT WHEN X = 10; END LOOP; END;

While loop

DECLARE X NUMBER := 1; BEGIN WHILE X < 10 LOOP X := X +1; DBMS_OUTPUT.PUT_LINE(X); END LOOP; END;

For loop

BEGIN FOR I IN 1..10 LOOP DBMS_OUTPUT.PUT_LINE(I): END LOOP; END;

Page 12: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 12 of 14

Exceptions DECLARE V_EMP EMP%ROWTYPE; BEGIN SELECT * INTO V_EMP FROM EMP

WHERE DEPTNO = 1; DBMS_OUTPUT.PUT_LINE(V_EMP.ENAME);

EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(‘SORRY, NO DATA FOUND’); WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE(‘SORRY, MANY RECORDS FOUND’); END;

Cursor DECLARE V_EMP EMP%ROWTYPE; CURSOR C_EMP IS SELECT * INTO V_EMP FROM EMP

WHERE DEPTNO = 10; BEGIN OPEN C_EMP; LOOP FETCH C_EMP INTO V_EMP; EXIT WHEN C_EMP%NOTFOUND; DBMS_OUTPUT.PUT_LINE(V_EMP.ENAME); END LOOP; END;

Cursor for Loop BEGIN FOR I IN (SELECT * FROM EMP) LOOP DBMS_OUTPUT.PUT_LINE(I.ENAME); END LOOP; END;

Page 13: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 13 of 14

Procedures

IN PARAMETER CREATE OR REPLACE PROCEDURE P_EMP(P_EMPNO NUMBER) IS V_ENAME EMP.ENAME%TYPE; BEGIN SELECT ENAME INTO V_ENAME FROM EMP WHERE EMPNO = P_EMPNO; DBMS_OUTPUT.PUT_LINE(V_ENAME); END; Call Procedure BEGIN P_EMP(100);

END;

OUT PARAMETER CREATE OR REPLACE PROCEDURE P_EMP(P_EMPNO IN NUMBER, P_ENAME OUT VARCHAR2) IS BEGIN SELECT ENAME INTO P_ENAME FROM EMP WHERE EMPNO = P_EMPNO; END; Call Procedure DECLARE X NUMBER; BEGIN P_EMP(100,X);

END;

IN OUT PARAMETER CREATE OR REPLACE PROCEDURE P_EMP(P_EMPNO_SAL IN OUT NUMBER) IS BEGIN SELECT SAL

INTO P_EMPNO_SAL FROM EMP WHERE EMPNO = P_EMPNO_SAL; END; DECLARE X NUMBER := 100; BEGIN P_EMP(X);

END;

Page 14: SQL & PL/SQL Hands on Oracle 11g DB Enterprise  · PDF fileOracle 11g DB Enterprise Edition Writtent By: ... ICM Software House   . OBIEE BI Administration ... DATE FUNCTIONS ADD

OBIEE BI Administration www.icm-pak.com ------------------------------------------------------------------------------------------------------------------------------------------

Page 14 of 14

Functions CREATE OR REPLACE FUNCTION F_EMP(P_EMPNO IN NUMBER) RETURN VARCHAR2 IS V_EMP EMP%ROWTYPE; BEGIN SELECT ENAME INTO P_ENAME FROM EMP WHERE EMPNO = P_EMPNO; END;

CALL FUNCTION SELECT F_EMP(7788) FROM DUAL;

TRIGGER CREATE OR REPLACE TRIGGER INS_EMP AFTER INSERT OR DELETE OR UPDATE OF SAL ON EMP REFERENCES NEW AS N OLD AS O FOR EACH ROW BEGIN IF INSERTING THEN

INSERT INTO EMP1(EMPNO,ENAME,JOB) VALUES (: ELSIF UPDATING THEN UPDATE EMP1

SET SAL = :N.SAL WHERE EMPNO = :O.EMPNO; ELSIF DELETING THEN DELETE FROM EMP WHERE EMPNO = :O.EMPNO; END IF; END;