Print SQL
Print SQL
DATA_TYPES:
NUMBER(M,N) :-EX1 : SALARY NUMBER(10,2); EX2: EMPID NUMBER(8);
MAX SIZE 38 DIGIT
MINIMUM SIZE IS 1 DIGIT
WE CAN STORE INTERGER VALUES AND FLOAT VALUES.
THIS DATA TYPE IS FOR NUMERIC VALUES
IT WILL OCCUPY THE SPACE BASED ON THE INPUT VALUE
(COLUMN_NAME) DATA_TYPE VSIZE MAX MAX TOTAL- DATA_STORED
ACCOUNT_BAL INTEGER DISMAL VALUE _IN_COLUMN
1000.50 NUMBER (9,2) 6 7 2 9 1000.50
12345678.55 “ 7 2 9 CAN’T INSERT
1234567.555 “ 9 7 2 9 1234567.55
1234567.50 NUMBER(7) 7 7 0 7 1234567
120.56 NUMBER(38,38) CAN’T INSERT
.123456789 “ 9 0 38 38 .123456789
1234567898 NUMBER(10,-2) 10 10 0 10 1234567800
123456 “ 6 10 0 10 123400
NUMBER (10,-2) : -2 MEANS IT WILL ROUND UP LAST TWO DIGITS EX1:12345 COL_VALUE :-
12300
IT WILL SUPPORT NULL VALUES –IT WON’T OCCUPY ANY SPACE FOR THAT
CREATE:
USED TO MAKE A NEW DATABASE OBJECT (EX:TABLE, VIEW,SYNONM…..etc)
By using create command we can create table
Syntax:- create table <table_name> (col1 datatype, col2 datatyp, col3
datatype……coln datatype);
ex: create table student_info (roll_no number(4), stu_name varchar2(25),
stu_class number(3), stu_dob date, marks number(4));
IQ-1)TABLE CAN HAVE MAXIMM 1000 COLUMNS
IQ-2)TABLE NAME OR COLUMN NAME SHOULD BE <= 30 character, (NOTE:- ALL THE
OBJECT NAME SHOULD BE <= 30 characters, ex: index name, view name, synonym…)
IQ-3)TYPES OF TABLES (DATA BASE TABLE (SQL TABLE), NESTED TABLE, GLOBAL TEMPORARY
TABLE, EXTERNAL TABLE, PARTITION TABLE)
IQ-4)HOW TO SEE THE COLUMN NAMES AND THEIR DATA TYPES AFTER CREATE THE
TABLES?
>DESC <TABLE_NAME>; EX: DESC EMP;
IQ-5)HOW TO GET THE TABLE CREATION SCRIPT OR OBJECT CREATION SCRIPT (DDL SCRIPT) ?
SELECT DBMS_METADATA.GET_DDL(‘TABLE’,’EMP’) FROM DUAL;
SELECT DBMS_METADATA.GET_DDL(<OBJECT_TYPE>,<OBJECT_NAME>);
IQ-6)WE CAN’T CREATE TWO DATABASE OBJECTS WITH SAME NAME
EX: CREATE TABLE STU_INFO (ROLL NUMBER(3), STU_NAME VARCHAR2(30); ->R
CREATE TABLE STU_INFO (ROLL_NO NUMBER, STU_NAME CHAR(9), AGE NUMBER(3));-> W
ALTER COMMAND:-
IQ-1: WE CAN’T DROP THE TABLE IF THAT TABLE IS MASTER (PARENT) TABLE; WE HAVE TO
USE CASCADE CONSTRAINT TO DROP PARENT TABLE.
EX: DROP TABLE DEPT CASCADE CONSTRAINTS;
DQL : DATA QUERY LANGUAGE
USED TO RETRIVE DATA OR INFROMATION FROM THE TABLE FOR READ ONLY PURPOSE
SYNTAX :- SELECT COL1, COL2, … FROM <TABLE_NAME> OR SELECT * FROM <TAB_NAME);
EX: SELECT * FROM EMP (OR) SELECT EMPNO, ENAME, SAL FROM EMP;
OPERATORS:-
ARITHMETIC OPERATORS :- + , - , * , /
RELATIONAL OPERATORS :- < , > , <= , >= , = , BETWEEN, LIKE, IN , IS NULL
RELATIONAL NEGATION :- != , <>, NOT BETWEEN, NOT IN, NOT LIKE, IS NOT NULL
LOGICAL OPERATORS :- AND , OR, NOT
SET OPERATORS :- UNION , INTERSECT, MINUS, UNION ALL
AUTO COMMIT;
AFTER DML COMMANDS IF WE USE ANY DDL COMMAND THEN AUTO COMMIT;
IQ1) (FOR DDL COMMANDS COMMIT IS NOT REQUIRE, BUT AFTER DML COMMAND IF YOU USE
ANY DDL COMMAND THEN THOSE DML STATEMENTS AUTOMATICALLY WILL COMMIT, THAT’S
WHY WE CAN NOT USE DDL IN PL/SQL BLOCK)
TCL :TRANSACTION CONTROL LANGUAGE:-
TRANSACTION CONTROL STATEMENTS USED TO MANAGE THE CHANGES MADE BY DML
STATEMENTS
COMMIT: - SAVE WORK DONE
INSERT INTO EMP (EMPNO, ENAME,DEPTNO,SAL) VALUES (101,’A’,10,5000);
UPDATE EMP SET SAL=8000 WHERE EMPNO = 7369;
COMMIT;
- -> (AFTER COMMIT, DATA PERMANENTLY STORED IN THE DATABASE UNTIL WE DELETE)
SAVEPOINT: - IDENTIFY A POINT IN A TRANSACTION TO WHICH YOU CAN LATER ROLL BACK
EX:- CREATE TABLE TEMP_2(A NUMBER, B NUMBER);
INSERT INTO TEMP_2 VALUES (100,100);
COMMIT;
INSERT INTO TEMP_2 VALUES (1,10);
INSERT INTO TEMP_2 VALUES (2,20);
SAVEPOINT S1;
UPDATE TEMP_2 SET A= 999 WHERE B=100;
SAVEPOINT S2;
INSERT INTO TEMP_2 VALUES(3,30);
SAVEPOINT S3;
ROLLBACK TO SAVEPOINT S2;
COMMIT;
SELECT * FROM TEMP_2;
OUT PUT IS
999 100
1 10
2 20
NOTE:- COMMIT OR ROLLBACK WILL CLEAR SAVEPOINTS.
ROLLBACK :- RESTORE DATABASE TO ORIGINAL SINCE THE LAST COMMIT
EX: CREATE TABLE TEMP_3 (A NUMBER(3), B NUMBER(3));
INSERT INTO TEMP_3 VALUES(10,20);
COMMIT;
INSERT INTO TEMP_3 VALUES (100,200);
ROLLBACK;
SELECT * FROM TEMP_3;
OUT PUT IS
10 20
NULL :-
IT IS AN UNDEFINED AND UNCOMPERABLE VALUE
IT IS NOT EQUAL TO SPACE OR ZERO
IT WILL NOT OCUPY ANY MEMORY
ANY ARTHMETIC OPERATION WITH NULL RETURNS NULL ONLY
IT IS REPRESENT WITH NULL KEYWORD BUT SHOWN AS SPACE ON TO SCREEN
SUPPORTS ALL DATA TYPES
EX:-
1) SELECT SAL * NULL FROM EMP;
2) UPDATE EMP E SET COMM = COMM * 10 WHERE DEPTNO = 10;
DUAL TABLE:-
IT IS A SYSTEM DEFINE TABLE
SUPPORTS TO RETRIVE GENERAL INFORMATION FROM SELECT STATEMENT
DUAL TABLE CONTAIN ONE COLUMN-> COLUMN NAME IS-> DUMMY
DATA TYPE IS : VARCHAR2. SIZE IS : 1. VALUE IS : ` X`
CAN’T APPLY ANY DML AND DDL OPERATIONS ON THIS TABLE
EX:-
1. SELECT ‘EMPLOYEE NAME IS SMITH’ FROM DUAL;
2. SELECT 10000 – 3000 , 100/4 FROM DUAL;
3. SELECT SYSDATE FROM DUAL;
ARTHMETIC FUNCTIONS:-
1. ABS
2. CEIL
3. FLOOR
4. MOD
5. SQRT
6. POWER
7. GREATEST
8. LEAST
9. SIGN
GNANA IT SOLUTIONS, SQL MATERIAL
9
10. EXP
11. LOG
12. COS
13. ROUND
14. TRUNC
ABS (N):- THIS FUNCTION IS USED TO FIND OUT THE ABSOLUTE VALUE OF GIVEN NUMBER;
EX:- SELECT ABS(-10), ABS(20) FROM DUAL;
RESULT IS:- 10, 20
CEIL (N):- CEIL RETURNS SMALLEST INTEGER GREATER THEN OR EQUAL (>=) TO ‘N’
EX: SELECT CEIL (15.77), CEIL (100.01), CEIL (1000.00) , CEIL (-100.2) FROM DUAL;
RESULT IS :- 16 , 101, 1000 , 100
FLOOR (M) :- FLOOR RETURNS LARGEST INTEGER LESS THEN OR EQUAL (<=)
EX:- SELECT FLOOR (15.77), FLOOR (100.01), FLOOR (1000.00) , FLOOR (-100.2) FROM DUAL;
RESULT IS :- 15 , 100 , 1000 , -101
MOD(M, N) :- THIS FUNCTION IS USED TO FINDOUT THE REMAINDER OF A GIVEN NUMBER.
EX:- SELECT MOD(9,3), MOD(17,5), MOD(16,4), MOD(16,-4), MOD(9,-2) FROM DUAL;
SQRT (N):-THIS FUNCTION IS USED TO FIND OUT THE SQUARE ROOT OF GIVEN NUMBER
EX:SELECT SQRT(25), SQRT(625), SQRT(900) FROM DUAL
POWER(M,N):-THIS FUNCTION IS USED TO FIND THE Nth POWER OF A GIVEN NUMBER
SELECT POWER(5,2), POWER(5,-2), POWER(2,8) FROM DUAL
GREATEST (N1,N2,N3..Nn): GREATEST(DATE1, DATE2….DATEN):- SUPPORTS NUMBER AND
DATE DATA TYPES
THIS FUNCTIONG RETURNS THE LARGEST VALUE FROM THE GIVEN LIST OF NUMBERS OR
DATES
EX:- SELECT GREATES(-99,1,100,-99999), GREATEST(SYSDATE, SYSDATE-2,SYSDATE + 3) FROM
DUAL;
LEAST (N1,N2,N3,…Nn): LEAST(DATE1, DATE2,…DATEN):- SUPPORTS NUMBER AND DATE
DATA TYPES
EX:-SELECT LEAST(1,-12,-100,0,100), LEAST(SYSDATE, SYSDATE-100, SYSDATE-10) FROM DUAL;
SIGN(M):-THIS FUNCTION IS USED TO FIND THE STATUS OF A GIVEN NUMBER
SEELECT SIGN (-10), SIGN(22) FROM DUAL;
EXP(N) :-> GIVEN E POWER N RESULT (natural algorithm)
ROUND :- THIS FUNCTION IS USED TO ROUND THE NUMBER TO THE NEAREST
SELECT ROUND(123456.45678, -1 OR 1 ) FROM DUAL
-2 OR 2
-3 OR 3
-4 OR 4
-5 OR 5
TRUNC:-THIS FUNCTION IS USED TO TRUNCATE/DELETE FROM SOME POSITION.
SELECT TRUNC(123456.45678, -1 OR 1 ) FROM DUAL
-2 OR 2
-3 OR 3
-4 OR 4
-5 OR 5
CHAR FUNCTIONS:-
LENGTH(STRING):- GIVES NO.OF CHARACTERS IN GIVEN STRING
SELECT LENGTH(‘APPLE’) FROM DUAL;
SELECT LENGTH(ENAME), ENAME, LENGTH(EMPNO), EMPNO, LENGTH(SAL), SAL, FROM EMP;
SELECT * FROM EMP WHERE LENGTH(ENAME) > 5;
REVERSE(STRING):-GIVES THE STRING IN REVERSE PATTERN
SELECT REVERSE(‘APPLE’), REVERSE(‘MADAM’) FROM DUAL;
SELECT ‘YES GIVEN STRING IS PALENDROM’ FROM WHERE REVERSE(‘MADAM’)= MDAM
ASCII(CHAR):- GIVES ASCII VALUE OF GIVEN CHARACTER
SELECT ASCII(‘a’), ASCII(‘b’), ASCII(‘A’), ASCii(‘B’), ASCII(‘’’’), ASCII(‘ ‘) FROM DUAL;
CHR(N):- GIVES THE EQUALENT CHARACTER OF GIVEN NUMBER
SELECT CHR(39), CHR(65), CHR(66), CHR(10) FROM DUAL
LPAD(STRING,N,CHAR):-LEFT PADDING
LEFT SIDE FILES THE STRING ‘STRING’ UPTO N SPACE WITH ‘CHAR’ CHACTER
SELECT LPAD(‘RAJA’,10,’*’ ), LPAD(‘1234’, 8 , 0000) FROM DUAL
RPAD(STRING,N,CHAR):-RIGHT PADDING
RIGHT SIDE FILES THE STRING ‘STRING’ UPTO N SPACE WITH ‘CHAR’ CHACTER
SELECT RAJA(‘RAJA’,10,’*’ ), RAJA(‘1234’, 8 , 0000) FROM DUAL;
CONCAT(STR1, STR2) :->USED TO JOIN STRINGS BY USING PIPE SYMBOL ‘||’ ALSO WE CAN DO
SAME THING
‘||’ :-> CONCATIONTION OPERATOR
SELECT CONCAT (‘RAJA’,’SEKHAR’), CONCAT(‘EMPNUMBER ‘, E.EMPNO) FROM EMP E;
SELECT ‘EMPNO IS:- ’||E.EMPNO||’, ENAME IS: ’||E.ENAME FROM EMP WHERE EMPNO =
7369;
AS EMPNO IS :- 7369 , ENAME IS : SMITH
INITCAP :- IT RETURNS CHAR, WITH THE FIRST LETTER OF EACH WORD IN A UPPERCASE ALL
OTHER LETTERS IN LOWERCASE
SELECT INITCAP(‘ HI, GOOD MORNING ’) , INITCAP(ENAME) FROM EMP;
LOWER:-LOWER RETURNS CHAR , WITH ALL LETTERS IN LOWERCASE
SELECT LOWER(ENAME), LOWER(‘HI, GOOD MORNING’) FROM EMP;
UPPER:-UPPER RETURNS CHAR , WITH ALL LETTERS IN UPPERCASE
SELECT UPPER(ENAME), UPPER(‘HI, GOOD MORNING’) FROM EMP;
REPLACING (STRING, STR1, STR2):-THIS FUNCTION IS USED TO REPLACE STR1 COMPLETELY
WITH STR2 IN THE GIVEN STRING
SELECT REPLACE(‘PLE’,’P’,’APP’), REPLACE(‘HI GOOD MORNING’,’ ‘,’’) FROM DUAL;
SELECT ENAME(E.ENAME, ‘S’,’s’ ) FROM DUAL
TRANSLATE (STRING, STR1,STR2):- THIS FNCTION IS TO REPLACE EACH CHARACTER OF ONE
SET WITH THE CORRESPONDING CHARACTER OF ANOTHER SET IN THE GIVEN STRING
SELECT TRANSLATE(‘PLE’,’P’,’APP’), TRANSLATE(‘AABCCDEFG’, ‘ABC’, ‘XYZ’) FROM DUAL
IQ1):- FIND THE NO OF ‘A’ S IN A GIVEN STRING?
AS: SELECT LENGTH(‘ANIMAL’) - LENGTH(REPLACE(‘ANIMAL’, ’A’, ‘’) ) FROM DUAL
SOUNDEX:-
SELECT ‘BOTH WORDS SOUNDS SAME’ FROM DUAL WHERE SOUNDEX(‘SRINU’)=
SOUNDEX(‘SREENU’);
L
1. SELECT LTRIM(‘SSSRAM’,’S’) FROM DUAL ; RAM
2. SELECT RTIM(‘ RAM ‘, ‘ ‘) FROM DUAL : RAM
3. SELECT TRIM(RTRIM(‘ RAMARAOAAA’, ‘A’,’’)) , TRIM(‘AARAMAA’) FROM DUAL
SUBSTR(STRING, M , N): THIS FUNCTION IS TO SELECT SOME PORTION OF THE STRING
FROM THE SPECIFIED POSITION UPTO THE NUMBER OF CHARS FROM THE GIVEN STRING
EX: SELECT SUBSTR(‘ORACLESQL’,1,6), SUBSTR(‘ORACLESQL’,7), SUBSTR(‘ORACLESQL’,-3),
SUBSTR(‘ORACLESQL’,-1,3), SUBSTR(‘ORACLE’,-10),SUBSTR(‘ORACLESQL’,-9) FROM DUAL
INSTR(STRING,CHAR,M,N):-THIS FUNCTION IS USED TO FIND THE POSITION OF
CHARACTER(S) THE GIVEN STRING FROM THE SPECIFIED POSITION AT THE Nth
OCCURRENCE
EX: SELECT INSTR(‘ORACLE, JAVA,.NET,APPS’, ‘.’,1,1) FROM DUAL
EX2:SELECT INSTR(‘ORACLE,JAVA,.NET,APPS’, ‘A’,1,2),
INSTR(‘ORACLE,JAVA,.NET,APPS’,’A’,2,1),
INSTR(‘ORACLE,JAVA,.NET,APPS’,’A’,1,1), INSTR(‘ORACLE,JAVA,.NET,APPS’,’A’,4,1)
/*FORM 4TH CHARACTER ONWARDS, FIRRST ‘A’ POSITION */ FROM DUAL;
IQ1)IN BELOW STRING, FIND THE STRING BETWEEN 3RD AND 4TH COMMA?, FIND THE
STRING BETWEEN 2ND AND 3RD COMMA?
DATE FUNCTIONS:-
TO_DATE :-IT CONVERTS STRING INTO DATE VALUE
SELECT TO_DATE(‘10122015’,’DDMMRRRR’), TO_DATE(‘22/12/2015’,’DD/MM/RRRR’) FROM
DUAL
UPDATE EMP E SET E.HIREDATE = TO_DATE(‘05/10/2015’,’DD/MM/RRR’) WHERE E.EMPNO=
7369;
TO_CHAR:- THIS FUNCTION CONVERTS ANY DATE VALUE TO A CHAR VALUE IN THE SPECIFIED
FORMAT AS TO CONVERT NUMBER INTO CHARACTER
SELECT CLAUSE:
SELECT <COLUMNS LIST> FROM <TABLE_NAME> [WHERE <CONDITION>
GROUP BY <COLUMNS>
HAVING <CONDITION>
ORDER BY <COLUMNS>]
CASE DECODE
2) CASE WE CAN USE INSIDE THE SELECT INSIDE THE SELECT STATEMENT ONLY WE
STATEMENT AND WITHOUT SELECT CAN USE DECODE, WITHOUT SELECT
STATEMENT ALSO WE CAN USE STATEMENT WE CAN NOT USE DECODE
EX:
1) UPDATE EMP SET DEPTNO=DECODE(DEPTNO, 10,20,20,30,30,40);
2) SELECT EMPNO, ENAME, SAL, DECODE(DEPTNO,10,(SAL*10)/100,20, (SAL*10)/100, 30,
(SAL *30)/100 ) EMP_BONUS FROM EMP
3) SELECT STU_NO, STU_NAME, MARKS,DECODE (MARKS,500,’A’,400,’B’,300,’C’,’FAIL’)
FROM STUDENT_INFO
4) SELECT STU_NO, STU_NAME, (CASE WHEN MARKS > 500 THEN ‘GRADE A’ WHEN
MARKS < 500 AND MARKS > 400 THEN ‘GRADE B’ ELSE ‘GRADE C’ END) GRADE FROM
STUDENT_INFO
5) UPDATE EMP SET COMM = (CASE WHEN SAL > 10000 THEN 2000 WHEN SAL > 7000
AND SAL < 10000 THEN 1500 ELSE 1000 END)
6) SELECT EMPNO, ENAME, SAL, DEPTNO,( CASE WHEN DEPTNO = 10 THEN ‘HR
DEPARTMENT’ WHEN DEPTNO = 20 THEN ‘MANAGER DEPARTMENT’ ELSE ‘ADMIN
DEPARTMENT’ END) DEPT_NAME FROM EMP
ROWNUM:-
IT IS A NUMARIC VALUE
EX: SELECT ROWNUM, EMPNO, ENAME, SAL FROM EMP ORDER BY SAL DESC
SELECT ROWNUM,EMPNO,ENAME,SAL FROM EMP ORDER BY SAL ASC
SELECT * FROM EMP WHERE ROWNUM >=1
ROWID:-
IT IS A HEXA DECIMAL VALUE (18 DIGIT VALUE)
IT IS A COMBINATION OF OBJECTID,FILE NUMBER, BLOCK NUMBER, ROW NUMBER
(OBJECT_NUM -OF- OBJECT, FILE_NUM -IN TABLESPACE, BLOCK_NUM - IN FILE ,
ROW_NUM --IN BLOCK)
IT IS A STATIC VALUE
WHEN WE INSRT NEW ROW INTO THE TABLE, THAT TIME ORACLE AUTOMATICALLY
(IMPLICITLY) GENARATE ONE HEXADICMIAL VALUE THAT IS ROWID
ROWID ROWNUM
IT IS A STATIC VALUE(ALWAYS SAME ROW IT IS NOT A STATIC VALUE (BASED ON THE
CONTAIN SAME ROWID ) OUT PUT OF SELECT STATEMENT
ROWNUM WILL CHANGE . DYNAMICALLY
CHANGE)
IT IS A HEXA DICIMAL NUMBER (18 DIGIT IT IS A NUMARIC VALUE
VALUE)
IT IS COMBINATION OF OBJECTID,FILE IT IS A NUMARIC VALUE
NUMBER, BLOCK NUMBER, ROW
NUMBER
ORACLE AUTOMATICALLY PROVIDE BASED ON SELECT STATEMENT OUT PUT
ROWID WHEN WE USER INSERT NEW ROWNUM WILL GENARATE
ROW INTO THE TABLE
ROWID WILL BE STORED IN THE IT WON’T (TEMPORERLY IT WILL
DATABASE GENARATE FOR SELECT STATEMENT
OUTPUT)
COLUMN COMMENTS
1. COMMENT ON COLUMN EMP.EMPNO IS ‘EMPLOYEE ID NUMBER’
2. COMMENT ON COLUMN EMP.SAL IS ‘MPLOYEE SALARY DETAILS’
DESC EMP;
DROP COMMENT:
1) COMMENT ON COLUMN EMP.SAL IS ‘ ‘
JOINS
SUPPORTS TO RETRIEVE DATA FROM MORE THAN ONE TABLE
NULLS WILL NEVER JOIN
WE CAN JOIN ANY NUMBER OF TABLES, BUT IF YOU JOIN ‘N’ TABLES THEN ATLEAST N-
1 CONDITIONS ARE REQUIRE.
5 TYPES OF JOINS
1) CARTESION JOIN
2) EQUI JOIN
3) NON-EQUI JOIN
4) SELF JOIN
5)OUTER JOINS (FULL OUTER, LEFT OUTER , RIGHT OUTER)
EQUI JOIN:-
USED TO RETRIEVE DATA FROM MORE THAN ONE TABLE BASED ON EQUALITY (‘=’)
CONDITION
IF N TABLES ARE JOINED THEN ATLEAST N-1 CONDITIONS ARE REQUIRE
MOSTLY WE APPLY EQUI JOIN ON PARENT CHILD TABLES (PRIMARY , FOREIGN KEY
RELATION TABLES )
STUDENT_INFO
COLLEGE_INFO
BRANCH_I BRANCH_LOCATIO BRANCH_ADDRESS COLLEGE_NA
D N ME
101 GUNTUR NEAR: RTC COMPLEX, NARAYANA_C
PLOT-122 OLLEGE
102 VISHAKA OPP:RAILWAY NARAYANA_C
STATION, PLOT-402 OLLEGE
103 HYDERABAD GACHI BOWLI, PLOT- NARAYANA_C
12 OLLEGE
GRADE_INFO
SR.NO MIN_MARKS MAX_MARKS GRADE
1 550 600 A
2 450 549 B
3 350 449 C
4 250 349 D
RETRIVE STUDENT DETAILS ALONG WITH COLLEGE DETAILS ?
SELECT HALLTICKET_NO, STU_NAME, STU_MARKS, BRANCH_NAME, BRANCH_LOCATION
FROM STUDENT_INFO SI, COLLEGE_INFO CI WHERE SI.BRANCH_ID = CI.BRANCH_ID;
DISPLAY GUNTUR NARAYA COLLEGE STUDENT INFO?
SELECT HALLTICKET_NO, STU_NAME, STU_MARKS, BRANCH_NAME, BRANCH_LOCATION
FROM STUDENT_INFO SI, COLLEGE_INFO CI WHERE SI.BRANCH_ID= CI.BRANCH_ID AND
CI.BRANCH_LOCATION = ‘GUNTUR’;
NON EQUI JOIN:
USED TO JOIN THE TABLES ON NON EQI CONDITION
TABLES ARE JOINED WITHOUT USING EQUALITY CONDITION
WE CAN USE THESE OPERATORS FOR NON EQUI JOIN (<, > ,BETWEEN , NOT
BETWEEN…etc)
DISPLAY STUDENT INFO ALONG WITH THEIR GRADE?
SELECT SI.STU_NAME, SI.STU_MARKS, GI.GRADE FROM STUDENT_INFO SI,
GRADE_INFO GI WHERE SI.STU_MARKS BETWEEN GI.MIN_MARKS AND
GI.MAX_MARKS;
DISPLAY STUDENT INFO ALONG WITH COLLEGE DETAILS AND THEIR GRADE?
SELF JOIN:
JOINING THE TABLE TO ITSELF
WORKER_TAB
EMPNO ENAME manager
101 A NULL
102 B 101
103 C 102
104 D 101
105 E 102
CUSTOMER_TABLE
CUST_AC_NO CUST_NAME CUST_DOB CUST_BAL LOAN_TYPE
11111 A 01/DEC/1995 5000 1
22222 B 30/APR/1976 56000 2
33333 C 29/MAY/1981 650000 1
444444 D 31/DEC/1997 900
555555 E 27/FEB/2004 43000 3
LOAN_DETAILS_TABLE
LOAN_TYPE LOAN_NAME
1 CAR LOAN
2 HOUSE LOAN
3 GOLD LOAN
4 PERSONAL LOAN
SET OPERATORS:
USED TO JOIN THE OUTPUTS OF SELECT STATEMENTS
OPERATOR WILL BE APPLIED AFTER EXECUTING SELECT STATEMENTS
SELECT STATEMENTS MUST HAVE EQUAL NO.OF COLUMN NAMES AND SIMILAR DATA
TYPE COLUMNS
MAXIMUM 32 SELECT STATEMENTS CAN BE JOINED
SET OPERATORS ARE 4 TYPES (UNION, UNION ALL, MINUS, INTERSECT)
UNION :- IT WILL COMBINE AND DISPLAY ALL THE SELECT STATEMENT OUTPUTS AND IT WILL
DISPLAY UNIQUE ROWS FROM THE RESULT SET.( DISPLAY UNIQUE VALUES ONLY, MEANS: IF
DIFFERENT SELECT STATEMENTS HAVING SAME ROW BUT IT WILL DISPLAY ONLY ONES)--
CHANGES IN UNION
EX: DISPLAY 10 AND 20TH DEPARTMENT EMPLOYEES LIST?
SELECT * FROM EMP E WHERE E.DEPTNO = 10
UNION
SELECT * FROM EMP WHERE E.DEPTNO = 20
(OR SELECT * FROM EMP E WHERE E.DEPTNO IN (10,20))
EX2:- DISPLAY EMPLOYEES LIST WHOSE JOB IS ‘CLERK’ OR ‘SALESMAN’
SELECT * FROM EMP WHERE E.JOB = ‘CLERK’
UNION
SELECT * FROM EMP WHERE JOB = ‘SALESMAN’
UNION ALL:-
IT WILL COMBINE AND DISPLAY ALL THE SELECT STATEMENT OUTPUTS AND IT WILL DISPLAY
DUPLICATE ROWS ALSO
EX: SELECT * FROM EMP WHERE E.DEPTNO = 10
UNION ALL
SELECT * FROM EMP WHERE E.DEPTNO = 10;
IQ1) DIFFERENCE BETWEEN UNION AND UNION ALL?
MINUS:- OUT PUT OF FIRST SELECT STATEMENT MINUS OUT PUT OF SECOND SELECT
STATEMENT
SELECT * FROM EMP WHERE DEPTNO =10
MINUS
VIEWS
VIEW IS A STORED SELECT STATEMENT
IT WILL NOT HOLD THE DATA PHYSICALLY ON IT
IF YOU APPLY ANY DML OPERATION ON THE VIEW IT WILL IMPACT ON ORIGINAL
OBJECTS
(WE CAN APPLY DML OPERATIONS ON THE VIEW BUT IT WILL IMPACT ON THE TABLE
DATA)
IT WILL HIDE THE COMPLECITY OF THE QUERY
DML ON VIEW ARE REFLECTED IN TABLE AND VICE VERSA
IT SUPPORTS TO SHARE SELECTED ROWS WITH OTHER USERS WHILE SHARING
PROVIDE HIGH SECURITY
SUPPOSE WE HAVE 3 TABLES , IF I WANT TO GIVE PERMISSION OF THESE 3 TABLES
TO OTHER USER THEN WE HAVE TO GIVE 3 OBJECT PERMISSIONS , INSTEAD OF
THAT WE CAN CREATE ONE VIEW ON THESE OBJECTS AND WE CAN GIVE
PERMISSION TO THAT OBJECT.
SUPPOSE FRONTEND RESOURCE (JAVA RESOURCE) USING SAME QUERY MULTIPLE
TIMES SO HE NEED’S SOME TIME TO EXIST THAT SQL QUERY IN FRONTEND CODE,
SO INSTEAD OF THAT WE WILL CREATE VIEW ON THAT QUERY THEN SIMPLE HE CAN
SELECT * FROM <VIEW_NAME>.
DROP VIEW <VIEW_NAME>
SELECT * FROM USER_VIEWS;
SIMPLE VIEW:-- IF YOU CREATE A VIEW ON SINGLE TABLE , THAT IS CALLED AS SIMPLE
VIEW
CREATE VIEW V1 AS SELECT EMPNO, ENAME, SAL FROM EMP ;
CREATE VIEW V1 AS SELECT EMPNO, ENAME, SAL ,( SAL *10)/100 BONUS , ( SAL *
.25)/100 FROMNOTE:
EMP;WE CAN’T APPLY DML OPERATIONS ON ARTHMETIC VIEWS
COMPLEX VIEWS :- IF YOU CREATE A VIEW ON MORE THEN ONE TABLE THAT VIEW IS
VVVVVVIEWVIEWVIEWSVIEWSVVIEWS
CALLED AS A COMPLEX VIEW
EX1):- CREATE VIEW VW_EMP _DEPT AS SELECT EMPNO, ENAME , SAL, DNAME,
LOCATION FROM EMP E , DEPT D WHERE E.DEPNTO = DEPTNO;
EX 2): CREATE VIEW VW_STUDENT_INFO AS SELECT STU_NAME, STU_CLASS,
STU_MARKS, BRANCH_LOCATION , GRADE FROM STUDENT_INFO SI, COLLEGE_INFO CI,
GRADE_INFO GI WHERE SI.BRANCH_ID = CI.BRANCH_ID AND AND STU_MARKS
BETWEEN GI.MIN_MARKS AND GI.MAX_MARKS;
EX3:- SOPPOSE TWO USERS THERE U1 AND U2.
USER U1
CREATE VIEW VW_EMP_DEPT AS SELECT EMPNO,ENAME,SAL,DNAME,LOCATION FROM
EME E, DEPT D WHERE E.DEPTN=D.DEPTNO;
GRANT SELECT ON VW_EMP_DEPT TO USER2;
USER U2
THEN U2 CAN SELECT THE DATA FROM VW_EMP_DEPT ONLY, HE CAN’T APPLY DML ON
THAT.
IF U2 NEED ALL THE PERMISSIONS ON THAT VIEW THEN HE NEED’S ALL PERMISSION
U1: GRANT ALL ON VW_EMP_DEPT TO U2 (THIS CASE USER:U2 CAN DO ALL
OPERATIONS )
FORCED VIEW:- WITHOUT A TABLE WE CAN CREATE A VIEW THAT IS CALLED AS A
FORCED VIEW, BUT THAT VIEW IS AN INVALID STATUS. AFTER CREATE THE TABLE THAT
VIEW WILL BE VALID.
EX: CREATE VIEW VW_AUDIT_EMP AS SELECT * FROM AUDIT_EMP;
(NOTE:- AUDIT_EMP VIEW IS AN INVLID STATUS BECAUSE AUDIT_EMP TABLE IS NOT
EXIST)
READ ONLY VIEWS:- BELOW VIEWS ARE READ ONLY VIEWS , WE CAN’T APPLY DML
OPERATION ON VIEWS
VIEW WITH ARTHMETIC OPERATIONS
VIEW WITH AGGREGATE FUNCTIONS
VIEW WITH READONLY OPTION
IF KEY PRESERVED TABLE JOIN WITH A NON KEY PRESERVED TABLE THEN ALSO
THAT VIEW IS READ ONLY VIEW
EX 1:- CREATE VIEW VW_EMP_INFO AS SELECT EMPNO, ENAME, SAL, (SAL *
10/100) BONUS, (SAL * 2) /100 PF FROM EMP E WHERE E.DEPTNO = 10;
EX 2:-CREATE VIEW VW_EMP_MAXSAL AS SELECT E.* FROM EMP E, (SELECT
MAX(SAL) MAX_SAL , DEPTNO FROM EMP GROUP BY DEPTNO) D WHERE E.SAL
= D.MAX_SAL AND E.DEPTNO = D.DEPTNO
EX3:- CREATE VIEW VW_AGGREGATE AS SELECT SUM(SAL), DEPTNO FROM EMP
E GROUP BY DEPTNO.
EX4:- CREATE VIEW VW_READONLY AS SELECT EMPNO, ENAME, SAL, DNAME,
LOCATION FROM EMP E, DEPT D WHERE E.DEPNTO = D.DEPTNO WITH READ
ONLY
KEY PRESERVED TABLE NON KEY PRESERVED TABLE:
SUPPOSE WE ARE JOINING TWO TABLES , IF BOTH THE TABLES DON’T
HAVE A PRIMARY KEY COLUMNS THEN BOTH TABLES ARE CALLED AS A
SYNONYM:
MAINLY IT IS USED TO HIDE THE ORIGINAL NAME OF THE OBJECT
IF YOU WANT TO GIVE PERMISSION OF ONE USER OBJECT TO ANOTHER USER, WE CAN
USE SYNONYM (NOTE: BOTH USERS SHOULD BE ON SAME DATABASE)
WE CAN CREATE SYNONYM ON TABLES, VIEWS,FUNTIONS, PROCEDURES
ONE SYNONYM IS FOR ONE OBJECT
IT WILL NOT HOLD THE DATA PHYSICALLY ON IT
WE CAN CREATE SYNONYM ON ANOTHER SYNONYM
IT IS GIVING HIGH SECURE WHILE SHARING THE INFORMATION TO OTHER USERS
SYNONYMS ARE TWO TYPES
1) PRIVATE SYNONYM 2)PUBLIC SYNONYM
PRIVATE SYNONYM:- PRIVATE SYNONYM IS MAINLY USED TO HIDE THE ORIGINAL NAME OF
THE OBJECT.
GRANT PERMISSION:
SYS SCHEMA GRANT CREATE SYNONYM TO <USER> OR <SCHEMA
USER CREATE SYNONYM SYN_EMP FOR EMP; (NOW USER CAN DO ALL THE OPERATIONS
ON SYN_EMP INSTEAD OF ORIGINAL OBJECT EMP)
EX1) SELECT * FROM SYN_EMP; EX2) DELETE FROM SYN_EMP; EX3) UPDATE SYN_EMP SAL=
2000;
USER CREATE SYNONYM SYN_EMP_DEPT FOR VW_EMP_DEPT;
DROP SYNONYM <SYNONYM_NAME>
SELECT * FROM USER_SYNONYMS.
PUBLIC SYNONYM:- IF YOU CREATE THE PUBLIC SYNONYM THAT SYNONYM CAN ACCESS ANY
USER INT THAT DATABASE. (IF WE WANT TO USE ANOTHER USER OBJECT IN OUR SCHEMA,
WE HAVE TO WRITE SCHEMA_NAME.OBJECT NAME, INSTEAD OF THAT WE CAN USE
SYNONYM)
USER1 USER2
EMP USER1.EMP
IF YOU CREATE THE PUBLIC SYNONYM THEN NO NEED TO GIVE THE <SCHEMA_NAME>.OBJECT
SYS SCHEMA
GRANT CREATE PUBLIC SYNONYM TO USER1;
USER1
EX1) CREATE PUBLIC SYNONYM SYN_EMP FOR EMP;
GRANT ALL ON SYN_EMP TO USER2;
EX2) CREATE VIEW VW_EMP_DEPT AS SELECT EMPNO, ENAME , SAL, DNAME, LOCATION
FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO;
CREATE PUBLIC SYNONYM SYN_EMP_DEPT FOR VW_EMP_DEPT;
GRANT SELECT ON SYN_EMP_DEPT TO USER2;
USER2
INSERT INTO SYN_EMP (EMPNO, ENAME, SAL,DEPTNO) VALUES (101,’RAJA’,500,30);
SELECT * FROM SYN_EMP;
SELECT * FROM SYN_EMP_DEPT;
CREATE PUBLIC SYNONYM SYN_PROC1 FOR PROC1
MERGE STATEMENT:-
USE THE MERGE STATEMENT TO SELECT ROWS FROM ONE OR MORE TABLES (OR VIEWS) FOR
INSERT OR UPDATE OR DELETE INTO ANOTHER TABLE OR VIEW
SYNTAX: MERGE INTO <TARGET_TABLE> T
USING <SOURCE_TABLE> S
ON <CONDITION>
WHEN MATCHED THEN
(UPDATE SET <T.COL1 = S.COL1, T.COL2 = S.COL2…>
AND
DELETE WHERE <T.COL1 = S.COL1 AND T.COL2= T.COL2)
WHEN NOT MATCHED THEN
INSERT (T.COL1, T.COL2, T.COL3) VALUES (S.COL1, S.COL2,S.COL3);
EX: MERGE INTO AUDIT_EMP T
USING EMP S ON (S.EMPNO = T.EMPNO)
WHEN MATCHED THEN
UPDATE SET T.SAL= S.SAL, T.COMM = S.COMM
DELETE WHERE T.DEPTNO = 10
/* WITH OUT UPDATE STATEMENT WE CAN NOT WRITE DELETE STATEMENT
,MEANS :DESTINATION/TARGET TABLE ARE NOT DELETED WHEN THEY ARE NOT
UPDATED BY THE MERGE FIRST */
WHEN NOT MATCHED THEN
INSERT VALUES (S.EMPNO, S.ENAME, S.JOB, S.MGR, S.HIREDATE, S.SAL,
S.COMM, S.DEPTNO);
NOTE: (THIS WE WILL DISCUSS ON TRIGGER CONCEPT)
WITH CLAUSE :- THE WITH QUERY_NAME CLAUSE ASSIGN A NAME TO A SUBQUERY BLOCK.
YOU CAN THEN REFERENCE THE SUBQUERY BLOCK MULTIPLE PLACES IN THE QUERY BY
SPECIFYING THE QUERY NAME.
SYNTAX:
WITH <ALIAS NAME> AS (SUBQUERY_SELECT_STATEMENT>
SELECT <COLUMN_LIST> FROM <TABLE_NAME> T, <ALIAS_NAME> A WHERE T.COL1=
A.COL1
EX 1) DISPLAY DEPARTMENT WISE HIGHEST SALARY EMP DETAILS,?
WITH SUB_Q AS
(SELECT DEPTNO, MAX(SAL) SAL FROM EMP E GROUP BY DEPTNO)
SELECT EE.EMPNO, EE.ENAME, EE.SAL, EE.DEPTNO
FROM EMP EE, SUB_Q WHERE EE.SAL = SUB_Q.SAL AND TT.DEPTNO = EE.DEPTNO;
SEQUENCE
MOSTLY WE ARE USING SEQUENCE TO GENARATE UNIQUE AND ORDER WISE VALUES
(EX: ACCOUNT_NO, EMP_ID, ROLL_NO…FOR THESE TYPE OF COLUMNS WE CAN USE
SEQUENCE)
SUPPOSE COMPANY HAVING SOME EMPLOYEES, NOW NEW EMPLOYEE JOINED IN THAT
COMPANY WHAT IS HIS EMPLOYEE NO, WE HAVE TO CHECK PREVIOUS EMPLOYEE NO AND
WE HAVE TO ADD ONE(+1) TO THAT EMPID, INSTEAD OF THAT WE CAN USE SEQUENCE IT
WILL AUTOMATICALLY GIVE NEXT VALUE
CONSTRAINTS
CONSTRAINT MEANS RULE OR RISTRICTION (BY USING CONSTRAINTS RISTRICT THE TABLE
DATA)
UNIQUE:-
AFTER CREATE UNIQUE KEY CONSTRAINT AUTOMATICALLY UNIQUE INDEX WILL BE
CREATE
AUTOMATICALLY UNIQUE KEY INDEX WILL BE AUTOMATICALLY UNIQUE KEY INDEX WILL BE
CREATE CREATE
IT WILL ALLOW ANY NO.OF NULL VALUES IT WON’T ALLOW NULL VALUES
WE CAN CREATE ANY NO.OF UNIQUE WE CAN CREATE MAXIMUM 1 PRIMARY KEY
CONSTRAINTS ON A TABLE ON A TABLE
WON’T ALLOW DUPLICATE VALUES WON’T ALLOW DUPLICATE VALUES
CHECK CONSTRAINT: USED TO SPECIFY CONDITIONAL RESTRICTIONS
EX1:- ALTER TABLE EMP ADD CONSTRAINT CHK_GENDER CHECK (GENDER IN (‘M’,’F’));
EX2:- ALTER TABLE EMP ADD CONSTRAINT CHK_SAL CHECK ( SAL > 5000);
EX3:-CREATE TABLE EMP (EMPNO NUMBER, ENAME VARCHAR2(20), SAL CONSTRAINT CHK_SAL
CHECK(SAL > 5000));
DROP CONSTRAINT :- ALTER TABLE EMP DROP CONSTRAINT CHK_SAL;
FOREIGN KEY:-
USED TO SPECIFY RELATIONS BETWEEN 2 TABLES
A FOREIGN KEY COLUMN SHOULD BE REFRENCE TO PRIMARY KEY OR UNIQUE KEY
COLUMN IN THE SAME TABLE OR ANOTHER TABLE
EX1:- ALTER TABLE EMP ADD CONSTRAINT FK_DEPTNO FOREGIN KEY (DEPTNO )
REFRENCES EMP (EMPNO);
EX2:-CREATE TABLE DEPT (DEPTNO NUMBER(8) CONSTRAINT PK_DEPTNO PRIMARY KEY);
C-CHECK CONSTRAINT
U-UNIQUE CONSTRAINT
R-REFRENCES (FOREIGN KEY CONSTRAINT)
DISABLE CONSTRAINT
ALTER TABLE <TABLE_NAME> DISABLE CONSTRAINT <CONSTRAINT_NAME>
ALTER TABLE EMP DISABLE CONSTRAINT PK_DEPTNO
ALTER TABLE EMP ENABLE CONSTRAINT PK_DEPTNO
SUB QUERY:-
QUERY WITH IN A QUERY
FIRST INNER QUERY WILL BE EXECUTED AND BASED ON OUTPUT OF INNER QUERY
OUTER QUERY WILL BE EXECUTED.
SUBQUERIES WILL IMPROVE PERFORMANCE WHILE RETRIEVING OR MANUPULATING
DATA
LIST OF THE EMPLOYEES , WHO’S SALARY IS LIKE ‘SMITH’ SALARY?
SELECT * FROM EMP E WHERE E.SAL = (SELECT SAL FROM EMP D WHERE D.ENAME =
‘SMITH’);
SELECT * FROM EMP E WHERE E.DEPTNO IN (SELECT DEPTNO FROM EMP D WHERE E.JOB
=’ANALYST’)
UPDATE EMP E SET COMM = 500 WHERE COMM = (SELECT MIN(COMM) FROM EMP D WHERE
D.DEPTNO= 20 AND D. SAL =7000);
CORRELATED SUBQUERY:-
IN A CORRELATED SUBQUERY FIRST OUTERQUERY WILL BE EXECUTED AND BASED ON
OUTPUT OF OUTER QUERY INNER QUERY WILL BE EXECUTED.
(CORRELATED SUBQUERY IS A SUB_QUERY THAT USES VALUES FROM THE OUTER
QUERY IN THIS CASE THE INNER QUERY HAS TO BE EXECUTED FOR EVERY ROW OF
OUTER QUERY)
EX:SELET EMPNO, ENAME, (SELECT DNAME FROM DEPT D WHERE D.DEPTNO = E.DEPTNO)
DEPT_NAME FROM EMP;
INLINE VIEW:
AFTER FROM CLAUSE INSTEAD OF TABLE NAME IF YOU USE QUERY THAT IS CALLED A INLINE
VIEW
DISPLAY DEPARTMENT WISE MAX SALARY EMPLOYEES LIST?
EX1: SELECT D.* FROM (SELECT MAX(SAL) SALARY, DEPTNO FROM EMP E GROUP DEPTNO)
TAB , EMP D WHERE TAB.DEPTNO = D.DEPTNO AND TAB.SALARY = D.SAL;
EX2: SELECT * FROM (SELECT MAX(SAL), DEPTNO FROM EMP GROUP BY DEPTNO) T;
EX3:SELECT * FROM (SELECT EMPNO, ENAME, SAL, DNAME,LOC FROM EMP E , DEPT D
WHERE E.DEPTNO = D.DEPTNO)
INDEX
o BITMAP INDEX
BITMAP INDEXES ON COLUMNS WITH VERY FEW UNIQUE VALUES(LOW CARDINALITY
DATA COLUMNS)
BIMAP INDEXES ARE WIDELY USED IN DATA WAREHOUSING ENVIRONMENTS.
DESIGNATION
SOFTWARE 0 0 0 0 1 0 1 0 0 0 1
ENGINEER
PROJECT LEADER 1 0 0 1 0 0 0 0 0 0 0
PROJECT 0 0 0 0 0 1 0 1 0 0 0
MANAGER
TRAINEE 0 0 1 0 0 0 0 0 1 1 0
GROUP HEAD 0 1 0 0 0 0 0 0 0 0 0
EX 1: CREATE BITMAP INDEX INDX_DESIGNATION ON EMP(DESIGNATION);
EX 2: CREATE BITMAP INDEX INDX_DEPTNO ON EMP (DEPTNO);
WHEN WE CAN CREATE BITMAP INDEX:
EX:
DEPTNO : 10 20 30 40 50 NULL
NO.OF.RECORDS : 300 200 100 200 100 100
TOTAL_NO_OF_DISTINCT_VALUES :- 5
TOTAL_NO_OF_RECORDS :- 1000
SELECTIVITY = TOTAL_NO_OF_DISTINCT_VALUES 5
------------------------------------------------ = ------------- = 0.005
TOTAL_NO_OF_RECORDS 1000
IF SELECTIVITY IS APPROCHING TO 1 IT IS GOOD FOR INDEX, IF IT IS APPROCHING TO ‘0’
THEN IT IS BAD FOR INDEX CREATION.
HOW ORACLE TAKES DECISION WHETHER TO USE INDEX OR NOT?
SELECT * FROM EMP WHERE DEPTNO = 20;
EXPECTED OUTPUT (CARDINALITY) = TOTAL NO OF RECORNDS – NULL VALUES
---------------------------------------------------------
TOTAL DISTINCT VALUES
= 1000 - 100
---------------- = 180
5
180 IS LESS THEN 20% , HENCE INDEX WILL BE USED
FUNCTION BASED INDEX:
EMPNO ENAME SAL COMM DEPTNO
1 SMITH 60000 8000 10
2 CLEARK 34000 3000 10
3 WARD 45000 7000 20
4 JONES 70000 12000 30
IF BONUS IS 10% OF SALARY, THEN HOW MANY EMPLOYEES GETTING MORE THEN 3000RS
BONUS?
FOR THIS, WE WILL WRITE THE QUERY LIKE BELOW.
SELECT * FROM EMP WHERE (SAL * 10 ) / 100 > 3000
IN THIS CASE WHAT WILL HAPPEN, EACH TIME SAL WILL TAKE FROM EMP TABLE AND
MULTIPLE WITH 10 THEN DEVIDE BY 100, SUPPOSE IF YOU CREATE FUNCTION BASED INDEX
ON THAT CALCULATION, IT WILL BE STORED CALCULATED VALUE IN INDEX BLOCKS ,
FUNCTION BASED INDEX CREATION
EX 1: CREATE INDEX IDX_BONUS ON EMP ( (SAL + COMM)*10 / 100);
COMPOSIT INDEX:-
YOU CAN CREATE AN INDEX ON MULTIPLE COLUMNS IN A TABLE.
YOU CAN CREATE COMPOSITE B-TREE INDEXES AS WELL BITMAP INDEXES
SYNTAX:- CREATE INDEX <INDEX_NAME> ON <TAB_NAME> (<COL1,COL2..>)
CREATE INDEX INDX_EMPNO_ENAME ON EMP (EMPNO, ENAME);
CREATE INDEX INDX_ACCOUNT_STATUS ON ACCOUNT_INFO(ACCOUNT_NO, STATUS);
REBUILD INDEX:-RE_CREATING AN EXISTING INDEX OFFERS BETTER PERFORMANCE
(INSTEAD OF RE_CREATING AN EXISTING INDEX SIMPLE WE CAN REBUILD INDEX);
SYNTAX:-ALTER INDEX <INDEX_NAME> REBUILD;
EX: ALTER INDEX INDX_EMPNO REBUILD
RENAMING AN INDEX:- YOU CAN RENAME AN EXISTING INDEX
SYNTAX:ALTER INDEX INDEX_NAME RENAME TO NEW_INDEX_NAME
EX: ALTER INDEX INDX_EMPNO RENAME tO IDX_EMPNUMBER
MOVE AN INDEX TO A DIFFERENT TABLESPACE
ALTER INDEX <INDEX_NAME> REBUILD TABLESPACE <NEW_TABLESPACE>
SELECT * FROM USER_INDEX;
CLUSTERS
IT HOLDS THE COMMON COLUMN SHARED BY TWO TABLES
IT WILL IMPROVE PERFORMANCE WHILE RETIEVING OR MANIPULATING DATA FROM
MASTER-CHILD TABLES
IT HAS TO BE CREATED BEFORE CREATING TABLES.
CREATE CLUSTER C1(DEPTNO NUMBER(5));
CREATE TABLE DEPT (DEPTNO NUMBER(5), DNAME VARCHAR2(30), LOC
VARCHAR2(30)) CLUSTER C1(DEPTNO);
CREATE TABLE EMP (EMPNO NUMBER, ENAME VARCHAR2(30) , DEPTNO
NUMBER(5)) CLUSTER C1(DEPTNO);
CREATE INDEX IDX_C1 ON CLUSTER C1;
--MATERIALIZED VIEW
WE CAN APPLY DML OPERATIONS ON MATERIALIZED VIEW
IT` WILL STORE THE INFORMATION MEANS PHYSICALLY OCCUPY SPACE
WE CAN CREATE INDEX, CONSTRAINT ON MATERIALIZED VIEW
ANALYTIC FUNCTIONS
SELECT empno, deptno, COUNT(*) OVER ( ) CNT
FROM scott.emp
WHERE deptno IN (10, 20);
The ORDER BY clause in the OVER function is different from the ORDER BY clause of the
main query which comes after WHERE.
The general syntax of specifying the ORDER BY clause in analytic function is:
ORDER BY <sql_expr> [ASC or DESC] NULLS [FIRST or LAST]
ROW_NUMBER, RANK and DENSE_RANK:
All the above three functions assign integer values to the rows depending on their order.
ROW_NUMBER( ):
It gives a running serial number to a partition of records. It is very useful in reporting, especially
in places where different partitions have their own serial numbers.
shown below:
LEAD (<sql_expr>, <offset>, <default>) OVER (<analytic_clause>)
LAG: The syntax of LAG is similar except that the offset for LAG goes into the previous rows.
SELECT ename, hiredate,
LAG(hiredate, 2) OVER (ORDER BY hiredate) AS NextHired
FROM scott.emp WHERE deptno = 30;
SQL QUERIES
23. Display the ename of employees who are not woRking as salesman or clerk or analyst
24. Display all rows from emp table .the system should wait after every screen full of information.
25. Display the total number of employees working in the company.
26. Display the total salary being paid to all employees.
27. Display the maximum salary from emp table.
28. Display the minimum salary from emp table.
29. Display the maximum salary being paid to clerk.
30. Display the maximum salary being paid to clerk.
31. Display the maximum salary being paid in dept no 20.
32. Display the min SAL being paid to any salesman.
33. Display the average salary drawn by managers
34. Display the total salary drawn by analyst working in deptno 40.
35. Display the names of employees in order of salary i.e. the name of the employees earning lowest
salar should appear first.
36. Display the names of employees in descending order of salary.
37. Display the details from emp table in order of emp name.
38. Display empno,ename,deptno and sal.sort the output first based on name and within name by
deptno and within deptno by sal;
39. Display the name of the employee along with their annual salary (sal *12) .the name of the
employee earning highest annual salary should appear first.
40. Display name,sal,hra,pf,da,total sal for each employee.the output should be in the order o;f total
sal,hra15% of sal,da 10% of sal, pf 5% of sal total salary will be (sal*hra*da)-pf.
41. Display dept numbers and total number of employees within each group.
42. Display the various jobs and total number of employees with each job group.
43. Display department numbers and total salary for each department.
44. Display department numbers and maximum salary for each department.
45. Display the various jobs and total salary for each job.
46. Display each job along with minimum sal being paid in each job group.
47. Display the department numbers with more than three employee in each dept.
48. Display the various jobs along with total sal for each of the Jobs where total sal is greater then
4000
49. Display the various jobs along with total number of employees in each job.the output should
contain only those jobs with more than three employees.
50. Display the name of emp Who earns highest sal.
51. Display the employee number and name of employee working as clerk amd earning highest salary
among clerks.
52. Display the names of the salesman who earns a salary more than the highest salary of any clerk.
53. Display the names of clerks who earn salary more than that of james of that of sal lesser than that
of scott.
54. Display the names of employees who earn a sal more than that of james or that of salary LESSER
than that of scott.
55. Display the names of the emploees who earn highest salary in their respective departments.
56. Display the names of employees who earn highest salaries in thir respective job groups.
57. Display the employee names who are working in accountging dept.
58. Display the employee names who are working in Chicago.
59. Display the Job groups having total salary greater then the maximum salary for managers.
60. Display the names of employees from department number 10 with salary greater than that of any
employee working in other departments.
61. Display the names of employees from department number 10 with salaty greater then that of all
employees working in other departments.
62. Display the names of employees in upper case.
63. Display the names of employees in lower case.
64. Display the names of employees in proper case.
65. Find out the length of your name using appropriate function.
66. Display the length of all employees names.
67. Display the name of the employee concatenate with empno.
68. Use appropriate function and extract 3 characters starting from 2 characters from the following
string ‘oracle’ i.e. the output should be ‘rac’.
69. Find the first occurrence of character ‘a’ from the following string ‘computer maintenance
corporation’.
70. Replace every occurrence of alphabet Awith B in the string allen’s (user translate function).
71. Display the information from emp table wherever job ‘manager’ is found it should be displayed as
boss(replace function).
72. Display empno,ename,deptno from emp table instead of display department numbers display the
related department name (use decode function).
73. Display your age in days.
74. Display your age in months.
75. Display current date as 15th august Friday nineteen forty seven.
76. Display the following output for each row from emp table as ‘scott has joined the company on
Wednesday 13th august nineteen ninety’.
77. Find the date of nearest saturdaY after current day.
78. Display current time.
79. Display the date three months before the current date.
80. Display the common jobs from department number 10 and 20 .
81. Display the jobs found in department numer 10 and 20 eliminate duplicate jobs.
82. Display the jobs which are unique to deptno 10.
83. Display the details of those who do not have any person working under them.
84. Display the details of employees who are in dept and grade is 3.
85. Display those who are not managers and who are manager any one.
86. Display tHose employees whose name contains not less than 4 chars.
87. Display those departments whose name start with ‘s’ while location name End with ‘0’.
88. Display thoSe emplouees whoSe manager name is JONES.
89. Display those employees whode salary is more than 3000 after giving 20% increment .
90. Display all employees with thee dept name.
91. Display ename who are working in SALES dept.
92. Display employee name,deptname,salary and comm. For those sal in between 2000 and 5000 while
location is Chicago.
93. Display those employees whose salarY greater than his manager salary.
94. Display those employees who are working in the same dept where his manager is working .
95. Display those emplouees who are not working under any manager.
96. Display grade and employees name for the dept no 10 or 30 but grade is not 4,while joined the
company before 31-dec-82.
97. Update the salary of each employee by 10% increments that are not eligible for commission.
98. Delete those employees who Joined the company before 31-dec-82 while there dept location is
‘NEW YORK’ or ‘CHICAGO’.
99. Display employee name,job,deptname,location for all who are working as managers.
100. Display those employees whoSe manager names is jones and also display there manager
name.
101. Display name and salary of ford if his sal is equal to high sal of his grade.
102. Display employee name,his job,his dept name,his manager name,his grade and make out of
an under department wise Break d.deptno;
103. List out all the employees name ,job,and salar grade and department name for every one in
the company except’CLERK’ sort on salary display the highest salary.
104. Display employee name ,his job and his manager .display also emplyoees who are without
manager.
105. Display the name of those employees who are getting highest salary.
106. Display those employees whose salary id equal to average of maximum and minimum.
107. Display count of employees in each department where count greater than 3.
108. Display dname where at least 3 are working and display only dname.
109. Display name of those manager name whose salary is more than average ssalary of
company.
110. Display those managers name whose salary is more than an average salary of his employees.
111. Display wmployee name,sal,comm. and net pay for those employees whose net pay are
greater than or equal to any other employee salary of the company.
112. Display those emploiyees whose salary is less than his manager but more than salary of any
other managers.
113. Find out the last 5(least) earner of the company.
114. Find out the number of employees whose salary is greater than there manager salary
115. Display those manager who are not working under president but they are working under any
other manager.
116. Delete those department where no employees working.
117. Delete those records frtom emp table whose deptno not available in dept table.
118. Display those earners whose salary is out of the grade available in sal grade table.
119. Display employee name,sal ,comm. and whode net pay is greater than any other in the
company.
120. Display name of those employees who are going to retire 31-dec-99. if the maximum job is
period is 18 years.
121. Display those employees whose salary is ODD value.
122. Display those emplouees whose salary contains at least 4 digits.
123. Display those employees who joined in the company in the companu in the months of dec.
124. Display those employees whose name contains “A”.
125. Display those employees whose deptno is available in salary.
126. Display those employees whose first 2 characters from hiredare-last 2 characters of salary.
127. Display those employee whose 10% of salary is equal to the year of joining.
128. Display those employees who are working in sales or research.
129. Display the grade of jones.
130. Display those employees who Joined the company Before 15th of the month.
131. Delete those employees who Joined the company 21 years back from today.
132. Display the department name the no of characters of which is equal to no of employees in
any other department.
133. Display those employees who are working as manager.
134. Count the no of employees who are working as manager (use set operation).
135. Display the name of then dept those employees who joined the company on the same date.
136. Display the manager who is having maximum number of employees working under him.
137. List out employeesname and salary increased by 15% and expredded as whole number of
dollars.
138. Produce the output of the emp table “EMPLOYEE_AND_JOB” for ename and job.
139. List all employees with hiredate in the format’june 4 1988’.
140. print a list of employees displaying ‘less salary ‘ if less than 1500 if exactly 1500 display as
‘exact salary ‘ and if greater than 1500 display ‘more salary’.
141. Write quary to calculate the length of employee has been with the company.
142. Display those managers who are getting less than his employees sal.
143. Print rthe details of all the employees who are sub ordinate to blake.
144. Display those who working as manager using co related sub query.
145. Display those employees whose manager name is hones and also with his manager name.
146. Define variable represenring the expressions used to calculate on employee’s total Annual
renumaration.
147. Use the variable in a statement which finds all employees who can earn 30000 a year or
more.
148. Find out the how many manager are there with out listing them.
149. Find out the avg sal and avg total remuneration for each job type renenber salesman earn
commission.
150. check whether all employees number are indeed unique.
151. List out the lowest paid employees working for each manager ,exclude any groups where min
sal is less than 1000 sort the output by sal.
152. List ename ,job ,annual sal,deptno,dname and grade who earn 30000 per year and who are
not clerk.
Find out the all employees who hoined the company before their manager .
153. List out the all employees by name and number along with their managerd name and number
also display ‘no manager’ who has no manager.
Find out the employees who earned the highest sal in each job typed sort in descending sal order.
154. Find out the employees who earned the min sal for their job in ascending order.
155. Find out the most recently hired employees in each dept order by hiredate.
156. Display ename,sal and deptno for each employee who earn a sal greater than the avg of their
department order by deptno.
157. Display the department where there are no employees.
158. Display the dept no with highest annual remuneration bill as compensation.
159. In which year did most people join the company .display the year and number of employees.
160. Display avg sal figure for rthe dept.
161. Write a quary of display against the row of the most recentlu hired emplouee. Display ename
hire date and column max date showing.
162. Display employee who can earn more than lowest sal in dept no 30.
163. Find employees who can earn more than every employees in deptno 30.
164. Find out avg sal and avg total remainders for each job type.
165. Find out all dept which have more than 3 empouees
166. Display the half of the enames in upper cade and remaining lower cade .
167. create copy of emp table.
168. select ename if ename exists more than once
169. Display all enames in reverse order
170. Display rthose employee whose joining of month and grade is equal.
171. Display those employee whose Joining date is available in deptno .
172. Display those employees name as follows A ALLEN,B BLAKE.
173. List out the employees ename ,sal,pf from emp.
174. Create table emp with only one column empno
175. Add this column to emp table ename varchar2(20)
176. OOPs ! I forgot to give the primary key constraint. Add it now
177. now increase the length of ename column to 30 characters
178. add salary column to emp table
179. I want to give a validation saying that sal cannot be greater 10,000(note give a name to this
column)
180. for the time being I have decided that I will not impose this validation. My boss has agreed to
pay more than 10,000
181. my boss has changed his mind. Now he doesn’t want to pay more than 10,000. so revoke that
salary constraint
182. add column called as mgr to your emp table
183. oh! This column should be related to empno. Give a command to add this constraint
add deptno column to emp table
184. This dept no column should be related to deptno column of dept table
185. Create table called as new emp, Using single command create this table As well as to get data
into this table (use create table as)
186. Create table called as new emp. This table should contain only Empno,ename,dname.
187. Delete the rows of employees who are working in the company for more Than two years.
188. provide a commission to employees who are not earning any commission.
189. If any employee has commission, his commission should be incremented by 10% of his
salary.
190. Display employee name and department name for each employee.
191. Display employee number,name and location of the department in which he is working.
192. Display ename,dname even if there no employees working in a particular department(use
outer join).
193. Display employee name and his manager name.
194. Display the department nUMBER along with total salary in each department.
195. Display the department NUMBER and total number of employees in each department.
196. Display the current date and time.