You are on page 1of 176

P.

SUDHEER REDDY

ORACLE SYLABUS: DATA BASE CONCEPTS:


WHAT IS DATABASE MANAGEMENT SYSTEMS (DBMS). BENEFITS OFDBMS. WHAT IS RELATONAL DATABASE MANAGEMENT SYSTEMS (RDBMS). 12RULES OFDR.E.F.CODDSRULESOFRDBMS. DBMSV/SRDBMS. OBJECTRELATIONALDATABASEMANAGEMENTSYSTEMS.(ORDBMS). RDBMSVSORDBMS. INTRODUCTION TO OODBMS. ORDBMS VS OODBMS. NORMALI ATION. INSTALLATION OF ORACLE !I:

COMPLETE INSTALATION OF ORACLE !I ON MICROSOFT "P. CHANGING THE DEFAULT PASSWORD FOR SYS. POST INSTALLATION STEPS. ACTIVATING/DEACTIVATING THE ORACLE !I ENGINE. DISABLING AUTOMATIC STARTUP. MANUALLY ENABLING THE ORACLE !I SERVICES. CREATING USERS THROUGH THE ENTERPRISE MANAGER. CREATING USER THROUGH S#L$PLUS. CREATING TABLE SPACES THROUGH ENTERPRISE MANAGER. CREATING TABLE SPACES THROUGH S#L$PLUS. INTRODUCTION OF STRUCTURED #UERY LANGUAGE (S#L) AND S#L$PLUS:

FEATURES OF S#L FEATURES OF S#L $ PLUS S#L VS S#L$PLUS RULES FOR S#L. DDL% DRL% DML% TCL% DCL COMMANDS. INTRODUCTION OF IS#L$PLUS:

NEW FEATURE OF ORACLE !I SAME AS S#L$PLUS THAT WILL BE OPNED ONLY IN BROWSER. DATABASE OBJECTS: DATABASE OBJECTS. NAMING CONVENTIONS. THE CREATE TABLE STATEMENT. DISPLAYING TABLE STRUCTURE. THE DEFAULT OPTION. TABLES IN ORACLE DATABASE. #UERYING THE DATA DICTIONARY. DATA TYPES IN ORACLE.

1 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

CREATING TABLE USING SELECT STATEMENT. ADDING%MODIFYING%DROPING COULMNS% SET UNUSED OPTION. DROPING TABLE. CHANGING NAME OF A TABLE. ADDING COMMENTS TO TABLES. INSERTING DATA IN A TABLE:

THE INSERT STATEMENT. ADDING A NEW ROW TO A TABLE. INSERTING ROWS WITH NULL VALUES. INSERTING SPECIFIC DATE VALUES% INSERTING VALUES BY USING SUBSTITUTION VARIABLES. CREATING ROWS FROM ANOTHER TABLE USING SELECT STATEMENT. ORACLE !I INSERT STATEMENTS.: o CONDITIONAL INSERT. o UNCONDITIONAL INSERT. o INSERT FIRST. o PIVOTING INSERT. SELETING DATA IN A TABLE:

SELECT STATEMENT SELETING ALL COLUMNS SELECTING WITH WHERE CLAUSE% COULMN HEADING DEFAULTS. UPDATING DATA IN A TABLE:

THE UPDATE STATEMENT. UPDATING ROWS IN A TABLE. UPDATING ROWS IN A TABLE USING WHERE CLAUSE. UPDATING WITH MULTIPLE&COLUMN SUB#UERY. UPDATING ROWS BASED ON ANOTHER TABLE. UPDATING TWO OR MORE COLUMNS. DELETING DATA IN A TABLE:

THE DELETE STATEMENT. DELETING DATA IN A TABLE. DELETING DATA IN A TABLE BASED ON ANOTHER TABLE. COMMIT AND ROLL BAC' STATEMENTS. TRUNCATE DATA IN A TABLE. DELETE VS TRUNCATE. CONSTRAINTS: WHAT ARE CONSTRAINTS. DEFINING CONSTRAINTS. NOT NULL CONSTRAINT. UNI#UE CONSTRAINT.

2 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

PRIMARY 'EY CONSTRAINT. FOREIGN 'EY CONSTRAINT. FOREIGN 'EY CONSTRAINT WITH ON DELETE CASCADE. FOREIGN 'EY CONSTRAINT WITH ON DELETE SET NULL. CHEC' CONSTRAINT. GIVING CONSTRAINT AT COLUMN LEVEL. GIVINGCONSTRAINTATTABLELEVEL. GIVINGCONSTRAINTAFTERCREATIONOFTABLE. DROPING CONSTRAINTS. DISABLING CONSTRAINTS. ENABLING CONSTRAINTS. CASCADINGCONSTRAINTS. VIEWING CONSTRAINTS. VIEWING THE COLUMNS ASSOCIATED WITH CONSTRAINTS. IMPORTANT OPERATORS AND FUNCTIONS:

WHERE CLAUSE. CHARACTERSTRINGS AND DATES. COMPARISON OPERATORS. BETWEEN OPERATOR. IN OPERATOR. LI'E OPERATOR. NULL OPERATOR. ISNULL OPERATOR. AND OPERATOR. OR OPERATOR. NOT OPERATOR. ARITHMETIC E"PRESSIONS. ARITHMETIC OPERATORS. OPERATOR PRECEDENCE. DEFINING NULL VALUE. NVL FUNCTION. DEFINING A COLUMN ALIASES.. CONCATENATION OPERATOR. DISTINCT FUNCTION. ORDER BY CLAUSE. SORTING BY COLUMN ALIASES. SORTING BY MULTIPLE COLUMNS. S#L FUNCTIONS:

CHARACTER FUNCTIONS. NUMBER FUNCTIONS. DATE FUNCTIONS. E"PLICIT AND IMPLICIT DAAT TYPE CONVERSIONS. TO(NUMBER FUNCTIONS. TO(CHAR FUNCTIONS.

3 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

TO(DATEFUNCTIONS. JULIAN DATE FUNTION. SOME SPECIAL DATE FUNCTIONS. DECODE FUNCTION. SOUNDE". NULLIF NVL2. COALSEC. JOINS:

WHAT IS JOIN. CARTESIAN PRODUCT. E#UI&JOIN. NONE#UI&JOIN. OUTER&JOIN. SELF&JOIN. SET OPERATORS:

UNION ALL. UNION. INTERSECT. MINUS. GROUP FUNCTIONS AND GROUP BY CLAUSE:

WHAT ARE GROUP FUNCTIONS. TYPES OF GROUP FUNCTIONS. CREATING GROUPS OF DATA &GROUP BY CLAUSE. HAVING CLAUSE. ROLL UP OPERATOR. CUBE OPERATOR. SUB#UERIES:

USING SUB #UERIES. TYPEOFSUB #UERIES. SINGLE ROW SUB#UERIES WITH COMPARISON OPERATORS. MULTI ROW SUB#UERIES. ANY. ALL. FINDING 2ND HIGHEST%)RD HIGHEST AND SO ON**.. E"SITS. NOT E"SITS. MULTI&COLUMNSUB#UERIES. SUB#UERIESINFROM CLAUSE. SUB#UERIES IN ORDER BY CLAUSE. HIERARCHICAL DATA ACCESS.START WITH CONNECT BY PRIOR.

4 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

CORRELATED SUB #UERY. S#L$PLUS COMMANDS: SUBSTITUTION VARIABLES. SET VERIFY ON/OFF. + AND ++SUBSTITUTIONVARIABLES. ACCEPT. DEFINE%UNDEFINE COMMANDS. SETCOMMANDVARIABLES. SAVING CUTOMI ATIONS IN LOGIN.S#L. S#L$PLUS EDITING COMMANDS. S#L$PLUS FILE COMMANDS. FORMAT COMMANDS. COLUMN COMMANDS. BREA' COMMAND. TTITLE%BTITLE COMMANDS. CREATING SAMPLE REPORT. VIEWS: WHAT IS VIEW. USES OF VIEWS. CREATING SIMPLE VIEWS. DML THROUGH SIMPLE VIEW. MODIFYING VIEW. VIEWING VIEWS IN DATABASE. CREATING COMPLE" VIEW. RULES FOR DML THROUGH COMPLE" VIES. WITH CHEC' OPTION. WITH READ ONLY. IN LINE VIEWS. ROWNUM COLUMN. FINDING PARTICULAR HIGHEST USING ROWNUM. FINDING FROM " TO Y USING ROWNUM. REMOVING VIEW. SE#UENCES: WHAT IS A SE#UENCE. CREATING SE#UENCES. NE"T VAL AN D CURR VAL STATEMENTS. VIEWING SE#UENCES. USING SE#UENCES FOR GENERATING UNI#UE NUMBER FOR COLUMNS. ALTER A SE#UENCES. REMOVING SE#UENCES. DATABASE TUNING:

5 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

WHAT IS INDE". CREATING INDE". USES OF INDE". OVER VIEW ROWID. WHEN TO CREATE AND WHEN NOT TO CREATE INDE"S. REMOVING INDE"ES. WHAT IS SYNONYMS. CREATING AND REMOVING SYNONYMS. CREATING AND MANAGING CLUSTERS. CREATING AND MANAGING SNAPSHOT. PARTITIONING. TRANSACTIONS:

COMMIT. ROLLBAC'. SAVEPOINT. CONTROLLING USER ACCESS: CONTROLLING USER ACCESS. PRIVILEGES. OBJECT AND SYSTEM PRIVILEGS. HOW TO GRANT AND REVO'E PRIVILEGES.

GRANTING OBJECT AND SYSTEM PRIVILEGES WITH GRANT AND ADMIN OPTIONS.

WHAT IS ROLE. USES AND GRANTING PRIVILEGS TO ROLE. PL ,S#L: (PROCEDURAL LANGUAGE AND STRUCTURED #UERY LANGUAGE): ABOUT PL/S#L. BENEFITS OF PL/S#L. PL/S#L BLOC'S. DECLARING PL/S#L VARIABLES. NAMING%ASSIGNING%VARIABLE INITIALI TION OF VARIABLES. PL/S#L RECORD STRUCTURE. -TYPE%-ROWTYPE%LOBVARIABLES. BIND VARIABLES% REFERENCING NON&PL/S#L VARIABLES. DBMS(OUTPUT.PUT(LINE. COMMENTING CODE. S#L%PL/S#L FUNCTIONS. PROGRAMMING GUIDE LINES. CODE NAMING CONVENTIONS. DETERMING VARIABLE SCOPE. CONTROL STRUCTURES : IF&THEN&ELSE STATEMENTS. BASIC LOOP.

6 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

FOR LOOP. WHILE LOOP CASE STATEMENTS. COMPOSITE DATATYPES: PL/S#L RECORDS. -TYPE. -ROW TYPE. PL/S#L TABLES. WOR'ING WITH IMPLICIT AND E"PLICIT CURSORS: ABOUT CURSORS. CURSOR ATTRIBUTES. S#L-ISOPEN%S#L-FOUND%S#L-NOTFOUND%S#L -ROWCOUNTFORIMPLICITCURSORS. -ISOPEN%-FOUND%-NOTFOUND%-ROWCOUNT FOR E"PLICIT CURSORS. VARIOUS LOOPS IN CURSORS. CURSOR VARIABLES. PARAMETERISED CURSORS. WHERE CURRENT OF CLAUSE. FOR UPDATE CLAUSE. REF CURSORS. CURSORS WITH SUB#UERY. WOR'ING WITH E"CEPTIONS: WHAT IS E"CEPTION. TYPES OF E"CEPTIONS. USER AND PREDEFINED E"CEPTIONS. HANDLING E"CEPTIONS. RAISE&APPLICATION&ERROR E"CEPTION(INIT. S#LCODE. S#LERRM. PL/S#L SECURITY: ORACLE DEFAULT LOC'ING. TYPES OF LOC'S. LEVEL OF LOC'S. E"PLICIT LOC'ING. SELECT FOR UPDATE. READ CONSISTENCY. STORED PROCEDURES: OVERVIEW OF PROCEDURES.

7 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

IMPORTANCE OF STORED PROCEDURES. CREATING PROCEDURES. COMPILING PROCEDURES. CREATING PROCEDURES WITH PARAMETERS. IN%OUT%IN OUT PARAMETERS. DEFAULT OPTION FOR PARAMETERS. FORWARD DECLARATION. OVERLOADING OF PROCEDURE. REMOVING PROCEDURES.

STORED FUNCTIONS: OVERVIEW OF FUNCTIONS. IMPORTANCE OF STORED FUNCTIONS. CREATING FUNCTIONS. RETURN STATEMENT. COMPILING FUNCTIONS REMOVING FUNCTIONS.. COMPARING PROCEDURES AND FUNCTIONS.

PAC'AGES: OVERVIEW OF PAC'AGES. COMPONENTS OF PAC'AGE. IMPORTANCE OF PAC'AGES. CREATING PAC'AGE SPECIFICATION. CREATING PAC'AGE BODY. USER DEFINED PAC'AGES. REFERENCING PAC'AGE OBJECTS. ORACLE SUPPLIED PAC'AGES% GLOBAL VARIABLES. PRAGMA RESTRICT(REFERENCES. E"ECUTE IMMEDIATE. ORACLE BUILT IN PAC'AGES. DBMS(PIPE. DBMS(S#L. DBMS(DDL. DBMS(JOB. DBMS(OUTPUT.

CREATING DATABASE TRIGGERS: OVER VIEW OF TRIGGERS. CREATING AND MANAGINGTRIGGERS. TRIGGER COMPONENTS. FIRING SE#UENCE. INSTEADOFTRIGGER. ENABLING AND DISABLING TRIGGERS% AUDIT&TRAIL USING TRIGGERS.

8 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

PROTECT DATA%REFERENTIAL INTEGRITY. MUTATING TABLE. GENERATION OF PRIMARY 'EY USING TRIGGER. REPLICATE A TABLE. COMPUTE DERIVED VALUES BENEFITS OF TRIGGERS.

MANAGING SUBPROGRAMS AND TRIGGERS: USER(OBJECTS. USER(SOURCE. USER(ERRORS. USER(TRIGGERS. DEBUGGING USING DBMS(OUTPUT.

MANAGING DEPENDENCIES: UNDERSTANDING DEPENDENCIES USER(DEPENDENCIES.

FILE INPUT/OUTPUT: PL/S#L FILE I/O USING UTL&FILE PAC'AGE.

OOPS IN ORACLE !I: CREATION OF OBJECTS. USER DEFINED TYPES. OBJECT TABLES. OBJECT VIEWS. DML THROUGH OBJECTS.

MANIPULATING LARGE OBJECTS: WHAT IS LOB. COLB. BLOB. NCOLB. BFILE. CREATING TABLES WITH LOBS. DBMS(LOB. CREATION OF E"TERNAL TABLES.

WOR'ING WITH COLLECTIONS: VARRAYS. NESTED TABLES. INDE" BY TABLES.

9 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

DML OPERATIONS ON NESTED TABLES.

DEVELOPMENT AND E"ECUTION ENVIRONMENTS: APPLICATION MODELS IN PL/S#L. TWO&TIER%THREETIERMODEL. S#L$PLUS. RAPIDS#L. S#L NAVIGATOR. TOAD. PL/S#LDEVELOPER. S#L,PROGRAMMER. DBPARTNER DEBUGGER. IS#L $ PLUS.

ORACLE DATABASE ARCHITECTURE: OVER VIEW OF ORACLE DATABASE. LOGICAL AND PHYSICAL STRUCTURE.

INTRODUCTION TO INTERNET TECHNOLOGIES: TWO ,TER ARCHITECTURE. THREE&TIER ARCHITECTURE. N&TIER ARCHITECTURE. JAVA OBJECTS IN ORACLE. S#LJ

PROJECT: THE ABOVE TOPICS WILL BE COVERED USING DEFAULT TABLES EMP%DEPT%SALGRADE AND PROJECT BASED STUDY ON BUSSINESS MODEL FOR RETAIL BAN'ING AND SALES ORDER ENTRY SYSTEM. COMPLETE DATABASE OF ABOVE TWO PROJECTS WILL BE PROVIDED. IN GENERAL IF WE WANT TO STORE EMPLOYEE INFORMATION%WE STORE AS SHOWN BELOW:

IN ORACLE WE USE TABLES TO STORE DATA. TABLE CONTAINS COLUMNS AND ROWS. OPENING S#L$ PLUS IN ORACLE . :

10 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

GO TO ALL PROGRAMS AND SELECT ORACLE FOR WINDOWS !/ AND CLIC' S#L$PLUS. YOU GET DIALOG BO". TYPE SCOTT IN USERNAME AND TIGER IN PASSWORD AND PRESS ENTER. YOU GET S#L PROMPT.

OPENING S#L$ PLUS IN ORACLE ! : GO TO ALL PROGRAMS AND SELECT ORACLE&ORAHOME!0 SELECT APPLICATION DEVELOPMENT IN THERE CLIC' S#L PLUS AND TYPE SCOTT IN USER NAME TIGER IN PASSWORD BO".

IN ORACLE . :USER CREATION: HERE IF YOU WANT TO CREATE YOUR OWN USER YOU GO TO ALL PROGRAMS% THERE PERSONAL ORACLE FOR WINDOWS !/ AND ORACLE NAVIGATOR. CLIC' THAT YOU WILL GET WINDOW THERE DOUBLE CLIC' PERSONAL ORACLE . AND DOUBLE CLIC' ON LOCAL DATABASE. YOU SEE DROP DOWN LIST. THERE CLIC' ON USER AND RIGHT CLIC' ON USER AND NEW. YOU GET WINDOW TYPE USERNAME%PASSWORD(TWICE). YOUR USER CREATED. THEN CLIC' S#L$PLUS AS SHOWN ABOVE AND TYPE YOUR USERNAME AND PASSWORD. IN THE ABOVE TABLE WE TA'E EMPNO% ENAME% JOB%MGR%HIREDATE%SAL%COMM% DEPTNO AS COLUMNS IN CREATING TABLE IN ORACLE. CREATION OF TABLE: S#L1CREATE TABLE EMPLOYEE(INFO 2 (EMPNO NUMBER(10)% ) ENAME VARCHAR2(10)% 2 JOB VARCHAR2(10)% / MGR NUMBER(10)% 3 HIREDATE DATE% 4 SAL NUMBER(10)% . COMM NUMBER(10)% !$ DEPTNO NUMBER(10))5 T6789 :;96<9=. IN S#L$PLUS%WE USE CL SCR TO CLEAR SCREEN.

11 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

IN S#L$PLUS%WE TYPE ED AT S#L PROMPT TO GET EDITOR%WE EDIT S#L STATEMENTS THERE. DESCRIBE COMMAND WILL GIVE US WITH WHAT COLUMNS WE CREATED TABLE AND THEIR DATATYPE. S#L1 DESC EMPLOYEE(INFO N6>9 N?88@ TAB9 &&&&&&&&&& &&&&&&&&&&& &&&&&&&&&&&&&&&&&&& EMPNO NUMBER(10) ENAME VARCHAR2(10) JOB VARCHAR2(10) MGR NUMBER(10) HIREDATE DATE SAL NUMBER(10) COMM NUMBER(10) DEPTNO NUMBER(10) INSERTING VALUES IN TO TABLE: S#L1 INSERT INTO EMPLOYEE(INFO 2 VALUES ) (100%CPD6EFC%CCD6E=;6C%NULL%C01&JAN&200/C%)0000%10000%10)5 1 ;GH :;96<9=. WHEN EVER WE WRITE VALUES IN INSERT WE HAVE TO GIVE VALUES FOR ALL COLUMNS. S#L1 INSERT INTO EMPLOYEE(INFO 2 VALUES ) (101%CGAYATRIC%CP.SC%100%C01&JAN&200/C%10000%1000%10)5 1 ;GH :;96<9=. S#L1 INSERT INTO EMPLOYEE(INFO 2 VALUES ) (102%C'UMARIC%CMANAGERC%100%C01&JAN&200/C%10000%1000%10)5 1 ;GH :;96<9=. S#L1 INSERT INTO EMPLOYEE(INFO 2 VALUES ) (10)%CSMITHC%CMANAGERC%100%C01&JAN&200/C%10000%1000%10)5 1 ;GH :;96<9=. IF I WANT TO INSERT INTO ONLY FEW COLUMNS THEN I WILL WRITE LI'E THIS: S#L1 INSERT INTO EMPLOYEE(INFO (EMPNO%ENAME%JOB%DEPTNO) 2 VALUES ) (102%CSMITHC%CMANAGERC%10)5 1 ;GH :;96<9=.

12 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

SELECTING VALUES FROM A TABLE: WHENEVER WE SELECT FROM THE TABLE WE GET COMPLETE INFORMATION IN A TABLE. S#L1 SELECT EMPNO%ENAME%JOB%MGR%HIREDATE%SAL%COMM%DEPTNO FROM EMPLOYEE(INFO5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& 100 PAVAN CHAIRMAN 01&JAN&0/ )0000 10000 10 101 GAYATRI P.S 100 01&JAN&0/ 10000 1000 10 102 'UMARI MANAGER 100 01&JAN&0/ 10000 1000 10 10) SMITH MANAGER 100 01&JAN&0/ 10000 1000 10 2 ;GHI I989:<9=. HERE INSTEAD OF TYPING ALL THE COLUMN NAMES WE TYPE J$K. S#L1 SELECT $ FROM EMPLOYEE(INFO5 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& 100 PAVAN CHAIRMAN 01&JAN&0/ )0000 101 GAYATRI P.S 100 01&JAN&0/ 10000 102 'UMARI MANAGER 100 01&JAN&0/ 10000 10) SMITH MANAGER 100 01&JAN&0/ 10000 2 ;GHI I989:<9=. SELECTING WITH WHERE CLAUSE: WHEN EVER WE SELECT USING WHERE CLAUSE WE GET PARTICULAR INFORMATION DEPENDS ON THE COLUMN YOU SPECIFY IN WHERE CLAUSE. S#L1 SELECT $ FROM EMPLOYEE(INFO 2 WHERE EMPNOL1005 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& 100 PAVAN CHAIRMAN 01&JAN&0/ )0000 10000 10 1 ;GH I989:<9=. S#L1 SELECT $ FROM EMPLOYEE(INFO 2 WHERE ENAMELCGAYATRIC5 EMPNO ENAME JOB MGR HIREDATE SAL COMM &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& 101 GAYATRI P.S 100 01&JAN&0/ 10000 1000 1 ;GH I989:<9=. UPDATE STATEMENT: WHILE UPDATING A TABLE IF YOU DONT GIVE WHERE CLAUSE WHOLE TABLE WILL BE UPDATED. S#L1 UPDATE EMPLOYEE(INFO 2 SET SALL SALM10005 COMM 10000 1000 1000 1000 10 10 10 10 DEPTNO

DEPTNO 10

13 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2 ;GHI ?B=6<9=. S#L1 SELECT $ FROM EMPLOYEE(INFO5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& 100 PAVAN CHAIRMAN 01&JAN&0/ )1000 10000 10 101 GAYATRI P.S 100 01&JAN&0/ 11000 1000 10 102 'UMARI MANAGER 100 01&JAN&0/ 11000 1000 10 10) SMITH MANAGER 100 01&JAN&0/ 11000 1000 10 2 ;GHI I989:<9=. UPDATE TABLE USING WHERE CLAUSE: WHEN EVER WE GIVE WHERE CLAUSE IN UPDATION ONLY THAT COLUMN CORESSPONDING ROWS WILL BE UPDATED. S#L1 UPDATE EMPLOYEE(INFO 2 SET SALL SALM1000 ) WHERE EMPNOL1005 1 ;GH ?B=6<9=. S#L1 SELECT $ FROM EMPLOYEE(INFO5 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& 100 PAVAN CHAIRMAN 01&JAN&0/ )2000 101 GAYATRI P.S 100 01&JAN&0/ 11000 102 'UMARI MANAGER 100 01&JAN&0/ 11000 10) SMITH MANAGER 100 01&JAN&0/ 11000 2 ;GHI I989:<9=. S#L1 UPDATE EMPLOYEE(INFO 2 SET SALL SALM1000 ) WHERE ENAMELCGAYATRIC5 1 ;GH ?B=6<9=. S#L1 SELECT $ FROM EMPLOYEE(INFO5 EMPNO ENAME JOB MGR HIREDATE SAL COMM &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& 100 PAVAN CHAIRMAN 01&JAN&0/ )2000 10000 101 GAYATRI P.S 100 01&JAN&0/ 12000 1000 102 'UMARI MANAGER 100 01&JAN&0/ 11000 1000 10) SMITH MANAGER 100 01&JAN&0/ 11000 1000 2 ;GHI I989:<9=. DELETING DATA FROM A TABLE: IF YOU WANT TO DELETE INFO FROM A TABLE%HERE IF YOU WONT SPECIFY THE WHERE CLAUSE WHOLE TABLE INFO WILL BE DELETED. S#L1 DELETE FROM EMPLOYEE(INFO 2 WHERE EMPNOL1025 1 ;GH =989<9=. S#L1 SELECT $ FROM EMPLOYEE(INFO5 DEPTNO 10 10 10 10

COMM 10000 1000 1000 1000 10 10 10 10

DEPTNO

14 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& 100 PAVAN CHAIRMAN 01&JAN&0/ )2000 10000 10 101 GAYATRI P.S 100 01&JAN&0/ 12000 1000 10 10) SMITH MANAGER 100 01&JAN&0/ 11000 1000 10 ) ;GHI I989:<9=. S#L1 DELETE FROM EMPLOYEE(INFO 2 WHERE ENAMELCSMITHC5 1 ;GH =989<9=. S#L1 SELECT $ FROM EMPLOYEE(INFO5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& 100 PAVAN CHAIRMAN 01&JAN&0/ )2000 10000 10 101 GAYATRI P.S 100 01&JAN&0/ 12000 1000 10 2 ;GHI I989:<9=. HERE IF YOU WANT TO DELETE ALL EMPLOYEES WE USE THIS STATEMENT. IF YOU DONT SPECIFY WHERE IN DELETE COMPLETE TABLE WILL BE DELETED. S#L1 DELETE FROM EMPLOYEE(INFO5 2 ;GHI =989<9=. CREATING TABLE WITH SELECT STATEMENT: IF YOU WANT TO CREATE SAME TABLE AS EMPLOYEE(INFO WITH DATA% WE USE BELOW STATEMENT: CREATE TABLE EMP AS SELECT $ FROM EMPLOYEE(INFO5 HERE EMP TABLE HAS SAME COLUMNS AS THAT OF EMPLOYEE(INFO AND EMP HAS SAME DATA THAT OF EMPLOYEE(INFO.HERE BOTH ARE SAME TABLES. IF YOU WANT TO CREATE TABLE WITH SELETED COLUMNS THAT OF EMPLOYEE(INFO WITH DATA FOR THAT COLUMNS%WE USE BELOW STATEMENT: CREATE TABLE EMP AS SELECT EMPNO%ENAME FROM EMPLOYEE(INFO5 HERE EMP TABLE CREATED WITH EMPNO%ENAME COLUMNS AND DATA FOR THAT COLUMNS FROM EMPLOYEE(INFO TABLE.

15 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

IF YOU WANT TO CREATE TABLE WITH SELETED COLUMNS THAT OF EMPLOYEE(INFO WITH DATA FOR THAT COLUMNS WITH YOUR OWN NAME FOR COLUMNS%WE USE BELOW STATEMENT: CREATE TABLE EMP (EMPLOYEE(NO%EMPLOYEE(NAME) AS SELECT EMPNO%ENAME FROM EMPLOYEE(INFO5 HERE EMP TABLE CREATED WITH COLUMNS EMPNO%ENAME BUT THEIR HEADINGS WILL BE EMPLOYEE(NO%EMPLOYEE(NAME. INSERTING VALUES WITH SELECT STATEMENT: INSERT INTO EMP SELECT $ FROM EMPLOYEE(INFO5 HERE BOTH EMP%EMPLOYEE(INFO TABLES SHOULD HAVE SAME STRUCTURE. MOST IMPORTANT TABLES IN ORACLE DATABASE: IN USER SCOTT WE HAVE THREE IMPORTANT TABLES THOSE ARE EMP DEPT SALGRADE.

DELETE VS TRUNCATE: S#L1 SELECT $ FROM EMPLOYEE(INFO5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&&&&&& &&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&& &&&&&&&&&&& 100 PAVAN CHAIRMAN 01&JAN&0/ )2000 10000 10 101 GAYATRI P.S 100 01&JAN&0/ 12000 1000 10 S#L1 DELETE FROM EMPLOYEE(INFO5 2 ;GHI =989<9=. S#L1 SELECT $ FROM EMPLOYEE(INFO5 EG ;GHI I989:<9= S#L1 ROLL BAC'5 RG8876:N :G>B89<9.

16 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 SELECT $ FROM EMPLOYEE(INFO5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&&&&& &&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&& &&&&&&&&&&&&& 100 PAVAN CHAIRMAN 01&JAN&0/ )2000 10000 10 101 GAYATRI P.S 100 01&JAN&0/ 12000 1000 10 S#L1 DELETE FROM EMPLOYEE(INFO5 2 ;GHI =989<9=. S#L1 COMMIT5 CG>>F< :G>B89<9. S#L1 ROLL BAC'5 RG8876:N :G>B89<9. S#L1 SELECT $ FROM EMPLOYEE(INFO5 EG ;GHI I989:<9= S#L1 INSERT INTO EMPLOYEE(INFO 2 VALUES ) (100%CPAVANC%CCHAIRMANC%NULL%C01&JAN&0/C%)2000%10000%10)5 1 ROW CREATED. S#L1 COMMIT5 COMMIT COMPLETE. S#L1 SELECT $ FROM EMPLOYEE(INFO5 EMPNO ENAME JOB MGR HIREDATE SAL COMM &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& &&&&&&&&& 100 PAVAN CHAIRMAN 01&JAN&0/ )2000 10000 10 S#L1 TRUNCATE TABLE EMPLOYEE(INFO5 TABLE TRUNCATED. S#L1 ROLL BAC'5 ROLLBAC' COMPLETE. S#L1 SELECT $ FROM EMPLOYEE(INFO5 NO ROWS SELECTED IN TRUNCATE TABLE THE WHOLE INFORMATION WIIL BE DELETED PERMENENTLY. BUT IN CASE OF DELETE THE INFORMATION WILL BE GET BAC' AFTER ROLL BAC'. BUT AFTER DELETE IF YOU TYPE COMMIT. THEN INFORMATION WILL BE DELETED PERMENENTLY. DELETE MCOMMIT L TRUNCATE. ORDER BY CLAUSE: DEPTNO

17 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

WE CAN RETRIVE DATA EITHER IN ASCENDING ORDER OR IN DESCENDING ORDER BY USING ORDER BY CLAUSE: FOR RETRIVING DATA IN ASCENDING ORDER: SELECT ENAME % SAL FROM EMP ORDER BY SAL ASC 5 SELECT ENAME % SAL FROM EMP ORDER. ORDER BY SAL 5 DEFAULT IS ASCENDING

FOR RETRIVING DATA IN DESCENDING ORDER: SELECT ENAME%SAL FROM EMP ORDER BY SAL DESC 5 WE CAN RETRIVE ONE PARTICULAR AND SPECIFIC TYPE OF DATA BY USING THE 'EY WORD JLI'E: SELECT ENMAE %JOB%SAL FROM EMP WHERE DEPTNO LI'E 105 SELECT ENAME%SAL%DEPTNO FROM EMP WHERE JOB LI'E J CLER' J 5 WE CAN RETRIVE MORE SPECIFIC DATA BY USING LI'E AND SYMBOLS J - % ( : O -K REPRESENTS GROUP OF CHARACTERS . O(O REPRESENTS SINGLE CHARACTER .

TO GET EMPLOYEES WITH S LETTER IN THE FIRST OF THEIR NAME: SELECT $ FROM EMP WHERE ENAME LI'E J S- 5 TO GET EMPLOYEES WITH S LETTER IN THE LAST OF THEIR NAME: SELECT $ FROM EMP WHERE JOB LI'E J -S 5 TO GET EMPLOYEES WITH S LETTER IN THEIR NAME: SELECT $ FROM EMP WHERE ENAME LI'E J -S- J 5 TO GET EMPLOYEES WITH FOUR LETTERS: SELECT $ FROM EMP WHERE ENAME LI'E J(((( 5 TO GET EMPLOYEES WITH SECOND LETTER JA: S#L1 SELECT $ FROM EMP WHERE ENAME LI'E C(A(((C5

18 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

EMPNO ENAME JOB MGR HIREDATE SAL COMM &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 TO GET EMPLOYEES WITH THIRD LETTER JI: S#L1 SELECT $ FROM EMP WHERE ENAME LI'E C((I((C5

DEPTNO )0

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 TO GET EMPLOYEES WITH THIRD AND FOURTH LETTERS AS JNE: S#L1 SELECT $ FROM EMP WHERE ENAME LI'E C((NE(C5 EMPNO ENAME JOB MGR HIREDATE SAL COMM &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ TO GET EMPLOYEES WITH HIREDATE IN THE YEAR J.1: 1$ SELECT $ FROM EMP WHERE HIREDATE LI'E C-.1C S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 4.)! 'ING PRESIDENT 14&NOV&.1 /000 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 10 ROWS SELECTED. TO GET EMPLOYEES WITH HIREDATE IN THE MONTH JFEB: SELECT $ FROM EMP WHERE HIREDATE LI'E C-FEB-C5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 DEPTNO )0 )0 20 )0 )0 10 10 )0 )0 20 DEPTNO 20

19 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

TO GET EMPLOYEES WITH HIREDATE J&J IN THEIR DATE: 1$ SELECT $ FROM EMP WHERE HIREDATE LI'E C-&-C S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 12 ROWS SELECTED. TO GET EMPLOYEES WITH J . IN LAST IN THEIR EMPNO: 1$ SELECT $ FROM EMP WHERE EMPNO LI'E C-.C S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 DISTINCT: WE CAN SUPPRESS DUPLICATE ROWS WHILE SELECTING DATA BY USING THE 'EY WORD DISTINCT: SELECT DISTINCT (JOB) FROM EMP5 HERE WE GET JOBS WITHOUT DUPLICATES. S#L1 SELECT JOB FROM EMP5 JOB &&&&&&&&& CLER' SALESMAN SALESMAN MANAGER SALESMAN COMM )0 20 DEPTNO

20 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLER' CLER' ANALYST CLER' 12 ;GHI I989:<9=. S#L1 SELECT DISTINCT(JOB) FROM EMP5 JOB &&&&&&&&& ANALYST CLER' MANAGER PRESIDENT SALESMAN CONSTRAINTS: CONSTRAINTS MEAN RESTRICTIONS. IN ORACLE CONSTRAINTS PREVENT INVALID DATA ENTRY INTO TABLES. FOLLOWING ARE THE DIFFERENT TYPES OF CONSTRAINTS:& NOT NULL. UNI#UE. PRIMARY 'EY. FOREIGN 'EY. CHEC'.

NOT NULL: IT DOES NOT ALLOW NULL VALUES INTO COLUMNS. CONSTRAINT AT COLUMN LEVEL: CREATE TABLE EMP ( EMPNO NUMBER (!) NOT NULL% ENAME VARCHAR(!)) 5 S#L1 CREATE TABLE EMPLOYEE 2 (EMPNO NUMBER(10)% ) ENAME VARCHAR2(10))5

21 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

T6789 :;96<9=. S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (1%CPAVANC)5 1 ;GH :;96<9=. 1 INSERT INTO EMPLOYEE 2 VALUES )$ (NULL%C'UMARC) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO EMPLOYEE 2 VALUES )$ ()%NULL) S#L1 / 1 ;GH :;96<9=. S#L1 SELECT $ FROM EMPLOYEE5 EMPNO ENAME &&&&&&&&&& &&&&&&&&&& 1 PAVAN 'UMAR ) IN THE ABOVE OUTPUT ONCE EMPNO IS NULL FOR 'UMAR AND ONCE ENAME IS NULL FOR EMPNO ). THIS 'IND FOR DATA WRONG DATA WE HAVE TO STOP WHILE INSERTING DATA IN TO THE TABLE. FOR THIS WE USE NOT NULL CONSTRAINT ON COLUMNS WHERE U WANT STOP NULL VALUES. DROP TABLE EMPLOYEE5 T6789 =;GBB9=. S#L1 CREATE TABLE EMPLOYEE 2 (EMPNO NUMBER(10) NOT NULL% ) ENAME VARCHAR2(10) NOT NULL)5 T6789 :;96<9=. S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (NULL%C'UMARC)5 INSERT INTO EMPLOYEE $ ERROR 6< 8FE9 1: ORA&01200: :6EEG< FEI9;< NULL FE<G (PSCOTTP.PEMPLOYEEP.PEMPNOP)

22 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 INSERT INTO EMPLOYEE 2 VALUES ) ()%NULL)5 INSERT INTO EMPLOYEE $ ERROR 6< 8FE9 1: ORA&01200: :6EEG< FEI9;< NULL FE<G (PSCOTTP.PEMPLOYEEP.PENAMEP) ABOVE WE 'EPT NOT NULL FOR BOTH EMPNO%ENAME AND TRIED TO INSERT NULL VALUES IN TO BOTH COLUMNS BUT IT HAS NOT ACCEPTED. IF YOU WANT TO MA'E ANY COLUMN TO ENTER VALUE FOR THAT COLUMN COMPLUSORY THEN WE HAVE TO 'EEP NOT NULL FOR THAT COLUMN.

WE CANNOT 'EEP NOT NULL AT THE TIME OF TABLE CREATION AT TABLE LEVEL. WE CAN ADD CONSTRAINT NOT NULL AFTER CREATION OF TABLE. UNI#UE: IT DOES NOT ALLOW DUPLICATE VALUES IN COLUMNS. CONSTRAINT AT COLUMN LEVEL: CREATE TABLE EMP ( EMPNO NUMBER (!) UNI#UE % ENAME VARCHAR(!)) 5 CONSTRAINT AT TABLE LEVEL: CREATE TABLE EMP EMPNO NUMBER (!) % ENAME VARCHAR2(!)% CONSTRAINT EMP(UNI UNI#UE ( EMPNO) 5 S#L1 DROP TABLE EMPLOYEE5 T6789 =;GBB9=. S#L1 CREATE TABLE EMPLOYEE 2 (EMPNO NUMBER(10)% ) ENAME VARCHAR2(10))5 T6789 :;96<9=. S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (1%CPAVANC)5 1 ;GH :;96<9=.

23 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

1 INSERT INTO EMPLOYEE 2 VALUES )$ (1%CPAVANC) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO EMPLOYEE 2 VALUES )$ (2%C'UMARC) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO EMPLOYEE 2 VALUES )$ ()%C'UMARC) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO EMPLOYEE 2 VALUES )$ (1%CPAVANC) S#L1 / 1 ;GH :;96<9=.

1 INSERT INTO EMPLOYEE 2 VALUES )$ (1%CPAVANC) S#L1 / 1 ;GH :;96<9=. S#L1 SELECT $ FROM EMPLOYEE5 EMPNO ENAME &&&&&&&&&& &&&&&&&&&& 1 PAVAN 1 PAVAN 2 'UMAR ) 'UMAR 1 PAVAN 1 PAVAN 3 ;GHI I989:<9=. HERE IF YOU WANT SELECT ONLY PAVANCS RECORD WE HAVE TO #UERY LI'E THIS S#L1 SELECT $ FROM EMPLOYEE WHERE ENAMELCPAVANC5 EMPNO ENAME &&&&&&&&&& &&&&&&&&&&

24 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

1 PAVAN 1 PAVAN 1 PAVAN 1 PAVAN BUT WE WANT PARTICULAR PAVANCS RECORD. HERE IT IS NOT POSSIBLE. THIS IS WRONG DATA ENTERED IN TO THE TABLE. IN REAL TIME WE HAVE SAME NAME EMPLOYEES IN AN ORAGANI ATION% THEN WHAT WE SHOULD DO IS WE GIVE EACH ONE ONE UNI#UE NUMBER THAT IS EMPLOYEE ID. HERE ALSO WE MA'E EMPNO HAS UNI#UE% THAT IS EMPNO COLUMN SHOLD NOT ALLOW US TO ENTER DUPLICATE VALUES. FOR DOING THAT WE USE UNI#UE CONSTRAINT. S#L1 DROP TABLE EMPLOYEE5 T6789 =;GBB9=. S#L1 CREATE TABLE EMPLOYEE 2 (EMPNO NUMBER(10) UNI#UE% ) ENAME VARCHAR2(10))5 T6789 :;96<9=. S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (1%CPAVANC)5 1 ;GH :;96<9=. HERE 1 IS ASSIGNED TO PAVAN% IF FOR ANY EMPLOYEE IF U WANT TO GIVE EMPNO AS 1 IT WONCT ACCEPT. S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (1%CPAVANC)5 INSERT INTO EMPLOYEE $ ERROR 6< 8FE9 1: ORA&00001: ?EFQ?9 :GEI<;6FE< (SCOTT.SYS(C0024/1) RFG86<9= HERE IF YOU TRIES TO ASSIGN SAME NUMBER FOR PAVAN THAT IS WRONG BECAUSE WE 'EPT UNI#UE CONSTRAINT ON EMPNO. IT ACCEPTS IF YOU GIVE 2 FOR NE"T PAVAN. 1 INSERT INTO EMPLOYEE 2 VALUES )$ (2%CPAVANC) S#L1 / 1 ;GH :;96<9=.

25 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

HERE UNI#UE CONSTRAINT HAS PROBLEM. THAT IS IT ALLOWS NULL VALUES. S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (NULL%CPAVANC)5 1 ;GH :;96<9=. S#L1 SELECT $ FROM EMPLOYEE5 EMPNO ENAME &&&&&&&&&& &&&&&&&&&& 1 PAVAN 2 PAVAN PAVAN S#L1 THIS IS WRONG WITH UNI#UE. TO DO ABOVE PROBLEM CORRECTLY WE GO FOR ANOTHER CONSTRAINT CALLED PRIMARY 'EY. WHICH ACTS AS BOTH NOT NULL AND UNI#UE. PRIMARY 'EY: IT DOES NOT ALLOW EITHER NULL VALUES OR DUPLICATE VALUES IN TO THE COLUMNS ( IT SIMULTANEOUSLY FUNCTIONS BOTH AS O NOT NULL O AND O UNI#UE O ) CONSTRAINT AT COLUMN LEVEL: CREATE TABLE EMP ( EMPNO NUMBER (!) PRIMARY 'EY% ENAME VARCHAR2(!)) 5 CONSTRAINT AT TABLE LEVEL: CREATE TABLE EMP (EMPNO NUMBER(!)% ENAME VARCHAR2(!)% DEPTNO NUMBER(!)% CONSTRAINT EMP(P' PRIMARY 'EY (EMPNO)) 5 S#L1 DROP TABLE EMPLOYEE5 T6789 =;GBB9=. S#L1 CREATE TABLE EMPLOYEE 2 (EMPNO NUMBER(10) PRIMARY 'EY% ) ENAME VARCHAR2(10))5 T6789 :;96<9=. S#L1 INSERT INTO EMPLOYEE 2 VALUES

26 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

) (1%CPAVANC)5 1 ;GH :;96<9=. 1 INSERT INTO EMPLOYEE 2 VALUES )$ (1%CPAVANC) S#L1 / INSERT INTO EMPLOYEE $ ERROR 6< 8FE9 1: ORA&00001: ?EFQ?9 :GEI<;6FE< (SCOTT.SYS(C0024/2) RFG86<9= ABOVE IT ACTED AS UNI#UE CONSTRAINT THAT MEANS IT STOPPED DUPLICATE VALUES. S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (NULL%CPAVANC)5 INSERT INTO EMPLOYEE $ ERROR 6< 8FE9 1: ORA&01200: :6EEG< FEI9;< NULL FE<G (PSCOTTP.PEMPLOYEEP.PEMPNOP) OUR PROBLEM SLOVED. HERE WE CAN GIVE NAME FOR CONSTRAINT%IF YOU DONCT GIVE NAME FOR CONSTRAINT SYSTEM WILL AUTOMATICALLY ASSIGNS A UNI#UE NUMBER CALLED SYS(UNI#UE NUMBER. INSERT INTO EMPLOYEE 2 VALUES ) (1%CPAVANC)5 INSERT INTO EMPLOYEE $ ERROR 6< 8FE9 1: ORA&00001: ?EFQ?9 :GEI<;6FE< (SCOTT.SYS(C0024/2) RFG86<9= S#L1 DROP TABLE EMPLOYEE5 T6789 =;GBB9=. S#L1 CREATE TABLE EMPLOYEE 2 (EMPNO NUMBER(10) CONSTRAINT EMPLOYEE(P' PRIMARY 'EY% ) ENAME VARCHAR2(10))5 T6789 :;96<9=. S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (1%CPAVANC)5 1 ;GH :;96<9=. S#L1 INSERT INTO EMPLOYEE

27 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2 VALUES ) (1%CPAVANC)5 INSERT INTO EMPLOYEE $ ERROR 6< 8FE9 1: ORA&00001: ?EFQ?9 :GEI<;6FE< (SCOTT.EMPLOYEE(P') RFG86<9= WE CAN ALSO GIVE PRIMARY 'EY FOR 2 COLUMNS: CREATE TABLE EMP (EMPNO NUMBER(!)% ENAME VARCHAR2(!)% DEPTNO NUMBER(!)% CONSTRAINT EMP(P'1 PRIMARY 'EY (EMPNO%ENAME))5 CHEC' CONSTRAINT: IT IS ALSO CALLED BUSINESS RULE CONSTRAINT. CONSTRAINT AT COLOUMN LEVEL: CREATE TABLE BAN' (ACC(NO NUMBER(!)% NAME VARCHAR2(!)% BALANCE NUMBER(!) CHEC'(BALANCE 1L1000)% ADDRESS VARCHAR2(!))5 CONSTRAINT AT TABLE LEVEL: CREATE TABLE BAN' (ACC(NO NUMBER(!)% NAME VARCHAR2(!)% BALANCE NUMBER(!)% ADDRESS VARCHAR2(!)% CONSTRAINT BAN'(CHE' CHEC'(BALANCE 1L1000))5 S#L1 CREATE TABLE BAN' 2 (ACC(NO NUMBER(10)% ) BALANCE NUMBER(10))5 T6789 :;96<9=. S#L1 INSERT INTO BAN' 2 VALUES ) (1%1000)5 1 ;GH :;96<9=. 1 INSERT INTO BAN' 2 VALUES )$ (2%2000) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO BAN' 2 VALUES )$ ()%/00)

28 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 / 1 ;GH :;96<9=. HERE WE WANT STOP SOME ONE ENTERING BELOW 1000 IN BALANCE COLUMN% FOR THAT WE 'EEP CHEC' CONSTRAINT ON COLUMN BALANCE. S#L1 DROP TABLE BAN'5 T6789 =;GBB9=. S#L1 CREATE TABLE BAN' 2 (ACC(NO NUMBER(10)% ) BALANCE NUMBER(10) CHEC'(BALANCE 1 1000))5 T6789 :;96<9=. S#L1 INSERT INTO BAN' 2 VALUES ) (1%1000)5 INSERT INTO BAN' $ ERROR 6< 8FE9 1: ORA&022!0: :D9:N :GEI<;6FE< (SCOTT.SYS(C0024/.) RFG86<9= S#L1 INSERT INTO BAN' 2 VALUES ) (2%2000)5 1 ;GH :;96<9=. S#L1 INSERT INTO BAN' 2 VALUES ) ()%/00)5 INSERT INTO BAN' $ ERROR 6< 8FE9 1: ORA&022!0: :D9:N :GEI<;6FE< (SCOTT.SYS(C0024/.) RFG86<9= HERE CHEC' CONSTRAINT STOPED US FROM ENTERING BELOW 1000. S#L1 DROP TABLE BAN'5 T6789 =;GBB9=. S#L1 CREATE TABLE BAN' 2 (ACC(NO NUMBER(10)% ) BALANCE NUMBER(10)% 2 CONSTRAINT BAN'(C' CHEC'(BALANCE 1 1000))5 T6789 :;96<9=. S#L1 DROP TABLE BAN'5 T6789 =;GBB9=. S#L1 CREATE TABLE BAN' 2 (ACC(NO NUMBER(10)%

29 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

) BALANCE NUMBER(10))5 T6789 :;96<9=. S#L1 ALTER TABLE BAN' 2 ADD CONSTRAINT BAN'(C' CHEC'(BALANCE 1 1000)5 T6789 68<9;9=. FOREIGN 'EY: FOREIGN 'EY ESTABLISHES RELATIONSHIPS BETWEEN TABLES. A FOREIGN 'EY IS A COLOUMN WHOSE VALUES ARE DERIVED FROM THE PRIMARY 'EY OR UNI#UE 'EY OF SOME OTHER TABLE. CONSTRAINT AT COLOUMN LEVEL: CREATE TABLE EMP (EMPNO NUMBER(!)% ENAME VARCHAR2(!)% DEPTNO NUMBER(!) REFERENCES DEPT(DEPTNO))5 CONSTRAINT AT TABLE LEVEL: CREATE TABLE EMP (EMPNO NUMBER(!)% ENAME VARCHAR2(!)% DEPTNO NUMBER(!)% CONSTRAINT EMP(F' FOREIGN 'EY(DEPTNO) REFERENCES DEPT(DEPTNO))5 NOTE: THE DEPTNO OF DEPT TABLE MUST HAVE PRIMARY 'EY OR UNI#UE 'EY. S#L1 CREATE TABLE EMP1 2 AS ) SELECT $ FROM EMP5 T6789 :;96<9=. S#L1 CREATE TABLE DEPT1 2 AS ) SELECT $ FROM DEPT5 T6789 :;96<9=. S#L1 SELECT $ FROM EMP15 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 42!! ALLEN SALESMAN 43!. 0&FEB&.1 1300 4/21 WARD SALESMAN 43!. 2&FEB&.1 12/0 4/33 JONES MANAGER 4.)! 2&APR&.1 2!4/ 43/2 MARTIN SALESMAN 43!. .&SEP&.1 12/0 43!. BLA'E MANAGER 4.)! 1&MAY&.1 2./0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 44.. SCOTT ANALYST 4/33 !&APR&.4 )000 COMM )00 /00 1200 DEPTNO 20 )0 )0 20 )0 )0 10 20

30 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4.)! 'ING PRESIDENT 4.22 TURNER SALESMAN 4.43 ADAMS CLER' 4!00 JAMES CLER' 4!02 FORD ANALYST 4!)2 MILLER CLER' 12 ;GHI I989:<9=.

43!. 44.. 43!. 4/33 44.2

4&NOV&.1 /000 .&SEP&.1 1/00 )&MAY&.4 1100 0)&DEC&.1 !/0 0)&DEC&.1 )000 2)&JAN&.2 1)00

10 )0 20 )0 20 10

HERE IF I ENTER IN TO EMP1 EMPLOYEES IN DEPTNO /0%30%40 LI'E BELOW 1 INSERT INTO EMP1 2 VALUES )$ (1%CPAVANC%CMANAGERC%4)3!%C01&DEC&.1C%1000%1000%/0) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO EMP1 2 VALUES )$ (2%C'UMARC%CMANAGERC%4)3!%C01&DEC&.1C%1000%1000%30) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO EMP1 2 VALUES )$ ()%CGAYATRIC%CMANAGERC%4)3!%C01&DEC&.1C%1000%1000%40) S#L1 / 1 ;GH :;96<9=. S#L1 SELECT $ FROM EMP15 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 1 PAVAN MANAGER 4)3! 01&DEC&.1 1000 1000 /0 2 'UMAR MANAGER 4)3! 01&DEC&.1 1000 1000 30 ) GAYATRI MANAGER 4)3! 01&DEC&.1 1000 1000 40 14 ;GHI I989:<9=.

31 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

HERE IF U OBSERVE DEPTNO COLUMN IN EMP1 TABLE% IF ANY ONE AS'S WHAT IS THE NAME OF DEPARTMENT NUMBER 20% U WILL #UERY DEPT1 TABLE LI'E THIS S#L1 SELECT $ FROM DEPT5 DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 10 ACCOUNTING NEW YOR' 20 RESEARCH DALLAS )0 SALES CHICAGO 20 OPERATIONS BOSTON AND SAYS RESEARCH IS NAME% NOW U TELL ME WHAT IS THE NAME OF DEPARTMENT /0. HERE CLEALY U CAN SAY THERE IS NO DEPARTMENT NO /0 E"ISTING IN DEPT1 TABLE. THAT IS WE CANNOT FIND OUT THE DNAME FOR DEPTNO /0. THAT IS THIS IS WRONG INFO U ENTERED IN TO EMP1 TABLE. U HAVE TO STOP THIS BY USING FOREIGN 'EY. THAT IS YOU HAVE TO TELL ORACLE THAT BEFORE ACCEPTING A VALUE IN EMP1 TABLE DEPTNO COLUMNYOU PLEASE 'INDLY SEARCH DEPT1 TABLE DEPTNO COLUMN IF ENTERED NUMBER IS THERE IN DEPTNO COLUMN OF DEPT TABLE U ACCEPT THAT NUMBER TO ENTER IN TO EMP1 TABLE DEPTNO COLUMN OTHERWISE RAISE ERROR. HERE WE AS'ING ORACLE TO REFER DEPT1 TABLE DEPTNO THAT IS WHY DEPT1 TABLE IS PARENT TABLE AND EMP1 IS CHILD TABLE. FOR DOING ABOVE THING WE HAVE TO 'EEP FOREIGN 'EY FOR EMP1 TABLE DEPTNO AND PRIMARY 'EY FOR DEPT1 TABLE DEPTNO COLUMN. FIRST U HAVE TO 'EEP PRIMARY 'EY FOR DEPT1 TABLE DEPTNO AND THEN FOREIGN 'EY FOR EMP TABLEDEPTNO LI'E BELOW. S#L1 ALTER TABLE DEPT1 2 ADD CONSTRAINT DEPT1(P' PRIMARY 'EY(DEPTNO)5 T6789 68<9;9=. S#L1 ALTER TABLE EMP1 2 ADD CONSTRAINT EMP1(F' FOREIGN 'EY(DEPTNO) REFERENCES DEPT1(DEPTNO)5 T6789 68<9;9=. S#L1 INSERT INTO EMP1 2 (EMPNO%DEPTNO) ) VALUES 2 (1%/0)5 INSERT INTO EMP1 $ ERROR 6< 8FE9 1:

32 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

ORA&022!1: FE<9S;F<A :GEI<;6FE< (SCOTT.EMP1(F') RFG86<9= & B6;9E< N9A EG< TG?E= 1 INSERT INTO EMP1 2 (EMPNO%DEPTNO) ) VALUES 2$ (1%30) S#L1 / INSERT INTO EMP1 $ ERROR 6< 8FE9 1: ORA&022!1: FE<9S;F<A :GEI<;6FE< (SCOTT.EMP1(F') RFG86<9= & B6;9E< N9A EG< TG?E= HERE IF YOU ENTER OTHER THAN DEPTNO THAT IS E"ISTING IN DEPT TABLE WE GET ERROR.IT WONCT BE ENTERED IN TO EMP1 TABLE. 1 CREATE TABLE EMP1 2 (EMPNO NUMBER(10)% ) ENAME VARCHAR2(10)% 2$ DEPTNO NUMBER(10) REFERENCES DEPT1(DEPTNO)) S#L1 / T6789 :;96<9=. 1 CREATE TABLE EMP11 2 (EMPNO NUMBER(10)% ) ENAME VARCHAR2(10)% 2 DEPTNO NUMBER(10)% /$ CONSTRAINT EMP2(F' FOREIGN 'EY(DEPTNO) REFERENCES DEPT1(DEPTNO)) S#L1 / T6789 :;96<9=. IF YOU DONT GIVE NAMES TO THE CONSTRAINTS SYSTEM WILL AUTOMATICALLY GIVE NAMES E": SYS(UNI#UE NUMBER. IT IS ALWAYS GOOD PRACTICE TO GIVE NAMES TO CONSTRAINTS. WE CAN GIVE CONSTRAINTS AFTER THE CREATION OF THE TABLE ALSO. UNI#UE: ALTER TABLE EMP ADD CONSTRAINT EMP(U' UNI#UE(EMPNO)5 PRIMARY 'EY: ALTER TABLE EMP ADD CONSTRAINT EMP(P' PRIMARY 'EY(EMPNO)5 FOREIGN 'EY: ALTER TABLE EMP

33 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

ADD CONSTRAINT DEPT(DEPTNO)5 CHEC': ALTER TABLE BAN'

EMP(F'

FOREIGN

'EY(DEPTNO)

REFERENCES

ADD CONSTRAINT BAN'(CH CHEC'(BALANCE 1L1000) 5 VIEWING CONSTRAINTS: YOU CAN SEE THE CONSTRAINTS THAT ARE CREATED ON TABLES IN THE ORACLE TABLE CALLED USER(CONSTRAINTS SELECT TABLE(NAME%CONSTRAINT(NAME%CONSTRAINT(TYPE USER(CONSTRAINTS WHERE TABLE(NAMELEMP5 IF YOU WANT TO SEE COLUMNS ASSOCIATED WITH CONSTRAINTS THEN YOU HAVE TO SEE IN USER(CONS(COLUMNS SELECT TABLE(NAME%CONSTRAINT(NAME%COLUMN(NAME USER(CONS(COLUMNS WHERE TABLE(NAMELEMP5 S#L1 CREATE TABLE EMPLOYEE 2 (EMPNO NUMBER(10) CONSTRAINT EMPLOYEE(NN NOT NULL% ) ENAME VARCHAR2(10) CONSTRAINT EMPLOYEE(U' UNI#UE% 2 JOB VARCHAR2(10) CONSTRAINT EMPLOYEE(P' PRIMARY 'EY% / SAL NUMBER(10) CONSTRAINT EMPLOYEE(C' CHEC'(SAL 1 1000)% 3 DEPTNO NUMBER(10) CONSTRAINT EMPLOYEE(F' REFERENCES DEPT(DEPTNO))5 T6789 :;96<9=. 1 SELECT CONSTRAINT(NAME%CONSTRAINT(TYPE%TABLE(NAME FROM USER(CONSTRAINTS 2$ WHERE TABLE(NAMELCEMPLOYEEC S#L1 / CONSTRAINT(NAME C TABLE(NAME &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPLOYEE(NN C EMPLOYEE EMPLOYEE(C' C EMPLOYEE EMPLOYEE(P' P EMPLOYEE EMPLOYEE(U' U EMPLOYEE EMPLOYEE(F' R EMPLOYEE 1 SELECT CONSTRAINT(NAME%COLUMN(NAME%TABLE(NAME FROM USER(CONS(COLUMNS FROM FROM

34 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2$ WHERE TABLE(NAMELCEMPLOYEEC S#L1 / CONSTRAINT(NAME &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& COLUMN(NAME &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& TABLE(NAME &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPLOYEE(C' SAL EMPLOYEE EMPLOYEE(F' DEPTNO EMPLOYEE EMPLOYEE(NN EMPNO EMPLOYEE EMPLOYEE(P' JOB EMPLOYEE EMPLOYEE(U' ENAME EMPLOYEE WE CAN ENABLE AND DISABLE CONSTRAINTS: ALTER TABLE EMP DISABLE CONSTRAINT EMP(P'5 ALTER TABLE EMP DISABLE CONSTRAINT EMP(U'5 ALTER TABLE EMP DISABLE CONSTRAINT EMP(F'5 ALTER TABLE BAN' DISABLE CONSTRAINT BAN'(CH5 IF YOU ENTER CONSTRAINT AGAINST INFORMATION IN TO THE TABLE THEN YOU HAVE TO DELETE THAT INFORMATION THEN ONLY YOU CAN ENABLE THE CONSTRAINT. ALTER TABLE EMP ENABLE CONSTRAINT EMP(P'5 ALTER TABLE EMP ENABLE CONSTRAINT EMP(U'5

35 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

ALTER TABLE EMP ENABLE CONSTRAINT EMP(F'5 ALTER TABLE BAN' ENABLE CONSTRAINT BAN'(CH5 S#L1 CREATE TABLE EMPLOYEE 2 (EMPNO NUMBER(10)% ) ENAME VARCHAR2(10))5 T6789 :;96<9=. S#L1 ALTER TABLE EMPLOYEE 2 ADD CONSTRAINT EMPLOYEE(P' PRIMARY 'EY(EMPNO)5 T6789 68<9;9=. S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (1%CPAVANC)5 1 ;GH :;96<9=. 1 INSERT INTO EMPLOYEE 2 VALUES )$ (1%C'UMARC) S#L1 / INSERT INTO EMPLOYEE $ ERROR 6< 8FE9 1: ORA&00001: ?EFQ?9 :GEI<;6FE< (SCOTT.EMPLOYEE(P') RFG86<9= HERE CONSTRAINT STOPED US ENTERING IN TO TABLE 1 AGAIN FOR EMPNO COLUMN FOR 'UMAR. HERE TABLE HAS NOT ACCEPTED 1 AGAIN FOR EMPNO COLUMN WHICH IS ALREADY ASSIGNED TO PAVAN. NOW I WILL DISABLE PRIMARY 'EY. ALTER TABLE EMPLOYEE DISABLE CONSTRAINT EMPLOYEE(P'5 T6789 68<9;9=. S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (1%C'UMARC)5 1 ;GH :;96<9=. 1 INSERT INTO EMPLOYEE 2 VALUES )$ (1%CGAYATRIC) S#L1 / 1 ;GH :;96<9=. S#L1 SELECT $ FROM EMPLOYEE5 EMPNO ENAME &&&&&&&&&& &&&&&&&&&&

36 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

1 PAVAN 1 'UMAR 1 GAYATRI HERE WHEN EVER I DISABLED CONSTRAINT PRIMARY 'EY ON TABLE IT ALLOWED WRONG INFO. HERE IF I WANT TO ENABLE PRIMARY NOW LI'E THIS S#L1 ALTER TABLE EMPLOYEE 2 ENABLE CONSTRAINT EMPLOYEE(P'5 ALTER TABLE EMPLOYEE $ ERROR 6< 8FE9 1: ORA&022)4: :6EEG< R68F=6<9 (SCOTT.EMPLOYEE(P') & B;F>6;A N9A RFG86<9= HERE WHAT HAPPENED IS THE TABLE CONTAINED WRONG INFO UNLESS YOU DELETE THAT IT WONCT ALLOW YOU TO ENABLE PRIMARY 'EY CONSTRAINT ON TABLE. S#L1 SELECT $ FROM EMPLOYEE5 EMPNO ENAME &&&&&&&&&& &&&&&&&&&& 1 PAVAN 1 'UMAR 1 GAYATRI S#L1 DELETE FROM EMPLOYEE 2 WHERE ENAME IN (C'UMARC%CGAYATRIC)5 2 ;GHI =989<9=. S#L1 ALTER TABLE EMPLOYEE 2 ENABLE CONSTRAINT EMPLOYEE(P'5 T6789 68<9;9=. S#L1 SELECT $ FROM EMPLOYEE5 EMPNO ENAME &&&&&&&&&& &&&&&&&&&& 1 PAVAN S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (1%CPAVANC)5 INSERT INTO EMPLOYEE $ ERROR 6< 8FE9 1: ORA&00001: ?EFQ?9 :GEI<;6FE< (SCOTT.EMPLOYEE(P') RFG86<9= DROPING CONSTRAINTS: ALTER TABLE EMP DROP CONSTRAINT EMP(P'5

37 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

ALTER TABLE EMP DROP CONSTRAINT EMP(U'5 ALTER TABLE EMP DROP CONSTRAINT EMP(F'5 ALTER TABLE BAN' DROP CONSTRAINT BAN'(CH5 FOREIGN 'EY CONSTRAINT DEFINED WITH ON DELETE CASCADE : GENRALLY IF CHILD TABLE HAS FOREIGN 'EY CONSTRAINT%THEN PARENT TABLE DOES NOT ALLOW US TO DELETE THE ROW. BUT IF F'C IS GIVEN WITH ODC%THEN IF WE DELETE THE ROWS IN PARENT TABLE SIMULTANESOLY RESPECTIVE RECORDS IN THE CHILD TABLE ALSO DELETED. ALTER TABLE EMP ADD CONSTRAINT EMP(F' FOREIGN 'EY( DEPTNO ) ( DEPTNO ) ON DELETE CASCADE ; REFERENCES DEPT

FOREIGN 'EY CONSTRAINT DEFINED WITH ON DELETE SET NULL : GENRALLY IF CHILD TABLE HAS FOREIGN 'EY CONSTRAINT%THEN PARENT TABLE DOES NOT ALLOW US TO DELETE THE ROW. BUT IF F'C IS GIVEN WITH ON DELETE SET NULL% THEN IF WE DELETE THE ROWS IN PARENT TABLE SIMULTANESOLY RECORDS IN THE CHILD TABLE WILL NOT BE DELETED ONLY RESPECTIVE COLUMN WILL BE 'EPT NULL. ALTER TABLE EMP ADD CONSTRAINT EMP(F' FOREIGN 'EY (DEPTNO) REFERENCES DEPT (DEPTNO) ON DELETE SET NULL; S#L1 CREATE TABLE EMP100 2 AS ) SELECT $ FROM EMP5 T6789 :;96<9=. S#L1 CREATE TABLE DEPT100 2 AS ) SELECT $ FROM DEPT5 T6789 :;96<9=. S#L1 ALTER TABLE DEPT100 2 ADD CONSTRAINT DEPT100(P' PRIMARY 'EY(DEPTNO)5 T6789 68<9;9=. S#L1 ALTER TABLE EMP100 2 ADD CONSTRAINT EMP100(F' FOREIGN 'EY(DEPTNO) REFERENCES DEPT100(DEPTNO)5 T6789 68<9;9=. NOW IF YOU WANT TO DELETE FROM DEPT100 TABLE IT WONCT ALLOW YOU TO DELETE THE INFO BCO WHENEVER YOU WANT TO DELETE FROM TABLE

38 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

IF IT ACCEPTS THE DELETION THERE ARE SOME PEOPLE WHO ARE WOR'ING IN EMP100 TABLE IN THAT PARTICULAR DEPARTMENT. THEN FOR THOSE EMPLOYEE NO DEPARTMENT NAME.THE WHOLE CONCEPT OF FOREIGN 'EY GOES WRONG.IF YOU WANT TO DELETE ANY INFO FROM DEPT100 TABLE YOU HAVE TO ALTER FOREIGN 'EY ON EMP100 TABLE. S#L1 ALTER TABLE EMP100 2 DROP CONSTRAINT EMP100(F'5 T6789 68<9;9=. S#L1 ALTER TABLE EMP100 2 ADD CONSTRAINT EMP(F' FOREIGN 'EY(DEPTNO) REFERENCES DEPT100(DEPTNO) ON DELETE CASCADE5 T6789 68<9;9=. NOW IF YOU DELETE 10 IN DEPT100 TABLE THE EMPLOYEES WRO'ING IN DEPARTMENT 10 IN EMP100 TABLE ALSO DELETED THEN THERE IS NO PROBLEM. S#L1 SELECT $ FROM DEPT1005 DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 10 ACCOUNTING NEW YOR' 20 RESEARCH DALLAS )0 SALES CHICAGO 20 OPERATIONS BOSTON S#L1 DELETE FROM DEPT100 2 WHERE DEPTNOL105 1 ;GH =989<9=. S#L1 SELECT $ FROM DEPT1005 DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 20 RESEARCH DALLAS )0 SALES CHICAGO 20 OPERATIONS BOSTON S#L1 SELECT $ FROM EMP1005 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 44.. SCOTT ANALYST 4/33 1!&APR&.4 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 4.43 ADAMS CLER' 44.. 2)&MAY&.4 4!00 JAMES CLER' 43!. 0)&DEC&.1 4!02 FORD ANALYST 4/33 0)&DEC&.1 11 ;GHI I989:<9=. 1 ALTER TABLE EMP100 2$ DROP CONSTRAINT EMP(F' COMM .00 )00 /00 1200 2./0 )000 0 1100 !/0 )000 DEPTNO 20 )0 )0 20 )0 )0 20 )0 20 )0 20

39 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 / T6789 68<9;9=. S#L1 ALTER TABLE EMP100 2 ADD CONSTRAINT EMP(F' FOREIGN 'EY(DEPTNO) REFERENCES DEPT100(DEPTNO) ON DELETE SET NULL5 T6789 68<9;9=. S#L1 SELECT $ FROM DEPT1005 DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 20 RESEARCH DALLAS )0 SALES CHICAGO 20 OPERATIONS BOSTON S#L1 DELETE FROM DEPT100 2 WHERE DEPTNOL205 1 ;GH =989<9=. S#L1 SELECT $ FROM DEPT1005 DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& )0 SALES CHICAGO 20 OPERATIONS BOSTON S#L1 SELECT $ FROM EMP1005 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 11 ;GHI I989:<9=. COMM )00 /00 1200 0 DEPTNO )0 )0 )0 )0 )0 )0

HERE ALL THE INFO OF 20 DEPARTMENT WAS NOT DELETED ONLY DEPTNO 20 WAS SET TO NULL. ADDING NOT NULL AFTER CREATION OF THE TABLE: ALTER TABLE EMP MODIFY EMPNO NUMBER(10) CONSTRAINT EMP(NTN NOT NULL5 DROPING NOT NULL AFTER CREATION OF THE TABLE: ALTER TABLE EMP

40 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

MODIFY EMPNO NUMBER(10) CONSTRAINT EMP(NTN NULL5 ADDING COLUMNS AFTER CREATION OF TABLE: ALTER TABLE EMP ADD (ADDRESS VARCHAR2(10)%CITY VARCHAR2(10))5 S#L1 CREATE TABLE EMP1 2 AS ) SELECT $ FROM EMP5 T6789 :;96<9=. S#L1 DESC EMP1 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPNO NUMBER(2) ENAME VARCHAR2(10) JOB VARCHAR2(!) MGR NUMBER(2) HIREDATE DATE SAL NUMBER(4%2) COMM NUMBER(4%2) DEPTNO NUMBER(2) S#L1 ALTER TABLE EMP1 2 ADD ADDRESS VARCHAR2(10)5 T6789 68<9;9=. S#L1 DESC EMP1 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPNO NUMBER(2) ENAME VARCHAR2(10) JOB VARCHAR2(!) MGR NUMBER(2) HIREDATE DATE SAL NUMBER(4%2) COMM NUMBER(4%2) DEPTNO NUMBER(2) ADDRESS VARCHAR2(10) S#L1 ALTER TABLE EMP1 2 ADD (ADDRESS1 VARCHAR2(10)% ADDRESS2 VARCHAR2(10))5 T6789 68<9;9=. S#L1 DESC EMP1 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPNO NUMBER(2) ENAME VARCHAR2(10) JOB VARCHAR2(!) MGR NUMBER(2) HIREDATE DATE SAL NUMBER(4%2) COMM NUMBER(4%2)

41 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

DEPTNO ADDRESS ADDRESS1 ADDRESS2

NUMBER(2) VARCHAR2(10) VARCHAR2(10) VARCHAR2(10)

MODIFYING DATATYPES OF COLUMNS: ALTER TABLE EMP MODIFY EMPNO NUMBER()0)5 WE CANNOT DECREASE DATATYPE OF COLUMNS IF DATA E"SITS. ALTER TABLE EMP MODIFY EMPNO NUMBER(1)5 S#L1 ALTER TABLE EMP1 2 MODIFY EMPNO NUMBER(20)5 T6789 68<9;9=. S#L1 DESC EMP1 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPNO NUMBER(20) ENAME VARCHAR2(10) JOB VARCHAR2(!) MGR NUMBER(2) HIREDATE DATE SAL NUMBER(4%2) COMM NUMBER(4%2) DEPTNO NUMBER(2) 1 ALTER TABLE EMP1 2$ MODIFY EMPNO NUMBER(2) S#L1 / MODIFY EMPNO NUMBER(2) $ ERROR 6< 8FE9 2: ORA&01220: :G8?>E <G 79 >G=FTF9= >?I< 79 9>B<A <G =9:;96I9 B;9:FIFGE G; I:689 DROPING COLUMNS: S#L1 ALTER TABLE EMP1 2 DROP COLUMN ADDRESS5 T6789 68<9;9=. S#L1 ALTER TABLE EMP1 2 DROP COLUMN ADDRESS15 T6789 68<9;9=. S#L1 ALTER TABLE EMP1 2 DROP COLUMN ADDRESS25 T6789 68<9;9=.

42 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 DESC EMP1 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPNO NUMBER(2) ENAME VARCHAR2(10) JOB VARCHAR2(!) MGR NUMBER(2) HIREDATE DATE SAL NUMBER(4%2) COMM NUMBER(4%2) DEPTNO NUMBER(2) GROUP FUNCTIONS: SELECT MA"(SAL)% MIN(SAL)%AVG(SAL)%SUM(SAL)%STDDEV(SAL)%VARIANCE(SAL) FROM EMP5 SELECT COUNT ( $ ) FROM EMP5SELECT COUNT ( DISTINCT DEPTNO ) FROM EMP5 DUAL TABLE: DUAL IS A SYTEM TABLE. WHICH WILL HAVE ONE COLUMN AND ONE ROW. SELECT $ FROM DUAL5 SELECT SYSDATE FROM DUAL5 SELECT 20$20 FROM DUAL5 SELECT USER FROM DUAL5 SELECT USERID FROM DUAL5 1$ SELECT MA"(SAL)% MIN(SAL)% AVG(SAL) % SUM(SAL) FROM EMP S#L1 / MA"(SAL) MIN(SAL) AVG(SAL) SUM(SAL) &&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& /000 .00 204).2122! 2!02/ S#L1 SELECT JOB FROM EMP5 JOB &&&&&&&&& CLER' SALESMAN SALESMAN MANAGER

43 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

SALESMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLER' CLER' ANALYST CLER' 12 ;GHI I989:<9=. S#L1 SELECT DISTINCT(JOB) FROM EMP5 JOB &&&&&&&&& ANALYST CLER' MANAGER PRESIDENT SALESMAN S#L1 SELECT COUNT($) FROM EMP5 COUNT($) &&&&&&&&&& 12 S#L1 SELECT COUNT(DISTINCT(JOB)) FROM EMP5 COUNT(DISTINCT(JOB)) &&&&&&&&&&&&&&&&&&&& / S#L1 SELECT SYSDATE FROM DUAL5 SYSDATE &&&&&&&&& 1!&JUL&0/ S#L1 SELECT SYSTIMESTAMP FROM DUAL5 SYSTIMESTAMP &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1!&JUL&0/ 12.0..11.000001 AM M0/:)0 S#L1 SELECT USER FROM DUAL5 USER &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& SCOTT S#L1 SELECT UID FROM DUAL5

44 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

UID &&&&&&&&&& 33 S#L1 SELECT $ FROM DUAL5 D & " S#L1 DESC DUAL5 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& DUMMY VARCHAR2(1) DUAL IS A SYSTEM TABLE. S#L1 SELECT 2)$ 2) FROM DUAL5 2)$2) &&&&&&&&&& /2! S#L1 SELECT 2$2 FROM DUAL5 2$2 &&&&&&&&&& 2

GROUP FUNCTIONS: AVG % MA" % MIN % SUM % COUNT % STDDEV( STANDERD DEVIATION ) % VARIANCE . COLUMN HEADING DEFAULTS IN S#L$ PLUS: DEFAULT JUSTIFICATION: &&&&LEFT : DATE AND CHARACTER DATA &&&&RIGHT : NUMERIC DATA. DEFAULT DISPLAY :UPPERCASE ARITHMETIC E"PRESSIONS: M ADD && SUBTRACT $ MULTIPLY / DIVIDE SELECT ENAME%SAL%SALM)00%SAL&)00%SAL$)00%SAL/)00 FROM EMP5 S#L1 SELECT SAL%SALM)00%SAL&)00%SAL$)00%SAL/)00 FROM EMP5

45 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

SAL SALM)00 SAL&)00 SAL$)00 SAL/)00 &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& .00 1100 /00 220000 2.33333334 1300 1!00 1)00 2.0000 /.)))))))) 12/0 1//0 !/0 )4/000 2.13333334 2!4/ )24/ 234/ .!2/00 !.!1333334 12/0 1//0 !/0 )4/000 2.13333334 2./0 )1/0 2//0 .//000 !./ 22/0 24/0 21/0 4)/000 ..13333334 )000 ))00 2400 !00000 10 /000 /)00 2400 1/00000 13.3333334 1/00 1.00 1200 2/0000 / 1100 1200 .00 ))0000 ).33333334 !/0 12/0 3/0 2./000 ).13333334 )000 ))00 2400 !00000 10 1)00 1300 1000 )!0000 2.)))))))) 12 ;GHI I989:<9=. OPERATOR PRECEDENCE: $ / M & MULTIPLICATION AND DIVISION TA'E PRIORITY OVER ADDITION AND SUBTRACTION. OPERATORS OF THE SAME PRIORITY ARE EVALUATED FROM LEFT TO RIGHT. PARENTHESESES ARE USED TO FORCE PRIORITI ED EVALUTION. NULL FUNCTION: A NULL IS A VALUE THIS IS UNAVAILABLE%UNASSIGNED%UN'NOWN OR INAPPLICABLE. A NULL IS NOT THE SAME AS ERO OR A BLAN'SPACE. ARITHMETIC E"PRESSIONS CONTAINING A NULL VALUE EVALUATE TO NULL5 S#L1 SELECT $ FROM EMP WHERE MGR IS NULL5 EMPNO ENAME JOB MGR HIREDATE SAL COMM &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4.)! 'ING PRESIDENT 14&NOV&.1 /000 1$ SELECT $ FROM EMP WHERE MGR IS NOT NULL S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 DEPTNO 10

COMM )00 /00 1200

DEPTNO 20 )0 )0 20 )0

46 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

43!. BLA'E 44.2 CLAR' 44.. SCOTT 4.22 TURNER 4.43 ADAMS 4!00 JAMES 4!02 FORD 4!)2 MILLER 1) ;GHI I989:<9=. ANNAUAL SALARY:

MANAGER MANAGER ANALYST SALESMAN CLER' CLER' ANALYST CLER'

4.)! 01&MAY&.1 4.)! 0!&JUN&.1 4/33 1!&APR&.4 43!. 0.&SEP&.1 44.. 2)&MAY&.4 43!. 0)&DEC&.1 4/33 0)&DEC&.1 44.2 2)&JAN&.2

2./0 22/0 )000 1/00 1100 !/0 )000 1)00

)0 10 20 )0 20 )0 20 10

HERE 12 IS FIRST MULTIPLIED BY 100 THEN IT IS ADDED TO SAL THAT IS WRONG. S#L1 SELECT SAL%SALM100 $12 FROM EMP5 SAL SALM100$12 &&&&&&&&&& &&&&&&&&&& .00 2000 1300 2.00 12/0 22/0 2!4/ 214/ 12/0 22/0 2./0 20/0 22/0 )3/0 )000 2200 /000 3200 1/00 2400 1100 2)00 !/0 21/0 )000 2200 1)00 2/00 12 ;GHI I989:<9=. HERE BY PUTTING PARANTHESIS THAT OUT IS CORRECT. 1$ SELECT SAL%(SALM100) $12 FROM EMP S#L1 / SAL (SALM100)$12 &&&&&&&&&& &&&&&&&&&&&& .00 10.00 1300 20200 12/0 13200 2!4/ )3!00 12/0 13200 2./0 )/200 22/0 )0300 )000 )4200 /000 31200 1/00 1!200 1100 12200

47 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

!/0 12300 )000 )4200 1)00 13.00 12 ;GHI I989:<9=. S#L1 SELECT ENAME%SAL%SALMCOMM FROM EMP5 ENAME SAL SALMCOMM &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& SMITH .00 ALLEN 1300 1!00 WARD 12/0 14/0 JONES 2!4/ MARTIN 12/0 23/0 BLA'E 2./0 CLAR' 22/0 SCOTT )000 'ING /000 TURNER 1/00 1/00 ADAMS 1100 JAMES !/0 FORD )000 MILLER 1)00 12 ;GHI I989:<9=. HERE THE SAL M 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. S#L1 SELECT ENAME%SAL%COMM%SALMCOMM FROM EMP5 ENAME SAL COMM SALMCOMM &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& SMITH .00 ALLEN 1300 )00 1!00 WARD 12/0 /00 14/0 JONES 2!4/ MARTIN 12/0 1200 23/0 BLA'E 2./0 CLAR' 22/0 SCOTT )000 'ING /000 TURNER 1/00 0 1/00 ADAMS 1100 JAMES !/0 FORD )000 MILLER 1)00 12 ;GHI I989:<9=. HERE WHENEVER WE USED NVL IT SUBSTITUED J0 IN PLACE OF NULL VALUES. THEN ADDTION WITH 0 RESULTS CORRECT VALUE.

48 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 SELECT ENAME%SAL%NVL(COMM%0)%SALMNVL(COMM%0) FROM EMP5 ENAME SAL NVL(COMM%0) SALMNVL(COMM%0) &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&& &&&&&&&&&&&&&&& SMITH .00 0 .00 ALLEN 1300 )00 1!00 WARD 12/0 /00 14/0 JONES 2!4/ 0 2!4/ MARTIN 12/0 1200 23/0 BLA'E 2./0 0 2./0 CLAR' 22/0 0 22/0 SCOTT )000 0 )000 'ING /000 0 /000 TURNER 1/00 0 1/00 ADAMS 1100 0 1100 JAMES !/0 0 !/0 FORD )000 0 )000 MILLER 1)00 0 1)00 12 ;GHI I989:<9=. 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 .00 ONLY. 1$ SELECT ENAME%SAL%NVL(COMM%0)%SALMNVL(COMM%0)$12 FROM EMP S#L1 / ENAME SAL NVL(COMM%0) SALMNVL(COMM%0)$12 &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&& &&&&&&&&&&&&&&&&&& SMITH .00 0 .00 ALLEN 1300 )00 /200 WARD 12/0 /00 42/0 JONES 2!4/ 0 2!4/ MARTIN 12/0 1200 1.0/0 BLA'E 2./0 0 2./0 CLAR' 22/0 0 22/0 SCOTT )000 0 )000 'ING /000 0 /000 TURNER 1/00 0 1/00 ADAMS 1100 0 1100 JAMES !/0 0 !/0 FORD )000 0 )000 MILLER 1)00 0 1)00 12 ;GHI I989:<9=. WE HAVE TO 'EEP PARANTHESIS FOR CORRECT ANNUAL SALARY. 1$ SELECT ENAME%SAL%NVL(COMM%0)%(SALMNVL(COMM%0))$12 FROM EMP S#L1 / ENAME SAL NVL(COMM%0) (SALMNVL(COMM%0))$12 &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&& &&&&&&&&&&&&&&&&&&&& SMITH .00 0 !300

49 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

ALLEN 1300 WARD 12/0 JONES 2!4/ MARTIN 12/0 BLA'E 2./0 CLAR' 22/0 SCOTT )000 'ING /000 TURNER 1/00 ADAMS 1100 JAMES !/0 FORD )000 MILLER 1)00 12 ;GHI I989:<9=.

)00 /00 0 1200 0 0 0 0 0 0 0 0 0

22.00 21000 )/400 )1.00 )2200 2!200 )3000 30000 1.000 1)200 11200 )3000 1/300

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 EMP5 SELECT ENAME ONAMEK% SAL$12 OANNUAL SALARYK FROM EMP5 SELECT ENAME NAME FROM EMP5 1$ SELECT ENAME%SAL%NVL(COMM%0)%(SALMNVL(COMM%0))$12 PANNUAL SALARYP FROM EMP S#L1 / ENAME SAL NVL(COMM%0) ANNUAL SALARY &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&& &&&&&&&&&&&&& SMITH .00 0 !300 ALLEN 1300 )00 22.00 WARD 12/0 /00 21000 JONES 2!4/ 0 )/400 MARTIN 12/0 1200 )1.00 BLA'E 2./0 0 )2200 CLAR' 22/0 0 2!200 SCOTT )000 0 )3000 'ING /000 0 30000 TURNER 1/00 0 1.000 ADAMS 1100 0 1)200 JAMES !/0 0 11200 FORD )000 0 )3000 MILLER 1)00 0 1/300 12 ;GHI I989:<9=. S#L1 SELECT ENAME%SAL AS SALARY FROM EMP5 ENAME SALARY &&&&&&&&&& &&&&&&&&&&

50 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

SMITH ALLEN 1300 WARD 12/0 JONES 2!4/ MARTIN 12/0 BLA'E 2./0 CLAR' SCOTT )000 'ING /000 TURNER 1/00 ADAMS JAMES FORD )000 MILLER 12 ;GHI I989:<9=.

.00

22/0

1100 !/0 1)00

S#L1 SELECT ENAME%SAL SALARY FROM EMP5 ENAME SALARY &&&&&&&&&& &&&&&&&&&& SMITH .00 ALLEN 1300 WARD 12/0 JONES 2!4/ MARTIN 12/0 BLA'E 2./0 CLAR' 22/0 SCOTT )000 'ING /000 TURNER 1/00 ADAMS 1100 JAMES !/0 FORD )000 MILLER 1)00 12 ;GHI I989:<9=. HERE WE HAD GIVEN GAP FOR COLUMN ALIASING. THAT IS WRONG. FOR CORRECT OUTPUT WE HAVE TO GIVE O O FOR COLUMN ALIASING. S#L1 SELECT ENAME%SAL SALARY OF EMPLOYEE FROM EMP5 SELECT ENAME%SAL SALARY OF EMPLOYEE FROM EMP $ ERROR 6< 8FE9 1: ORA&00!2): FROM N9AHG;= EG< TG?E= HD9;9 9UB9:<9= 1$ SELECT ENAME%SAL PSALARY OF EMPLOYEEP FROM EMP S#L1 / ENAME SALARY OF EMPLOYEE &&&&&&&&&& &&&&&&&&&&&&&&&&&& SMITH .00

51 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

ALLEN WARD JONES MARTIN BLA'E CLAR' SCOTT 'ING TURNER ADAMS JAMES FORD MILLER 12 ;GHI I989:<9=.

1300 12/0 2!4/ 12/0 2./0 22/0 )000 /000 1/00 1100 !/0 )000 1)00

CONCATINATION OPERATOR: SELECT ENAMEVVJOB AS OEMPLOYEESK FROM EMP5 SELECT ENAME VV JIS A VV JOB AS OEMPLOYEE DETAILSK FROM EMP5 S#L1 SELECT ENAME%JOB FROM EMP5 ENAME JOB &&&&&&&&&& &&&&&&&&& SMITH CLER' ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN BLA'E MANAGER CLAR' MANAGER SCOTT ANALYST 'ING PRESIDENT TURNER SALESMAN ADAMS CLER' JAMES CLER' FORD ANALYST MILLER CLER' 12 ;GHI I989:<9=. S#L1 SELECT ENAMEVVJOB FROM EMP5 ENAMEVVJOB &&&&&&&&&&&&&&&&&&& SMITHCLER' ALLENSALESMAN WARDSALESMAN JONESMANAGER MARTINSALESMAN BLA'EMANAGER CLAR'MANAGER SCOTTANALYST

52 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

'INGPRESIDENT TURNERSALESMAN ADAMSCLER' JAMESCLER' FORDANALYST MILLERCLER' 12 ;GHI I989:<9=. 1$ SELECT ENAMEVVC HAS A CVVJOB FROM EMP S#L1 / ENAMEVVCHASACVVJOB &&&&&&&&&&&&&&&&&&&&&&&&&& SMITH HAS A CLER' ALLEN HAS A SALESMAN WARD HAS A SALESMAN JONES HAS A MANAGER MARTIN HAS A SALESMAN BLA'E HAS A MANAGER CLAR' HAS A MANAGER SCOTT HAS A ANALYST 'ING HAS A PRESIDENT TURNER HAS A SALESMAN ADAMS HAS A CLER' JAMES HAS A CLER' FORD HAS A ANALYST MILLER HAS A CLER' 12 ;GHI I989:<9=. 1$ SELECT ENAMEVVC JOB NAME IS CVVJOB FROM EMP S#L1 / ENAMEVVCJOBNAMEISCVVJOB &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& SMITH JOB NAME IS CLER' ALLEN JOB NAME IS SALESMAN WARD JOB NAME IS SALESMAN JONES JOB NAME IS MANAGER MARTIN JOB NAME IS SALESMAN BLA'E JOB NAME IS MANAGER CLAR' JOB NAME IS MANAGER SCOTT JOB NAME IS ANALYST 'ING JOB NAME IS PRESIDENT TURNER JOB NAME IS SALESMAN ADAMS JOB NAME IS CLER' JAMES JOB NAME IS CLER' FORD JOB NAME IS ANALYST MILLER JOB NAME IS CLER' 12 ;GHI I989:<9=. COMPARISON OPERATORS: L 1 1L E#UAL TO GREATER THAN GREATER THAN OR E#UAL TO

53 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

W WL W1

LESS THAN LESS THAN OR E#UAL TO NOT E#UAL TO

SELECT $ FROM EMP WHERE SALWL20005 SELECT $ FROM EMP WHERE SAL1L20005 SELECT $ FROM EMP WHERE SAL W1 20005 SELECT ENAME%SAL FROM EMP WHERE SAL BETWEEN 1000 AND 1/005 S#L1 SELECT $ FROM EMP WHERE SAL W 10005 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 1$ SELECT $ FROM EMP WHERE SAL WL 1000 2 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 COMM 20 )0 DEPTNO

COMM 20 )0

DEPTNO

1$ SELECT $ FROM EMP WHERE SAL 1 1000 S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 12 ;GHI I989:<9=. 1$ SELECT $ FROM EMP WHERE SAL 1L 1000 S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10

54 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4.22 TURNER SALESMAN 4.43 ADAMS CLER' 4!02 FORD ANALYST 4!)2 MILLER CLER' 12 ;GHI I989:<9=.

44.. 4/33 44.2

43!. 0.&SEP&.1 1/00 2)&MAY&.4 1100 0)&DEC&.1 )000 2)&JAN&.2 1)00

)0 20 20 10

1$ SELECT $ FROM EMP WHERE SAL W1 1000 S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 12 ;GHI I989:<9=. 1$ SELECT $ FROM EMP WHERE SAL L!/0 S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0

COMM )0

DEPTNO

S#L1 SELECT $ FROM EMP WHERE SAL BETWEEN 1000 AND 20005 EMPNO ENAME JOB MGR HIREDATE SAL COMM &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 3 ;GHI I989:<9=.

DEPTNO )0 )0 )0 )0 20 10

HERE BOTH 1000 AND 2000 INCLUSIVE IN THE OUTPUT IF THEY E"IST IN THE OUPUT. IN OPERATOR: IF YOU WANT TO SELECT INFO FOR MORE THAN ONE EMPLOYEE YOU CANNOT USE THE FOLLOWING #UERY: SELECT $ FROM EMP WHERE EMPNOL4)3!%44..%4/335

55 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

THE ABOVE #UERY WONT WOR'. TO SLOVE THE ABOVE PROBLEM WE HAVE TO WRITE #UERY LI'E BELOW: SELECT EMPNO%ENAME%SAL%MGR FROM EMP WHERE MGR IN (4!02%4/33%44..)5 THE ABOVE #UERY WILL GIVE THE INFO OF THREE EMPLOYEES. S#L1 SELECT $ FROM EMP WHERE EMPNOL44..5 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 1$ SELECT $ FROM EMP WHERE EMPNOL44..%4)3!%4/33 2 / SELECT $ FROM EMP WHERE EMPNOL44..%4)3!%4/33 $ ERROR 6< 8FE9 1: ORA&00!)): S#L :G>>6E= EG< B;GB9;8A 9E=9= 1$ SELECT $ FROM EMP WHERE EMPNO IN (44..%4)3!%4/33) 2 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 NOT IN OPERATOR: IF YOU DONT WANT TO SEE THOSE EMPLOYEES INFO%YOU 'EEP THEM IN NOT IN CLAUSE. SELECT EMPNO%ENAME%SAL%MGR FROM EMP WHERE MGR NOT IN (4!02%4/33%44..)5 1$ SELECT $ FROM EMP WHERE EMPNO NOT IN (44..%4)3!%4/33) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 11 ;GHI I989:<9=. AND OPERATOR: RE#UIRES BOTH CONDITIONS TO BE TRUE: COMM 20 DEPTNO

56 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

IN ADD OPERATOR IF BOTH CONDITIONS ARE TRUE THEN ONLY RESULT COMES. HERE WE GET INFO ABOUT CLER'S AND WHOSE SALARY 1LTHAN 11005 SELECT EMPNO%ENAME%JOB%SAL FROM EMP WHERE SAL11100 AND JOBLCLER'5 S#L1 SELECT $ FROM EMP 2 WHERE SAL 1 1000 AND JOB L CCLER'C5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 AN D TR UE FA LS E OR OPERATOR: RE#UIRES EITHER CONDITION TO BE TRUE. IN OR OPERATOR IF ONE CONDITION IS TRUE THEN ALSO RESULT COMES. HERE WE GET INFO ABOUT CLER'S AND ALL THE INFO ABOUT EMPLOYEES WHOSE SALARY 1L1100. SELECT EMPNO%ENAME%JOB%SAL FROM EMP WHERE SAL1L1100 OR JOBLCLER'5 1 SELECT $ FROM EMP 2$ WHERE SAL 1 1000 OR JOB L CCLER'C ) / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 4.)! 'ING PRESIDENT 14&NOV&.1 /000 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 TR UE TR UE FA LS E FA LS E FA LS FA LS E

COMM )00 /00 1200

DEPTNO 20 )0 )0 20 )0 )0 10 20 10 )0 20 )0 20

57 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4!)2 MILLER 12 ;GHI I989:<9=.

CLER' OR TR UE FA LS E

44.2 2)&JAN&.2 TR UE TR UE TR UE

1)00 FA LS E TR UE FA LS E

10

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 ANNSAL5 S#L1 SELECT EMPNO%ENAME%JOB%SAL%(SALMNVL(COMM%0)$12) ANSAL FROM EMP5 EMPNO ENAME JOB SAL ANSAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' .00 .00 42!! ALLEN SALESMAN 1300 /200 4/21 WARD SALESMAN 12/0 42/0 4/33 JONES MANAGER 2!4/ 2!4/ 43/2 MARTIN SALESMAN 12/0 1.0/0 43!. BLA'E MANAGER 2./0 2./0 44.2 CLAR' MANAGER 22/0 22/0 44.. SCOTT ANALYST )000 )000 4.)! 'ING PRESIDENT /000 /000 4.22 TURNER SALESMAN 1/00 1/00 4.43 ADAMS CLER' 1100 1100 4!00 JAMES CLER' !/0 !/0 4!02 FORD ANALYST )000 )000 4!)2 MILLER CLER' 1)00 1)00 12 ;GHI I989:<9=. 1$ SELECT EMPNO%ENAME%JOB%SAL%(SALMNVL(COMM%0)$12) ANSAL FROM EMP ORDER BY ANSAL S#L1 / EMPNO ENAME JOB SAL ANSAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' .00 .00 4!00 JAMES CLER' !/0 !/0 4.43 ADAMS CLER' 1100 1100 4!)2 MILLER CLER' 1)00 1)00 4.22 TURNER SALESMAN 1/00 1/00 44.2 CLAR' MANAGER 22/0 22/0 43!. BLA'E MANAGER 2./0 2./0 4/33 JONES MANAGER 2!4/ 2!4/

58 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

44.. SCOTT 4!02 FORD 4.)! 'ING 42!! ALLEN 4/21 WARD 43/2 MARTIN 12 ;GHI I989:<9=.

ANALYST ANALYST PRESIDENT SALESMAN SALESMAN SALESMAN

)000 )000 /000 1300 12/0 12/0

)000 )000 /000 /200 42/0 1.0/0

1$ SELECT EMPNO%ENAME%JOB%SAL%(SALMNVL(COMM%0)$12) ANSAL FROM EMP ORDER BY ANSAL DESC S#L1 / EMPNO ENAME JOB SAL ANSAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 43/2 MARTIN SALESMAN 12/0 1.0/0 4/21 WARD SALESMAN 12/0 42/0 42!! ALLEN SALESMAN 1300 /200 4.)! 'ING PRESIDENT /000 /000 44.. SCOTT ANALYST )000 )000 4!02 FORD ANALYST )000 )000 4/33 JONES MANAGER 2!4/ 2!4/ 43!. BLA'E MANAGER 2./0 2./0 44.2 CLAR' MANAGER 22/0 22/0 4.22 TURNER SALESMAN 1/00 1/00 4!)2 MILLER CLER' 1)00 1)00 4.43 ADAMS CLER' 1100 1100 4!00 JAMES CLER' !/0 !/0 4)3! SMITH CLER' .00 .00 12 ;GHI I989:<9=. WHEN EVER IN INTERVIEW WHEN THEY AS' ABOUT JOINS U HAVE TO E"PLAIN ANSWER WITH EMP%DEPT%SALGRADE TABLES. IT IS VERY DIFFICULT IF YOU TRY TO ANSWER WITH OTHER TABLES. JOINS: USE A JOIN TO #UERY DATA FROM MORE THAN ONE TABLE.WRITE THE JOIN CONDITION IN THE WHERE CLAUSE.PREFI" THE COLUMN NAME WITH THE TABLE NAME WHEN THE SAME COLUMN NAME APPEARS IN MORE THAN ONE TABLE. THERE ARE FIVE TYPES OF JOINS E"ISTS IN ORACLE. CARTESIAN PRODUCT E#UI&JOIN NON&E#UI JOIN OUTER&JOIN.

59 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

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 S#L1 SELECT EMPNO%ENAME%EMP.DEPTNO%DNAME%LOC FROM EMP%DEPT5 EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 ACCOUNTING NEW YOR' 42!! ALLEN )0 ACCOUNTING NEW YOR' 4/21 WARD )0 ACCOUNTING NEW YOR' 4/33 JONES 20 ACCOUNTING NEW YOR' 43/2 MARTIN )0 ACCOUNTING NEW YOR' 43!. BLA'E )0 ACCOUNTING NEW YOR' 44.2 CLAR' 10 ACCOUNTING NEW YOR' 44.. SCOTT 20 ACCOUNTING NEW YOR' 4.)! 'ING 10 ACCOUNTING NEW YOR' 4.22 TURNER )0 ACCOUNTING NEW YOR' 4.43 ADAMS 20 ACCOUNTING NEW YOR' 4!00 JAMES )0 ACCOUNTING NEW YOR' 4!02 FORD 20 ACCOUNTING NEW YOR' 4!)2 MILLER 10 ACCOUNTING NEW YOR' 4)3! SMITH 20 RESEARCH DALLAS 42!! ALLEN )0 RESEARCH DALLAS 4/21 WARD )0 RESEARCH DALLAS 4/33 JONES 20 RESEARCH DALLAS 43/2 MARTIN )0 RESEARCH DALLAS 43!. BLA'E )0 RESEARCH DALLAS 44.2 CLAR' 10 RESEARCH DALLAS 44.. SCOTT 20 RESEARCH DALLAS 4.)! 'ING 10 RESEARCH DALLAS 4.22 TURNER )0 RESEARCH DALLAS 4.43 ADAMS 20 RESEARCH DALLAS 4!00 JAMES )0 RESEARCH DALLAS 4!02 FORD 20 RESEARCH DALLAS EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4!)2 MILLER 10 RESEARCH DALLAS 4)3! SMITH 20 SALES CHICAGO 42!! ALLEN )0 SALES CHICAGO 4/21 WARD )0 SALES CHICAGO 4/33 JONES 20 SALES CHICAGO 43/2 MARTIN )0 SALES CHICAGO 43!. BLA'E )0 SALES CHICAGO 44.2 CLAR' 10 SALES CHICAGO

60 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

44.. SCOTT 4.)! 'ING 4.22 TURNER 4.43 ADAMS 4!00 JAMES 4!02 FORD 4!)2 MILLER 4)3! SMITH 42!! ALLEN 4/21 WARD 4/33 JONES 43/2 MARTIN 43!. BLA'E 44.2 CLAR' 44.. SCOTT 4.)! 'ING 4.22 TURNER 4.43 ADAMS 4!00 JAMES

20 SALES CHICAGO 10 SALES CHICAGO )0 SALES CHICAGO 20 SALES CHICAGO )0 SALES CHICAGO 20 SALES CHICAGO 10 SALES CHICAGO 20 OPERATIONS BOSTON )0 OPERATIONS BOSTON )0 OPERATIONS BOSTON 20 OPERATIONS BOSTON )0 OPERATIONS BOSTON )0 OPERATIONS BOSTON 10 OPERATIONS BOSTON 20 OPERATIONS BOSTON 10 OPERATIONS BOSTON )0 OPERATIONS BOSTON 20 OPERATIONS BOSTON )0 OPERATIONS BOSTON

EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4!02 FORD 20 OPERATIONS BOSTON 4!)2 MILLER 10 OPERATIONS BOSTON /3 ;GHI I989:<9=. HERE WE GET NO OF ROWS IN FIRST TABLE $ NO OF ROWS IN SECOND TABLE AS OUTPUT. WHEN EVER IN INTERVIEW IF THEY AS' ABOUT E"PLAIN OUTPUT U HAVE TO E"PLAIN LI'E THIS: 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. E#UI&JOIN:SIMPLE JOINS OR INNER JOINS: THE RELATIONSHIP BETWEEN EMP AND DEPT TABLE IS A E#UI&JOIN.THAT IS VALUES IN DEPTNO COLUMN ON BOTH TABLES ARE E#UAL. HERE WE GET INFO THAT IS COMMON IN BOTH TABLES. S#L1 SELECT EMPNO%ENAME%DEPTNO%DNAME%LOC FROM EMP%DEPT 2 WHERE EMP.DEPTNOLDEPT.DEPTNO5 SELECT EMPNO%ENAME%DEPTNO%DNAME%LOC FROM EMP%DEPT $ ERROR 6< 8FE9 1: ORA&00!1.: :G8?>E 6>7FS?G?I8A =9TFE9=

61 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

TO SLOVE THAT WE HAVE 'EEP DEPT OR EMP BEFORE DEPTNO%BCO BOTH TABLES HAVE DEPTNO COLUMN. S#L1 SELECT EMPNO%ENAME%EMP.DEPTNO%DNAME%LOC FROM EMP%DEPT 2 WHERE EMP.DEPTNOLDEPT.DEPTNO5 EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH DALLAS 42!! ALLEN )0 SALES CHICAGO 4/21 WARD )0 SALES CHICAGO 4/33 JONES 20 RESEARCH DALLAS 43/2 MARTIN )0 SALES CHICAGO 43!. BLA'E )0 SALES CHICAGO 44.2 CLAR' 10 ACCOUNTING NEW YOR' 44.. SCOTT 20 RESEARCH DALLAS 4.)! 'ING 10 ACCOUNTING NEW YOR' 4.22 TURNER )0 SALES CHICAGO 4.43 ADAMS 20 RESEARCH DALLAS 4!00 JAMES )0 SALES CHICAGO 4!02 FORD 20 RESEARCH DALLAS 4!)2 MILLER 10 ACCOUNTING NEW YOR' 12 ;GHI I989:<9=. TABLE NAME ALIASING: SELECT EMPNO%ENAME%SAL%E.DEPTNO%DNAME%LOC FROM EMP E%DEPT D WHERE E.DEPTNOLD.DEPTNO5 1 SELECT EMPNO%ENAME%E.DEPTNO%DNAME%LOC FROM EMP E%DEPT D 2$ WHERE E.DEPTNOLD.DEPTNO S#L1 / EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH DALLAS 42!! ALLEN )0 SALES CHICAGO 4/21 WARD )0 SALES CHICAGO 4/33 JONES 20 RESEARCH DALLAS 43/2 MARTIN )0 SALES CHICAGO 43!. BLA'E )0 SALES CHICAGO 44.2 CLAR' 10 ACCOUNTING NEW YOR' 44.. SCOTT 20 RESEARCH DALLAS 4.)! 'ING 10 ACCOUNTING NEW YOR' 4.22 TURNER )0 SALES CHICAGO 4.43 ADAMS 20 RESEARCH DALLAS 4!00 JAMES )0 SALES CHICAGO 4!02 FORD 20 RESEARCH DALLAS 4!)2 MILLER 10 ACCOUNTING NEW YOR' 12 ;GHI I989:<9=.

62 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

NON&E#UI JOIN: THE RELATIONSHIP BETWEEN THE EMP TABLE AND THE SALGRADE TABLE IS A NON&E#UIJOIN%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. SELECT ENAME%SAL%GRADE FROM EMP E %SALGRADE S WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL5 S#L1 SELECT EMPNO%ENAME%SAL%GRADE FROM EMP%SALGRADE 2 WHERE SAL BETWEEN LOSAL AND HISAL5 EMPNO ENAME SAL GRADE &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH .00 1 4.43 ADAMS 1100 1 4!00 JAMES !/0 1 4/21 WARD 12/0 2 43/2 MARTIN 12/0 2 4!)2 MILLER 1)00 2 42!! ALLEN 1300 ) 4.22 TURNER 1/00 ) 4/33 JONES 2!4/ 2 43!. BLA'E 2./0 2 44.2 CLAR' 22/0 2 44.. SCOTT )000 2 4!02 FORD )000 2 4.)! 'ING /000 / 12 ;GHI I989:<9=. 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(M). HERE WE GET E"TRA INFORMATION IN DEPT TABLE. THIS IS RIGHT OUTER JOIN. SELECT E.EMPNO%E.ENAME%D.DEPTNO%D.DNAME FROM EMP E%DEPT D

63 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

WHERE E.DEPTNO(M) L D.DEPTNO HERE WE GET E"TRA INFORMATION IN EMP TABLE. THIS LEFT OUTER JOIN. SELECT E.EMPNO%E.ENAME%E.DEPTNO%D.DNAME FROM EMP E%DEPT D WHERE E.DEPTNO L D.DEPTNO(M) YOU CANNOT PLACE (M) SIGN ON BOTH SIDES. THIS IS RIGHT OUTER JOIN. S#L1 SELECT EMPNO%ENAME%EMP.DEPTNO%DNAME%LOC FROM EMP%DEPT 2 WHERE EMP.DEPTNO(M) L DEPT.DEPTNO5 EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 44.2 CLAR' 10 ACCOUNTING NEW YOR' 4.)! 'ING 10 ACCOUNTING NEW YOR' 4!)2 MILLER 10 ACCOUNTING NEW YOR' 4)3! SMITH 20 RESEARCH DALLAS 4.43 ADAMS 20 RESEARCH DALLAS 4!02 FORD 20 RESEARCH DALLAS 44.. SCOTT 20 RESEARCH DALLAS 4/33 JONES 20 RESEARCH DALLAS 42!! ALLEN )0 SALES CHICAGO 43!. BLA'E )0 SALES CHICAGO 43/2 MARTIN )0 SALES CHICAGO 4!00 JAMES )0 SALES CHICAGO 4.22 TURNER )0 SALES CHICAGO 4/21 WARD )0 SALES CHICAGO OPERATIONS BOSTON 1/ ;GHI I989:<9=. 1 SELECT EMPNO%ENAME%DEPT.DEPTNO%DNAME%LOC FROM EMP%DEPT 2$ WHERE EMP.DEPTNO(M) L DEPT.DEPTNO S#L1 / EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 44.2 CLAR' 10 ACCOUNTING NEW YOR' 4.)! 'ING 10 ACCOUNTING NEW YOR' 4!)2 MILLER 10 ACCOUNTING NEW YOR' 4)3! SMITH 20 RESEARCH DALLAS 4.43 ADAMS 20 RESEARCH DALLAS 4!02 FORD 20 RESEARCH DALLAS 44.. SCOTT 20 RESEARCH DALLAS

64 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4/33 JONES 42!! ALLEN 43!. BLA'E 43/2 MARTIN 4!00 JAMES 4.22 TURNER 4/21 WARD 1/ ;GHI I989:<9=.

20 RESEARCH )0 SALES )0 SALES )0 SALES )0 SALES )0 SALES )0 SALES 20 OPERATIONS

DALLAS CHICAGO CHICAGO CHICAGO CHICAGO CHICAGO CHICAGO BOSTON

THIS IS LEFT OUTER JOIN. 1 SELECT EMPNO%ENAME%DEPT.DEPTNO%DNAME%LOC FROM EMP%DEPT 2$ WHERE EMP.DEPTNOLDEPT.DEPTNO(M) S#L1 / EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH DALLAS 42!! ALLEN )0 SALES CHICAGO 4/21 WARD )0 SALES CHICAGO 4/33 JONES 20 RESEARCH DALLAS 43/2 MARTIN )0 SALES CHICAGO 43!. BLA'E )0 SALES CHICAGO 44.2 CLAR' 10 ACCOUNTING NEW YOR' 44.. SCOTT 20 RESEARCH DALLAS 4.)! 'ING 10 ACCOUNTING NEW YOR' 4.22 TURNER )0 SALES CHICAGO 4.43 ADAMS 20 RESEARCH DALLAS 4!00 JAMES )0 SALES CHICAGO 4!02 FORD 20 RESEARCH DALLAS 4!)2 MILLER 10 ACCOUNTING NEW YOR' 12 ;GHI I989:<9=. HERE WE DONCT HAVE ANY E"TRA INFO IN EMP TABLE BECAUSE OF FOREIGN 'EY RELATION. THAT IS WE SHOULD NOT ENTER OTHER DEPARTMENT NUMBERS THAT ARE NOT PRESENT IN THE DEPT TABLE S#L1 CREATE TABLE EMP1 2 AS ) SELECT $ FROM EMP5 T6789 :;96<9=. S#L1 CREATE TABLE DEPT1 2 AS ) SELECT $ FROM DEPT5 T6789 :;96<9=.

65 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

HERE BOTH THE TABLES HAVE NO RELATION WITH FOREIGN 'EY AND PRIMARY 'EY. HERE I AM INSERTING IN TO EMP1 TABLE DEPARTMENT /0%30%40 THAT ARE NOT THERE IN DEPT1 TABLE 1 INSERT INTO EMP1 2 VALUES )$ (2%C'UMARC%CMANAGERC%4)3!%C01&JAN&!0C%1000%100%30) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO EMP1 2 VALUES )$ ()%CGAYATRIC%CMANAGERC%4)3!%C01&JAN&!0C%1000%100%40) S#L1 / 1 ;GH :;96<9=. S#L1 COMMIT5 CG>>F< :G>B89<9. S#L1 SELECT EMPNO%ENAME%EMP1.DEPTNO%DNAME%LOC FROM EMP1%DEPT1 2 WHERE EMP1.DEPTNOLDEPT1.DEPTNO(M)5 EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 44.2 CLAR' 10 ACCOUNTING NEW YOR' 4.)! 'ING 10 ACCOUNTING NEW YOR' 4!)2 MILLER 10 ACCOUNTING NEW YOR' 4)3! SMITH 20 RESEARCH DALLAS 4.43 ADAMS 20 RESEARCH DALLAS 4!02 FORD 20 RESEARCH DALLAS 44.. SCOTT 20 RESEARCH DALLAS 4/33 JONES 20 RESEARCH DALLAS 42!! ALLEN )0 SALES CHICAGO 43!. BLA'E )0 SALES CHICAGO 43/2 MARTIN )0 SALES CHICAGO 4!00 JAMES )0 SALES CHICAGO 4.22 TURNER )0 SALES CHICAGO 4/21 WARD )0 SALES CHICAGO 1 PAVAN /0 2 'UMAR 30 ) GAYATRI 40 14 ;GHI I989:<9=. 1 SELECT EMPNO%ENAME%EMP1.DEPTNO%DNAME%LOC FROM EMP1%DEPT1 2$ WHERE EMP1.DEPTNO(M)LDEPT1.DEPTNO S#L1 / EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 44.2 CLAR' 10 ACCOUNTING NEW YOR' 4.)! 'ING 10 ACCOUNTING NEW YOR'

66 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4!)2 MILLER 4)3! SMITH 4.43 ADAMS 4!02 FORD 44.. SCOTT 4/33 JONES 42!! ALLEN 43!. BLA'E 43/2 MARTIN 4!00 JAMES 4.22 TURNER 4/21 WARD 1/ ;GHI I989:<9=.

10 ACCOUNTING NEW YOR' 20 RESEARCH DALLAS 20 RESEARCH DALLAS 20 RESEARCH DALLAS 20 RESEARCH DALLAS 20 RESEARCH DALLAS )0 SALES CHICAGO )0 SALES CHICAGO )0 SALES CHICAGO )0 SALES CHICAGO )0 SALES CHICAGO )0 SALES CHICAGO OPERATIONS BOSTON

1 SELECT EMPNO%ENAME%DEPT1.DEPTNO%DNAME%LOC FROM EMP1%DEPT1 2$ WHERE EMP1.DEPTNO(M)LDEPT1.DEPTNO S#L1 / EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 44.2 CLAR' 10 ACCOUNTING NEW YOR' 4.)! 'ING 10 ACCOUNTING NEW YOR' 4!)2 MILLER 10 ACCOUNTING NEW YOR' 4)3! SMITH 20 RESEARCH DALLAS 4.43 ADAMS 20 RESEARCH DALLAS 4!02 FORD 20 RESEARCH DALLAS 44.. SCOTT 20 RESEARCH DALLAS 4/33 JONES 20 RESEARCH DALLAS 42!! ALLEN )0 SALES CHICAGO 43!. BLA'E )0 SALES CHICAGO 43/2 MARTIN )0 SALES CHICAGO 4!00 JAMES )0 SALES CHICAGO 4.22 TURNER )0 SALES CHICAGO 4/21 WARD )0 SALES CHICAGO 20 OPERATIONS BOSTON 1/ ;GHI I989:<9=. 1 SELECT EMPNO%ENAME%DEPT1.DEPTNO%DNAME%LOC FROM EMP1%DEPT1 2$ WHERE EMP1.DEPTNO(M)LDEPT1.DEPTNO(M) S#L1 / WHERE EMP1.DEPTNO(M)LDEPT1.DEPTNO(M) $ ERROR 6< 8FE9 2: ORA&0123.: 6 B;9=F:6<9 >6A ;9T9;9E:9 GE8A GE9 G?<9;&XGFE9= <6789 YOU CAN NOT 'EEP M SIGN ON BOTH SIDES. UPDATING ROWS: UPDATE EMP

67 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

SET SAL L SALM100%DEPTNOL10%JOBLCLER'5 UPDATE EMP SET SAL L SALM100%DEPTNOL10%JOBLCLER'5 WHERE WCONDITION1 YOU CAN UPDATE MORE THAN ONE COLUMN IN A TABLE AT A TIME. S#L1 CREATE TABLE EMPLOYEE 2 AS ) SELECT $ FROM EMP5 T6789 :;96<9=. S#L1 UPDATE EMPLOYEE 2 SET SAL L1000% JOB L CMANAGERC5 12 ;GHI ?B=6<9=. THE ABOVE STATEMENT UPDATED WHOLE TABLE. S#L1 UPDATE EMPLOYEE 2 SET SAL L2000% JOBLCCLER'C ) WHERE DEPTNOL105 ) ;GHI ?B=6<9=. IN THE ABOVE TABLE THE ONLY DEPTNO 10 ROWS ARE UPDATED. WHAT NOT WITH ALTER: WE CANNOT DECREASE COLUMN SI E IF DATA E"ISTS. WE CANNOT CHANGE NAME OF TABLE USING ALTER. WE CANNOT CHANGE COLUMN NAME. RENAMING THE TABLE : RENAME EMP TO EMP1 5 S#L1 RENAME EMPLOYEE TO EMP(INFO5 T6789 ;9E6>9=. IN THE ABOVE STATEMENT EMPLOYEE WAS RENAMED TO EMP(INFO5 IF YOU #UERY EMPLOYEE NOW U WILL GET ERROR. S#L1 SELECT $ FROM EMPLOYEE5 SELECT $ FROM EMPLOYEE $ ERROR 6< 8FE9 1: ORA&00!22: <6789 G; RF9H =G9I EG< 9UFI< SAL1 SELECT $ FROM EMP(INFO5 THE ABOVE STATEMENT WILL WOR'. DEFAULT: S#L1 CREATE TABLE EMPLOYEE

68 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2 (EMPNO NUMBER(10)% ) ENAME VARCHAR2(10)% 2 DEPTNO NUMBER(10) DEFAULT 10)5 T6789 :;96<9=. S#L1 INSERT INTO EMPLOYEE 2 VALUES ) (1%CPAVANC%10)5 1 ;GH :;96<9=. 1 INSERT INTO EMPLOYEE 2 VALUES )$ (2%C'UMARC%20) S#L1 / 1 ;GH :;96<9=. HERE WE HAD NOT GIVEN VALUE FOR DEPTNO.THEN IT HAD TA'EN 20 FOR DEPTNO% BCO WE HAD GIVEN DEFAULT 20 FOR DEPTNO. 1 INSERT INTO EMPLOYEE 2 (EMPNO%ENAME) ) VALUES 2$ (2%C'UMARC) / / 1 ;GH :;96<9=. 1 INSERT INTO EMPLOYEE 2 VALUES )$ (2%C'UMARC) 2 / INSERT INTO EMPLOYEE $ ERROR 6< 8FE9 1: ORA&00!24: EG< 9EG?SD R68?9I S#L1 SELECT $ FROM EMPLOYEE5 EMPNO ENAME DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 1 PAVAN 10 2 'UMAR 20 2 'UMAR 10 IN THE ABOVE #UERY WHENEVER YOU DONCT GIVE VALUE FOR DEPTNO THERE DEFAULT VALUE WILL BE TA'EN. ADDING COMMENTS TO A TABLE . YOU CAN ADD COMMENTS TO A TABLE USING THE COMMENT STATEMENT . COMMENT ON TABLE EMP IS J EMPLOYEE INFORMATION J 5

69 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

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 C IT STORES EMPLOYEE INFO C S#L1 / CG>>9E< :;96<9=. VIEWING COMMENTS: ALL(TAB(COMMENTS%USER(TAB(COMMENTS 5 SELECT $ FROM USER(TAB(COMMENTS5 1$ SELECT $ FROM USER(TAB(COMMENTS WHERE TABLE(NAMELCEMPC S#L1 / TABLE(NAME TABLE(TYPE &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&& COMMENTS &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMP TABLE IT STORES EMPLOYEE INFO TO SEE WHAT TABLE HAVE WHAT COMMENT WE HAVE TO #UERY USER(TAB(COMMENTS. DROP COMMENTS: COMMENT ON TABLE EMP IS J J 5 TO DELETE THE COMMENT ON TABLE WE WRITE #UERY LI'E BELOW. COMMENT ON TABLE EMP IS C C 5 CG>>9E< :;96<9=. 1 SELECT $ FROM USER(TAB(COMMENTS 2$ WHERE TABLE(NAMELCEMPC S#L1 / TABLE(NAME TABLE(TYPE &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&& COMMENTS &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMP TABLE REMOVE THE PRIMARY 'EY CONSTRAINT ON THE DEPT TABLE AND DEPTNO THE ASSOCIATED FOREIGN 'EY CONSTRAINT ON THE EMP(DEPTN0) COLUMN:

70 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

WHEN EVER YOU RELATE BOTH EMP AND DEPT TABLES WITH FOREIGN 'EY THEN U PRETTY WELL 'NOW DEPT TABLE DEPTNO SHOULD HAVE PRIMARY 'EY. NOW IF YOU WANT TO DROP PRIMARY 'EY CONSTRAINT ON DEPT TABLE IT WONCT ALLOW YOU TO DROP BECAUSE IT IS CONNECTED WITH FOREIGN 'EY OF EMP TABLE DEPTNO COLUMN THEN IF YOU WANT TO DROP PRIMARY 'EY WHAT U SHOULD DO IS TYPE BELOW #UERY. ALTER TABLE DEPT1 DROP CONSTRAINT DEPT1(P' CASCADE5 S#L1 CREATE TABLE EMP1 2 AS ) SELECT $ FROM EMP5 T6789 :;96<9=. S#L1 CREATE TABLE DEPT1 2 AS ) SELECT $ FROM DEPT5 T6789 :;96<9=. S#L1 ALTER TABLE DEPT1 2 ADD CONSTRAINT DEPT1(P' PRIMARY 'EY(DEPTNO)5 T6789 68<9;9=. S#L1 ALTER TABLE EMP1 2 ADD CONSTRAINT EMP1(F' FOREIGN 'EY(DEPTNO) REFERENCES DEPT1(DEPTNO)5 T6789 68<9;9=. S#L1 ALTER TABLE DEPT1 2 DROP CONSTRAINT DEPT1(P'5 DROP CONSTRAINT DEPT1(P' $ ERROR 6< 8FE9 2: ORA&0224): <DFI ?EFQ?9/B;F>6;A N9A FI ;9T9;9E:9= 7A IG>9 TG;9FSE N9AI S#L1 ALTER TABLE DEPT1 2 DROP CONSTRAINT DEPT1(P' CASCADE5 T6789 68<9;9=. NOW BOTH PRIMARY 'EY FOR DEPT1 AND FOREIGN 'EY 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(NAMELCDEPT1C5 SET OPERATORS: UNION ALL

71 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

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 #UERY M ROWS OF SECOND #UERY LESS DUPLICATE ROWS LIST OF JOBS IN DEPTNOL10 AND 20 LESS DUPLICATION. SELECT JOB FROM EMP WHERE DEPTNOL10 UNION SELECT JOB FROM EMP WHERE DEPTNOL20 5 1 SELECT JOB FROM EMP WHERE DEPTNOL10 2 UNION )$ SELECT JOB FROM EMP WHERE DEPTNOL20 S#L1 / JOB &&&&&&&&& ANALYST CLER' MANAGER PRESIDENT UNION ALL: ROWS OF FIRST #UERY M ROWS OF SECOND #UERY WITH DUPLICATE ROWS: LIST OF JOBS IN DEPTNOL10 AND 20. SELECT JOB FROM EMP WHERE DEPTNOL10 UNION ALL SELECT JOB FROM EMP WHERE DEPTNOL20 5 S#L1 SELECT JOB FROM EMP WHERE DEPTNOL10 2 UNION ALL ) SELECT JOB FROM EMP WHERE DEPTNOL205 JOB &&&&&&&&& MANAGER PRESIDENT CLER' CLER' MANAGER

72 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

ANALYST CLER' ANALYST . ;GHI I989:<9=. INTERSECT : COMMON ROWS FROM 2 #UERIES. LIST OF JOBS COMMON IN DEPTNOL10 AND 20. SELECT JOB FROM EMP WHERE DEPTNOL10 INTERSECT SELECT JOB FROM EMP WHERE DEPTNOL20 5 1 SELECT JOB FROM EMP WHERE DEPTNOL10 2 INTERSECT )$ SELECT JOB FROM EMP WHERE DEPTNOL20 S#L1 / JOB &&&&&&&&& CLER' MANAGER MINUS: WHICH GIVES UNI#UE ROWS: LIST OFJOBS UNI#UE IN DEPTNOL20 SELECT JOB FROM EMP WHERE DEPTNOL20 MINUS SELECT JOB FROM EMP WHERE DEPTNOL10 MINUS SELECT JOB FROM EMP WHERE DEPTNOL)05 WITH IN OPERATOR: SELECT JOB FROM EMP WHERE DEPTNOL20 MINUS SELECT JOB FROM EMP WHERE DEPTNO IN(10%)0)5 1 SELECT JOB FROM EMP WHERE DEPTNOL10 2 MINUS )$ SELECT JOB FROM EMP WHERE DEPTNOL20 S#L1 / JOB &&&&&&&&& PRESIDENT 1 SELECT JOB FROM EMP WHERE DEPTNOL10 2 MINUS

73 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

) SELECT JOB FROM EMP WHERE DEPTNOL20 2 MINUS /$ SELECT JOB FROM EMP WHERE DEPTNOL)0 S#L1 / JOB &&&&&&&&& PRESIDENT 1 SELECT JOB FROM EMP WHERE DEPTNOL10 2 MINUS )$ SELECT JOB FROM EMP WHERE DEPTNO IN (20%)0) S#L1 / JOB &&&&&&&&& PRESIDENT 1$ SELECT JOB FROM EMP WHERE DEPTNO IN (10%20) , THIS IS UNION ALL S#L1 / JOB &&&&&&&&& CLER' MANAGER MANAGER ANALYST PRESIDENT CLER' ANALYST CLER' . ;GHI I989:<9=. S#L1 SELECT DISTINCT(JOB) FROM EMP WHERE DEPTNO IN (10%20)5 & THIS IS UNION. JOB &&&&&&&&& ANALYST CLER' MANAGER PRESIDENT CREATING GROUPS OF DATA: GROUP BY DIVIDE ROWS IN A TABLE INTO SMALLER GROUPS BY USING THE GROUP BY CLAUSE. THE BELOW STATEMENTS DOES NOT WOR': S#L1 SELECT DEPTNO%SUM(SAL) FROM EMP5 SELECT DEPTNO%SUM(SAL) FROM EMP $ ERROR 6< 8FE9 1: ORA&00!)4: EG< 6 IFES89&S;G?B S;G?B T?E:<FGE

74 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

THE ABOVE #UERY DOES NOT WOR' BECAUSE DEPTNO WILL GIVES 12 ROWS AND SUM(SAL) WILL GIVES ONE ROW. THERE IS NO MATCHING OF ROWS. ALL COLUMNS IN THE SELECT LIST THAT ARE NOT IN GROUP FUNCTIONS MUST BE IN THE GROUP BY CLAUSE. ANY COLUMN OR E"PRESSION IN THE SELECT LIST THST IS NOT AN AGGREGATE FUNCTION MUST BE IN THE GROUP BY CLAUSE. IF IT HAS TO WOR' WE HAVE TO GIVE LI'E THIS. S#L1 SELECT DEPTNO%SUM(SAL) FROM EMP 2 GROUP BY DEPTNO5 DEPTNO SUM(SAL) &&&&&&&&&& &&&&&&&&&& 10 .4/0 20 10.4/ )0 !200 WHENEVER WE SEE NON AGGREGATE COLUMN IN SELECT LIST THAT HAS TO BE THERE AFTER GROUP BY CLAUSE LI'E ABOVE BELOW #UERIES WONT WOR': S#L1 SELECT DEPTNO%COUNT(DEPTNO) FROM EMP5 SELECT DEPTNO%COUNT(DEPTNO) FROM EMP $ ERROR 6< 8FE9 1: ORA&00!)4: EG< 6 IFES89&S;G?B S;G?B T?E:<FGE S#L1 SELECT DEPTNO%AVG(DEPTNO) FROM EMP 2 / SELECT DEPTNO%AVG(DEPTNO) FROM EMP $ ERROR 6< 8FE9 1: ORA&00!)4: EG< 6 IFES89&S;G?B S;G?B T?E:<FGE S#L1 SELECT DEPTNO%MA"(DEPTNO) FROM EMP5 SELECT DEPTNO%MA"(DEPTNO) FROM EMP $ ERROR 6< 8FE9 1: ORA&00!)4: EG< 6 IFES89&S;G?B S;G?B T?E:<FGE S#L1 SELECT DEPTNO%MIN(DEPTNO) FROM EMP5 SELECT DEPTNO%MIN(DEPTNO) FROM EMP $ ERROR 6< 8FE9 1: ORA&00!)4: EG< 6 IFES89&S;G?B S;G?B T?E:<FGE WE HAVE TO GIVE NON AGGREGATE COLUMNS THAT ARE IN THE SELECT LIST IN GROUP BY CLAUSE.

75 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 SELECT DEPTNO%SUM(SAL) FROM EMP 2 GROUP BY DEPTNO5 DEPTNO SUM(SAL) &&&&&&&&&& &&&&&&&&&& 10 .4/0 20 10.4/ )0 !200 S#L1 SELECT DEPTNO%COUNT(ENAME) 2 FROM EMP ) GROUP BY DEPTNO5 DEPTNO COUNT(ENAME) &&&&&&&&&& &&&&&&&&&&&& 10 ) 20 / )0 3 S#L1 SELECT DEPTNO%AVG(SAL) 2 FROM EMP ) GROUP BY DEPTNO5 DEPTNO AVG(SAL) &&&&&&&&&& &&&&&&&&&& 10 2!13.33334 20 214/ )0 1/33.33334 S#L1 SELECT DEPTNO%SUM(SAL) 2 FROM EMP ) GROUP BY DEPTNO5 DEPTNO SUM(SAL) &&&&&&&&&& &&&&&&&&&& 10 .4/0 20 10.4/ )0 !200 THE GROUP BY COLUMN DOES NOT HAVE TO BE IN THE SELECT LIST: SELECT AVG(SAL) FROM EMP GROUP BY DEPTNO5 S#L1 SELECT AVG(SAL) 2 FROM EMP ) GROUP BY DEPTNO5 AVG(SAL) &&&&&&&&&& 2!13.33334 214/ 1/33.33334 YOU CAN USE THE GROUP FUCTIONS IN THE ORDER BY CLAUSE: SELECT DEPTNO%AVG(SAL) FROM EMP

76 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

GROUP BY DEPTNO ORDER BY AVG(SAL)5 S#L1 SELECT DEPTNO%AVG(SAL) 2 FROM EMP ) GROUP BY DEPTNO 2 ORDER BY AVG(SAL)5 DEPTNO AVG(SAL) &&&&&&&&&& &&&&&&&&&& )0 1/33.33334 20 214/ 10 2!13.33334 USING THE GROUP BY CLAUSE ON MULTIPLE COLUMNS: SELECT DEPTNO%JOB%SUM(SAL) FROM EMP GROUP BY DEPTNO%JOB5 S#L1 SELECT DEPTNO%JOB%SUM(SAL) 2 FROM EMP ) GROUP BY DEPTNO%JOB5 DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 ! ;GHI I989:<9=. USING WHERE CLAUSE FOR THE #UERY: SELECT DEPTNO%AVG(SAL) FROM EMP WHERE DEPTNOL10 GROUP BY DEPTNO HAVING AVG(SAL) 120005 S#L1 SELECT DEPTNO%SUM(SAL) FROM EMP 2 WHERE DEPTNOL10 ) GROUP BY DEPTNO 2 HAVING SUM(SAL) 1 !0005 EG ;GHI I989:<9= 1 SELECT DEPTNO%SUM(SAL) FROM EMP 2 WHERE DEPTNOL10

77 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

) GROUP BY DEPTNO 2$ HAVING SUM(SAL) 1 .000 S#L1 / DEPTNO SUM(SAL) &&&&&&&&&& &&&&&&&&&& 10 .4/0 REMEMBER ONE THING WHENEVER YOU SEE AGGREGATE COLUMN IN WHERE CLAUSE IT WONCT WOR'. BUT WHENEVER YOU SEE NON&AGGREGATE COLUMN IN WHERE CLAUSE IT WILL WOR'. YOU CANNOT USE THE WHERE CLAUSE TO RESTRICT GROUPS: SELECT DEPTNO%AVG(SAL) FROM EMP WHERE AVG(SAL) 12000 GROUP BY DEPTNO5 S#L1 SELECT DEPTNO%SUM(SAL) FROM EMP 2 WHERE SUM(SAL) 1 !000 ) GROUP BY DEPTNO5 WHERE SUM(SAL) 1 !000 $ ERROR 6< 8FE9 2: ORA&00!)2: S;G?B T?E:<FGE FI EG< 688GH9= D9;9 HERE WHENEVER ORACLE E"ECUTES THIS #UERY IT E"ECUTES WHERE FIRST AND THEN GROUP BY HERE IT IS NOT POSSIBLE TO FIND SUM(SAL) FOR ALL DEPARTMENTS BEFORE GROUP BY CLAUSE. WHENEVER YOU SEE AGGREGATE COLUMN IN WHERE CLAUSE IT WONCT WOR'. YOU USE THE HAVING CLAUSE TO RESTRICT GROUPS: SELECT DEPTNO%AVG(SAL) FROM EMP GROUP BY DEPTNO HAVING AVG(SAL) 120005 S#L1 SELECT DEPTNO%SUM(SAL) FROM EMP 2 GROUP BY DEPTNO ) HAVING SUM(SAL) 1 !0005 DEPTNO SUM(SAL) &&&&&&&&&& &&&&&&&&&& 20 10.4/ )0 !200 HERE WE HAVE TO USE HAVING CLAUSE. THE ORDER OF E"ECUTION FOR THE GROUP BY #UERIES IS LI'E THIS FIRST WHERE CLAUSE%GROUP BY% HAVING CLAUSE.

78 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

THE ORDER OF EVALUATION OF THE CLAUSES. WHERE%GROUP BY%HAVING CLAUSE. DISPLAY MA"IMUM AVAERAGE SALARY: SELECT MA"(AVG(SAL)) FROM EMP GROUP BY DEPTNO5 S#L1 SELECT MA"(AVG(SAL)) FROM EMP GROUP BY DEPTNO5 MA"(AVG(SAL)) &&&&&&&&&&&&& 2!13.33334 CHARACTER FUNCTIONS: SELECT LOWER(JPAVAN) FROM DUAL5 SELECT UPPER(JB6R6E) FROM DUAL5 SELECT INITCAP(JB6R6E) FROM DUAL5 SELECT CONCAT(CGOODC%CBOYC) FROM DUAL5 SELECT SUBSTR(CPAVANC%1%)) FROM DUAL5 SELECT LENGTH(CPAVANC) FROM DUAL5 SELECT INSTR(CPAVANC%CVC) FROM DUAL5 S#L1 SELECT LOWER(CPAVANC) FROM DUAL5 LOWER &&&&& B6R6E S#L1 SELECT UPPER(CB6R6EC) FROM DUAL5 UPPER &&&&& PAVAN S#L1 SELECT INITCAP(CB6R6EC) FROM DUAL5 INITC &&&&& P6R6E S#L1 SELECT CONCAT(CGOODC%CBOYC) FROM DUAL5 CONCAT( &&&&&&&

79 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

GOODBOY S#L1 SELECT SUBSTR(CPAVANC%1%)) FROM DUAL5 SUB &&& PAV S#L1 SELECT LENGTH(CPAVANC) FROM DUAL5 LENGTH(CPAVANC) &&&&&&&&&&&&&&& / S#L1 SELECT INSTR(CPAVANC%CVC) FROM DUAL5 INSTR(CPAVANC%CVC) &&&&&&&&&&&&&&&&&& ) DATE FUNCTIONS: MONTHS(BETWEEN NUMBER OF MONTHS BETWEEN DATES

SELECT MONTHS(BETWEEN(C01&SEP&!/C%C11&JAN&!2C )FROM DUAL5 SELECT MONTHS(BETWEEN(C11&JAN&!2C %C01&SEP&!/C)FROM DUAL5 S#L1 SELECT MONTHS(BETWEEN(C01&SEP&!/C%C11&JAN&!2C )FROM DUAL5 MONTHS(BETWEEN(C01&SEP&!/C%C11&JAN&!2C) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1!.34421!2 S#L1 SELECT MONTHS(BETWEEN(C11&JAN&!2C %C01&SEP&!/C)FROM DUAL5 MONTHS(BETWEEN(C11&JAN&!2C%C01&SEP&!/C) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &1!.34421! ADD(MONTHS ADD MONTHS TO DATE.

SELECT ADD(MONTHS(C11&JAN&!2C%3) FROM DUAL5 S#L1 SELECT ADD(MONTHS(C11&JAN&!2C%3) FROM DUAL5 ADD(MONTH &&&&&&&&& 11&JUL&!2 NE"T(DAY NE"T DAY OF THE DATE SPECIFIED.

SELECT NE"T(DAY(C01&SEP&!3C%CFRIDAYC) FROM DUAL5

80 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 SELECT NE"T(DAY(C01&SEP&!3C%CFRIDAYC) FROM DUAL5 NE"T(DAY( &&&&&&&&& 03&SEP&!3 LAST(DAY LAST DAY OF THE MONTH.

SELECT LAST(DAY(C01&SEP&!3C) FROM DUAL5 S#L1 SELECT LAST(DAY(C01&SEP&!3C) FROM DUAL5 LAST(DAY( &&&&&&&&& )0&SEP&!3 S#L $PLUS FILE COMMANDS: SAVE FILENAME : SAVES CURRENT CONTENTS OF S#L BUFFER TO FILE%THE DEFAULT FILE E"TENSION IS .S#L GET FILENAME:WRITES THE CONTENTS OF THE FILE. STARTFILENAME:RUNS THE FILE. YFILENAME:RUNS THE FILE% EDIT FILENAME:INVO'ES EDITOR TO EDIT CONTENTS OF A SAVED FILE. SPOOL C:ZPAVAN : IT IS USED FOR SAVING OUTPUT OF THE #UERY IN THE FILE.THE FILE E"TENSION IS .LST. E"IT:LEAVES THE S#L$ PLUS. S#L1 SELECT $ FROM EMP5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20

81 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4!)2 MILLER 12 ;GHI I989:<9=.

CLER'

44.2 2)&JAN&.2

1)00

10

S#L1 SAVE PAVAN C;96<9= TF89 PAVAN.IQ8 IT SAVES THE #UERY WHICH IS THERE IN EDITOR. S#L1 GET PAVAN 1$ SELECT $ FROM EMP IT DISPLAYS THE #UERY IN THE FILE. S#L1 START PAVAN IT E"ECUTES THE #UERY THAT IS THERE IN FILE PAVAN. S#L1 SELECT $ FROM EMP5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 12 ;GHI I989:<9=. S#L1 YPAVAN IT E"ECUTES THE #UERY THAT IS THERE IN FILE PAVAN. S#L1 SELECT $ FROM EMP5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20

82 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 S#L1 RUN PAVAN IT E"ECUTES THE #UERY THAT IS THERE IN FILE PAVAN. 1$ SELECT $ FROM EMP

10

S#L1 SELECT $ FROM EMP5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 12 ;GHI I989:<9=. S#L1 EDIT PAVAN IT OPENS THE FILE FOR EDITING. DIFFERENCE BETWEEN S#L AND S#L$PLUS: S#L : STRUCTURED #UERY LANGUAGE. S#L IS A LANGUAGE FOR COMMUNICATING WITH THE ORACLE SERVER TO ACCESS DATA. IS BASED ON AMERICAN NATIONAL STANDARDS INSTITUTE. MANIPULATES DATA AND TABLE DEFINITIONS IN THE DATABASE. OPERATORS PRECEDENCE: ORDER EVALUATED 1 2 ) 2 OPERATOR ALL COMPARISON OPERATORS NOT AND OR S#L$PLUS RECOGNI ES S#L STATEMENTS AND SENDS THEM TO THE SERVER. IS THE ORACLE PROPRIETARY INTERFACE FOR E"ECUTING S#L STATEMENTS. DOES NOT ALLOWMANIPULATION OF VALUES IN THE DATABASE.

83 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

OVERRIDE RULES OF PRECEDENCE BY USING PARENTHESES. USING TWO COLUMNS IN ORDER BY: SELECT ENAME%DEPTNO%SAL FROM EMP ORDER BY DEPTNO DESC%SAL DESC5 SELECT ENAME%DEPTNO%SAL FROM EMP ORDER BY DEPTNO%SAL5 SELECT ENAME%DEPTNO%SAL FROM EMP ORDER BY DEPTNO DESC%SAL5 S#L1 SELECT ENAME%DEPTNO%SAL FROM EMP 2 ORDER BY DEPTNO DESC%SAL DESC5 ENAME DEPTNO SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& BLA'E )0 2./0 ALLEN )0 1300 TURNER )0 1/00 WARD )0 12/0 MARTIN )0 12/0 JAMES )0 !/0 SCOTT 20 )000 FORD 20 )000 JONES 20 2!4/ ADAMS 20 1100 SMITH 20 .00 'ING 10 /000 CLAR' 10 22/0 MILLER 10 1)00 12 ;GHI I989:<9=. S#L1 SELECT ENAME%DEPTNO%SAL FROM EMP 2 ORDER BY DEPTNO%SAL5 ENAME DEPTNO SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& MILLER 10 1)00 CLAR' 10 22/0 'ING 10 /000 SMITH 20 .00 ADAMS 20 1100 JONES 20 2!4/ SCOTT 20 )000 FORD 20 )000 JAMES )0 !/0 WARD )0 12/0 MARTIN )0 12/0 TURNER )0 1/00 ALLEN )0 1300 BLA'E )0 2./0 12 ;GHI I989:<9=. S#L1 SELECT ENAME%DEPTNO%SAL FROM EMP

84 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2 ORDER BY DEPTNO DESC%SAL5 ENAME DEPTNO SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& JAMES )0 !/0 WARD )0 12/0 MARTIN )0 12/0 TURNER )0 1/00 ALLEN )0 1300 BLA'E )0 2./0 SMITH 20 .00 ADAMS 20 1100 JONES 20 2!4/ SCOTT 20 )000 FORD 20 )000 MILLER 10 1)00 CLAR' 10 22/0 'ING 10 /000 12 ;GHI I989:<9=. YOU CAN SORT BY A COLUMN THAT IS NOT IN THE SELECT LIST. USE A VARIABLE PREFI"ED WITH AN AMPERSAND (+) TO PROMPT THE USER FO A VALUE: SET VERIFY OFF SELECT EMPNO%ENAME%SAL%DEPTNO FROM EMP WHERE EMPNOL+EMPLOYEE(NUMBER5 SET VERIFY ON SELECT EMPNO%ENAME%SAL%DEPTNO FROM EMP WHERE EMPNOL+EMPLOYEE(NUMBER5 S#L1 SELECT EMPNO%ENAME%SAL%DEPTNO FROM EMP 2 WHERE EMPNOL+EMPLOYEE(NUMBER5 EE<9; R68?9 TG; 9>B8GA99(E?>79;: 44.. G8= 2: WHERE EMPNOL+EMPLOYEE(NUMBER E9H 2: WHERE EMPNOL44.. EMPNO ENAME SAL DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.. SCOTT )000 20 S#L1 SET VERIFY OFF S#L1 / EE<9; R68?9 TG; 9>B8GA99(E?>79;: 4)3! EMPNO ENAME SAL DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH .00 20

85 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 SET VERIFY ON S#L1 / EE<9; R68?9 TG; 9>B8GA99(E?>79;: 4/33 G8= 2: WHERE EMPNOL+EMPLOYEE(NUMBER E9H 2: WHERE EMPNOL4/33 EMPNO ENAME SAL DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4/33 JONES 2!4/ 20 USING SINGLE #UOTATION MAR'S FOR DATE AND CHARACTER VALUES: SELECT ENAME%DEPTNO%SAL$2 FROM EMP WHERE JOBLC+JOB(TITLEC SELECT ENAME%DEPTNO%SAL$2 FROM EMP WHERE JOBLUPPER(C+JOB(TITLEC) S#L1 SELECT ENAME%DEPTNO%SAL$2 FROM EMP 2 WHERE JOBLC+JOB(TITLEC ) / EE<9; R68?9 TG; XG7(<F<89: MANAGER G8= 2: WHERE JOBLC+JOB(TITLEC E9H 2: WHERE JOBLCMANAGERC ENAME DEPTNO SAL$2 &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& JONES 20 /!/0 BLA'E )0 /400 CLAR' 10 2!00 S#L1 SELECT ENAME%DEPTNO%SAL$2 FROM EMP 2 WHERE JOBLUPPER(C+JOB(TITLEC) S#L1 / EE<9; R68?9 TG; XG7(<F<89: :89;N G8= 2: WHERE JOBLUPPER(C+JOB(TITLEC) E9H 2: WHERE JOBLUPPER(C:89;NC) ENAME DEPTNO SAL$2 &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& SMITH 20 1300 ADAMS 20 2200 JAMES )0 1!00 MILLER 10 2300 USE SUBSTITUTION VARIABLES TO SUPPLEMENT THE FOLLOWING:

86 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

WHERE CONDITION ORDER BY COLUMN E"PRESSION TABLE ENTIRE SELECT STATEMENT

SELECT + REMENNING(SELECT(STATEMENT5 SELECT EMPNO%ENAME%+COLUMN(NAME FROM +TABLE(NAME WHERE +WHERE(CONDITIN ORDER BY + COL(NAME S#L1 SELECT + REMENNING(SELECT(STATEMENT5 EE<9; R68?9 TG; ;9>9EEFES(I989:<(I<6<9>9E<: $ T;G> 9>B G8= 1: SELECT + REMENNING(SELECT(STATEMENT E9H 1: SELECT $ T;G> 9>B EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 12 ;GHI I989:<9=. S#L1 SELECT EMPNO%ENAME%+COLUMN(NAME 2 FROM +TABLE(NAME ) WHERE +WHERE(CONDITIN 2 ORDER BY + COL(NAME / / EE<9; R68?9 TG; :G8?>E(E6>9: SAL G8= 1: SELECT EMPNO%ENAME%+COLUMN(NAME E9H 1: SELECT EMPNO%ENAME%SAL

87 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

EE<9; R68?9 TG; <6789(E6>9: EMP G8= 2: FROM +TABLE(NAME E9H 2: FROM EMP EE<9; R68?9 TG; HD9;9(:GE=F<FE: SAL 1 2000 G8= ): WHERE +WHERE(CONDITIN E9H ): WHERE SAL 1 2000 EE<9; R68?9 TG; :G8(E6>9: SAL G8= 2: ORDER BY + COL(NAME E9H 2: ORDER BY SAL EMPNO ENAME SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.2 CLAR' 22/0 43!. BLA'E 2./0 4/33 JONES 2!4/ 44.. SCOTT )000 4!02 FORD )000 4.)! 'ING /000 3 ;GHI I989:<9=. WE USE J+ FOR INSERTING VALUES IN THE TABLE: INSERT INTO DEPT VALUES (+DEPARTMENT(NO%+DEPARTMENT NAME%+LOCATION)5 S#L1 CREATE TABLE DEPT(DUP 2 AS ) SELECT $ FROM DEPT5 T6789 :;96<9=. 1$ INSERT INTO DEPT(DUP VALUES (+DEPARTMENT(NO%C+DEPARTMENT NAMEC%C+LOCATIONC) S#L1 / EE<9; R68?9 TG; =9B6;<>9E<(EG: /0 EE<9; R68?9 TG; =9B6;<>9E<: COMPUTERS EE<9; R68?9 TG; 8G:6<FGE: NEW YOR' G8= 1: INSERT INTO DEPT(DUP VALUES (+DEPARTMENT(NO%C+DEPARTMENT NAMEC%C+LOCATIONC) E9H 1: INSERT INTO DEPT(DUP VALUES (/0%CCOMPUTERS NAMEC%CNEW YOR'C) 1 ;GH :;96<9=. S#L STATEMENTS: SELECT INSERT UPDATE DELETE CREATE DATA RETRIVAL DATA MANIPULATION LANGUAGE (DML STATEMENTS) DATA DEFINITION

88 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

ALTER DROP RENAME TRUNCATE COMMIT ROLLBAC' SAVEPOINT GRANT REVO'E

LANGUAGE (DDL STATEMENTS)

TRANSACTION CONTROL DATA CONTROL LANGUAGE (DCL)

SYNONYMS:
S#L1 CREATE SYNONYM D FOR DEPT5 SAEGEA> :;96<9=. S#L1 SELECT $ FROM D5 S#L1 DROP SYNONYM D5 SAEGEA> =;GBB9=. S#L1 CREATE SYNONYM DEPARTMENT FOR DEPT5 SAEGEA> :;96<9=. S#L1 SELECT $ FROM DEPT5 DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 10 ACCOUNTING NEW YOR' 20 RESEARCH DALLAS )0 SALES CHICAGO 20 OPERATIONS BOSTON S#L1 SELECT $ FROM DEPARTMENT5 DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 10 ACCOUNTING NEW YOR' 20 RESEARCH DALLAS )0 SALES CHICAGO 20 OPERATIONS BOSTON RENAME IS DIFFERENT FROM SYNONYM. SUB#UERIES: #UERY INSIDE A #UERY IS CALLED SUB#UERY. THE SUB#UERY (INNER #UERY)E"ECUTES ONCE BEFORE THE MAIN #UERY. THE RESULT OF THE SUB#UERY IS USED BY THE MAIN #UERY(OUTER #UERY). SINGLE&ROW SUB#UERIES: RETURN ONLY ONE ROW.

89 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

USE SINGLE ROW COMPARISON OPERATORS L%1%1L%W%WL%W1 SELECT MINIMUM SALARY OF THE EMPLOYEE. SELECT ENAME%JOB%SAL FROM EMP WHERE SAL L (SELECT MIN(SAL) FROM EMP) SELECT MA"IMUM SALARY OF THE EMPLOYEE. SELECT ENAME%JOB%SAL FROM EMP WHERE SAL L (SELECT MA"(SAL) FROM EMP) S#L1 SELECT MA"(SAL) FROM EMP5 MA"(SAL) &&&&&&&&&& /000 S#L1 SELECT $ FROM EMP WHERE SAL L /0005 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4.)! 'ING PRESIDENT 14&NOV&.1 /000 COMM 10 DEPTNO

S#L1 SELECT $ FROM EMP WHERE SAL L (SELECT MA"(SAL) FROM EMP)5 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4.)! 'ING PRESIDENT 14&NOV&.1 /000 COMM 10 DEPTNO

1$ SELECT $ FROM EMP WHERE SAL L (SELECT MIN(SAL) FROM EMP) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 NULL VALUE SUB#UERY: S#L1 SELECT $ FROM EMP WHERE JOBL(SELECT JOB FROM EMP WHERE ENAMELCSMYTHEC)5 EG ;GHI I989:<9= MULTI&ROW SUB#URIES: SELECT $ FROM EMP WHERE SAL L(SELECT SAL FROM EMP)5 WHERE SAL L(SELECT SAL FROM EMP) $ ERROR 6< 8FE9 2: COMM 20 DEPTNO

90 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

ORA&01224: IFES89&;GH I?7 Q?9;A ;9<?;EI >G;9 <D6E GE9 ;GH RETURN MORE OPERATORS. THAN ONE ROW.USE MULTIPLE&ROW COMPARISON

IN % ANY % ALL OPERATORS. SELECT $ FROM EMP WHERE SAL IN (SELECT SAL FROM EMP)5 WHICH DISPLAYS ALL THE ROWS OF EMP% THAT IS IT IS SAME AS SELECT $ FROM EMP5 LANY OPERATOR AND L SOME: SELECT $ FROM EMP WHERE SAL L ANY (SELECT SAL FROM EMP)5 HERE JIN IS SAME AS JL ANY AND JL SOME. WHICH DISPLAYS ALL THE ROWS OF EMP. THAT IS JL ANY MEANS JIN S#L1 SELECT $ FROM EMP 2 WHERE SAL IN (SELECT SAL FROM EMP)5 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 4.)! 'ING PRESIDENT 14&NOV&.1 /000 12 ;GHI I989:<9=. 1 SELECT $ FROM EMP 2$ WHERE SAL L ANY (SELECT SAL FROM EMP) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 COMM 20 )0 20 )0 )0 10 )0 )0 10 )0 20 20 20 10 DEPTNO

/00 1200 0 )00

COMM 20 )0 20 )0

DEPTNO

/00

91 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

43/2 MARTIN 4!)2 MILLER 4.22 TURNER 42!! ALLEN 44.2 CLAR' 43!. BLA'E 4/33 JONES 44.. SCOTT 4!02 FORD 4.)! 'ING 12 ;GHI I989:<9=.

SALESMAN CLER' SALESMAN SALESMAN MANAGER MANAGER MANAGER ANALYST ANALYST PRESIDENT

43!. 2.&SEP&.1 44.2 2)&JAN&.2 43!. 0.&SEP&.1 43!. 20&FEB&.1 4.)! 0!&JUN&.1 4.)! 01&MAY&.1 4.)! 02&APR&.1 4/33 1!&APR&.4 4/33 0)&DEC&.1 14&NOV&.1

12/0 1)00 1/00 1300 22/0 2./0 2!4/ )000 )000 /000

1200 0 )00

)0 10 )0 )0 10 )0 20 20 20 10

1 SELECT $ FROM EMP 2$ WHERE SAL L SOME (SELECT SAL FROM EMP) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 4.)! 'ING PRESIDENT 14&NOV&.1 /000 12 ;GHI I989:<9=. WANY OR W SOME OPERATOR: SELECT $ FROM EMP WHERE SAL W ANY (SELECT SAL FROM EMP)5

COMM 20 )0 20 )0 )0 10 )0 )0 10

DEPTNO

/00 1200 0 )00

)0 20 20 20 10

W ANY MEANS LESS THAN THE MA"IMUM.HERE MA" SALARY IS /000. E"CEPT THAT EVERY SAL DISPALYED. 1 SELECT $ FROM EMP 2$ WHERE SAL W ANY (SELECT SAL FROM EMP) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0

92 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

43!. BLA'E 44.2 CLAR' 44.. SCOTT 4.22 TURNER 4.43 ADAMS 4!00 JAMES 4!02 FORD 4!)2 MILLER 1) ;GHI I989:<9=.

MANAGER MANAGER ANALYST SALESMAN CLER' CLER' ANALYST CLER'

4.)! 01&MAY&.1 2./0 4.)! 0!&JUN&.1 22/0 4/33 1!&APR&.4 )000 43!. 0.&SEP&.1 1/00 44.. 2)&MAY&.4 1100 43!. 0)&DEC&.1 !/0 4/33 0)&DEC&.1 )000 44.2 2)&JAN&.2 1)00

)0 10 20 0 20 )0 20 10 )0

1 SELECT $ FROM EMP 2$ WHERE SAL W SOME (SELECT SAL FROM EMP) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 1) ;GHI I989:<9=. 2ND HIGHEST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MA"(SAL) FROM EMP )$ WHERE SAL W ANY (SELECT SAL FROM EMP)) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 )RD HIGHEST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MA"(SAL) FROM EMP ) WHERE SAL W ANY (SELECT SAL FROM EMP 2 WHERE SAL W ANY (SELECT SAL FROM EMP /$ ))) 3 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ COMM 20 DEPTNO

COMM 20 20

DEPTNO

93 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2TH HIGHEST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MA"(SAL) FROM EMP ) WHERE SAL W ANY (SELECT SAL FROM EMP 2 WHERE SAL W ANY (SELECT SAL FROM EMP / WHERE SAL W ANY (SELECT SAL FROM EMP 3$ )))) 4 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 /TH HIGHEST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MA"(SAL) FROM EMP ) WHERE SAL W ANY (SELECT SAL FROM EMP 2 WHERE SAL W ANY (SELECT SAL FROM EMP / WHERE SAL W ANY (SELECT SAL FROM EMP 3 WHERE SAL W ANY (SELECT SAL FROM EMP 4$ ))))) . / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 AND SO ON************** 2ND HIGHEST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MA"(SAL) FROM EMP ) WHERE SAL W SOME (SELECT SAL FROM EMP 2$ )) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 )RD HIGHEST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MA"(SAL) FROM EMP ) WHERE SAL W SOME (SELECT SAL FROM EMP 2 WHERE SAL W SOME (SELECT SAL FROM EMP /$ ))) COMM 20 20 DEPTNO COMM 10 DEPTNO COMM )0 DEPTNO

94 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

3 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 2TH HIGHEST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MA"(SAL) FROM EMP ) WHERE SAL W SOME (SELECT SAL FROM EMP 2 WHERE SAL W SOME (SELECT SAL FROM EMP / WHERE SAL W SOME (SELECT SAL FROM EMP 3$ )))) 4 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 /TH HIGHEST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MA"(SAL) FROM EMP ) WHERE SAL W SOME (SELECT SAL FROM EMP 2 WHERE SAL W SOME (SELECT SAL FROM EMP / WHERE SAL W SOME (SELECT SAL FROM EMP 3 WHERE SAL W SOME (SELECT SAL FROM EMP 4$ ))))) . / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 1ANY OR 1 SOME OPERATOR: SELECT $ FROM EMP WHERE SAL 1 ANY (SELECT SAL FROM EMP) 5 1 ANY MEANS MORE THAN THE MINIMUM.HERE MIN SALARY IS .00. E"CEPT THAT EVERY SAL DISPALYED 1 SELECT $ FROM EMP 2$ WHERE SAL 1 ANY (SELECT SAL FROM EMP) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 COMM 10 DEPTNO COMM )0 DEPTNO COMM 20 DEPTNO

95 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

44.2 CLAR' MANAGER 44.. SCOTT ANALYST 4.)! 'ING PRESIDENT 4.22 TURNER SALESMAN 4.43 ADAMS CLER' 4!00 JAMES CLER' 4!02 FORD ANALYST 4!)2 MILLER CLER' 1) ;GHI I989:<9=.

4.)! 0!&JUN&.1 22/0 4/33 1!&APR&.4 )000 14&NOV&.1 /000 43!. 0.&SEP&.1 1/00 44.. 2)&MAY&.4 1100 43!. 0)&DEC&.1 !/0 4/33 0)&DEC&.1 )000 44.2 2)&JAN&.2 1)00

10 20 0 20 )0 20 10 10 )0

1 SELECT $ FROM EMP 2$ WHERE SAL 1 SOME (SELECT SAL FROM EMP) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 1) ;GHI I989:<9=. 2ND LEAST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MIN(SAL) FROM EMP )$ WHERE SAL 1 ANY (SELECT SAL FROM EMP)) 2 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MIN(SAL) FROM EMP )$ WHERE SAL 1 SOME (SELECT SAL FROM EMP)) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )RD LEAST: COMM )0 DEPTNO

COMM )0

DEPTNO

96 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MIN(SAL) FROM EMP ) WHERE SAL 1 ANY (SELECT SAL FROM EMP 2 WHERE SAL 1 ANY (SELECT SAL FROM EMP /$ ))) 3 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MIN(SAL) FROM EMP ) WHERE SAL 1 SOME (SELECT SAL FROM EMP 2 WHERE SAL 1 SOME (SELECT SAL FROM EMP /$ ))) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 2TH LEAST: COMM 20 DEPTNO

COMM 20

DEPTNO

1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MIN(SAL) FROM EMP ) WHERE SAL 1 ANY (SELECT SAL FROM EMP 2 WHERE SAL 1 ANY (SELECT SAL FROM EMP / WHERE SAL 1 ANY (SELECT SAL FROM EMP 3$ )))) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MIN(SAL) FROM EMP ) WHERE SAL 1 SOME (SELECT SAL FROM EMP 2 WHERE SAL 1 SOME (SELECT SAL FROM EMP / WHERE SAL 1 SOME (SELECT SAL FROM EMP 3$ )))) 4 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 AND SO ON*************. WALL OPERATOR: W ALL MEANS LESS THAN MINIMUM. SELECT $ FROM EMP

97 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

WHERE SAL W ALL (SELECT SAL FROM EMP)5 EG ;GHI I989:<9= S#L1 SELECT $ FROM EMP 2 WHERE SAL W ALL (SELECT SAL FROM EMP)5 EG ;GHI I989:<9= S#L1 SELECT $ FROM EMP 2 WHERE SAL W ALL (SELECT MA"(SAL) FROM EMP)5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 1) ;GHI I989:<9=. 2ND HIGHEST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MA"(SAL) FROM EMP )$ WHERE SAL W ALL (SELECT MA"(SAL) FROM EMP)) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 )RD HIGHEST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MA"(SAL) FROM EMP ) WHERE SAL W ALL (SELECT MA"(SAL) FROM EMP 2 WHERE SAL W ALL (SELECT MA"(SAL) FROM EMP /$ ))) 3 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 2TH HIGHEST: 1 SELECT $ FROM EMP COMM 20 DEPTNO

COMM 20 20

DEPTNO

98 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2 WHERE SAL L (SELECT MA"(SAL) FROM EMP ) WHERE SAL W ALL (SELECT MA"(SAL) FROM EMP 2 WHERE SAL W ALL (SELECT MA"(SAL) FROM EMP / WHERE SAL W ALL (SELECT MA"(SAL) FROM EMP 3$ )))) 4 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 AND SO ON******* 1ALL OPERATOR: 1 ALL MEANS GREATER THAN MA"IMUM. SELECT $ FROM EMP WHERE SAL 1 ALL (SELECT SAL FROM EMP)5 EG ;GHI I989:<9= SELECT $ FROM EMP WHERE SAL 1 ALL (SELECT MIN(SAL) FROM EMP)5 HERE E"CEPT MIN SALARY ALL SALARIES DISPLAYS. S#L1 SELECT $ FROM EMP 2 WHERE SAL 1 ALL (SELECT SAL FROM EMP)5 EG ;GHI I989:<9= 1 SELECT $ FROM EMP 2$ WHERE SAL 1 ALL (SELECT MIN(SAL) FROM EMP) ) / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 20 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 20 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 1) ;GHI I989:<9=. 2ND LEAST: 1 SELECT $ FROM EMP COMM )0 DEPTNO

99 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2 WHERE SAL L (SELECT MIN(SAL) FROM EMP )$ WHERE SAL 1 ALL (SELECT MIN(SAL) FROM EMP)) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 )RD LEAST: 1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MIN(SAL) FROM EMP ) WHERE SAL 1 ALL (SELECT MIN(SAL) FROM EMP 2 WHERE SAL 1 ALL (SELECT MIN(SAL) FROM EMP /$ ))) 3 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 2TH LEAST: COMM )0 DEPTNO

COMM 20

DEPTNO

1 SELECT $ FROM EMP 2 WHERE SAL L (SELECT MIN(SAL) FROM EMP ) WHERE SAL 1 ALL (SELECT MIN(SAL) FROM EMP 2 WHERE SAL 1 ALL (SELECT MIN(SAL) FROM EMP / WHERE SAL 1 ALL (SELECT MIN(SAL) FROM EMP 3$ )))) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 AND SO ON*****. YOU CAN USE SUB#UERY IN FROM CLAUSE: SELECT $ FROM (SELECT $ FORM SAL)5 SELECT $ FROM (SELECT $ FORM SAL ORDER BY SAL DESC )5 S#L1 SELECT $ FROM (SELECT $ FROM EMP)5 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 20 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 )0 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 )0 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 20 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 )0 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 )0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 20 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 )0

100 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4.43 ADAMS 4!00 JAMES 4!02 FORD 4!)2 MILLER 12 ;GHI I989:<9=.

CLER' CLER' ANALYST CLER'

44.. 2)&MAY&.4 43!. 0)&DEC&.1 4/33 0)&DEC&.1 44.2 2)&JAN&.2

1100 !/0 )000 1)00

20 )0 20 10

1$ SELECT $ FROM (SELECT $ FROM EMP ORDER BY SAL DESC ) S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL COMM &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 12 ;GHI I989:<9=.

DEPTNO

20 20 20 )0 10 )0 )0 10 )0 )0 20 )0 20

JOINS: ORACLE !I: CARTESIAN PRODUCT: CATERSIAN PRODUCT WILL BE FORMED WHEN EVER WE OMIT THE JOIN CONDITION OR IF YOU DONT WRITE JOIN CONDITIONWHEN WE ARE RETRIVING INFO FROM TWO OR MORE TABLES. HERE WE GET OUTPUT LI'E THIS ALL THE ROWS IN THE FIRST TABLE WILL BE MULTIPLIED BY FIRST ROW IN THE SECOND TABLE%AND ONCE AGAIN ALL ROWS IN THE FIRST TABLE WILL BE MULTIPLIED BY SECOND ROW AND SO ON. WE GET FIRST TABLE NO OF ROWS MULTIPLIED BY SECOND TABLE NO OF ROWS AS OUTPUT. PRIOR TO ORACLE !I: SELECT ENAME%DNAME FROM EMP%DEPT5 ORACLE !I: SELECT ENAME%DNAME FROM EMP CROSS JOIN DEPT5 E#UI JOIN IN PRIOR TO ORACLE !I: WHEN EVER WE DO E#UI JOIN WE GET COMMON INFO WHICH IS THERE IN TWO TABLES.

101 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

PRIOR TO ORACLE !I: SELECT EMPNO%ENAME%DEPT.DEPTNO%DNAME%LOC FROM EMP%DEPT WHERE EMP.DEPTNOLDEPT.DEPTNO5 EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES 44.2 CLAR' 10 ACCOUNTING 44.. SCOTT 20 RESEARCH 4.)! 'ING 10 ACCOUNTING 4.22 TURNER )0 SALES 4.43 ADAMS 20 RESEARCH 4!00 JAMES )0 SALES 4!02 FORD 20 RESEARCH 4!)2 MILLER 10 ACCOUNTING 12 ;GHI I989:<9=. ORACLE !I: NATURAL JOIN: THIS IS ALSO E#UI JOIN HERE NO NEED GIVE JOIN CONDITION. S#L1 SELECT EMPNO%ENAME%DEPTNO%DNAME 2 FROM EMP NATURAL JOIN DEPT5 EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES 44.2 CLAR' 10 ACCOUNTING 44.. SCOTT 20 RESEARCH 4.)! 'ING 10 ACCOUNTING 4.22 TURNER )0 SALES 4.43 ADAMS 20 RESEARCH 4!00 JAMES )0 SALES 4!02 FORD 20 RESEARCH 4!)2 MILLER 10 ACCOUNTING INNER JOIN IN ORACLE !I SELECT EMPNO%ENAME%EMP.DEPTNO%DNAME%LOC LOC DALLAS CHICAGO CHICAGO DALLAS CHICAGO CHICAGO NEW YOR' DALLAS NEW YOR' CHICAGO DALLAS CHICAGO DALLAS NEW YOR'

102 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

FROM EMP INNER JOIN DEPT ON EMP.DEPTNOLDEPT.DEPTNO 5 EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES 44.2 CLAR' 10 ACCOUNTING 44.. SCOTT 20 RESEARCH 4.)! 'ING 10 ACCOUNTING 4.22 TURNER )0 SALES 4.43 ADAMS 20 RESEARCH 4!00 JAMES )0 SALES 4!02 FORD 20 RESEARCH 4!)2 MILLER 10 ACCOUNTING 12 ;GHI I989:<9=. JOIN&USING: S#L1 SELECT E.EMPNO%E.ENAME%D.LOC FROM 2 EMP E JOIN DEPT D ) USING(DEPTNO)5 EMPNO ENAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH DALLAS 42!! ALLEN CHICAGO 4/21 WARD CHICAGO 4/33 JONES DALLAS 43/2 MARTIN CHICAGO 43!. BLA'E CHICAGO 44.2 CLAR' NEW YOR' 44.. SCOTT DALLAS 4.)! 'ING NEW YOR' 4.22 TURNER CHICAGO 4.43 ADAMS DALLAS 4!00 JAMES CHICAGO 4!02 FORD DALLAS 4!)2 MILLER NEW YOR' WITHOUT ALIASING: 1 SELECT EMPNO%ENAME%LOC FROM 2 EMP JOIN DEPT )$ USING(DEPTNO) 2 / LOC DALLAS CHICAGO CHICAGO DALLAS CHICAGO CHICAGO NEW YOR' DALLAS NEW YOR' CHICAGO DALLAS CHICAGO DALLAS NEW YOR'

103 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

EMPNO ENAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH DALLAS 42!! ALLEN CHICAGO 4/21 WARD CHICAGO 4/33 JONES DALLAS 43/2 MARTIN CHICAGO 43!. BLA'E CHICAGO 44.2 CLAR' NEW YOR' 44.. SCOTT DALLAS 4.)! 'ING NEW YOR' 4.22 TURNER CHICAGO 4.43 ADAMS DALLAS 4!00 JAMES CHICAGO 4!02 FORD DALLAS 4!)2 MILLER NEW YOR' 1 SELECT EMPNO%ENAME%DEPTNO%DNAME%LOC FROM 2 EMP JOIN DEPT )$ USING(DEPTNO) S#L1 / EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH DALLAS 42!! ALLEN )0 SALES CHICAGO 4/21 WARD )0 SALES CHICAGO 4/33 JONES 20 RESEARCH DALLAS 43/2 MARTIN )0 SALES CHICAGO 43!. BLA'E )0 SALES CHICAGO 44.2 CLAR' 10 ACCOUNTING NEW YOR' 44.. SCOTT 20 RESEARCH DALLAS 4.)! 'ING 10 ACCOUNTING NEW YOR' 4.22 TURNER )0 SALES CHICAGO 4.43 ADAMS 20 RESEARCH DALLAS 4!00 JAMES )0 SALES CHICAGO 4!02 FORD 20 RESEARCH DALLAS 4!)2 MILLER 10 ACCOUNTING NEW YOR' JOIN , ON: SELECT EMPNO%ENAME%EMP.DEPTNO%DNAME%LOC FROM EMP JOIN DEPT ON EMP.DEPTNOLDEPT.DEPTNO S#L1 / EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES LOC DALLAS CHICAGO CHICAGO DALLAS CHICAGO CHICAGO

104 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

44.2 CLAR' 44.. SCOTT 4.)! 'ING 4.22 TURNER 4.43 ADAMS 4!00 JAMES 4!02 FORD 4!)2 MILLER

10 ACCOUNTING 20 RESEARCH 10 ACCOUNTING )0 SALES 20 RESEARCH )0 SALES 20 RESEARCH 10 ACCOUNTING

NEW YOR' DALLAS NEW YOR' CHICAGO DALLAS CHICAGO DALLAS NEW YOR'

RIGHT OUTER JOIN: IN ORACLE !I IN RIGHT OUTER JOIN WE GET THE E"TRA INFORMATION IN DEPT. THAT IS DEPTNOL20.BECAUSE NO BODY WOR'ING IN DEPTNO 20. WHEN EVER WE DO E#UI JOIN WE GET COMMON INFO WHICH IS THERE IN TWO TABLES. SELECT EMPNO%ENAME%EMP.DEPTNO%DNAME%LOC FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNOLDEPT.DEPTNO5 EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES 44.2 CLAR' 10 ACCOUNTING 44.. SCOTT 20 RESEARCH 4.)! 'ING 10 ACCOUNTING 4.22 TURNER )0 SALES 4.43 ADAMS 20 RESEARCH 4!00 JAMES )0 SALES 4!02 FORD 20 RESEARCH 4!)2 MILLER 10 ACCOUNTING OPERATIONS 1/ ;GHI I989:<9=. SELECT EMPNO%ENAME%DEPT.DEPTNO%DNAME%LOC FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNOLDEPT.DEPTNO5 EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES 44.2 CLAR' 10 ACCOUNTING 44.. SCOTT 20 RESEARCH

LOC DALLAS CHICAGO CHICAGO DALLAS CHICAGO CHICAGO NEW YOR' DALLAS NEW YOR' CHICAGO DALLAS CHICAGO DALLAS NEW YOR' BOSTON

LOC DALLAS CHICAGO CHICAGO DALLAS CHICAGO CHICAGO NEW YOR' DALLAS

105 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4.)! 'ING 4.22 TURNER 4.43 ADAMS 4!00 JAMES 4!02 FORD 4!)2 MILLER 1/ ;GHI I989:<9=.

10 )0 20 )0 20 10 20

ACCOUNTING SALES RESEARCH SALES RESEARCH ACCOUNTING OPERATIONS

NEW YOR' CHICAGO DALLAS CHICAGO DALLAS NEW YOR' BOSTON

RIGHT OUTER JOIN IN PRIOR TO ORACLE !I SELECT EMPNO%ENAME%EMP2.DEPTNO%DNAME%LOC FROM EMP2%DEPT WHERE EMP2.DEPTNO(M)LDEPT.DEPTNO5 EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES 44.2 CLAR' 10 ACCOUNTING 44.. SCOTT 20 RESEARCH 4.)! 'ING 10 ACCOUNTING 4.22 TURNER )0 SALES 4.43 ADAMS 20 RESEARCH 4!00 JAMES )0 SALES 4!02 FORD 20 RESEARCH 4!)2 MILLER 10 ACCOUNTING OPERATIONS 1/ ;GHI I989:<9=. 1 SELECT EMPNO%ENAME%DEPT.DEPTNO%DNAME%LOC 2 FROM EMP2%DEPT )$ WHERE EMP2.DEPTNO(M)LDEPT.DEPTNO5 EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES 44.2 CLAR' 10 ACCOUNTING 44.. SCOTT 20 RESEARCH 4.)! 'ING 10 ACCOUNTING 4.22 TURNER )0 SALES 4.43 ADAMS 20 RESEARCH 4!00 JAMES )0 SALES 4!02 FORD 20 RESEARCH

LOC DALLAS CHICAGO CHICAGO DALLAS CHICAGO CHICAGO NEW YOR' DALLAS NEW YOR' CHICAGO DALLAS CHICAGO DALLAS NEW YOR' BOSTON

LOC DALLAS CHICAGO CHICAGO DALLAS CHICAGO CHICAGO NEW YOR' DALLAS NEW YOR' CHICAGO DALLAS CHICAGO DALLAS

106 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4!)2 MILLER 1/ ;GHI I989:<9=.

10 20

ACCOUNTING OPERATIONS

NEW YOR' BOSTON

LEFT OUTER JOIN: IN ORACLE !I IN THE ABOVE #UERY NO E"TRA ROWS WERE SELECTED BECAUSE THERE NO BODY WHO IS WOR'ING OTHER THAN DEPTNOS WHICH ARE THERE IN DEPT TABLE. THAT IS BECAUSE OF FOREIGN 'EY. SELECT EMPNO%ENAME%DEPT.DEPTNO%DNAME%LOC FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPTNOLDEPT.DEPTNO5 EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES 44.2 CLAR' 10 ACCOUNTING 44.. SCOTT 20 RESEARCH 4.)! 'ING 10 ACCOUNTING 4.22 TURNER )0 SALES 4.43 ADAMS 20 RESEARCH 4!00 JAMES )0 SALES 4!02 FORD 20 RESEARCH 4!)2 MILLER 10 ACCOUNTING 12 ;GHI I989:<9=. HERE WE CREATE EMP2 TABLE AND INSERT /0%30%40 VALUES IN TO THE TABLE. S#L1 CREATE TABLE EMP2 2 AS ) SELECT $ FROM EMP5 T6789 :;96<9=. S#L1 SELECT $ FROM EMP25 EMPNO ENAMEJOB MGR HIREDATE SAL COMM &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4!02 14&DEC&.0 .00 42!! ALLEN SALESMAN 43!. 20&FEB&.1 1300 )00 4/21 WARD SALESMAN 43!. 22&FEB&.1 12/0 /00 4/33 JONES MANAGER 4.)! 02&APR&.1 2!4/ 43/2 MARTIN SALESMAN 43!. 2.&SEP&.1 12/0 1200 43!. BLA'E MANAGER 4.)! 01&MAY&.1 2./0 DEPTNO 20 )0 )0 20 )0 )0

LOC DALLAS CHICAGO CHICAGO DALLAS CHICAGO CHICAGO NEW YOR' DALLAS NEW YOR' CHICAGO DALLAS CHICAGO DALLAS NEW YOR'

107 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 44.. SCOTT ANALYST 4/33 1!&APR&.4 )000 4.)! 'ING PRESIDENT 14&NOV&.1 /000 4.22 TURNER SALESMAN 43!. 0.&SEP&.1 1/00 0 4.43 ADAMS CLER' 44.. 2)&MAY&.4 1100 4!00 JAMES CLER' 43!. 0)&DEC&.1 !/0 4!02 FORD ANALYST 4/33 0)&DEC&.1 )000 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 12 ;GHI I989:<9=. S#L1 INSERT INTO EMP2 2 VALUES ) (1%CPAVANC%CMANAGERC%12)%C01&DEC&0/C%1000%100%/0)5 1 ;GH :;96<9=. 1 INSERT INTO EMP2 2 VALUES )$ (2%C'UMARC%CMANAGERC%12)%C01&DEC&0/C%1000%100%30)5 1 ;GH :;96<9=. 1 INSERT INTO EMP2 2 VALUES )$ ()%CGAYATRIC%CMANAGERC%12)%C01&DEC&0/C%1000%100%40)5 1 ;GH :;96<9=. SELECT EMPNO%ENAME%EMP2.DEPTNO%DNAME%LOC FROM EMP2 LEFT OUTER JOIN DEPT ON EMP2.DEPTNOLDEPT.DEPTNO5 EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES 44.2 CLAR' 10 ACCOUNTING 44.. SCOTT 20 RESEARCH 4.)! 'ING 10 ACCOUNTING 4.22 TURNER )0 SALES 4.43 ADAMS 20 RESEARCH 4!00 JAMES )0 SALES 4!02 FORD 20 RESEARCH 4!)2 MILLER 10 ACCOUNTING 1 PAVAN /0 2 'UMAR 30 ) GAYATRI 40 LEFT OUTER JOIN IN PRIOR TO ORACLE !I 1 SELECT EMPNO%ENAME%EMP2.DEPTNO%DNAME%LOC

10 20 10 )0 20 )0 20 10

LOC DALLAS CHICAGO CHICAGO DALLAS CHICAGO CHICAGO NEW YOR' DALLAS NEW YOR' CHICAGO DALLAS CHICAGO DALLAS NEW YOR'

108 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2 FROM EMP2%DEPT )$ WHERE EMP2.DEPTNOLDEPT.DEPTNO(M) EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES 44.2 CLAR' 10 ACCOUNTING 44.. SCOTT 20 RESEARCH 4.)! 'ING 10 ACCOUNTING 4.22 TURNER )0 SALES 4.43 ADAMS 20 RESEARCH 4!00 JAMES )0 SALES 4!02 FORD 20 RESEARCH 4!)2 MILLER 10 ACCOUNTING 1 PAVAN 2 'UMAR ) GAYATRI 14 ;GHI I989:<9=. /0 30 40

LOC DALLAS CHICAGO CHICAGO DALLAS CHICAGO CHICAGO NEW YOR' DALLAS NEW YOR' CHICAGO DALLAS CHICAGO DALLAS NEW YOR'

FULL OUTER JOIN: IN ORACLE !I SELECT EMPNO%ENAME%EMP2.DEPTNO%DNAME%LOC FROM EMP2 FULL OUTER JOIN DEPT ON EMP2.DEPTNOLDEPT.DEPTNO5 EMPNO ENAME DEPTNO DNAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH 42!! ALLEN )0 SALES 4/21 WARD )0 SALES 4/33 JONES 20 RESEARCH 43/2 MARTIN )0 SALES 43!. BLA'E )0 SALES 44.2 CLAR' 10 ACCOUNTING 44.. SCOTT 20 RESEARCH 4.)! 'ING 10 ACCOUNTING 4.22 TURNER )0 SALES 4.43 ADAMS 20 RESEARCH 4!00 JAMES )0 SALES 4!02 FORD 20 RESEARCH 4!)2 MILLER 10 ACCOUNTING 1 PAVAN /0 2 'UMAR 30 ) GAYATRI 40 OPERATIONS 1. ;GHI I989:<9=.

LOC DALLAS CHICAGO CHICAGO DALLAS CHICAGO CHICAGO NEW YOR' DALLAS NEW YOR' CHICAGO DALLAS CHICAGO DALLAS NEW YOR'

BOSTON

109 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

SELECT EMPNO%ENAME%EMP2.DEPTNO%DEPT.DEPTNO%DNAME%LOC FROM EMP2 FULL OUTER JOIN DEPT ON EMP2.DEPTNOLDEPT.DEPTNO EMPNO ENAME DEPTNO DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4!)2 MILLER 10 10 ACCOUNTING NEW YOR' 4.)! 'ING 10 10 ACCOUNTING NEW YOR' 44.2 CLAR' 10 10 ACCOUNTING NEW YOR' 4!02 FORD 20 20 RESEARCH DALLAS 4.43 ADAMS 20 20 RESEARCH DALLAS 44.. SCOTT 20 20 RESEARCH DALLAS 4/33 JONES 20 20 RESEARCH DALLAS 4)3! SMITH 20 20 RESEARCH DALLAS 4!00 JAMES )0 )0 SALES CHICAGO 4.22 TURNER )0 )0 SALES CHICAGO 43!. BLA'E )0 )0 SALES CHICAGO 43/2 MARTIN )0 )0 SALES CHICAGO 4/21 WARD )0 )0 SALES CHICAGO 42!! ALLEN )0 )0 SALES CHICAGO 1 PAVAN /0 2 'UMAR 30 ) GAYATRI 40 20 OPERATIONS BOSTON 1. ;GHI I989:<9=. FULL OUTER JOIN IN PRIOR TO ORACLE !I S#L1 SELECT EMPNO%ENAME%DEPT.DEPTNO%DNAME%LOC 2 FROM EMP2%DEPT ) WHERE EMP2.DEPTNO(M)LDEPT.DEPTNO 2 UNION / SELECT EMPNO%ENAME%EMP2.DEPTNO%DNAME%LOC 3 FROM EMP2%DEPT 4 WHERE EMP2.DEPTNOLDEPT.DEPTNO(M)5 EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 1 PAVAN /0 2 'UMAR 30 ) GAYATRI 40 4)3! SMITH 20 RESEARCH DALLAS 42!! ALLEN )0 SALES CHICAGO 4/21 WARD )0 SALES CHICAGO 4/33 JONES 20 RESEARCH DALLAS 43/2 MARTIN )0 SALES CHICAGO 43!. BLA'E )0 SALES CHICAGO 44.2 CLAR' 10 ACCOUNTING NEW YOR' 44.. SCOTT 20 RESEARCH DALLAS 4.)! 'ING 10 ACCOUNTING NEW YOR' 4.22 TURNER )0 SALES CHICAGO 4.43 ADAMS 20 RESEARCH DALLAS

110 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4!00 JAMES 4!02 FORD 4!)2 MILLER 1. ;GHI I989:<9=.

)0 SALES 20 RESEARCH 10 ACCOUNTING 20 OPERATIONS

CHICAGO DALLAS NEW YOR' BOSTON

1 SELECT EMPNO%ENAME%DEPT.DEPTNO D(DEPTNO%EMP2.DEPTNO E(DEPTNO% DNAME%LOC 2 FROM EMP2%DEPT ) WHERE EMP2.DEPTNO(M)LDEPT.DEPTNO 2 UNION / SELECT EMPNO%ENAME%DEPT.DEPTNO D(DEPTNO% EMP2.DEPTNO E(DEPTNO%DNAME%LOC 3 FROM EMP2%DEPT 4 WHERE EMP2.DEPTNOLDEPT.DEPTNO(M) EMPNO ENAME D(DEPTNO E(DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 1 PAVAN /0 2 'UMAR 30 ) GAYATRI 40 4)3! SMITH 20 20 RESEARCH DALLAS 42!! ALLEN )0 )0 SALES CHICAGO 4/21 WARD )0 )0 SALES CHICAGO 4/33 JONES 20 20 RESEARCH DALLAS 43/2 MARTIN )0 )0 SALES CHICAGO 43!. BLA'E )0 )0 SALES CHICAGO 44.2 CLAR' 10 10 ACCOUNTING NEW YOR' 44.. SCOTT 20 20 RESEARCH DALLAS 4.)! 'ING 10 10 ACCOUNTING NEW YOR' 4.22 TURNER )0 )0 SALES CHICAGO 4.43 ADAMS 20 20 RESEARCH DALLAS 4!00 JAMES )0 )0 SALES CHICAGO 4!02 FORD 20 20 RESEARCH DALLAS 4!)2 MILLER 10 10 ACCOUNTING NEW YOR' 20 OPERATIONS BOSTON 1. ;GHI I989:<9=. SELF JOIN: 1 SELECT W.EMPNO%W.ENAME%M.EMPNO%M.ENAME FROM 2 EMP W% EMP M )$ WHERE W.MGRLM.EMPNO S#L1 / EMPNO ENAME EMPNO ENAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH 4!02 FORD 42!! ALLEN 43!. BLA'E 4/21 WARD 43!. BLA'E 4/33 JONES 4.)! 'ING 43/2 MARTIN 43!. BLA'E 43!. BLA'E 4.)! 'ING

111 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

44.2 CLAR' 44.. SCOTT 4.22 TURNER 4.43 ADAMS 4!00 JAMES 4!02 FORD 4!)2 MILLER JOIN &ON

4.)! 'ING 4/33 JONES 43!. BLA'E 44.. SCOTT 43!. BLA'E 4/33 JONES 44.2 CLAR'

1 SELECT W.EMPNO%W.ENAME%M.EMPNO%M.ENAME FROM 2 EMP W JOIN EMP M )$ ON W.MGRLM.EMPNO 2 / EMPNO ENAME EMPNO ENAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! SMITH 4!02 FORD 42!! ALLEN 43!. BLA'E 4/21 WARD 43!. BLA'E 4/33 JONES 4.)! 'ING 43/2 MARTIN 43!. BLA'E 43!. BLA'E 4.)! 'ING 44.2 CLAR' 4.)! 'ING 44.. SCOTT 4/33 JONES 4.22 TURNER 43!. BLA'E 4.43 ADAMS 44.. SCOTT 4!00 JAMES 43!. BLA'E 4!02 FORD 4/33 JONES 4!)2 MILLER 44.2 CLAR' SE#UENCES: DEFINE A SE#UENCE TO GENERATE SE#UENTIAL NUMBERS AUTOMATICALLY. WHAT IS A SE#UENCE@ A SE#UENCE: AUTOMATICALLY GENERATES UNI#UE NUMBERS. IS A SHARABLE OBJECT.(MULTIPLE USERS CAN SHARE SE#UENCE SE#UENCE NUMBERS ARE STORED AND GENERATED

BECAUSE

INDEPENDENTLY OF TABLES.) IT IS TYPICALLY USED TO CREATE A PRIMARY 'EY VALUE.

112 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

REPLACES APPLICATION CODE.(THIS IS TIME SAVING OBJECT BECAUSE

IT CAN REDUCE THE AMOUNT OF APPLICATION CODE NEEDED TO WRITE A SE#UENCE&GENERATING ROUTINE). SPEEDS UP THE EFFICIENCY OF ACCESSING SE#UENCE VALUES WHEN

CACHED IN MEMORY. CREATE SE#UENCE SE#UENCE(NAME [INCREMENT BY N\ [START WITH N\ []MA"VALUE N V NOMA"VALUE^\ []MINVALUE N V NOMINVALUE^\ []CYCLE V NOCYCLE^\ []CACHE N V NOCACHE^\5

IN SYNTA": SE#UENCE(NAME SE#UENCE NAME

INCREMENT BY N SPECIFIES THE INTERVAL BETWEEN SE#UENCE NUMBERS WHERE N IS AN INTEGER.(IF THIS CLAUSE IS OMMITED % THE SE#UENCE INCREMENTS BY 1.) STARTWITH N SPECIFIES THE FIRST SE#UENCE NUMBER TO BE GENERATED. (IF THIS CLAUSE IS OMMITED % THE SE#UENCE STARTS WITH 1.) MA"VALUE N GENERATE. SPECIFIES MA"VALUE THE SE#UENCE CAN

NOMA"VALUE SPECIFIES A MA"IMUM VALUE OF 10 _ 24 FOR ASENDING SE#UENCE AND &1 FOR DESENDING SE#UENCE.(THIS IS DEFAULT OPTION) MINVALUE N GENERATE. SPECIFIES MINVALUE THE SE#UENCE CAN

NOMINVALUE SPECIFIES A MA"IMUM VALUE OF 1 FOR AN ASCENDING SE#UENCE AND &1 FOR DESCENDING SE#UENCE.(THIS IS DEFAULT OPTION)

113 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

CYCLE V NOCYCLE SPECIFIES WHETHER THE SE#UENCE CONTINUES TO GENERATE VALUE AFTER REACHING ITS MA"IMUM OR MINIMUM VALUE(NO CYCLE IS DEFAULT OPTION) CACHE N V NO CACHE SPECIFIES HOW MANY VALUES THE ORACLE SERVER PREALLOCATES AND 'EEP IN MEMORY.(BY DEFAULT ORACLE SERVER CACHES 20 VALUES) CREATION OF SE#UENCE: S#L1 CREATE SE#UENCE DEPT(DUP(SE# 2 INCREMENT BY 10 ) START WITH 10 2 MA"VALUE 100 / NOCACHE 3 NOCYCLE5 S9Q?9E:9 :;96<9=. S#L1 SELECT $ FROM USER(SE#UENCES5 SE#UENCE(NAME MIN(VALUE MA"(VALUE INCREMENT(BY C O CACHE(SI E LAST(NUMBER &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&& & & &&&&&&&&&& &&&&&&&&&&& DEPT(DUP(SE# 1 100 10 NN 0 10 NE"TVAL AND CURRVAL PSEUDOCOLUMNS5 1$ SELECT DEPT(DUP(SE#.CURRVAL FROM DUAL S#L1 / SELECT DEPT(DUP(SE#.CURRVAL FROM DUAL $ ERROR 6< 8FE9 1: ORA&0.002: I9Q?9E:9 DEPT(DUP(SE#.CURRVAL FI EG< A9< =9TFE9= FE <DFI I9IIFGE INSERTING THE VALUES OF SE#UENCES IN TO THE TABLE: S#L1 INSERT INTO DEPT(DUP 2 VALUES ) (DEPT(DUP(SE#.NE"TVAL%CCOMC%CNYC)5 1 ;GH :;96<9=. 1 INSERT INTO DEPT(DUP 2 VALUES )$ (DEPT(DUP(SE#.NE"TVAL%CSALESC%CNYC) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO DEPT(DUP 2 VALUES )$ (DEPT(DUP(SE#.NE"TVAL%COPRC%CNYC) S#L1 / 1 ;GH :;96<9=.

114 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 SELECT $ FROM DEPT(DUP5 DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 10 COM NY 20 SALES NY )0 OPR NY S#L1 SELECT DEPT(DUP(SE#.CURRVAL FROM DUAL5 CURRVAL &&&&&&&&&& )0 VIEWING SE#UENCES IN DATABASE: S#L1 SELECT $ FROM USER(SE#UENCES5 SE#UENCE(NAME MIN(VALUE MA"(VALUE INCREMENT(BY C O CACHE(SI E LAST(NUMBER &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&& & & &&&&&&&&&& &&&&&&&&&&& DEPT(DUP(SE# 1 100 10 NN 0 20 HERE IN LAST(NUMBER COLUMN WE CAN SEE NE"T AVALIABLE NUMBER. DONCT SEE NE"T AVALIABLE NUMBER BY SELECTING LI'E THIS SELECT DEPT(DUP(SE#.NE"TVAL FROM DUAL5 NE"TVAL &&&&&&&&&& 20 S#L1 INSERT INTO DEPT(DUP 2 VALUES ) (DEPT(DUP(SE#.NE"TVAL%CAAC%CNYC)5 1 ;GH :;96<9=. S#L1 SELECT $ FROM DEPT(DUP5 DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 10 COM NY 20 SALES NY )0 OPR NY /0 AA NY HERE WE ARE SUPPOSED TO GET 20 BUT WE GOT /0. THAT MEANS WHEN WE SAW NE"T AVALIABLE NUMBER BY USING SE#UENCE(NAME.NE"TVAL. IT GENERATED THAT NUMBER.IT CANNOT BE REVO'ED BAC'.IT IS ALWAYS ADVISED TO SEE NE"T AVALIABLE NUMBER IN USER(SE#UENCES TABLES LAST(NUMBER COLUMN. 1$ SELECT DEPT(DUP(SE#.NE"TVAL FROM DUAL S#L1 / NE"TVAL &&&&&&&&&& 30 S#L1 /

115 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

NE"TVAL &&&&&&&&&& 40 S#L1 / NE"TVAL &&&&&&&&&& .0 S#L1 / NE"TVAL &&&&&&&&&& !0 S#L1 / NE"TVAL &&&&&&&&&& 100 S#L1 / SELECT DEPT(DUP(SE#.NE"TVAL FROM DUAL $ ERROR 6< 8FE9 1: ORA&0.002: I9Q?9E:9 DEPT(DUP(SE#.NE"TVAL 9U:99=I MA"VALUE 6E= :6EEG< 79 FEI<6E<F6<9= HERE SE#UENCE REACHED MA"VALUE.IT CANNOT GENERATE NUMBER. WE CAN ALTER SE#UENCE ALTERING A SE#UENCE: S#L1 ALTER SE#UENCE DEPT(DUP(SE# 2 MA"VALUE 1/05 S9Q?9E:9 68<9;9=. S#L1 SELECT DEPT(DUP(SE#.NE"TVAL FROM DUAL5 NE"TVAL &&&&&&&&&& 110 S#L1 SELECT $ FROM USER(SE#UENCES5 SE#UENCE(NAME MIN(VALUE MA"(VALUE INCREMENT(BY C O CACHE(SI E LAST(NUMBER &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&& & & &&&&&&&&&& &&&&&&&&&&& DEPT(DUP(SE# 1 1/0 10 NN 0 A120 WE CAN CHANGE INCREMENT VALUE%MA"VALUE%MINVALUE%CYCLE%CACHE OPTIONS IN ALTER.

116 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

WE CANNOT CHNAGE START WITH OPTION IN ALTER.TO START SE#UENCE WITH NEW NUMBER IT SHOULD BE DROPPED AND RECREATED. SOME VALIDATION IS IMPOSED WHEN ALTER A SE#UENCE. S#L1 ALTER SE#UENCE DEPT(DUP(SE# 2 MA"VALUE 1005 ALTER SE#UENCE DEPT(DUP(SE# $ ERROR 6< 8FE9 1: ORA&0200!: MA"VALUE :6EEG< 79 >6=9 <G 79 89II <D6E <D9 :?;;9E< R68?9 S#L1 ALTER SE#UENCE DEPT(DUP(SE# 2 CYCLE5 S9Q?9E:9 68<9;9=. 1$ SELECT DEPT(DUP(SE#.NE"TVAL FROM DUAL S#L1 / NE"TVAL &&&&&&&&&& 120 S#L1 SELECT $ FROM USER(SE#UENCES5 SE#UENCE(NAME MIN(VALUE MA"(VALUE INCREMENT(BY C O CACHE(SI E LAST(NUMBER &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&& & & &&&&&&&&&& &&&&&&&&&&& DEPT(DUP(SE# 1 1/0 10 Y N 0 1)0 S#L1 SELECT DEPT(DUP(SE#.NE"TVAL FROM DUAL5 NE"TVAL &&&&&&&&&& 1)0 S#L1 / NE"TVAL &&&&&&&&&& 120 S#L1 / NE"TVAL &&&&&&&&&& 1/0 S#L1 / NE"TVAL &&&&&&&&&& 1 S#L1 /

117 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

NE"TVAL &&&&&&&&&& 11 HERE BECAUSE OF CYCLE OPTION WE GOT NUMBER FROM MINVALUE OF THE SE#UENCE. S#L1 CREATE SE#UENCE DEPT(DUP(SE#1 2 INCREMENT BY 1 ) START WITH 100 2 CACHE )05 S9Q?9E:9 :;96<9=. S#L1 SELECT $ FROM USER(SE#UENCES5 SE#UENCE(NAME MIN(VALUE MA"(VALUE INCREMENT(BY C O CACHE(SI E LAST(NUMBER &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&& & & &&&&&&&&&& &&&&&&&&&&& DEPT(DUP(SE#1 1 1.0000EM24 1 N N )0 100 1$ SELECT DEPT(DUP(SE#1.NE"TVAL FROM DUAL 2 / NE"TVAL &&&&&&&&&& 100 S#L1 SELECT $ FROM USER(SE#UENCES5 SE#UENCE(NAME MIN(VALUE MA"(VALUE INCREMENT(BY C O CACHE(SI E LAST(NUMBER &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&& & & &&&&&&&&&& &&&&&&&&&&& DEPT(DUP(SE#1 1 1.0000EM24 1 N N )0 1)0 HERE U CANNOT DEPEND ON LAST(NUMBER COLUMN FOR NE"T NUMBER. DROPING SE#UENCES: S#L1 DROP SE#UENCE DEPT(DUP(SE#1 S9Q?9E:9 =;GBB9=. HERE CACHE MEANS ORACLE 'EEPS )0 VALUES IN THE CACHE MEMORY.DEFAULT IS 20.CYCLE MEANS IF THE NUMBER GENERATES MA" NUMBER THEN ONCE AGAIN IT START FROM MIN VALUE. CREATING SE#UENCE WITHOUT ANY PARAMETERS: S#L1 CREATE SE#UENCE DEPT(DEPT25 S9Q?9E:9 :;96<9=. ORACLE FUNCTIONS:

118 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 SELECT ABS(&20) FROM DUAL5 ABS(&20) &&&&&&&&&& 20 S#L1 SELECT POWER()%2) FROM DUAL5 POWER()%2) &&&&&&&&&& ! S#L1 SELECT ROUND(1/.1!%1) FROM DUAL5 ROUND(1/.1!%1) &&&&&&&&&&&&&& 1/.2 S#L1 SELECT S#RT(2/) FROM DUAL5 S#RT(2/) &&&&&&&&&& / 1 SELECT E"TRACT(YEAR FROM DATE C2002&04&02C) PYEARP% 2$ E"TRACT(MONTH FROM DATE C2002&04&02C)PMONTHP FROM DUAL S#L1 / YEAR MONTH &&&&&&&&&& &&&&&&&&&& 2002 4 S#L1 SELECT MOD(1/%4) PMOD1P%MOD(1/.4%4) PMOD2P FROM DUAL5 MOD1 MOD2 &&&&&&&&&& &&&&&&&&&& 1 1.4 S#L1 SELECT FLOOR(22..)%FLOOR(1).1/) FROM DUAL5 FLOOR(22..) FLOOR(1).1/) &&&&&&&&&&& &&&&&&&&&&&& 22 1) S#L1 SELECT CEIL(22..)%CEIL(1).1/) FROM DUAL5 CEIL(22..) CEIL(1).1/) &&&&&&&&&& &&&&&&&&&&& 2/ 12 S#L1 SELECT TRANSLATE(C1PAVAV/2)C%C12)C%C4A!C) FROM DUAL5 TRANSLATE &&&&&&&&& 4PAVAV/A! S#L1 SELECT LENGTH(CPAVANC) FROM DUAL5 LENGTH(CPAVANC) &&&&&&&&&&&&&&& /

119 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 SELECT LTRIM(CNISHAC%CNC) FROM DUAL5 LTRI &&&& ISHA S#L1 SELECT RTRIM(CNISHAC%CAC) FROM DUAL5 RTRI &&&& NISH S#L1 SELECT TRIM(C PAVAN C) FROM DUAL5 TRIM( &&&&& PAVAN S#L1 SELECT TRIM(LEADING C"C FROM C"""HANSEL"""C) FROM DUAL5 TRIM(LEAD &&&&&&&&& HANSEL""" S#L1 SELECT TRIM(BOTH C"C FROM C"""HANSEL"""C) FROM DUAL5 TRIM(B &&&&&& HANSEL S#L1 SELECT TRIM(BOTH C1C FROM C12)HANSEL12111C) FROM DUAL5 TRIM(BOTHC &&&&&&&&&& 2)HANSEL12 S#L1 SELECT LPAD(CPAGE 1C%10%C$C) PLPADP FROM DUAL5 LPAD &&&&&&&&&& $$$$PAGE 1 S#L1 SELECT RPAD(ENAME%10%C"C) PRPADP FROM EMP WHERE ENAME L CSMITHC5 RPAD &&&&&&&&&& SMITH""""" S#L1 SELECT ROUND(2/.!2)%2)%ROUND(2/.!2)%0)%ROUND(2/.!2)%&1) FROM DUAL5 ROUND(2/.!2)%2) ROUND(2/.!2)%0) ROUND(2/.!2)%&1) &&&&&&&&&&&&&&& &&&&&&&&&&&&&&& &&&&&&&&&&&&&&&& 2/.!2 23 /0 S#L1 SELECT TRUNC(2/.!2)%2)%TRUNC(2/.!2)%0)%TRUNC(2/.!2)%&1) FROM DUAL5 TRUNC(2/.!2)%2) TRUNC(2/.!2)%0) TRUNC(2/.!2)%&1) &&&&&&&&&&&&&&& &&&&&&&&&&&&&&& &&&&&&&&&&&&&&&& 2/.!2 2/ 20

120 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 SELECT HIREDATE%ROUND(HIREDATE%CMONTHC)%TRUNC(HIREDATE%CMONTHC) FROM EMP5 HIREDATE ROUND(HIR TRUNC(HIR &&&&&&&&& &&&&&&&&& &&&&&&&&& 14&DEC&.0 01&JAN&.1 01&DEC&.0 20&FEB&.1 01&MAR&.1 01&FEB&.1 22&FEB&.1 01&MAR&.1 01&FEB&.1 02&APR&.1 01&APR&.1 01&APR&.1 2.&SEP&.1 01&OCT&.1 01&SEP&.1 01&MAY&.1 01&MAY&.1 01&MAY&.1 0!&JUN&.1 01&JUN&.1 01&JUN&.1 1!&APR&.4 01&MAY&.4 01&APR&.4 14&NOV&.1 01&DEC&.1 01&NOV&.1 0.&SEP&.1 01&SEP&.1 01&SEP&.1 2)&MAY&.4 01&JUN&.4 01&MAY&.4 0)&DEC&.1 01&DEC&.1 01&DEC&.1 0)&DEC&.1 01&DEC&.1 01&DEC&.1 2)&JAN&.2 01&FEB&.2 01&JAN&.2 12 ;GHI I989:<9=. S#L1 SELECT HIREDATE%ROUND(HIREDATE%CYEARC)%TRUNC(HIREDATE%CYEARC) FROM EMP5 HIREDATE ROUND(HIR TRUNC(HIR &&&&&&&&& &&&&&&&&& &&&&&&&&& 14&DEC&.0 01&JAN&.1 01&JAN&.0 20&FEB&.1 01&JAN&.1 01&JAN&.1 22&FEB&.1 01&JAN&.1 01&JAN&.1 02&APR&.1 01&JAN&.1 01&JAN&.1 2.&SEP&.1 01&JAN&.2 01&JAN&.1 01&MAY&.1 01&JAN&.1 01&JAN&.1 0!&JUN&.1 01&JAN&.1 01&JAN&.1 1!&APR&.4 01&JAN&.4 01&JAN&.4 14&NOV&.1 01&JAN&.2 01&JAN&.1 0.&SEP&.1 01&JAN&.2 01&JAN&.1 2)&MAY&.4 01&JAN&.4 01&JAN&.4 0)&DEC&.1 01&JAN&.2 01&JAN&.1 0)&DEC&.1 01&JAN&.2 01&JAN&.1 2)&JAN&.2 01&JAN&.2 01&JAN&.2 12 ;GHI I989:<9=. TO(NUMBER: CONVERTS CHARACTER VALUE E"PRESSING A NUMBER TO A NUMBER DATA TYPE. SELECT TO(NUMBER(SUBSTR(C`100C%2%))) FROM DUAL5 S#L1 SELECT TO(NUMBER(SUBSTR(C`100C%2%))) FROM DUAL5 TO(NUMBER(SUBSTR(C`100C%2%))) &&&&&&&&&&&&&&&&&&&&&&&&&&&&& 100

121 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

TO(CHAR: CONVERTS A VALUE OF NUMBER DATATYPE TO A CHARACTER DATA TYPE. S#L1 SELECT TO(CHAR(12)2%C`!%!!!C) FROM DUAL5 TO(CHAR &&&&&&& `1%2)2 CONVERTS A DATE DATATYPE TO A CHARACTER DATA TYPE. S#L1 SELECT TO(CHAR(SYSDATE%CMONTH DD%YYYYC) FROM DUAL5 TO(CHAR(SYSDATE%C &&&&&&&&&&&&&&&&& JULY 2.%200/ S#L1 SELECT TO(CHAR(SYSDATE%CMONTH DAY%YYYYC) FROM DUAL5 TO(CHAR(SYSDATE%CMONTHDA &&&&&&&&&&&&&&&&&&&&&&&& JULY THURSDAY %200/ S#L1 SELECT TO(CHAR(SYSDATE%CMONTH DAY YEARC) FROM DUAL5 TO(CHAR(SYSDATE%CMONTHDAYYEARC) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& JULY THURSDAY TWO THOUSAND FIVE S#L1 SELECT TO(CHAR(SYSDATE%CMM DD YYC) FROM DUAL5 TO(CHAR( &&&&&&&& 04 2. 0/ S#L1 SELECT TO(CHAR(SYSDATE%CDD MM YYC) FROM DUAL5 TO(CHAR( &&&&&&&& 2. 04 0/ TO(DATE: CONVERTS A CHARACTER DATATYPE TO A DATE DATA TYPE. S#L1 SELECT TO(DATE(C03/04/02C%CDD/MM/YYC) FROM DUAL5 TO(DATE(C &&&&&&&&& 03&JUL&02 SPECIAL DATE FORMATS USING TO(CHAR : S#L1 SELECT ENAME%TO(CHAR(HIREDATE%CDDTH&MON&YYC) FROM EMP5 ENAME TO(CHAR(HIR &&&&&&&&&& &&&&&&&&&&&

122 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

SMITH 14TH&DEC&.0 ALLEN 20TH&FEB&.1 WARD 22ND&FEB&.1 JONES 02ND&APR&.1 MARTIN 2.TH&SEP&.1 BLA'E 01ST&MAY&.1 CLAR' 0!TH&JUN&.1 SCOTT 1!TH&APR&.4 'ING 14TH&NOV&.1 TURNER 0.TH&SEP&.1 ADAMS 2)RD&MAY&.4 JAMES 0)RD&DEC&.1 FORD 0)RD&DEC&.1 MILLER 2)RD&JAN&.2 12 ;GHI I989:<9=. S#L1 SELECT ENAME%TO(CHAR(HIREDATE%CDDSP&MON&YYC) FROM EMP5 ENAME TO(CHAR(HIREDATE%CD &&&&&&&&&& &&&&&&&&&&&&&&&&&&& SMITH SEVENTEEN&DEC&.0 ALLEN TWENTY&FEB&.1 WARD TWENTY&TWO&FEB&.1 JONES TWO&APR&.1 MARTIN TWENTY&EIGHT&SEP&.1 BLA'E ONE&MAY&.1 CLAR' NINE&JUN&.1 SCOTT NINETEEN&APR&.4 'ING SEVENTEEN&NOV&.1 TURNER EIGHT&SEP&.1 ADAMS TWENTY&THREE&MAY&.4 JAMES THREE&DEC&.1 FORD THREE&DEC&.1 MILLER TWENTY&THREE&JAN&.2 12 ;GHI I989:<9=. S#L1 SELECT ENAME%TO(CHAR(HIREDATE%CDDSPTH&MON&YYC) FROM EMP5 ENAME TO(CHAR(HIREDATE%CDDS &&&&&&&&&& &&&&&&&&&&&&&&&&&&&&& SMITH SEVENTEENTH&DEC&.0 ALLEN TWENTIETH&FEB&.1 WARD TWENTY&SECOND&FEB&.1 JONES SECOND&APR&.1 MARTIN TWENTY&EIGHTH&SEP&.1 BLA'E FIRST&MAY&.1 CLAR' NINTH&JUN&.1 SCOTT NINETEENTH&APR&.4 'ING SEVENTEENTH&NOV&.1 TURNER EIGHTH&SEP&.1 ADAMS TWENTY&THIRD&MAY&.4 JAMES THIRD&DEC&.1 FORD THIRD&DEC&.1 MILLER TWENTY&THIRD&JAN&.2

123 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

12 ;GHI I989:<9=. TURNING NUMERICS TO ALPHABETS: THERE ARE TIMES WHEN AMOUNTS IN AN APPLICATION HAVE TO BE REPRESENTED BY ALPHABETICALLY.THIS CAN BE DONE BY JULIAN DATE CONVERSIONS. S#L1 SELECT TO(CHAR(TO(DATE()23/2%CJC)%CJSPC) FROM DUAL5 TO(CHAR(TO(DATE()23/2%CJC)%CJSPC) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& THIRTY&FOUR THOUSAND SI" HUNDRED FIFTY&FOUR S#L1 SELECT TO(CHAR(TO(DATE()23/2%CJC)%CJIPC) FROM DUAL5 TO(CHAR(TO(DATE()23/2%CJC)%CJSPC) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& TDF;<A&FG?; TDG?I6E= SFU H?E=;9= FFT<A&FG?; S#L1 SELECT TO(CHAR(TO(DATE()23/2%CJC)%CXSPC) FROM DUAL5 TO(CHAR(TO(DATE()23/2%CJC)%CJSPC) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& <DF;<A&TG?; <DG?I6E= IFU D?E=;9= TFT<A&TG?; ADDING LINE FEEDS TO SELECT STATEMENT OUTPUT: S#L1 SELECT CEMPLOYEE NAME:C VVENAMEVVCHR(10) 2 VV CJOB:CVV JOB VV CHR(10) VV ) CJOINING DATE:C VV HIREDATE PEMPLOYEE DETAILSP FROM EMP5 EMPLOYEE DETAILS &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPLOYEE NAME:SMITH JOB:CLER' JOINING DATE:14&DEC&.0 EMPLOYEE NAME:ALLEN JOB:SALESMAN JOINING DATE:20&FEB&.1 EMPLOYEE NAME:WARD JOB:SALESMAN JOINING DATE:22&FEB&.1 EMPLOYEE NAME:JONES JOB:MANAGER JOINING DATE:02&APR&.1 EMPLOYEE NAME:MARTIN JOB:SALESMAN JOINING DATE:2.&SEP&.1 EMPLOYEE NAME:BLA'E JOB:MANAGER

124 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

JOINING DATE:01&MAY&.1 EMPLOYEE NAME:CLAR' JOB:MANAGER JOINING DATE:0!&JUN&.1 EMPLOYEE NAME:SCOTT JOB:ANALYST JOINING DATE:1!&APR&.4 EMPLOYEE NAME:'ING JOB:PRESIDENT JOINING DATE:14&NOV&.1 EMPLOYEE NAME:TURNER EMPLOYEE DETAILS &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& JOB:SALESMAN JOINING DATE:0.&SEP&.1 EMPLOYEE NAME:ADAMS JOB:CLER' JOINING DATE:2)&MAY&.4 EMPLOYEE NAME:JAMES JOB:CLER' JOINING DATE:0)&DEC&.1 EMPLOYEE NAME:FORD JOB:ANALYST JOINING DATE:0)&DEC&.1 EMPLOYEE NAME:MILLER JOB:CLER' JOINING DATE:2)&JAN&.2 12 ;GHI I989:<9=. GROUP BY: S#L1 SELECT DEPTNO%JOB%SUM(SAL) 2 FROM EMP ) GROUP BY DEPTNO%JOB5 DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0

125 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

)0 MANAGER )0 SALESMAN 10 ;GHI I989:<9=.

2./0 /300

ROLL UP: 1 SELECT DEPTNO%JOB%SUM(SAL) 2 FROM EMP )$ GROUP BY ROLLUP(DEPTNO%JOB) 2 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 10 .4/0 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ 20 10.4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 )0 !200 2!02/ 1/ ;GHI I989:<9=. THE ABOVE #UERY IS COMBINATION OF : GROUP BY DEPTNO%JOB. GROUP BY DEPTNO. GROUP BY ().

1 SELECT DEPTNO%JOB%SUM(SAL) FROM 2 EMP )$ GROUP BY DEPTNO%JOB 2 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 ! ;GHI I989:<9=. 1 SELECT DEPTNO%SUM(SAL) FROM 2 EMP )$ GROUP BY (DEPTNO) S#L1 / DEPTNO SUM(SAL)

126 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

&&&&&&&&&& &&&&&&&&&& 10 .4/0 20 10.4/ )0 !200 1 SELECT SUM(SAL) FROM 2 EMP )$ GROUP BY () 2 / SUM(SAL) &&&&&&&&&& 2!02/ CUBE: CUBE RETURNS SAME AS ROLL UP M ALL INDIVIDUAL JOBS SUM SALARIES. 1 SELECT DEPTNO%JOB%SUM(SAL) 2 FROM EMP )$ GROUP BY CUBE(DEPTNO%JOB) S#L1 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 10 .4/0 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ 20 10.4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 )0 !200 ANALYST 3000 CLER' 21/0 MANAGER .24/ PRESIDENT /000 SALESMAN /300

2!02/ 21 ;GHI I989:<9=. THE ABOVE #UERY IS COMBINATION OF : GROUP BY DEPTNO%JOB.

127 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

GROUP BY DEPTNO. GROUP BY JOB. GROUP BY ().

1 SELECT DEPTNO%JOB%SUM(SAL) FROM 2 EMP )$ GROUP BY DEPTNO%JOB 2 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 ! ;GHI I989:<9=. 1 SELECT DEPTNO%SUM(SAL) FROM 2 EMP )$ GROUP BY (DEPTNO) S#L1 / DEPTNO SUM(SAL) &&&&&&&&&& &&&&&&&&&& 10 .4/0 20 10.4/ )0 !200 1 SELECT SUM(SAL) FROM 2 EMP )$ GROUP BY () 2 / SUM(SAL) &&&&&&&&&& 2!02/ S#L1 SELECT JOB%SUM(SAL) FROM EMP 2 GROUP BY JOB5 JOB SUM(SAL) &&&&&&&&& &&&&&&&&&& ANALYST 3000 CLER' 21/0 MANAGER .24/ PRESIDENT /000 SALESMAN /300 GROUPING FUNCTION:

128 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

1 SELECT DEPTNO%JOB%SUM(SAL)% 2 GROUPING(DEPTNO) GR(DEPTNO% ) GROUPING(JOB) GR(JOB 2 FROM EMP /$ GROUP BY ROLLUP(DEPTNO%JOB) 3 / DEPTNO JOB SUM(SAL) GR(DEPTNO &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 10 .4/0 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ 20 10.4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 )0 !200 2!02/ 1/ ;GHI I989:<9=. 1 SELECT DEPTNO%JOB%SUM(SAL)% 2 GROUPING(DEPTNO) GR(DEPTNO% ) GROUPING(JOB) GR(JOB 2 FROM EMP /$ GROUP BY CUBE(DEPTNO%JOB) S#L1 / DEPTNO JOB SUM(SAL) GR(DEPTNO &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 0 0 10 MANAGER 22/0 0 0 10 PRESIDENT /000 0 0 10 .4/0 0 1 20 ANALYST 3000 0 0 20 CLER' 1!00 0 0 20 MANAGER 2!4/ 0 0 20 10.4/ 0 1 )0 CLER' !/0 0 0 )0 MANAGER 2./0 0 0 )0 SALESMAN /300 0 0 )0 !200 0 1 ANALYST 3000 1 0 CLER' 21/0 1 0 MANAGER .24/ 1 0 PRESIDENT /000 1 0 SALESMAN /300 1 0 GR(JOB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1

GR(JOB

129 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2!02/ 21 ;GHI I989:<9=. GROUPING SETS:

0 0 1 1

0 1 0 1

1 SELECT DEPTNO%JOB%MGR MANAGER(NO%AVG(SAL) 2 FROM EMP ) GROUP BY GROUPING SETS 2$ ((DEPTNO%JOB)%(JOB%MGR)) S#L1 / DEPTNO JOB MANAGER(NO AVG(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST )000 20 CLER' !/0 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN 1200 ANALYST 4/33 CLER' 43!. CLER' 44.2 CLER' 44.. CLER' 4!02 .00 MANAGER 4.)! PRESIDENT /000 SALESMAN 43!. 1200 1! ;GHI I989:<9=. 1 SELECT DEPTNO%JOB%MGR MANAGER(NO%SUM(SAL) 2 FROM EMP ) GROUP BY GROUPING SETS 2$ ((DEPTNO%JOB)%(JOB%MGR)) S#L1 / DEPTNO JOB MANAGER(NO SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 )000 !/0 1)00 1100 24/..)))))

130 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

ANALYST CLER' CLER' CLER' CLER' MANAGER PRESIDENT SALESMAN 14 ;GHI I989:<9=.

4/33 43!. 44.2 44.. 4!02 4.)! /000 43!.

3000 !/0 1)00 1100 .00 .24/ /300

THE ABOVE IS COMBINATION OF: GROUP BY DEPT%JOB. GROUP BY JOB%MGR.

1 SELECT DEPTNO%JOB%SUM(SAL) 2 FROM EMP )$ GROUP BY(DEPTNO%JOB) S#L1 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 ! ;GHI I989:<9=. 1 SELECT JOB%MGR%SUM(SAL) 2 FROM EMP )$ GROUP BY(JOB%MGR) S#L1 / JOB MGR SUM(SAL) &&&&&&&&& &&&&&&&&&& &&&&&&&&&& ANALYST 4/33 3000 CLER' 43!. !/0 CLER' 44.2 1)00 CLER' 44.. 1100 CLER' 4!02 .00 MANAGER 4.)! .24/ PRESIDENT /000 SALESMAN 43!. /300 . ;GHI I989:<9=. COMPOSITE COLUMNS: 1 SELECT DEPTNO%JOB%MGR MANAGER(NO%SUM(SAL) 2 FROM EMP

131 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

)$ GROUP BY ROLLUP(DEPTNO%(JOB%MGR)) S#L1 / DEPTNO JOB MANAGER(NO SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 44.2 1)00 10 MANAGER 4.)! 22/0 10 PRESIDENT /000 10 .4/0 20 ANALYST 4/33 3000 20 CLER' 44.. 1100 20 CLER' 4!02 .00 20 MANAGER 4.)! 2!4/ 20 10.4/ )0 CLER' 43!. !/0 )0 MANAGER 4.)! 2./0 )0 SALESMAN 43!. /300 )0 !200 2!02/ 12 ;GHI I989:<9=. THE ABOVE IS COMBINATION OF BELOW: GROUP BY DEPTNO%JOB%MGR. GROUP BY DEPTNO. GROUP BY.

THE ABOVE #UERY DISPLAYS THE FOLLOWING: TOTAL SALARY FOR EVERY DEPARTMENT. TOTAL SALARY FOR EVERY DEPARTMENT%JOB%MGR. GRNAD TOTAL.

1 SELECT DEPTNO%JOB%MGR%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO%JOB%MGR S#L1 / DEPTNO JOB MGR SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 44.2 1)00 10 MANAGER 4.)! 22/0 10 PRESIDENT /000 20 ANALYST 4/33 3000 20 CLER' 44.. 1100 20 CLER' 4!02 .00 20 MANAGER 4.)! 2!4/ )0 CLER' 43!. !/0 )0 MANAGER 4.)! 2./0 )0 SALESMAN 43!. /300 10 ;GHI I989:<9=.

132 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

1 SELECT DEPTNO%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO 2 / DEPTNO SUM(SAL) &&&&&&&&&& &&&&&&&&&& 10 .4/0 20 10.4/ )0 !200 1 SELECT SUM(SAL) 2 FROM EMP )$ GROUP BY() 2 / SUM(SAL) &&&&&&&&&& &&&&&&&&&& 2!02/ 1 SELECT DEPTNO%JOB%MGR%SUM(SAL) 2 FROM EMP )$ GROUP BY CUBE(DEPTNO%(JOB%MGR)) S#L1 / DEPTNO JOB MGR SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 20 ANALYST 4/33 3000 )0 CLER' 43!. !/0 10 CLER' 44.2 1)00 20 CLER' 44.. 1100 20 CLER' 4!02 .00 10 MANAGER 4.)! 22/0 20 MANAGER 4.)! 2!4/ )0 MANAGER 4.)! 2./0 10 PRESIDENT /000 )0 SALESMAN 43!. /300 ANALYST 4/33 3000 CLER' 43!. !/0 CLER' 44.2 1)00 CLER' 44.. 1100 CLER' 4!02 .00 MANAGER 4.)! .24/ PRESIDENT /000 SALESMAN 43!. /300 10 .4/0 20 10.4/ )0 !200 2!02/ 22 ;GHI I989:<9=. CONCATENATED GROUPING: 1 SELECT DEPTNO%JOB%MGR%SUM(SAL)

133 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2 FROM EMP )$ GROUP BY DEPTNO%ROLLUP(JOB)%CUBE(MGR) S#L1 / DEPTNO JOB MGR SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 44.2 1)00 10 MANAGER 4.)! 22/0 10 PRESIDENT /000 20 ANALYST 4/33 3000 20 CLER' 44.. 1100 20 MANAGER 4.)! 2!4/ 20 CLER' 4!02 .00 )0 CLER' 43!. !/0 )0 SALESMAN 43!. /300 )0 MANAGER 4.)! 2./0 10 44.2 1)00 10 4.)! 22/0 10 /000 20 4/33 3000 20 44.. 1100 20 4.)! 2!4/ 20 4!02 .00 )0 43!. 3//0 )0 4.)! 2./0 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 10 .4/0 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ 20 10.4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 )0 !200 )1 ;GHI I989:<9=. THE ABOVE #UERY IS COMBINATION OF BELOW #UERIES: GROUP BY DEPTNO%JOB%MGR. GROUP BY DEPTNO%MGR. GROUP BY DEPTNO%JOB. GROUP BY DEPTNO.

THE ABOVE #UERY DISPLAYS THE FOLLOWING:

134 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

TOTAL SALARY FOR EVERY DEPARTEMENT NO%JOB%MGR. TOTAL SALARY FOR EVERY DEPARTEMENT NO%MGR. TOTAL SALARY FOR EVERY DEPARTEMENT NO%JOB. TOTAL SALARY FOR EVERY DEPARTEMENT NO.

1 SELECT DEPTNO%JOB%MGR%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO%JOB%MGR S#L1 / DEPTNO JOB MGR SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 44.2 1)00 10 MANAGER 4.)! 22/0 10 PRESIDENT /000 20 ANALYST 4/33 3000 20 CLER' 44.. 1100 20 CLER' 4!02 .00 20 MANAGER 4.)! 2!4/ )0 CLER' 43!. !/0 )0 MANAGER 4.)! 2./0 )0 SALESMAN 43!. /300 10 ;GHI I989:<9=. 1 SELECT DEPTNO%MGR%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO%MGR 2 / DEPTNO MGR SUM(SAL) &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 44.2 1)00 10 4.)! 22/0 10 /000 20 4/33 3000 20 44.. 1100 20 4.)! 2!4/ 20 4!02 .00 )0 43!. 3//0 )0 4.)! 2./0 ! ;GHI I989:<9=. 1 SELECT DEPTNO%JOB%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO%JOB S#L1 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000

135 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 ! ;GHI I989:<9=. 1 SELECT DEPTNO%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO S#L1 / DEPTNO SUM(SAL) &&&&&&&&&& &&&&&&&&&& 10 .4/0 20 10.4/ )0 !200 OTOP(N O ANALYSIS: S#L1 SELECT ROWNUM AS RAN'%ENAME%SAL 2 FROM (SELECT ENAME%SAL FROM EMP ORDER BY SAL DESC) ) WHERE ROWNUM WL)5 RAN' ENAME SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 1 'ING /000 2 SCOTT )000 ) FORD )000 RETRIEVE ONLY ROWS " TO Y FROM A TABLE: 1 SELECT $ FROM (SELECT ROWNUM RN%ENAME FROM EMP) 2$ WHERE RN BETWEEN 2 AND 4 ) / RN ENAME &&&&&&&&&& &&&&&&&&&& 2 JONES / MARTIN 3 BLA'E 4 CLAR' S#L1 SELECT ROWNUM RN%ENAME FROM EMP GROUP BY ROWNUM%ENAME HAVING ROWNUM BETWEEN 2 AND 45 RN ENAME &&&&&&&&&& &&&&&&&&&& 2 JONES / MARTIN 3 BLA'E 4 CLAR' RETRIVING EVEN AND ODD NUMBER OF ROWS: S#L1 SELECT $ FROM (SELECT ROWNUM RN%EMPNO%ENAME FROM EMP) E

136 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2 WHERE MOD(E.RN%2)L05 RN EMPNO ENAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 2 42!! ALLEN 2 4/33 JONES 3 43!. BLA'E . 44.. SCOTT 10 4.22 TURNER 12 4!00 JAMES 12 4!)2 MILLER 4 ;GHI I989:<9=. S#L1 SELECT $ FROM (SELECT ROWNUM RN%EMPNO%ENAME FROM EMP) E 2 WHERE MOD(E.RN%2)L1 ) / RN EMPNO ENAME &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 1 4)3! SMITH ) 4/21 WARD / 43/2 MARTIN 4 44.2 CLAR' ! 4.)! 'ING 11 4.43 ADAMS 1) 4!02 FORD 4 ;GHI I989:<9=. AN AUTOMATIC COMMIT OCCURS UNDER THE FOLLOWING CIRCUMSTANCES: DDL STATEMENT ISSUED. DCL STATEMENT ISSUED. NORMAL E"IT FROM S#L$PLUS WITHOUT E"PLICITLY ISSUING COMMIT OR ROLLBAC'% AN AUTOMATIC ROLLBAC' OCCURS UNDER AN ABNORMAL TERMINATION OF S#L$PLUS OR SYSTEM FAILURE. DROPING COLUMN: S#L1 CREATE TABLE EMP1 2 AS ) SELECT $ FROM EMP5 T6789 :;96<9=. S#L1 ALTER TABLE EMP1 2 SET UNUSED COLUMN MGR5 T6789 68<9;9=. S#L1 DESC EMP1 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPNO NUMBER(2) ENAME VARCHAR2(10) JOB VARCHAR2(!) HIREDATE DATE SAL NUMBER(4%2)

137 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

COMM DEPTNO S#L1 ALTER TABLE EMP1 2 DROP UNUSED COLUMNS5 T6789 68<9;9=.

NUMBER(4%2) NUMBER(2)

S#L1 DESC EMP1 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPNO NUMBER(2) ENAME VARCHAR2(10) JOB VARCHAR2(!) HIREDATE DATE SAL NUMBER(4%2) COMM NUMBER(4%2) DEPTNO NUMBER(2) SOUNDE": S#L1 CREATE TABLE MYFRIENDS 2 (NAME VARCHAR2(10))5 T6789 :;96<9=. S#L1 INSERT INTO MYFRIENDS 2 VALUES ) (CNEETAC)5 1 ;GH :;96<9=. 1 INSERT INTO MYFRIENDS 2 VALUES )$ (CMITAC) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO MYFRIENDS 2 VALUES )$ (CDIPUC) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO MYFRIENDS 2 VALUES )$ (CDEEPUC) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO MYFRIENDS 2 VALUES )$ (CDIPAC) S#L1 / 1 ;GH :;96<9=.

138 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

1 INSERT INTO MYFRIENDS 2 VALUES )$ (CANILC) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO MYFRIENDS 2 VALUES )$ (CSUNILC) S#L1 / 1 ;GH :;96<9=. S#L1 SELECT $ FROM MYFRIENDS5 NAME &&&&&&&&&& NEETA MITA DIPU DEEPU DIPA ANIL SUNIL 4 ;GHI I989:<9=. S#L1 SELECT $ FROM MYFRIENDS 2 WHERE SOUNDE"(NAME) L SOUNDE"(CDEEPC)5 NAME &&&&&&&&&& DIPU DEEPU DIPA S#L1 SELECT SOUNDE"(NAME)%NAME%SOUNDE"(CDEEPC) FROM MYFRIENDS5 SOUN NAME SOUN &&&& &&&&&&&&&& &&&& N)00 NEETA D100 M)00 MITA D100 D100 DIPU D100 D100 DEEPU D100 D100 DIPA D100 A/20 ANIL D100 S/20 SUNIL D100 4 ;GHI I989:<9=. GENERATING PRIMARY 'EY NUMBERS USING ROW NUM AND SE#UENCES: S#L1 CREATE TABLE CUSTOMERS1 2 (CUST(NO NUMBER(10)% ) NAME VARCHAR2(10))5 T6789 :;96<9=.

139 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 INSERT INTO CUSTOMERS1 2 VALUES ) (0%CPAVANC)5 1 ;GH :;96<9=. 1 INSERT INTO CUSTOMERS1 2 VALUES )$ (0%C'UMARC) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO CUSTOMERS1 2 VALUES )$ (0%CGAYATRIC) S#L1 / 1 ;GH :;96<9=. 1 INSERT INTO CUSTOMERS1 2 VALUES )$ (0%CSRISHAC) S#L1 / 1 ;GH :;96<9=. 1 UPDATE CUSTOMERS1 2$ SET CUST(NO L ROWNUM S#L1 / 2 ;GHI ?B=6<9=. S#L1 SELECT $ FROM CUSTOMERS15 CUST(NO NAME &&&&&&&&&& &&&&&&&&&& 1 PAVAN 2 'UMAR ) GAYATRI 2 SRISHA S#L1 CREATE SE#UENCE CUSTOMERS1(SE# 2 INCREMENT BY 1 ) START WITH 105 S9Q?9E:9 :;96<9=. S#L1 UPDATE CUSTOMERS1 2 SET CUST(NO L CUSTOMERS1(SE#.NE"TVAL5 2 ;GHI ?B=6<9=. S#L1 SELECT $ FROM CUSTOMERS15 CUST(NO NAME &&&&&&&&&& &&&&&&&&&& 10 PAVAN 11 'UMAR 12 GAYATRI 1) SRISHA

140 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

CONDITIONAL E"PRESSIONS: PROVIDE THE USE OF IF&THEN&ELSE LOGIC WITHIN A S#L STATEMENT. CASE E"PRESSION. DECODE FUNCTION. CASE: 1 SELECT EMPNO%ENAME%SAL% 2 CASE ) 2 / ELSE 3$ FROM EMP S#L1 / EMPNO ENAME SAL REVISED(SALARY &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& 4)3! SMITH .00 !20 42!! ALLEN 1300 1!20 4/21 WARD 12/0 1/00 4/33 JONES 2!4/ )242./ 43/2 MARTIN 12/0 1/00 43!. BLA'E 2./0 )1)/ 44.2 CLAR' 22/0 23!/ 44.. SCOTT )000 )000 4.)! 'ING /000 /000 4.22 TURNER 1/00 1.00 4.43 ADAMS 1100 123/ 4!00 JAMES !/0 10!2./ 4!02 FORD )000 )000 4!)2 MILLER 1)00 12!/ 12 ;GHI I989:<9=. DECODE: 1 SELECT EMPNO%ENAME%SAL% 2 DECODE (JOB%CMANAGERC ) 2 / 3$ FROM EMP 4 / CCLER'C %1.10 $SAL% %1.1/ $SAL% JOB WHEN CMANAGERC THEN 1.10 $SAL WHEN CCLER'C THEN 1.1/ $SAL WHEN CSALESMANCTHEN 1.20 $SAL SAL END PREVISED(SALARYP

CSALESMANC %1.20 $SAL% SAL ) PREVISED(SALARYP

141 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

EMPNO ENAME SAL REVISED(SALARY &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& 4)3! SMITH .00 !20 42!! ALLEN 1300 1!20 4/21 WARD 12/0 1/00 4/33 JONES 2!4/ )242./ 43/2 MARTIN 12/0 1/00 43!. BLA'E 2./0 )1)/ 44.2 CLAR' 22/0 23!/ 44.. SCOTT )000 )000 4.)! 'ING /000 /000 4.22 TURNER 1/00 1.00 4.43 ADAMS 1100 123/ 4!00 JAMES !/0 10!2./ 4!02 FORD )000 )000 4!)2 MILLER 1)00 12!/ 12 ;GHI I989:<9=. VIEWS: WHAT IS VIEW@ AVIEW IS A LOGICAL TABLE BASED ON ONE OR MORE TABLES OR ANOTHER VIEW. A VIEW CONTAINS NO DATA OF ITS OWN BUT IS LI'E A WINDOW THROUGH WHICH DATA FROM TABLES CAN BE VIEWED OR CHANGED. THE TABLES ON WHICH A VIEW IS BASED ARE CALLED BASE TABLES. THE VIEW IS STORED AS SELECT STATEMENT IN THE DATA DICTIONARY. WHY USE VIEWS: TO RESTRICT DATA ACCESS. TO MA'E COMPLE" #UERIES EASY. TO PROVIDE DATA INDEPENDENCE. TO PRESENT DIFFERENT VIEWS OF THE SAME DATA.

ADVANTAGES OF VIEWS: VIEWS RESTRICT ACCESS TO THE DATA BECAUSE THE VIEW CAN DISPLAY SELECTIVE COLUMNS FROM THE TABLES. VIEWS ALLOW USERS TO MA'E SIMPLE #UERIES TO RETRIVE THE RESULTS FROM COMPLICATED #UERIES. FOR E"AMPLE% VIEW ALLOWS USERS TO #UERY INFORMATION FROM MULTIPLE TABLES WITHOUT 'NOWING HOW TO WRITE JOIN STATEMENT. ONE VIEW CAN BE USED TO RETRIEVE DATA FROM SEVERAL TABLES.

142 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

VIEWS PROVIDE GROUPS OF USERS ACCESS TO DATA ACCORDING TO THEIR PARTICULAR CRITERIA. FEATURE SI MP LE VI EW S ON E NO NO YE S COMPLE" VIEWS

NUMBER OF TABLES CONTAINS FUNCTIONS CONTAINS GROUPS OF DATA DML THROUGH VIEW

ONE OR MORE YES YES NOT ALWAYS

CREATION OF THE VIEW: CREATE [ OR REPLACE [FORCEZNOFORCE\ VIEW VIEW(NAME [(ALIAS[%ALIAS*..)\ AS SUB#UERY [WITH CHEC' OPTION[CONSTRAINT CONSTRAINT(NAME\\ [WITH READ ONLY[CONSTRAINT CONSTRAINT(NAME\\ IN THE SYNTA": OR REPLACE RECREATES THE VIEW IF ALREADY E"ISTS. FORCE CREATES THE VIEW REGARDLESS OF WHETHER OR NOT THE BASE TABLES E"IST. NOFORCE CREATES THE VIEW ONLY OF THE BASE TABLES E"IST. (THIS IS DEFAULT). VIEW NAME OF THE VIEW. ALIAS ALIAS NAME FOR COLUMNS SELECTED BY #UERY% THEY SHOULD MATCH. SUB#UERY SELECT SATETMENT. WITH CHEC' OPTION SPECIFIES THAT ONLY ROWS ACCESSIBLE TO THE VIEW CAN BE INSERTED OR UPDATED. CONSTRAINT NAME OF CONSTRAINT. WITH READ ONLY ENSURES THAT NO DML OPERATIONS CAN BE PERFORMED ON THIS VIEW. GUIDELINES FOR CREATING A VIEW: THE SUB#UERY THAT DEFINES THE VIEW CANNOT CONTAIN AN ORDER BY CLAUSE. THE ORDER BY CLAUSE IS SPECIFIED WHEN YOU RETRIVE THE DATA FROM THE VIEW. S#L1 CREATE TABLE EMP(DUP 2 AS

143 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

) SELECT $ FROM EMP5 T6789 :;96<9=. S#L1 CREATE VIEW EMPVU10 2 AS ) SELECT $ FROM EMP(DUP WHERE DEPTNOL105 VF9H :;96<9=. S#L1 DESC EMPVU105 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPNO NUMBER(2) ENAME VARCHAR2(10) JOB VARCHAR2(!) MGR NUMBER(2) HIREDATE DATE SAL NUMBER(4%2) COMM NUMBER(4%2) DEPTNO NUMBER(2) S#L1 SELECT $ FROM EMPVU105 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 4.)! 'ING PRESIDENT 14&NOV&.1 /000 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 COMM DEPTNO 10 10 10

THIS IS A SIMPLE VIEW.HERE WE CAN DO ALL DML OPERATIONS. S#L1 INSERT INTO EMPVU10 2 VALUES ) (1%CPAVANC%CMANAGERC%4)3!%C01&DEC&!1C%1000%100%10)5 1 ;GH :;96<9=. S#L1 SELECT $ FROM EMPVU105 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1)00 10 1 PAVAN MANAGER 4)3! 01&DEC&!1 1000 100 10 S#L1 SELECT $ FROM EMP(DUP WHERE DEPTNOL105 EMPNO ENAME JOB MGR HIREDATE SAL COMM &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 22/0 10 4.)! 'ING PRESIDENT 14&NOV&.1 /000 10 DEPTNO

144 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4!)2 10 1 10

MILLER PAVAN

CLER' MANAGER

44.2 2)&JAN&.2 4)3! 01&DEC&!1

1)00 1000 100

HERE DATA IS INSERTED INTO EMP(DUP TABLE. IN THE SIMPLE VIEW WE CAN PERFORM INSERTION %DELETION%UPDATION.THE BASE TABLE WILL BE AFFECTED%BECAUSE VIEW DOES NOT CONTAIN ANY DATA. IF YOU WANT SEE THE VIEWS CREATED IN THE DATABASE: S#L1 DESC USER(VIEWS N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& VIEW(NAME NOT NULL VARCHAR2()0) TE"T(LENGTH NUMBER TE"T LONG TYPE(TE"T(LENGTH NUMBER TYPE(TE"T VARCHAR2(2000) OID(TE"T(LENGTH NUMBER OID(TE"T VARCHAR2(2000) VIEW(TYPE(OWNER VARCHAR2()0) VIEW(TYPE VARCHAR2()0) SUPERVIEW(NAME VARCHAR2()0) S#L1 SELECT VIEW(NAME%TE"T FROM USER(VIEWS WHERE VIEW(NAMELCEMPVU10C5 VIEW(NAME &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& TE"T &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPVU10 SELECT PEMPNOP%PENAMEP%PJOBP%PMGRP%PHIREDATEP%PSALP%PCOMMP%PDEPTNOP FROM EMP(DUP ORACLE SERVER S#L $ PLUS: SELECT VIEW5 $ FROM USER(VI EWS. IT SEES THE SELECT STATEM ENT HERE.

145 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

WHEN EVER WE #UERY A VIEW%S#L$PLUS WILL GO TO USER(VIEWS AND PIC' THE SELECT STATEMENT FROM THE TABLE AND E"ECUTE THE #UERY ON THE BASE TABLE AND RESULT OF BASE TABLE INFO WILL BE DISPLAYED THROUGH VIEW.

BASE TABLE. IT E"ECUT ES #UERY ON THIS TABLE AND SENDS OUTPUT TO S#L$PLU S.

S#L1 CREATE VIEW EMPVU1(10 2 AS ) SELECT EMPNO%ENAME FROM EMP(DUP 2 WHERE DEPTNOL105 VF9H :;96<9=. S#L1 DESC EMPVU1(10 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPNO NUMBER(2) ENAME VARCHAR2(10) S#L1 SELECT VIEW(NAME%TE"T FROM USER(VIEWS VIEW(NAMELCEMPVU1(10C5 VIEW(NAME &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& TE"T &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPVU1(10 SELECT EMPNO%ENAME FROM EMP(DUP WHERE DEPTNOL10 S#L1 UPDATE EMPVU10 2 SET SAL L 10005 2 ;GHI ?B=6<9=.

WHERE

S#L1 SELECT $ FROM EMP(DUP WHERE DEPTNOL105 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 1000 10 4.)! 'ING PRESIDENT 14&NOV&.1 1000 10 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1000 10 1 PAVAN MANAGER 4)3! 01&DEC&!1 1000 100 10 S#L1 SELECT $ FROM EMPVU105 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

146 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

&&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 44.2 CLAR' MANAGER 4.)! 0!&JUN&.1 4.)! 'ING PRESIDENT 14&NOV&.1 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1 PAVAN MANAGER 4)3! 01&DEC&!1 1 DELETE FROM EMPVU10 2$ WHERE JOBLCMANAGERC S#L1 / 2 ;GHI =989<9=. S#L1 SELECT $ FROM EMPVU105 EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4.)! 'ING PRESIDENT 14&NOV&.1 1000 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1000 1 SELECT $ FROM EMP(DUP 2$ WHERE DEPTNOL10 S#L1 / EMPNO ENAME JOB MGR HIREDATE SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4.)! 'ING PRESIDENT 14&NOV&.1 1000 4!)2 MILLER CLER' 44.2 2)&JAN&.2 1000 MODIFYING VIEW: S#L1 CREATE VIEW EMPVU20 2 (EMPLOYEE(NO%EMPLOYEE(NAME) ) AS 2 SELECT EMPNO%ENAME FROM EMP(DUP / WHERE DEPTNOL205 VF9H :;96<9=.

1000 1000 1000 1000

100

10 10 10 10

COMM 10 10

DEPTNO

COMM 10 10

DEPTNO

S#L1 DESC EMPVU20 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPLOYEE(NO NUMBER(2) EMPLOYEE(NAME VARCHAR2(10) S#L1 CREATE VIEW EMPVU20 2 AS ) SELECT $ FROM EMP(DUP 2 WHERE DEPTNOL205 CREATE VIEW EMPVU20 $ ERROR 6< 8FE9 1: ORA&00!//: E6>9 FI 68;96=A ?I9= 7A 6E 9UFI<FES G7X9:< 1 CREATE OR REPLACE VIEW EMPVU20 2 AS

147 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

) SELECT $ FROM EMP(DUP 2$ WHERE DEPTNOL20 S#L1 / VF9H :;96<9=. S#L1 DESC EMPVU20 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPNO NUMBER(2) ENAME VARCHAR2(10) JOB VARCHAR2(!) MGR NUMBER(2) HIREDATE DATE SAL NUMBER(4%2) COMM NUMBER(4%2) DEPTNO NUMBER(2) HERE ORIGINAL DEFINITION OF THE VIEW REPLACED BY THE CURRENT DEFINITION. S#L1 CREATE VIEW EMPVU)0 2 AS ) SELECT EMPNO EMPLOYEE(NO%ENAME EMPLOYEE(NAME FROM EMP(DUP 2 WHERE DEPTNOL)05 VF9H :;96<9=. S#L1 DESC EMPVU)0 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPLOYEE(NO NUMBER(2) EMPLOYEE(NAME VARCHAR2(10) THE CREATE OR REPLACE OPTION ALLOWS A VIEW TO BE CREATED EVEN IF ONE E"ISTS WITH THIS NAME ALREADY% THUS REPLACING OLD VERSION OF THE VIEW. RULES FOR PERFORMING DML ON VIEW: YOU CAN PERFORM DML OPERATIONS ON SIMPLE VIEWS. YOU CANNOT REMOVE A ROW IF THE VIEW CONTAINS THE FOLLOWING: GROUP FUNCTIONS. A GROUP BY CLAUSE. THE DISTINCT 'EYWORD. THE PSEUDOCOLUMN ROWNUM 'EYWORD.

148 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

YOU CANNOT MODIFY DATA IN A VIEW IF IT CONTAINS THE FOLLOWING: GROUP FUNCTIONS. A GROUP BY CLAUSE. THE DISTINCT 'EYWORD. THE PSEUDOCOLUMN ROWNUM 'EYWORD. COLUMNS DEFINED BY E"PRESSIONS.

YOU CANNOT ADD DATA IN A VIEW IF IT CONTAINS THE FOLLOWING: GROUP FUNCTIONS. A GROUP BY CLAUSE. THE DISTINCT 'EYWORD. THE PSEUDOCOLUMN ROWNUM 'EYWORD. COLUMNS DEFINED BY E"PRESSIONS. NOT NULL COLUMNS IN THE BASE TABLES THAT ARE NOT SELECTED BY

THE VIEW. USING THE WITH CHEC' OPTION CLAUSE: THE WITH CHEC' OPTION CLAUSE SPECIFIES THAT INSERTS AND UPDATES PERFORMED THROUGH THE VIEW CANNOT CREATE ROWS WHICH THE VIEW CANNOT SELECT. S#L1 CREATE TABLE EMP(DUP1 2 AS ) SELECT $ FROM EMP5 T6789 :;96<9=. S#L1 CREATE VIEW EMP(DUPVU20 2 AS ) SELECT EMPNO%ENAME%JOB%DEPTNO FROM EMP(DUP1 2 WHERE DEPTNOL205 VF9H :;96<9=. S#L1 DESC EMP(DUPVU20 N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EMPNO NUMBER(2) ENAME VARCHAR2(10)

149 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

JOB DEPTNO

VARCHAR2(!) NUMBER(2) DEPTNO 20 20 20 20 20

S#L1 SELECT $ FROM EMP(DUPVU205 EMPNO ENAME JOB &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 4)3! SMITH CLER' 4/33 JONES MANAGER 44.. SCOTT ANALYST 4.43 ADAMS CLER' 4!02 FORD ANALYST S#L1 UPDATE EMP(DUPVU20 2 SET DEPTNOL15 / ;GHI ?B=6<9=. S#L1 SELECT $ FROM EMP(DUPVU205 EG ;GHI I989:<9=

HERE IF YOU WANT TO STOP ANY UPDATE OR INSERT ON THIS VIEW. S#L1 DROP TABLE EMP(DUP15 T6789 =;GBB9=. S#L1 CREATE TABLE EMP(DUP1 2 AS ) SELECT $ FROM EMP5 T6789 :;96<9=. S#L1 DROP VIEW EMP(DUPVU205 VF9H =;GBB9=. S#L1 CREATE VIEW EMP(DUPVU20 2 AS ) SELECT EMPNO%ENAME%JOB%DEPTNO FROM EMP(DUP1 2 WHERE DEPTNOL20 / WITH CHEC' OPTION CONSTRAINT EMP(DUPVU20(VIEWCHEC'5 VF9H :;96<9=. S#L1 UPDATE EMP(DUPVU20 2 SET DEPTNOL15 UPDATE EMP(DUPVU20 $ ERROR 6< 8FE9 1: ORA&01202: RF9H WITH CHEC' OPTION HD9;9&:86?I9 RFG86<FGE S#L1 INSERT INTO EMP(DUPVU20 2 VALUES ) (1%CPAVANC%CMANAGERC%10)5 INSERT INTO EMP(DUPVU20 $ ERROR 6< 8FE9 1:

150 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

ORA&01202: RF9H WITH CHEC' OPTION HD9;9&:86?I9 RFG86<FGE S#L1 SELECT CONSTRAINT(NAME%CONSTRAINT(TYPE USER(CONSTRAINTS 2 WHERE TABLE(NAMELCEMP(DUPVU20C5 CONSTRAINT(NAME &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & EMP(DUPVU20(VIEWCHEC' C V FROM

NO ROWS ARE UPDATED BECAUSE IF THE DEPARTMENT NUMBER WAS CHANGE TO 1% THE VIEW WOULD NO LONGER BE ABLE TO SEE THAT EMPLOYEES OF 20.THUS WE CANNOT CHANGE THE VIEW DEFINITION. HERE WE CAN UPDATE ANY OTHER COLUMNS WITHOUT AFFECTING VIEW DEFINITION. READ ONLY VIEWS: DENYING DML OPERATIONS ON THE VIEW BY 'EEPING READ ONLY CONSTRAINT. S#L1 CREATE VIEW EMP(DUP)0VU 2 AS ) SELECT $ FROM EMP(DUP1 2 WITH READ ONLY CONSTRAINT EMP(DUP)0VU(READONLY5 VF9H :;96<9=. S#L1 UPDATE EMP(DUP)0VU 2 SET DEPTNOL)05 SET DEPTNOL)0 $ ERROR 6< 8FE9 2: ORA&014)): RF;<?68 :G8?>E EG< 688GH9= D9;9 S#L1 INSERT INTO EMP(DUP)0VU 2 VALUES ) (1%CPAVANC%CMANAGERC%4)3!%C01&DEC&!2C%1000%100%)0)5 INSERT INTO EMP(DUP)0VU $ ERROR 6< 8FE9 1: ORA&014)): RF;<?68 :G8?>E EG< 688GH9= D9;9 S#L1 DELETE FROM EMP(DUP)0VU5 DELETE FROM EMP(DUP)0VU $ ERROR 6< 8FE9 1: ORA&014/2: :6EEG< =989<9 T;G> RF9H HF<DG?< 9U6:<8A GE9 N9A&B;9I9;R9= <6789 S#L1 SELECT CONSTRAINT(NAME%CONSTRAINT(TYPE USER(CONSTRAINTS 2 WHERE TABLE(NAMELCEMP(DUP)0VUC5 CONSTRAINT(NAME C FROM

151 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & EMP(DUP)0VU(READONLY O HERE NO DELETION%NO UPDATION %NO INSERTION ON THE VIEW. ONLY READ. IN THE USER(CONSTRAINTS TABLE CONSTRAINT(TYPE IS JO. COMPLE" VIEWS: 1 CREATE VIEW DEPT(SUM(VU 2 (NAME%MINSAL%MA"SAL%AVGSAL) ) AS 2 SELECT D.DNAME%MIN(E.SAL)%MA"(E.SAL)%AVG(E.SAL) / FROM EMP E% DEPT D 3 WHERE E.DEPTNOLD.DEPTNO 4$ GROUP BY D.DNAME . / VF9H :;96<9=. S#L1 SELECT $ FROM DEPT(SUM(VU5 NAME MINSAL MA"SAL AVGSAL &&&&&&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& ACCOUNTING 1)00 /000 2!13.33334 RESEARCH .00 )000 214/ SALES !/0 2./0 1/33.33334 S#L1 DESC DEPT(SUM(VU N6>9 N?88@ TAB9 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& NAME VARCHAR2(12) MINSAL NUMBER MA"SAL NUMBER AVGSAL NUMBER S#L1 INSERT INTO DEPT(SUM(VU 2 VALUES ) (CCOMPUTERSC%111%111%111)5 INSERT INTO DEPT(SUM(VU $ ERROR 6< 8FE9 1: ORA&014)2: =6<6 >6EFB?86<FGE GB9;6<FGE EG< 89S68 GE <DFI RF9H S#L1 UPDATE DEPT(SUM(VU 2 SET NAMELCCOMPUTERSC5 UPDATE DEPT(SUM(VU $ ERROR 6< 8FE9 1: ORA&014)2: =6<6 >6EFB?86<FGE GB9;6<FGE EG< 89S68 GE <DFI RF9H S#L1 DELETE FROM DEPT(SUM(VU5 DELETE FROM DEPT(SUM(VU $ ERROR 6< 8FE9 1: ORA&014)2: =6<6 >6EFB?86<FGE GB9;6<FGE EG< 89S68 GE <DFI RF9H

152 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 CREATE VIEW E#UI(JOINVU 2 AS ) SELECT EMPNO%ENAME%DEPTNO%DNAME%LOC FROM EMP NATURAL JOIN DEPT5 VF9H :;96<9=. S#L1 SELECT $ FROM E#UI(JOINVU5 EMPNO ENAME DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 4)3! SMITH 20 RESEARCH DALLAS 42!! ALLEN )0 SALES CHICAGO 4/21 WARD )0 SALES CHICAGO 4/33 JONES 20 RESEARCH DALLAS 43/2 MARTIN )0 SALES CHICAGO 43!. BLA'E )0 SALES CHICAGO 44.2 CLAR' 10 ACCOUNTING NEW YOR' 44.. SCOTT 20 RESEARCH DALLAS 4.)! 'ING 10 ACCOUNTING NEW YOR' 4.22 TURNER )0 SALES CHICAGO 4.43 ADAMS 20 RESEARCH DALLAS 4!00 JAMES )0 SALES CHICAGO 4!02 FORD 20 RESEARCH DALLAS 4!)2 MILLER 10 ACCOUNTING NEW YOR' 12 ;GHI I989:<9=. DROPING VIEW: S#L1 DROP VIEW EMPVU105 VF9H =;GBB9=. GROUP BY: S#L1 SELECT DEPTNO%JOB%SUM(SAL) 2 FROM EMP ) GROUP BY DEPTNO%JOB5 DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 10 ;GHI I989:<9=. ROLL UP: 1 SELECT DEPTNO%JOB%SUM(SAL)

153 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2 FROM EMP )$ GROUP BY ROLLUP(DEPTNO%JOB) 2 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 10 .4/0 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ 20 10.4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 )0 !200 2!02/ 1/ ;GHI I989:<9=. THE ABOVE #UERY IS COMBINATION OF : GROUP BY DEPTNO%JOB. GROUP BY DEPTNO. GROUP BY ().

1 SELECT DEPTNO%JOB%SUM(SAL) FROM 2 EMP )$ GROUP BY DEPTNO%JOB 2 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 ! ;GHI I989:<9=. 1 SELECT DEPTNO%SUM(SAL) FROM 2 EMP )$ GROUP BY (DEPTNO) S#L1 / DEPTNO SUM(SAL)

154 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

&&&&&&&&&& &&&&&&&&&& 10 .4/0 20 10.4/ )0 !200 1 SELECT SUM(SAL) FROM 2 EMP )$ GROUP BY () 2 / SUM(SAL) &&&&&&&&&& 2!02/ CUBE: CUBE RETURNS SAME AS ROLL UP M ALL INDIVIDUAL JOBS SUM SALARIES. 1 SELECT DEPTNO%JOB%SUM(SAL) 2 FROM EMP )$ GROUP BY CUBE(DEPTNO%JOB) S#L1 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 10 .4/0 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ 20 10.4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 )0 !200 ANALYST 3000 CLER' 21/0 MANAGER .24/ PRESIDENT /000 SALESMAN /300

2!02/ 21 ;GHI I989:<9=. THE ABOVE #UERY IS COMBINATION OF : GROUP BY DEPTNO%JOB. GROUP BY DEPTNO. GROUP BY JOB.

155 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

GROUP BY ().

1 SELECT DEPTNO%JOB%SUM(SAL) FROM 2 EMP )$ GROUP BY DEPTNO%JOB 2 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 ! ;GHI I989:<9=. 1 SELECT DEPTNO%SUM(SAL) FROM 2 EMP )$ GROUP BY (DEPTNO) S#L1 / DEPTNO SUM(SAL) &&&&&&&&&& &&&&&&&&&& 10 .4/0 20 10.4/ )0 !200 1 SELECT SUM(SAL) FROM 2 EMP )$ GROUP BY () 2 / SUM(SAL) &&&&&&&&&& 2!02/ S#L1 SELECT JOB%SUM(SAL) FROM EMP 2 GROUP BY JOB5 JOB SUM(SAL) &&&&&&&&& &&&&&&&&&& ANALYST 3000 CLER' 21/0 MANAGER .24/ PRESIDENT /000 SALESMAN /300 GROUPING FUNCTION: 1 SELECT DEPTNO%JOB%SUM(SAL)% 2 GROUPING(DEPTNO) GR(DEPTNO% ) GROUPING(JOB) GR(JOB

156 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2 FROM EMP /$ GROUP BY ROLLUP(DEPTNO%JOB) 3 / DEPTNO JOB SUM(SAL) GR(DEPTNO &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 0 10 MANAGER 22/0 10 PRESIDENT /000 10 .4/0 20 ANALYST 3000 20 CLER' 1!00 0 20 MANAGER 2!4/ 20 10.4/ )0 CLER' !/0 0 )0 MANAGER 2./0 )0 SALESMAN /300 )0 !200 0 2!02/ 1/ ;GHI I989:<9=. 1 SELECT DEPTNO%JOB%SUM(SAL)% 2 GROUPING(DEPTNO) GR(DEPTNO% ) GROUPING(JOB) GR(JOB 2 FROM EMP /$ GROUP BY CUBE(DEPTNO%JOB) S#L1 / DEPTNO JOB SUM(SAL) GR(DEPTNO GR(JOB &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 0 0 10 MANAGER 22/0 0 0 10 PRESIDENT /000 0 0 10 .4/0 0 1 20 ANALYST 3000 0 0 20 CLER' 1!00 0 0 20 MANAGER 2!4/ 0 0 20 10.4/ 0 1 )0 CLER' !/0 0 0 )0 MANAGER 2./0 0 0 )0 SALESMAN /300 0 0 )0 !200 0 1 ANALYST 3000 1 0 CLER' 21/0 1 0 MANAGER .24/ 1 0 PRESIDENT /000 1 0 SALESMAN /300 1 0 0 0 0 1 1 0 1 GR(JOB 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1

157 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

2!02/ 21 ;GHI I989:<9=.

GROUPING SETS: 1 SELECT DEPTNO%JOB%MGR MANAGER(NO%AVG(SAL) 2 FROM EMP ) GROUP BY GROUPING SETS 2$ ((DEPTNO%JOB)%(JOB%MGR)) S#L1 / DEPTNO JOB MANAGER(NO AVG(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST )000 20 CLER' !/0 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN 1200 ANALYST CLER' CLER' CLER' CLER' MANAGER PRESIDENT SALESMAN 1! ;GHI I989:<9=. 4/33 43!. 44.2 44.. 4!02 4.)! 43!. )000 !/0 1)00 1100 .00 24/..))))) /000 1200

1 SELECT DEPTNO%JOB%MGR MANAGER(NO%SUM(SAL) 2 FROM EMP ) GROUP BY GROUPING SETS 2$ ((DEPTNO%JOB)%(JOB%MGR)) S#L1 / DEPTNO JOB MANAGER(NO SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 ANALYST 4/33 3000 CLER' 43!. !/0 CLER' 44.2 1)00 CLER' 44.. 1100 CLER' 4!02 .00

158 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

MANAGER PRESIDENT SALESMAN 14 ;GHI I989:<9=.

4.)! /000 43!.

.24/ /300

THE ABOVE IS COMBINATION OF: GROUP BY DEPT%JOB. GROUP BY JOB%MGR.

1 SELECT DEPTNO%JOB%SUM(SAL) 2 FROM EMP )$ GROUP BY(DEPTNO%JOB) S#L1 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 ! ;GHI I989:<9=. 1 SELECT JOB%MGR%SUM(SAL) 2 FROM EMP )$ GROUP BY(JOB%MGR) S#L1 / JOB MGR SUM(SAL) &&&&&&&&& &&&&&&&&&& &&&&&&&&&& ANALYST 4/33 3000 CLER' 43!. !/0 CLER' 44.2 1)00 CLER' 44.. 1100 CLER' 4!02 .00 MANAGER 4.)! .24/ PRESIDENT /000 SALESMAN 43!. /300 . ;GHI I989:<9=. COMPOSITE COLUMNS: 1 SELECT DEPTNO%JOB%MGR MANAGER(NO%SUM(SAL) 2 FROM EMP )$ GROUP BY ROLLUP(DEPTNO%(JOB%MGR)) S#L1 / DEPTNO JOB MANAGER(NO SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&&

159 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

10 CLER' 10 MANAGER 10 PRESIDENT 10 20 ANALYST 20 CLER' 20 CLER' 20 MANAGER 20 )0 CLER' )0 MANAGER )0 SALESMAN )0 12 ;GHI I989:<9=.

44.2 4.)! 4/33 44.. 4!02 4.)! 10.4/ 43!. 4.)! 43!. 2!02/

1)00 22/0 /000 .4/0 3000 1100 .00 2!4/ !/0 2./0 /300 !200

THE ABOVE IS COMBINATION OF BELOW: GROUP BY DEPTNO%JOB%MGR. GROUP BY DEPTNO. GROUP BY.

THE ABOVE #UERY DISPLAYS THE FOLLOWING: TOTAL SALARY FOR EVERY DEPARTMENT. TOTAL SALARY FOR EVERY DEPARTMENT%JOB%MGR. GRNAD TOTAL.

1 SELECT DEPTNO%JOB%MGR%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO%JOB%MGR S#L1 / DEPTNO JOB MGR SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 44.2 1)00 10 MANAGER 4.)! 22/0 10 PRESIDENT /000 20 ANALYST 4/33 3000 20 CLER' 44.. 1100 20 CLER' 4!02 .00 20 MANAGER 4.)! 2!4/ )0 CLER' 43!. !/0 )0 MANAGER 4.)! 2./0 )0 SALESMAN 43!. /300 10 ;GHI I989:<9=. 1 SELECT DEPTNO%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO 2 /

160 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

DEPTNO SUM(SAL) &&&&&&&&&& &&&&&&&&&& 10 .4/0 20 10.4/ )0 !200 1 SELECT SUM(SAL) 2 FROM EMP )$ GROUP BY() 2 / SUM(SAL) &&&&&&&&&& &&&&&&&&&& 2!02/ 1 SELECT DEPTNO%JOB%MGR%SUM(SAL) 2 FROM EMP )$ GROUP BY CUBE(DEPTNO%(JOB%MGR)) S#L1 / DEPTNO JOB MGR SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 20 ANALYST 4/33 3000 )0 CLER' 43!. !/0 10 CLER' 44.2 1)00 20 CLER' 44.. 1100 20 CLER' 4!02 .00 10 MANAGER 4.)! 22/0 20 MANAGER 4.)! 2!4/ )0 MANAGER 4.)! 2./0 10 PRESIDENT /000 )0 SALESMAN 43!. /300 ANALYST 4/33 3000 CLER' 43!. !/0 CLER' 44.2 1)00 CLER' 44.. 1100 CLER' 4!02 .00 MANAGER 4.)! .24/ PRESIDENT /000 SALESMAN 43!. /300 10 .4/0 20 10.4/ )0 !200 2!02/ 22 ;GHI I989:<9=. CONCATENATED GROUPING: 1 SELECT DEPTNO%JOB%MGR%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO%ROLLUP(JOB)%CUBE(MGR) S#L1 / DEPTNO JOB MGR SUM(SAL)

161 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

&&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 44.2 1)00 10 MANAGER 4.)! 22/0 10 PRESIDENT /000 20 ANALYST 4/33 3000 20 CLER' 44.. 1100 20 MANAGER 4.)! 2!4/ 20 CLER' 4!02 .00 )0 CLER' 43!. !/0 )0 SALESMAN 43!. /300 )0 MANAGER 4.)! 2./0 10 44.2 1)00 10 4.)! 22/0 10 /000 20 4/33 3000 20 44.. 1100 20 4.)! 2!4/ 20 4!02 .00 )0 43!. 3//0 )0 4.)! 2./0 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 10 .4/0 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ 20 10.4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 )0 !200 )1 ;GHI I989:<9=. THE ABOVE #UERY IS COMBINATION OF BELOW #UERIES: GROUP BY DEPTNO%JOB%MGR. GROUP BY DEPTNO%MGR. GROUP BY DEPTNO%JOB. GROUP BY DEPTNO.

THE ABOVE #UERY DISPLAYS THE FOLLOWING: TOTAL SALARY FOR EVERY DEPARTEMENT NO%JOB%MGR. TOTAL SALARY FOR EVERY DEPARTEMENT NO%MGR. TOTAL SALARY FOR EVERY DEPARTEMENT NO%JOB.

162 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

TOTAL SALARY FOR EVERY DEPARTEMENT NO.

1 SELECT DEPTNO%JOB%MGR%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO%JOB%MGR S#L1 / DEPTNO JOB MGR SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 CLER' 44.2 1)00 10 MANAGER 4.)! 22/0 10 PRESIDENT /000 20 ANALYST 4/33 3000 20 CLER' 44.. 1100 20 CLER' 4!02 .00 20 MANAGER 4.)! 2!4/ )0 CLER' 43!. !/0 )0 MANAGER 4.)! 2./0 )0 SALESMAN 43!. /300 10 ;GHI I989:<9=. 1 SELECT DEPTNO%MGR%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO%MGR 2 / DEPTNO MGR SUM(SAL) &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 10 44.2 1)00 10 4.)! 22/0 10 /000 20 4/33 3000 20 44.. 1100 20 4.)! 2!4/ 20 4!02 .00 )0 43!. 3//0 )0 4.)! 2./0 ! ;GHI I989:<9=. 1 SELECT DEPTNO%JOB%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO%JOB S#L1 / DEPTNO JOB SUM(SAL) &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 10 CLER' 1)00 10 MANAGER 22/0 10 PRESIDENT /000 20 ANALYST 3000 20 CLER' 1!00 20 MANAGER 2!4/ )0 CLER' !/0 )0 MANAGER 2./0 )0 SALESMAN /300 ! ;GHI I989:<9=.

163 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

1 SELECT DEPTNO%SUM(SAL) 2 FROM EMP )$ GROUP BY DEPTNO S#L1 / DEPTNO SUM(SAL) &&&&&&&&&& &&&&&&&&&& 10 .4/0 20 10.4/ )0 !200 TYPES OF MULTIPLE INSERT STATEMENTS: UNCONDITIONAL INSERT. CONDITIONAL ALL INSERT. CONDITIONAL FIRST. PIVOTING INSERT.

UNCONDITIONAL INSERT ALL: S#L1 CREATE TABLE SAL(HISTORY 2 (EMPNO NUMBER(10)% ) HIREDATE DATE% 2 SAL NUMBER(10%2))5 T6789 :;96<9=. 1 CREATE TABLE MGR(HISTORY 2 (EMPNO NUMBER(10)% ) MGR NUMBER(10)% 2$ SAL NUMBER(10%2)) / / T6789 :;96<9=. S#L1 INSERT ALL 2 INTO SAL(HISTORY VALUES(EMPNO%HIREDATE%SAL) ) INTO MGR(HISTORY VALUES(EMPNO%MGR%SAL) 2 SELECT EMPNO%HIREDATE%SAL%MGR FROM EMP5 2. ;GHI :;96<9=. S#L1 SELECT $ FROM SAL(HISTORY5 EMPNO HIREDATE SAL &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 4)3! 14&DEC&.0 .00 42!! 20&FEB&.1 1300 4/21 22&FEB&.1 12/0 4/33 02&APR&.1 2!4/ 43/2 2.&SEP&.1 12/0 43!. 01&MAY&.1 2./0 44.2 0!&JUN&.1 22/0 44.. 1!&APR&.4 )000 4.)! 14&NOV&.1 /000

164 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

4.22 0.&SEP&.1 4.43 2)&MAY&.4 4!00 0)&DEC&.1 4!02 0)&DEC&.1 4!)2 2)&JAN&.2 12 ;GHI I989:<9=.

1/00 1100 !/0 )000 1)00

1$ SELECT $ FROM MGR(HISTORY S#L1 / EMPNO MGR SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! 4!02 .00 42!! 43!. 1300 4/21 43!. 12/0 4/33 4.)! 2!4/ 43/2 43!. 12/0 43!. 4.)! 2./0 44.2 4.)! 22/0 44.. 4/33 )000 4.)! /000 4.22 43!. 1/00 4.43 44.. 1100 4!00 43!. !/0 4!02 4/33 )000 4!)2 44.2 1)00 12 ;GHI I989:<9=. S#L1 DELETE FROM SAL(HISTORY5 12 ;GHI =989<9=. S#L1DELETE FROM MGR(HISTORY5 12 ;GHI =989<9=. S#L1 INSERT ALL 2 INTO SAL(HISTORY VALUES(EMPNO%HIREDATE%SAL) ) INTO MGR(HISTORY VALUES(EMPNO%MGR%SAL) 2 SELECT EMPNO%HIREDATE%SAL%MGR FROM EMP / WHERE DEPTNOL205 10 ;GHI :;96<9=. S#L1 SELECT $ FROM SAL(HISTORY5 EMPNO HIREDATE SAL &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 4)3! 14&DEC&.0 .00 4/33 02&APR&.1 2!4/ 44.. 1!&APR&.4 )000 4.43 2)&MAY&.4 1100 4!02 0)&DEC&.1 )000 1$ SELECT $ FROM MGR(HISTORY S#L1 / EMPNO MGR SAL

165 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

&&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! 4!02 .00 4/33 4.)! 2!4/ 44.. 4/33 )000 4.43 44.. 1100 4!02 4/33 )000 S#L1 DELETE FROM SAL(HISTORY5 / ;GHI =989<9=. 1$ DELETE FROM MGR(HISTORY S#L1 / / ;GHI =989<9=. CONDITIONAL INSERT ALL: 1 INSERT ALL 2 WHEN SAL 1 2000 THEN ) INTO SAL(HISTORY VALUES(EMPNO%HIREDATE%SAL) 2 WHEN DEPTNO 1 10 THEN / INTO MGR(HISTORY VALUES(EMPNO%MGR%SAL) 3$ SELECT EMPNO%HIREDATE%SAL%MGR%DEPTNO FROM EMP 4 / 14 ;GHI :;96<9=. S#L1 SELECT $ FROM SAL(HISTORY5 EMPNO HIREDATE SAL &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 4/33 02&APR&.1 2!4/ 43!. 01&MAY&.1 2./0 44.2 0!&JUN&.1 22/0 44.. 1!&APR&.4 )000 4.)! 14&NOV&.1 /000 4!02 0)&DEC&.1 )000 3 ;GHI I989:<9=. 1$ SELECT $ FROM MGR(HISTORY S#L1 / EMPNO MGR SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! 4!02 .00 42!! 43!. 1300 4/21 43!. 12/0 4/33 4.)! 2!4/ 43/2 43!. 12/0 43!. 4.)! 2./0 44.. 4/33 )000 4.22 43!. 1/00 4.43 44.. 1100 4!00 43!. !/0 4!02 4/33 )000

166 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

11 ;GHI I989:<9=. S#L1 DELETE FROM SAL(HISTORY5 3 ;GHI =989<9=. S#L1 DELETE FROM MGR(HISTORY5 11 ;GHI =989<9=. S#L1 INSERT FIRST 2 WHEN SAL L /000 THEN ) INTO SAL(HISTORY VALUES(EMPNO%HIREDATE%SAL) 2 WHEN DEPTNO 1 10 THEN / INTO MGR(HISTORY VALUES(EMPNO%MGR%SAL) 3 WHEN DEPTNO 1 20 THEN 4 INTO MGR(HISTORY VALUES(EMPNO%MGR%SAL) . ELSE ! INTO MGR(HISTORY VALUES(EMPNO%MGR%SAL) 10 SELECT EMPNO%HIREDATE%SAL%MGR%DEPTNO FROM EMP5 12 ;GHI :;96<9=. S#L1 SELECT $ FROM SAL(HISTORY5 EMPNO HIREDATE SAL &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 4.)! 14&NOV&.1 /000 S#L1 SELECT $ FROM MGR(HISTORY5 EMPNO MGR SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 4)3! 4!02 .00 42!! 43!. 1300 4/21 43!. 12/0 4/33 4.)! 2!4/ 43/2 43!. 12/0 43!. 4.)! 2./0 44.. 4/33 )000 4.22 43!. 1/00 4.43 44.. 1100 4!00 43!. !/0 4!02 4/33 )000 44.2 4.)! 22/0 4!)2 44.2 1)00 1) ;GHI I989:<9=. CONDITIONAL FIRST INSERT: S#L1 CREATE TABLE SPECIAL(SAL 2 (DEPTNO NUMBER(10)% ) SAL NUMBER(10))5 T6789 :;96<9=. S#L1 CREATE TABLE HIREDATE(HIS(.1 2 (DEPTNO NUMBER(10)%

167 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

) HIREDATE DATE)5 T6789 :;96<9=. 1 CREATE TABLE HIREDATE(HIS(.4 2 (DEPTNO NUMBER(10)% )$ HIREDATE DATE) 2 / T6789 :;96<9=. 1 CREATE TABLE HIREDATE(HIS 2 (DEPTNO NUMBER(10)% )$ HIREDATE DATE) 2 / T6789 :;96<9=. 1 INSERT FIRST 2 WHEN SAL 1 2000 THEN ) INTO SPECIAL(SAL VALUES(DEPTNO%SAL) 2 WHEN HIREDATE LI'E (C-.1-C) THEN / INTO HIREDATE(HIS(.1 VALUES (DEPTNO%HIREDATE) 3 WHEN HIREDATE LI'E (C-.4-C) THEN 4 INTO HIREDATE(HIS(.4 VALUES (DEPTNO%HIREDATE) . ELSE ! INTO HIREDATE(HIS VALUES (DEPTNO%HIREDATE) 10$ SELECT DEPTNO%SAL%HIREDATE FROM EMP S#L1 / 12 ;GHI :;96<9=. S#L1 SELECT $ FROM SPECIAL(SAL5 DEPTNOSAL &&&&&&&&&& &&&&&&&&&& 20 2!4/ )0 2./0 10 22/0 20 )000 10 /000 20 )000 3 ;GHI I989:<9=. S#L1 SELECT $ FROM HIREDATE(HIS(.15 DEPTNO HIREDATE &&&&&&&&&& &&&&&&&&& )0 20&FEB&.1 )0 22&FEB&.1 )0 2.&SEP&.1 )0 0.&SEP&.1 )0 0)&DEC&.1 S#L1 SELECT $ FROM HIREDATE(HIS(.45 DEPTNO HIREDATE &&&&&&&&&& &&&&&&&&& 20 2)&MAY&.4 S#L1 SELECT $ FROM HIREDATE(HIS5

168 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

DEPTNO HIREDATE &&&&&&&&&& &&&&&&&&& 20 14&DEC&.0 10 2)&JAN&.2 1 CREATE TABLE SPECIAL(SAL1 2 (DEPTNO NUMBER(10)% ) SAL NUMBER(10)% 2$ HIREDATE DATE) S#L1 / T6789 :;96<9=. 1 CREATE TABLE HIREDATE(HIS(.1(1 2 (DEPTNO NUMBER(10)% ) HIREDATE DATE% 2$ SAL NUMBER) S#L1 / T6789 :;96<9=. 1 CREATE TABLE HIREDATE(HIS(.4(1 2 (DEPTNO NUMBER(10)% ) HIREDATE DATE% 2$ SAL NUMBER) / / T6789 :;96<9=. 1 CREATE TABLE HIREDATE(HIS(1 2 (DEPTNO NUMBER(10)% ) HIREDATE DATE% 2$ SAL NUMBER) / / T6789 :;96<9=. 1 INSERT FIRST 2 WHEN SAL 1 2000 THEN ) INTO SPECIAL(SAL1 VALUES(DEPTNO%SAL%HIREDATE) 2 WHEN HIREDATE LI'E (C-.1-C) THEN / INTO HIREDATE(HIS(.1(1 VALUES (DEPTNO%HIREDATE%SAL) 3 WHEN HIREDATE LI'E (C-.4-C) THEN 4 INTO HIREDATE(HIS(.4(1 VALUES (DEPTNO%HIREDATE%SAL) . ELSE ! INTO HIREDATE(HIS(1 VALUES (DEPTNO%HIREDATE%SAL) 10$ SELECT DEPTNO%SAL%HIREDATE FROM EMP S#L1 / 12 ;GHI :;96<9=. S#L1 SELECT $ FROM SPECIAL(SAL15 DEPTNO SAL HIREDATE &&&&&&&&&& &&&&&&&&&& &&&&&&&&& 20 2!4/ 02&APR&.1 )0 2./0 01&MAY&.1 10 22/0 0!&JUN&.1 20 )000 1!&APR&.4 10 /000 14&NOV&.1 20 )000 0)&DEC&.1 3 ;GHI I989:<9=.

169 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 SELECT $ FROM HIREDATE(HIS(15 DEPTNO HIREDATE SAL &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 20 14&DEC&.0 .00 10 2)&JAN&.2 1)00 1$ SELECT $ FROM HIREDATE(HIS(.1(1 S#L1 / DEPTNO HIREDATE SAL &&&&&&&&&& &&&&&&&&& &&&&&&&&&& )0 20&FEB&.1 1300 )0 22&FEB&.1 12/0 )0 2.&SEP&.1 12/0 )0 0.&SEP&.1 1/00 )0 0)&DEC&.1 !/0 1$ SELECT $ FROM HIREDATE(HIS(.4(1 S#L1 / DEPTNO HIREDATE SAL &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 20 2)&MAY&.4 1100 S#L1 DELETE FROM SPECIAL(SAL15 3 ;GHI =989<9=. S#L1 DELETE FROM HIREDATE(HIS(15 2 ;GHI =989<9=. 1$ DELETE FROM HIREDATE(HIS(.1(1 S#L1 / / ;GHI =989<9=. 1$ DELETE FROM HIREDATE(HIS(.4(1 S#L1 / 1 ;GH =989<9=. 1 INSERT FIRST 2 WHEN SAL 1 /000 THEN ) INTO SPECIAL(SAL1 VALUES(DEPTNO%SAL%HIREDATE) 2 WHEN HIREDATE LI'E (C-.1-C) THEN / INTO HIREDATE(HIS(.1(1 VALUES (DEPTNO%HIREDATE%SAL) 3 WHEN HIREDATE LI'E (C-.4-C) THEN 4 INTO HIREDATE(HIS(.4(1 VALUES (DEPTNO%HIREDATE%SAL) . ELSE ! INTO HIREDATE(HIS(1 VALUES (DEPTNO%HIREDATE%SAL) 10$ SELECT DEPTNO%SAL%HIREDATE FROM EMP 11 / 12 ;GHI :;96<9=. S#L1 SELECT $ FROM SPECIAL(SAL15 EG ;GHI I989:<9=

170 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

S#L1 SELECT $ FROM HIREDATE(HIS(.1(15 DEPTNO HIREDATE SAL &&&&&&&&&& &&&&&&&&& &&&&&&&&&& )0 20&FEB&.1 1300 )0 22&FEB&.1 12/0 20 02&APR&.1 2!4/ )0 2.&SEP&.1 12/0 )0 01&MAY&.1 2./0 10 0!&JUN&.1 22/0 10 14&NOV&.1 /000 )0 0.&SEP&.1 1/00 )0 0)&DEC&.1 !/0 20 0)&DEC&.1 )000 10 ;GHI I989:<9=. S#L1 SELECT $ FROM HIREDATE(HIS(.4(15 DEPTNO HIREDATE SAL &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 20 1!&APR&.4 )000 20 2)&MAY&.4 1100 S#L1 SELECT $ FROM HIREDATE(HIS5 DEPTNO HIREDATE &&&&&&&&&& &&&&&&&&& 20 14&DEC&.0 10 2)&JAN&.2 PIVOTING INSERT: S#L1 CREATE TABLE SALES(SOURCE(DATA 2 (EMPLOYEE(ID NUMBER(10)% ) WEE'(ID NUMBER(2)% 2 SALES(MON NUMBER(10)% / SALES(TUE NUMBER(10)% 3 SALES(WED NUMBER(10)% 4 SALES(THUR NUMBER(10)% . SALES(FRI NUMBER(10))5 T6789 :;96<9=. S#L1 INSERT INTO SALES(SOURCE(DATA 2 VALUES ) (1%3%2000%)000%2000%/000%3000)5 1 ;GH :;96<9=. S#L1 CREATE TABLE SALES(INFO 2 (EMPLOYEE(ID NUMBER(10)% ) WEE' NUMBER(10)% 2 SALES NUMBER(10))5 T6789 :;96<9=. 1 2 ) 2 INSERT ALL INTO SALES(INFO VALUES(EMPLOYEE(ID%WEE'(ID%SALES(MON) INTO SALES(INFO VALUES(EMPLOYEE(ID%WEE'(ID%SALES(TUE) INTO SALES(INFO VALUES(EMPLOYEE(ID%WEE'(ID%SALES(WED)

171 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

/ INTO SALES(INFO VALUES(EMPLOYEE(ID%WEE'(ID%SALES(THUR) 3 INTO SALES(INFO VALUES(EMPLOYEE(ID%WEE'(ID%SALES(FRI) 4 SELECT EMPLOYEE(ID%WEE'(ID%SALES(MON%SALES(TUE%SALES(WED% .$ SALES(THUR%SALES(FRI FROM SALES(SOURCE(DATA S#L1 / / ;GHI :;96<9=. S#L1 SELECT $ FROM SALES(INFO5 EMPLOYEE(ID WEE' SALES &&&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 1 3 2000 1 3 )000 1 3 2000 1 3 /000 1 3 3000 SCALAR SUB#UERIES: A SCALAR THAT RETURNS E"ACTLY ONE COLUMN VALUE FROM ONE ROW IS REFERED AS A SCALAR SUB #UERY. SCALAR SUB#UERIES IN CASE: 1 SELECT EMPNO%ENAME%DEPTNO% 2 (CASE ) WHEN DEPTNO L (SELECT DEPTNO FROM DEPT 2 WHERE LOC L CNEW YOR'C) / THEN CCANADAC ELSE CUSAC END) LOCATION 3$ FROM EMP S#L1 / EMPNO ENAME DEPTNO LOCATI &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& &&&&&& 4)3! SMITH 20 USA 42!! ALLEN )0 USA 4/21 WARD )0 USA 4/33 JONES 20 USA 43/2 MARTIN )0 USA 43!. BLA'E )0 USA 44.2 CLAR' 10 CANADA 44.. SCOTT 20 USA 4.)! 'ING 10 CANADA 4.22 TURNER )0 USA 4.43 ADAMS 20 USA 4!00 JAMES )0 USA 4!02 FORD 20 USA 4!)2 MILLER 10 CANADA 12 ;GHI I989:<9=. S#L1 SELECT $ FROM DEPT5 DEPTNO DNAME LOC &&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&& 10 ACCOUNTING NEW YOR'

172 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

20 RESEARCH )0 SALES 20 OPERATIONS

DALLAS CHICAGO BOSTON

S#L1 SELECT EMPNO%ENAME 2 FROM EMP E ) ORDER BY (SELECT 2 DNAME FROM DEPT D / WHERE E.DEPTNOLD.DEPTNO)5 EMPNO ENAME &&&&&&&&&& &&&&&&&&&& 44.2 CLAR' 4.)! 'ING 4!)2 MILLER 4)3! SMITH 4.43 ADAMS 4!02 FORD 44.. SCOTT 4/33 JONES 42!! ALLEN 43!. BLA'E 43/2 MARTIN 4!00 JAMES 4.22 TURNER 4/21 WARD 12 ;GHI I989:<9=. CORRELATED SUB#UERY: FINDING EMPLOYEES WHOSE SAL IS GREATER THAN AVG(SAL) OF THEIR DEPARTMENT. S#L1 SELECT ENAME%SAL%DEPTNO FROM EMP E 2 WHERE SAL 1 (SELECT AVG(SAL) FROM EMP ) WHERE DEPTNOLE.DEPTNO)5 ENAME SAL DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& ALLEN 1300 )0 JONES 2!4/ 20 BLA'E 2./0 )0 SCOTT )000 'ING /000 FORD )000 3 ;GHI I989:<9=. 20 10 20

FINDING EMPLOYEES WHOSE SAL IS GREATER THAN MIN(SAL) OF THEIR DEPARTMENT. 1 SELECT ENAME%SAL%DEPTNO FROM EMP E 2 WHERE SAL 1 (SELECT MIN(SAL) FROM EMP )$ WHERE DEPTNOLE.DEPTNO) S#L1 / ENAME SAL DEPTNO

173 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

&&&&&&&&&& &&&&&&&&&& &&&&&&&&&& ALLEN 1300 )0 WARD 12/0 )0 JONES 2!4/ 20 MARTIN 12/0 )0 BLA'E 2./0 )0 CLAR' 22/0 10 SCOTT )000 20 'ING /000 10 TURNER 1/00 )0 ADAMS 1100 20 FORD )000 20 11 ;GHI I989:<9=. EXISTS: FIND EMPLOYEES WHO HAVE ATLEAT ONE PERSON REPORTING TO THEM. 1 SELECT EMPNO%ENAME%JOB%DEPTNO FROM EMP E 2 WHERE E"ISTS )$ (SELECT C"C FROM EMP WHERE MGRLE.EMPNO) S#L1 / EMPNO ENAME JOB DEPTNO &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 4/33 JONES MANAGER 20 43!. BLA'E MANAGER )0 44.2 CLAR' MANAGER 10 44.. SCOTT ANALYST 20 4.)! 'ING PRESIDENT 10 4!02 FORD ANALYST 20 3 ;GHI I989:<9=. THE SAME #UERY WITH IN: 1 SELECT EMPNO%ENAME%JOB%DEPTNO 2 FROM EMP ) WHERE EMPNO IN (SELECT MGR FROM EMP 2$ WHERE MGR IS NOT NULL) S#L1 / EMPNO ENAME JOB &&&&&&&&&& &&&&&&&&&& &&&&&&&&& &&&&&&&&&& 4/33 JONES MANAGER 43!. BLA'E MANAGER 44.2 CLAR' MANAGER 44.. SCOTT ANALYST 4.)! 'ING PRESIDENT 4!02 FORD ANALYST 3 ;GHI I989:<9=. DEPTNO 20 )0 10 20 10 20

NOT E"ISTS: FIND ALL THE DEPARTMENTS THAT DO NOT HAVE ANY EMPLOYEES: S#L1 SELECT DEPTNO%DNAME

174 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

FROM DEPT D WHERE NOT E"ISTS (SELECT C"C FROM EMP WHERE DEPTNOLD.DEPTNO)5 DEPTNO DNAME &&&&&&&&&& &&&&&&&&&&&&&& 20 OPERATIONS SAME #UERY WITH NOT IN: S#L1 SELECT DEPTNO%DNAME FROM DEPT 2 WHERE DEPTNO NOT IN ) (SELECT DEPTNO FROM EMP)5 DEPTNO DNAME &&&&&&&&&& &&&&&&&&&&&&&& 20 OPERATIONS INSERT WITH SUB#UERY: 1 INSERT INTO 2 (SELECT EMPNO%ENAME%JOB%DEPTNO FROM EMP) ) VALUES 2$ (100%CPAVANC%CMANAGERC%10) S#L1 / 1 ;GH :;96<9=. INSERT WITH SUB#UERY WITH CHEC' OPTION: 1 INSERT INTO 2 (SELECT EMPNO%ENAME%JOB%DEPTNO ) FROM EMP WHERE DEPTNOL)0 WITH CHEC' OPTION) 2 VALUES /$ (100%CPAVANC%CMANAGERC%10) S#L1 / INSERT INTO $ ERROR 6< 8FE9 1: ORA&01202: RF9H WITH CHEC' OPTION HD9;9&:86?I9 RFG86<FGE 1 INSERT INTO 2 (SELECT EMPNO%ENAME%JOB ) FROM EMP WHERE DEPTNOL)0 WITH CHEC' OPTION) 2 VALUES /$ (100%CPAVANC%CMANAGERC) S#L1 / INSERT INTO $ ERROR 6< 8FE9 1: ORA&01202: RF9H WITH CHEC' OPTION HD9;9&:86?I9 RFG86<FGE 1 2 ) 2 INSERT INTO (SELECT EMPNO%ENAME%JOB%DEPTNO FROM EMP WHERE DEPTNOL)0 WITH CHEC' OPTION) VALUES

2 ) 2 /

175 STRUCTURED QUERY LANGUAGE

P.SUDHEER REDDY

/$ (101%CPAVANC%CMANAGERC%)0) S#L1 / 1 ;GH :;96<9=. DEFAULT: S#L1 CREATE TABLE SAMPLE 2 (EMPNO NUMBER(10)% ) ENAME VARCHAR2(10)% 2 SAL NUMBER(10) DEFAULT 1000)5 T6789 :;96<9=. S#L1 INSERT INTO SAMPLE 2 VALUES ) (1%CPAVANC%100)5 1 ;GH :;96<9=. 1 INSERT INTO SAMPLE 2 VALUES )$ (1%CPAVANC%DEFAULT) S#L1 / 1 ;GH :;96<9=. S#L1 UPDATE SAMPLE 2 SET SAL L DEFAULT ) WHERE EMPNOL15 2 ;GHI ?B=6<9=. S#L1 SELECT $ FROM SAMPLE5 EMPNO ENAME SAL &&&&&&&&&& &&&&&&&&&& &&&&&&&&&& 1 PAVAN 1000 1 PAVAN 1000

176 STRUCTURED QUERY LANGUAGE

You might also like