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

Similar documents
Oracle Database: SQL and PL/SQL Fundamentals

Programming with SQL

Oracle SQL. Course Summary. Duration. Objectives

Oracle Database: SQL and PL/SQL Fundamentals NEW

Oracle Database: SQL and PL/SQL Fundamentals

Oracle Database 12c: Introduction to SQL Ed 1.1

Oracle Database 11g SQL

Oracle Database: Introduction to SQL

Duration Vendor Audience 5 Days Oracle End Users, Developers, Technical Consultants and Support Staff

Oracle Database: Introduction to SQL

Oracle Database: SQL and PL/SQL Fundamentals NEW

DECLARATION SECTION. BODY STATEMENTS... Required

Oracle Database: Introduction to SQL

Oracle PL/SQL Best Practices

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING DR.NAVALAR NEDUNCHEZHIAYN COLLEGE OF ENGINEERING, THOLUDUR , CUDDALORE DIST.

Training Guide. PL/SQL for Beginners. Workbook

RDBMS Using Oracle. Lecture Week 7 Introduction to Oracle 9i SQL Last Lecture. kamran.munir@gmail.com. Joining Tables

Objectives. Oracle SQL and SQL*PLus. Database Objects. What is a Sequence?

Instant SQL Programming

Netezza SQL Class Outline

DATABASE DESIGN & PROGRAMMING WITH SQL COURSE CODE: 5324

Aggregating Data Using Group Functions

Conversion Functions

Database programming 20/08/2015. DBprog news. Outline. Motivation for DB programming. Using SQL queries in a program. Using SQL queries in a program

Examine the structure of the EMPLOYEES table: EMPLOYEE_ID NUMBER Primary Key FIRST_NAME VARCHAR2(25) LAST_NAME VARCHAR2(25)

Oracle 10g PL/SQL Training

Subqueries Chapter 6

2. Which of the following declarations is invalid? Mark for Review (1) Points

Database Programming with PL/SQL: Learning Objectives

Overview of PL/SQL. About PL/SQL

Oracle/SQL Tutorial 1

How To Name A Program In Apl/Sql

Handling Exceptions. Copyright 2006, Oracle. All rights reserved. Oracle Database 10g: PL/SQL Fundamentals 8-1

Displaying Data from Multiple Tables. Chapter 4

ORACLE 9I / 10G / 11G / PL/SQL COURSE CONTENT

Answers to the Try It Yourself Sections

Single-Row Functions Schedule: Timing Topic

Oracle Database 11g SQL and PL/SQL: A Brief Primer

COMS20700 DATABASES 13 PL/SQL. COMS20700 Databases Dr. Essam Ghadafi

1 Stored Procedures in PL/SQL 2 PL/SQL. 2.1 Variables. 2.2 PL/SQL Program Blocks

Oracle Database 10g: Introduction to SQL

Oracle For Beginners Page : 1

Error Management in Oracle PL/SQL

VARRAY AND NESTED TABLE

Oracle For Beginners Page : 1

Displaying Data from Multiple Tables

Writing Control Structures

Procedural Extension to SQL using Triggers. SS Chung

Handling Exceptions. Schedule: Timing Topic. 45 minutes Lecture 20 minutes Practice 65 minutes Total

Mini User's Guide for SQL*Plus T. J. Teorey

Intro to Embedded SQL Programming for ILE RPG Developers

Handling Exceptions. Schedule: Timing Topic 45 minutes Lecture 20 minutes Practice 65 minutes Total

SQL Tuning Proven Methodologies

Handling Exceptions. Copyright 2008, Oracle. All rights reserved.

Guide to SQL Programming: SQL:1999 and Oracle Rdb V7.1

What is the value of SQL%ISOPEN immediately after the SELECT statement is executed? Error. That attribute does not apply for implicit cursors.

Relational Algebra. Query Languages Review. Operators. Select (σ), Project (π), Union ( ), Difference (-), Join: Natural (*) and Theta ( )

- Eliminating redundant data - Ensuring data dependencies makes sense. ie:- data is stored logically

Informatics Practices

14 Triggers / Embedded SQL

SQL interview questions and answers

Review your answers, feedback, and question scores below. An asterisk (*) indicates a correct answer.

Handling PL/SQL Errors

SQL. by Steven Holzner, Ph.D. ALPHA. A member of Penguin Group (USA) Inc.

Advanced SQL. Jim Mason. Web solutions for iseries engineer, build, deploy, support, train

Review your answers, feedback, and question scores below. An asterisk (*) indicates a correct answer.

Oracle PL/SQL Language. CIS 331: Introduction to Database Systems

Part A: Data Definition Language (DDL) Schema and Catalog CREAT TABLE. Referential Triggered Actions. CSC 742 Database Management Systems

9 Using Triggers. Using Triggers 9-1

Database Design. Marta Jakubowska-Sobczak IT/ADC based on slides prepared by Paula Figueiredo, IT/DB

ETL TESTING TRAINING

Date / Time Arithmetic with Oracle

Topics Advanced PL/SQL, Integration with PROIV SuperLayer and use within Glovia

T-SQL STANDARD ELEMENTS

PL/SQL & SQL. Coding Guidelines. Trivadis AG. Document Version Trivadis AG

PL/SQL Programming. Oracle Database 12c. Oracle Press ORACLG. Michael McLaughlin. Mc Graw Hill Education

A basic create statement for a simple student table would look like the following.

2. Which three statements about functions are true? (Choose three.) Mark for Review (1) Points

How To Create A Table In Sql (Ahem)

SQL Introduction Chapter 7, sections 1 & 4. Introduction to SQL. Introduction to SQL. Introduction to SQL

PL / SQL Basics. Chapter 3

Introduction to PL/SQL Programming

Oracle PL/SQL Injection

Handling PL/SQL Errors

Oracle Database 10g Express

Oracle 11g PL/SQL training

IT2304: Database Systems 1 (DBS 1)

Oracle to MySQL Migration

Delivering Database Compatibility for Oracle in Postgres Plus Advanced Server

IT2305 Database Systems I (Compulsory)

SQL/PSM. Outline. Database Application Development Oracle PL/SQL. Why Stored Procedures? Stored Procedures PL/SQL. Embedded SQL Dynamic SQL

5. CHANGING STRUCTURE AND DATA

MONASH UNIVERSITY. Faculty of Information Technology

D61830GC30. MySQL for Developers. Summary. Introduction. Prerequisites. At Course completion After completing this course, students will be able to:

Scheme G. Sample Test Paper-I

Using TimesTen between your Application and Oracle. between your Application and Oracle. DOAG Conference 2011

Chapter 1. Writing Basic. SQL Statements

In This Lecture. SQL Data Definition SQL SQL. Notes. Non-Procedural Programming. Database Systems Lecture 5 Natasha Alechina

Course -Oracle 10g SQL (Exam Code IZ0-047) Session number Module Topics 1 Retrieving Data Using the SQL SELECT Statement

Transcription:

SQL & PL/SQL Hands on Oracle 11g DB Enterprise Edition Writtent By: Abaid ur Rehman Project Manager +966506220025 ICM Software House

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 2 of 14

IN OUT PARAMETER... 13 Functions... 14 CALL FUNCTION... 14 TRIGGER... 14 Page 3 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 4 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 ; DELETE WHERE SAL < 2000; SELECT ; SELECT ENAME,JOB,SAL ; SELECT ENAME EMPLOYEE,JOB DESIGNATION, SAL SALARY ; SELECT ENAME,JOB,SAL,SAL*.2 BONUS ; SELECT The name of Employee is ENAME ; ORDER BY ENAME; ORDER BY 2; ORDER BY JOB,DEPTNO; ORDER BY JOB DESC,DEPTNO; WHERE SAL < 3000; WHERE SAL > 5000; WHERE DEPTNO = 20; WHERE DEPTNO IN (10,30,40); WHERE SAL BETWEEN 2000 AND 5000; WHERE ENAME LIKE A%; Page 5 of 14

WHERE ENAME LIKE %ALI% ; WHERE JOB = MANAGER AND SAL < 3000; WHERE JOB = CLERK OR SAL > 2000; 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) ; LOWER SELECT LOWER(ENAME ; INITCAP SELECT INITCAP(ENAME) ; LENGTH SELECT LENGTH(ENAME) ; SUBSTR SELECT SUBSTR(ENAME,2,3) ; INSTR SELECT INSTR(ENAME, A ) ; LPAD SELECT LPAD(ENAME,10, ~ ) ; RPAD SELECT RPAD(ENAME,10, ~ ) ; 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 6 of 14

DATE FUNCTIONS ADD_MONTHS SELECT ADD_MONTHS(HIREDATE,10) ; MONTHS_BETWEEN SELECT MONTHS_BETWEEN(SYSDATE,HIREDATE) ; 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 ) ; TO_NUMBER SELECT TO_NUMBER(SUBSTR(HIREDATE,1,2)) ; TO_DATE SELECT TO_DATE( 10-10-04, MM-DD-YY ) FROM DUAL; OTHER FUNCTIONS NVL SELECT NVL(SAL,100) ; DECODE SELECT DECODE(JOB, MANAGER,SAL*.2, CLERK,SAL*.1,SAL*.05) ; Group Functions SUM SELECT SUM(SAL) ; SELECT SUM(SAL) GROUP BY DEPTNO; SELECT SUN(SAL) GROUP BY JOB; AVG SELECT AVG(SAL) GROUP BY DEPTNO; MIN MAX SELECT MIN(SAL) ; SELECT MAX(SAL) ; COUNT SELECT COUNT(*) ; SELECT COUNT(*) GROUP BY JOB; Having Clause SELECT SUM(SAL) GROUP BY JOB HAVING SUM(SAL) > 5000; Page 7 of 14

Joins INNER JOIN SELECT DNAME,ENAME,JOB,SAL,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; OUTER JOIN SELECT DNAME,ENAME,JOB,SAL,DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO; SELF JOIN SELECT A.ENAME MANAGER,A.EMPNO MANAGERID, B.ENAME SUBORDINATE,B.EMPNO SUBORDINATEID A,EMP B WHERE A.EMPNO = B.MGR; Sub-Query Views Sequence WHERE SAL < (SELECT SAL WHERE ENAME = SMITH ); CREATE VIEW ORG_EMP_V AS SELECT A.ENAME MANAGER,A.EMPNO MANAGERID, B.ENAME SUBORDINATE,B.EMPNO SUBORDINATEID A,EMP B WHERE A.EMPNO = B.MGR; 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 Index CREATE SYNONYM E FOR EMP; CREATE INDEX IDX_EMP_ENAME ON EMP(ENAME); Page 8 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 9 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; SELECT * INTO V_EMP WHERE EMPNO = 7788; DBMS_OUTPUT.PUT_LINE(V_EMP.ENAME); DML in PL/SQL SELECT INSERT UPDATE DELETE Declare X number(10); V_EMPNO EMP.EMPNO%TYPE; V_EMP EMP%ROWTYPE; SELECT * INTO V_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 1 WHERE DEPTNO = V_EMP.DEPTNO; Page 10 of 14

Flow Control If condition DECLARE V_EMP EMP%ROWTYPE; SELECT * INTO V_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; Loops Basic loop DECLARE X NUMBER := 1; LOOP X := X +1 ; DBMS_OUTPUT.PUT_LINE(X); EXIT WHEN X = 10; END LOOP; While loop DECLARE X NUMBER := 1; WHILE X < 10 LOOP X := X +1; DBMS_OUTPUT.PUT_LINE(X); END LOOP; For loop FOR I IN 1..10 LOOP DBMS_OUTPUT.PUT_LINE(I): END LOOP; Page 11 of 14

Exceptions DECLARE V_EMP EMP%ROWTYPE; SELECT * INTO V_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 ); Cursor DECLARE V_EMP EMP%ROWTYPE; CURSOR C_EMP IS SELECT * INTO V_EMP WHERE DEPTNO = 10; OPEN C_EMP; LOOP FETCH C_EMP INTO V_EMP; EXIT WHEN C_EMP%NOTFOUND; DBMS_OUTPUT.PUT_LINE(V_EMP.ENAME); END LOOP; Cursor for Loop FOR I IN () LOOP DBMS_OUTPUT.PUT_LINE(I.ENAME); END LOOP; Page 12 of 14

Procedures IN PARAMETER CREATE OR REPLACE PROCEDURE P_EMP(P_EMPNO NUMBER) IS V_ENAME EMP.ENAME%TYPE; SELECT ENAME INTO V_ENAME WHERE EMPNO = P_EMPNO; DBMS_OUTPUT.PUT_LINE(V_ENAME); Call Procedure P_EMP(100); OUT PARAMETER CREATE OR REPLACE PROCEDURE P_EMP(P_EMPNO IN NUMBER, P_ENAME OUT VARCHAR2) IS SELECT ENAME INTO P_ENAME WHERE EMPNO = P_EMPNO; Call Procedure DECLARE X NUMBER; P_EMP(100,X); IN OUT PARAMETER CREATE OR REPLACE PROCEDURE P_EMP(P_EMPNO_SAL IN OUT NUMBER) IS SELECT SAL INTO P_EMPNO_SAL WHERE EMPNO = P_EMPNO_SAL; DECLARE X NUMBER := 100; P_EMP(X); Page 13 of 14

Functions CREATE OR REPLACE FUNCTION F_EMP(P_EMPNO IN NUMBER) RETURN VARCHAR2 IS V_EMP EMP%ROWTYPE; SELECT ENAME INTO P_ENAME WHERE EMPNO = P_EMPNO; 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 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 WHERE EMPNO = :O.EMPNO; END IF; Page 14 of 14