You are on page 1of 12

Oracle versions Oracle -6.0 Not a client server technology. Oracle-7.x Client server Technology (7.0/7.1/7.2/7.

3)

Oracle 8.0
Object Oriented RDBMS Supports OOPS concepts Oracle 8.1 Supports Internet Technology Java is inbuilt Supports to execute Java Scripts. Oracle 9.1 Supports Advanced Features of web technologies - Supports XML - Improved architecture to support java - MERGE, multiple inserts, change column names, and constrains names, 9i joins, new data functions , new general functions new data types.

SQL:
5 sub-languages. DDL (create, alter, drop) DML(insert, update , delete) DQL/DRL(query and retrieval) (select) DCL(data control Lang) grant , revoke TCL(transaction control language) Used to control dml operations Commit, rollback, save point Maxium number of columns allowed per table 1000 in oracle 8i Special operators Examples; select * from emp where empno=7369 or empno=7654 or empno=7839; Using IN select * from emp where empno in(7838,7788,7782); update emp set sal=sal+sal*.25 where hiredate in('23-jan-82','03-dec-81'); select * from emp where empno not in(7934,7902);

GROUP BY:
When ever an ordinary column retrived along with group functions all the ordinary columns must be specified after GROUPBY clause. select deptno,sum(sal) from emp group by deptno; select deptno,avg(sal) from emp group by deptno; select job,count(*), sum(sal),min(sal),max(sal),avg(sal) from emp where deptno=30 group by job

ORDER BY
Used to arrange data in ascending or descending default is ascending. select ename,job,sal from emp order by ename; select ename,job,sal from emp order by ename desc

JOINS
Used to retrive data from more than one table at a time 4 types Equi Join: Based on equality condition tables are joined Tables must have common column between them If N tables are joined then N-1 condition required Ex select empno,ename,job,sal,emp.deptno,dname,loc from emp,dept where emp.deptno=dept.deptno order by deptno; Non-equi Joins: Data can be retrieved from more than one table without any join condition. Select empno,ename,emp.deptno,dname,loc from dept,emp; Output 56 rows or 60 OUTER JOINS Used to retrieve all rows from 1 table even if condition is not satisfied but matching rows from outer table. select empno,ename,emp.deptno,dname,loc from emp,dept where emp.deptno=dept.deptno SELF JOINS Joining a table to itself Display the who is manager and who is subordinate select w.ename "subordinate", m.ename "superior" from emp w,emp m where w.mgr=m.empno

SET OPERATORS
Used to join the output of select statements

Select statements must have equal number of columns and similar data type columns 4 TYPES UNION ALL: Output of Q1+output of Q2- duplicate rows UNION Output of Q1 and q2 Intersection Output Common in both queries Minus Output of query 1 output of q2 rows uniqe to query one

CURSORS
THE AREA OF MEMORY ALOCATED BY ORACLE TO PROCESS SQL STATEMENTS IS CALLED CONTEXT AREA OR PRIVATE SQL AREA.

Or It is a temporary memory used to hold transactional data Valid in PLSQL blockvBased on select statementvCannot be reused

Explicit Cursors : created automatically when DML is performed(created by user)


Adv: used to manipulate more than one record in a plsql script Syntax Cursor <cursor name> is <select statement>
NECESSARY STEPS REQURIED TO PROCESS EXPLICIT CURSOR: 1) DECLARE CURSOR. CURSOR <CURSOR_NAME> IS <SELECT STMT>; 2)OPEN CURSOR FOR QUERY. OPEN <CURSOR_NAME>; 3)FETCH RECORDS FROM THE CURSOR. FETCH <CURSOR_NAME> INTO <VARIABLE_LIST>; 4)CLOSING THE CURSOR. CLOSE <CURSOR_NAME>;

Implicit cursors:

THIS CURSOR IS AUTOMATICALLY OPEND BY THE SERVER WHILE PERFORMING DML OPERATIONS. CURSOR ATRIBUTES ARE USED TO KNOW THE STATUS OF THE CURSOR. 1).CURSOR_NAME%FOUND->RETURNS TRUE IF CURSOR WILL HAVE RECORDS. 2).CURSOR_NAME%NOTFOUND->RETURNS TRUE IF CURSOR WILL NOT HAVE ANY RECORDS. 3).CURSOR_NAME%ISOPEN->RETURNS TRUE IF CURSOR IS OPEN. 4).CURSOR_NAME%ROWCOUNT->RETURNS THE NO OF ROWS FETCHED BY THE CURSOR. 5).CURSOR_NAME%BULK_ROWCOUNT->IT IS USED FOR ARRAY FETCHES(OR BULK BINDING). ALL CURSORS ARE CLASSIFIED INTO 2 TYPES 1)STATIC CURSOR 2)DYNAMIC CURSOR OR REF CURSOR. STATIC CURSOR:

THE CURSOR ALLWAYS ASSOCIATED WITH SINGLE SELECT STMT.i,e THE SELECT STMT ASSOCIATED WITH CURSOR NOT CHANGES AT RUN TIME. DYNAMIC CURSORS: CURSOR ASSOCIATED WITH DIFFRENT QUERIES AT RUN TIME.

Normalisation:
Normalization is the process of refining the data model built by the Entity-Relationship diagram. The Normalization technique, logically groups the data over a number of tables, with minimum redundancy of data. The entities or tables resulting from Normalization contain data items, with relationships being represented by replication of key data item. First Normal Form (1NF) ----------------------- Identify repeating groups of fields Remove repeating groups to a separate table Identify the keys for the tables Key of parent table is brought as part of the concatenated key of the Second Normal Form (2NF) ------------------------Check if all fields are dependent on the whole key Remove fields that depend on part of the key Group partially-dependent fields as a separate table Identify keys (s) to the table (s) Third Normal form (3 NF) -------------------------Remove fields that Depend on other non-key attribute Can be calculated or derived from logic Group interdependent fields as separate table, identify the key and name the table

second table

Need for Normalization ---------------------- Improves database design Ensures minimum redundancy of data Reduces need to reorganize data when design is modified/enhanced Remove anomalies for database activities

INDEXES
--------INDEXES IN ORACLE ARE SIMILAR TO INDEX IN A BOOK.
-INDEXES ARE MAINLY USED TO IMPROVE THE DATA RETRIVING PERFORMANCE. -INDEXES WILL OCCUPY SAME SPACE IN ADDITION TO THE SPACE OCCUPIED BY THE TABLE. GENERALLY CREATE FOR COLUMNS: -----------------------------PRIMARY KEY COLUMNS.

-FOREIGN KEY COLUMNS THAT ARE FREQUENTLY USED. -COLUMNS USED IN WHERE CLAUSE. SYNTAX: CREATE INDEX <INDEX NAME> ON <TABLE(COL)>;

UNIQUE INDEX:
-----------------------AN INDEX CREATED WITH UNIQUE CONSTRAINT IS CALLED UNIQUE INDEX. -IT WILL NOT ALLOW DUBLICATE VALUES.

COMPOSITE INDEX:
-IF MORE THAN ONE COLUMN OF A TABLE IS DECLARED AS UNIQ INDEX COLUMN THAN THAT INDEX IS CALLED COMOSITE INDEX. -CREATE UNIQU INDEX <IN NAM> ON <TAB(COL1,COL2)

CLUSTERS:
-IT IS A DATABASE OBJECT -IT IS THE SET OF TABLES PHYSICALLY STORED TOGETHER AS A SINGLE TABLE. -THESE ARE MAINLY USED TO IMPROVE THE PERFORMANCE OF MASTER DETAIL TABLES -CLUSTERS CANNOT BE CREATED FOR EXISTING TABLES - CLUSTER SHOULD BE ADDED AT THE TIME OF CREATING TABLE . -CLUSTER HOLDS THE COMMON COLUMNS SHARED BY THE TWO TABLES.

SUB QUERIES:
-A SELECT STATMENT IN ANOTHER SELECT STATMENT. -IN A SUB QUERY FIRST INNER QUERY EXECUTES -BASED ON INNER QUERIES OUTPUT OUTER QUERY WILL EXECUTES. -SUB QUERY CAN BE BASED ON SAME TABLE OR DIFFERENT TABLES -GENERALLY INNER QUERY WILL BE IN THE WHERE CLAUSE OF A SELECT STATMENT. -DATATYPE OF THE INNER QUERY MUST MATCH WITH THE DATATYPE OF THE COLUMN IN WHERE CONDITION. SYNTAX: -SELECT <COL LIST> FROM <TABLE NAME> WHERE <COL NAME>= (SELECT <COL NAME> FROM <TABLE NAME>) U CAN USE THE SUB QUERY IN : -WHERE CLAUSE. -HAVING CLAUSE. -FROM CLAUSE. -THERE ARE TWO TYPES OF SUBQUERIES: 1)SINGLE ROW SUB QUERY. -RETURNS ONLY ONE ROW. 2)MULTI ROW SUB QUERY. -RETURNS MORE THAN ONE ROW.

Example;
SELECT * FROM EMP WHERE DEPTNO=10 AND EXISTS (SELECT COUNT(*) FROM EMP WHERE DEPTNO=10 GROUP BY DEPTNO

HAVING COUNT(*)>3);

Correlated Subquery:
-A correlated sub query is a nested subquery, which is executed once for each candidate row, considered by the main query and which on execution uses a value from a column in the outer query. -In a correlated subquery, the column value used in inner sub query refers to the column value present in the outer query forming a corrected subquery. -The subquery is executed, once for each row of the main (outer) query table. A correlated subquery answers a multiple-part question whose answer depends on the value in each row processed by the parent statement. Examples
TO DISPLAY THE FIRST HIGHEST SALARY FROM EMPLOYEE TABLE. SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE (SELECT COUNT(*) FROM EMP E WHERE EMP.SAL<E.SAL);

SYNONYM:
-IT IS AN ALIAS NAME TO A TABLE OR VIEW; -IT HIDES THE ORIGINAL OWNER NAME,TABLE NAME; TYPES OF SYNONYMS: ------------------1 PRIVATE SYNONYM -THESE SYNONYM CREATED BY THE USER IS CALLED PRIVATE SYNONYM. -WHEN SYNONYM IS DROPED TABLE IS SAFE. -ONLY OWNER CAN DROP THE SYNONYM. SYNTAX: -CREATE SYNONYM <SYNONYM NAME> FOR <TABLE NAME> 2) PUBLIC SYNONYM: -THIS IS CREATED BY THE DBA. SYNTAX: -CREAET PUBLIC SYNONYM <SY_N> FOR <T_N>.

SEQUENCE:
---------IT IS A DATABASE OBJECT USED TO GENERATE THE SERIAL NUMBER AUTOMATICALY/IMPLICITLY. -IT IS NOT RELATED TO A TABLE. -NEXTVAL,CURRVAL ARE THE TWO PSEUDO COLUMNS ASSOCIATED WITH A SEQUENCE. -PSEUDO COLUMNS ARE NOT CREATE BY THE USER BUT USE THEM IN SELECT STATMENT. SYNTAX: -CREAE SEQUENCE <SEQUENCE NAME> INCREMENT BY N START WITH N [MAXVALUE N][MINVALUE N] [CYCLE/NO CYCLE].

CONSTRAINTS:
-------------IT IS A MECHANISM USED BY ORACLE TO CONTROL THE UNWANTEd OR INVALID DATA FLOWING INTO THE TABLE. -CONSTRAINTS ENFORCE RULES AT THE TABLE LEVEL. -CONSTRAINTS PREVENT THE DELETION OF A TABEL IF THERE ARE DEPENDENCIES. 1)COLUMN LEVEL: -CONSTRAINTS ARE ADDED IMEDIATLY AFTER DEFINING THE COLUMN. -ONLY ONE PRIMARY KEY CONSTRAINT COLUMN IS ALLOWED FOR THE TABLE. EG: ON CLUMN LEVEL CONSTRAINTS: -----------------------------CREATE TABLE DEPT(DEPTNO NUMBER(5) PRIMARY KEY,DNAME VARCHAR2(20) NOT NULL UNIQUE,LOC VARCHAR2(10) DEFAULT 'HYD'); 2)TABLE LEVEL CONSTRAINTS: -CONSTRAINTS ARE ADDED AFTER DECLARING ALL THE COLUMNS. -CONSTRAINTS ARE ADDED FOR EXISTING TABLES. -HERE MORE THAN ONE COLUMN PER TABLE CAN BE DECLARED AS PRIMARY KEY OR FORIEGN KEY COLUMNS. -DEFAULT &NOT NULL CONSTRAINTS ARE NOT VAILIED IN TABLE LEVEL.

Example
TABLE LEVEL CONSTRAINTS: ----------------------CREATE TABLE DEPT(DEPTNO NUMBER(5),DNAME VARCHAR2(20),LOC VARCHAR2(10),CONSTRAINT DEPT_DEPTNO_PK PRIMARY KEY(DEPTNO),CONSTRAINT DEPT_DNM_UNIQUE UNIQUE(DNAME));

VIEWS:
-IT IS A LOGICAL TABLE BASED ON A TABLE OR A VIEW. -VEIW WILL NOT HOLD ANY DATA OF ITS OWN.IT IS JUST LIKE A WINDOW THROUGH WHICH WE CAN VIEW THE DATA IN THE TABLE. -VIEW IS STORED IN DATA DICTONARY IN THE FORM OF SELECT STATMENT. WHY WE USE VIEWS: ----------------TO RESTRICT DATA ACCESS -TO MAKE COMPLEX QUERIES EASY -TO PROVIDE DATA INDEPENDENCE -TO PRESENT DIFFERENT VIEWS OF THE SAME DATA TYPES OF VIEWS: ---------------1)SIMPLE VIEW 2)COMPLEX VIEW 3)IN LINE VIEW 4)MATERALISED VIEW

SIMPLE VIEW: -A VIEW BASED ON A SINGLE TABLE IS CALLED SIMPLE VIEW. -IT WILL NOT HAVE ANY ARTHEMATIC EXPRESSIONS AND GROUP FUNTIONS. -ALL DML OPERATIONS ARE ALLOWED ON SIMPLE VIEW. COMPLEX VIEW: A VIEW BASED ON ARTHEMATIC EXPRESSIONS OR GROUP FUNTIONS OR MORE THAN ONE TABLE IS CALLED A COMPLEX VIEW.

Inline views: Inline View is basically a sub query with an alias that you can use like a view inside a SQL statement. It is not a schema object like normal views. Materialized Views: A materialized view is a database object that contains the results of a query. Need for Materialized Views: -Materialized views are used in data warehouses so as to increase the speed of queries on very large databases. In large databases, the queries often involve joins between tables and aggregation like SUM etc. Since the database involved in most of the data warehouses are large, the operations of joins and aggregation are very expensive as far time and processing power are concerned. Materialized views can be accessed directly using the SQL statement.

PL/SQL(PROCEDURAL LANGUAGE/SQL)
-PL/SQL (Procedural Language / SQL) is an extension to non procedural SQL. -It includes many features and designs of programming languages. -It combines the data manipulating power of SQL with the data processing power of procedural languages. -The PL/SQL engine resides within the Oracle server. -PL/SQL is a power traction processing language.

ADVANTAGES of PL/SQL:
-SUPPORTS VARIABLE DECLARATION TO HOLD THE DATA.
-CONDITIONAL STATMENTS ARE ALLOWED TO MODIFY THE DATA BASED ON CONDITION. -MULTIPLE STATMENTS CAN BE EXECUTED REPEATEDLY USING ITERATION CONTROL STATMENTS. -SUPPORTS MODULARITY & REVERSABLITY THROUGH SUB-PROGRAMS(PROCEDURES&FUNTIONS) PL/SQL BLOCK STRUCTURE: ----------------------1).DECLARATIVE PART (declare) 2).EXECUTABLE PART (begin) 3).EXCEPTION HANDLING PART (exception)

EXCEPTIONS:
EXCEPTION IS A WAY TO HANDLE ERRORS GENERATED IN A QUERY 8

----------ALL PL/SQL ERRORS ARE CLASSIFIED INTO TWO TYPES 1).COMPILE TIME ERRORS. 2).RUN TIME ERRORS. COMPILE TIME ERRORS: THERE ARE REPORTED BY PL/SQL COMPILE TIME ENGINE. USER HAS TO CORRECT THESE ERRORS. RUN TIME ERRORS: THESE ARE REPORTED BY PL/SQL RUN TIME ENGIN. PROGRAMATICALLY EXCEPTIONS ARE RAISED AND CAUGHT BY THE EXCEPTION HANDLERS. THERE ARE TWO TYPES OF EXCEPTIONS: 1)PREDEFINED EXCEPTIONS ORACLE HAS SEVERAL PREDEFINED EXCEPTIONS THAT CORRESPONDS TO MOST COMMON ERRORS AT RUN TIME. 2)USER DEFINED EXCEPTIONS THE EXCEPTIONS ARE CREATED BY THE USER ARE CALLED USER DEFINED EXCEPTIONS. -USER HAS TO DECLARE,RAISE&HANDLE THE USER DEFINED EXCEPTIONS.

Advantages of Exceptions: Without exception handling, every time a command is issued a check must be made for execution errors. With exceptions, errors are handled conveniently without the need to code multiple checks. Exception improve readability by isolating error handling routines. Exception improves reliability. One need not worry about checking for an error at every it might occur. If a PL/SQL block contains an exception handler, and if an exception is ever raised in that block, the exception handler will handle the exception. Helps successful execution of a block called from another PL/SQL block.

SUB PROGRAMS:
PROCEDURED & FUNCTIONS ARE COLLECTIVELY KNOWN AS SUB PROGRAMS.

Generally, we use a procedure to perform an action and a function to compute a value. In addition, subprograms promote reusability and maintainability. Once validated, a subprogram can be used with confidence in any number of applications.

PROCEDURES:
-PROCEDURE IS A NAMED PL/SQL BLOCK,THAT TAKES PARAMETES & PERFORM A TASK.

-Generally, we use a procedure to perform an action -The procedure body begins with the keyword IS (or AS) and ends with the keyword END followed by an optional procedure name.
PROCEDURE WILL RETURN VALUE EXPLICITLY. IT WILL NOT HAVE RETURN CLAUSE & RETURN STMT. -IT MAY OR MAY NOT RETURN A VALUE. -IT CANNOT BE CALLED FROM SELECT STMT.

The procedure body has three parts: a declarative part, an executable part, and an optional exception-handling part.
A PROCEDURE CAN BE CALLED FROM: 1) SQL PROMPT 2) ANONYMOS BLOCK 3) FROM PROCEDURE 4) FUNCTION 5) TRIGGER EXAMPLE CREATE OR REPLACE PROCEDURE NET_SAL (VNO NUMBER,NET OUT NUMBER) IS VSAL EMP.SAL%TYPE; VCOMM EMP.COMM%TYPE; BEGIN SELECT SAL,COMM INTO VSAL,VCOMM FROM EMP WHERE EMPNO=VNO; NET:=SAL+NVL(COMM,0); END;

FUNCTIONS
-FUNCTION IS A NAMED PL/SQL BLOCK ,THAT TAKES PARAMETERS AND RETURNS A VALUE TO THE CALLING ENVIRONMENT. -LIKE PROCEDURES FUNTION WILL HAVE HEADER,DECLARATIVE PART,EXCEPTION PART. -FUNTION SHOULD HAVE 'RETURN' CLAUSE IN HEADER AND 'RETURN' STMT IN EXECUTABLE SECTION. -FUNTION WILL IMPLICITLY RETURNS THE VALUE IT SHOULD HAVE RETURN CLAUSE IN HEADER AND RETURN STMT IN EXECUTABLE SECTION -IT SHOULD RETURN A VALUE -IT CAN BE CALLED FROM SELECT STMT.

Example
CREATE OR REPLACE FUNCTION PROD_NUM(A NUMBER,B NUMBER) RETURN NUMBER IS C NUMBER; BEGIN C:=A*B; RETURN(C); END;

TRIGGERS
A database trigger is a stored subprogram associated with a database table, view which fires automatically or implictly when ever an event occures. events means -DML operations. TYPES OF TRIGGERS: 1).DML TRIGGERS. 2).INSTEAD OF TRIGGERS. 3).SYSTEM TRIGGERS.

10

DML TRIGGERS: -THIS TRIGGERS FIRES WITH DML OPERATIONS INSTEAD OF TRIGGERS: -INSTEAD OF triggers can

be defined for all DML operations on a view built on a

table.
-INSTEAD OF TRIGGERS WILL EXECUTE THE BLOCK PRESTENT THAT TRIGGER INSTEAD OF DOING THE SPECIFIED TASK. INSTEAD OF TRIGGERS ARE MAINLY CREATED FOR VIEWS THESE ARE NOT VALID FOR THE TABLES. SYSTEM TRIGGERS: THESE TRIGGERS FIRE WITH SYSTEM RELATED EVENTS SUCH AS DATABASE START UP OR SHUT DOWN RATHER THAN DML OPERATIONS. ROW TYPE TRIGGERS: -ROW TYPE TRIGGER FIRES EACH & EVERY TIME WHEN TABLE IS EFFECTED BY THE TRIGGERING EVENT -ROW TYPE TRIGGER WILL NOT FIRES WHEN TABLE IS NOT AFFECTED BY TRIGGERING EVENT.

Example
WA DATABASE TRIGGER TO STOP ALL OPERATIONS ON KING RECORD? CREATE OR REPLACE TRIGGER KING_STOP BEFORE INSERT OR UPDATE OR DELETE ON EMP FOR EACH ROW BEGIN IF(:NEW.ENAME='KING' OR :OLD.ENAME='KING') THEN RAISE_APPLICATION_ERROR(-20444,'NO OPERATION IS ALLOWED ON KING'); END IF; END; STATMENT TYPE TRIGGERS: THIS TRIGGERS FIRES BEHALF OF THE TRIGGERING EVENT EVEN IF NO ROWS ARE EFFECTED BY THE TRIGGERING EVENT.

PACKAGES:
-PACKAGE IS A PL/SQL CONSTRUCT THAT ALLOWS STORING RELATED OBJECTS TOGETHER. -PACKAGES CONTAINS 1)VARIABLE 2)CURSORS 3)SUBPROGRAMS 4)EXCEPTIONS -EVERY PACKAGE WILL HAVE TWO PARTS 1) PACKAGE SPECIFICATION 2)PACKAGE BODY ADVANTAGES OF PACKAGES: -EASIER APPLICATION DESIGN -OVER LOADING -BETTER PERFORMANCE

Example
DECLARE C NUMBER(5); BEGIN MYPACK.A:=&A; MYPACK.B:=&B; C:=MYPACK.A*MYPACK.B;

11

DBMS_OUTPUT.PUT_LINE('PRODUCT IS : '||C)

Package /OVER LOADING:


IT IS POSSIBLE TO USE TWO DIFFERENT FUNCTIONS OR TWO PROCEDURES WITH SAME NAME &DIFFERENT PARAMETERS FOR DIFFERENT TASKS INSIDE A PACKAGE.THIS CONCEPT IS CALLED THE OVER LOADING.

PSEUDO COLUMNS:
-PSEUDO COLUMNS ARE NOT LIKE AN ORDINARY COLUMNS,BUT THEY ARE EXISTING DUE TO PROPERTY OF ROW. -NO DML OPERATION IS ALLOWED ON PSEUDO COLUMNS. -THEY ARE ONLY USED FOR RETRIVEING PURPOSE. EG: 1) ROWNUM 2) ROWID 3) CURRVAL 4) NEXTVAL 5) LEVEL

ROWNUMBER:
IT IS A SERIAL NUMBER AUTOMATICALLY GENERATED WHEN SELECT STMT RETRIVES DATA FROM DATABASE. IT IS DYNAMICALLY GENERATED NUMBER NOT STORED IN DATABASE PERMENTLY.

ROWID
IT IS A SERIAL NUMBER AUTOMATICALLY GENERATED WHEN AN INSERT STMT INSERTS A RECORD INTO A TABLE. IT IS PERMENANTLY STORED IN THE DATABASE ALONG WITH THE RECORD. IF RECORD IS REMOVED IT WILL ALSO BE REMOVED PERMENTLY.

LEVEL:
For each row returned by a hierarchical query, the LEVEL pseudocolumn returns 1 for a root row, 2 for a child of a root, and so on. A root row is the highest row within an inverted tree. A child row is any nonroot row. A parent row is any row that has children. A leaf row is any row without children.

MERGE:
Merge is a new SQL command specially beneficial for ETL process. This command combines INSERT and UPDATE statement in single statement.(upsert functionally) Commonly used in scd2 Syn: MERGE into <Table> using <Target> ON<fields/condition> WHEN MATCHED THEN <UPDATE> SET statement WHEN NOT MATCHED<INSERT> insert statement

12

You might also like