Print SQL

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 52

1

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

CHAR DATATYPE: EX: - GENDER CHAR(1); STATUS CHAR(1)


IT IS USED TO STORE FIXED LENGTH OF CHARACTERS.(USED TO REPRESENT CHARACTER
INFORMATION)
MAXIMUM SIZE IS 2000
MINIMUM SIZE IS 1
SUPPORTS NULL VALUES , IT WON’T OCCUPY SPACE FOR THAT
COLUMN_NAM DATA_TYP VALUE_ENTERE VSIZ MAXIMU DATA_STORED_
E E D E M CHAR IN_THE_COLUM
(EMP_NAME) N
“ CHAR(10) RAJA 10 10 RAJA
“ “ SEKHAR 10 10 SEKHAR
“ “ RAJA SEKHAR WE CAN’T INSERT
“ “ A 10
“ “ NULL 0 10 NULL

VARCHAR2 :-EX1 ENAME VARCHAR2(25), EX2: DEPTNAME VARCHAR2(20)


VARIABLE LENGTH CHARACTER DATA TYPE
USED TO REPRESENT CHAR INFORMATION EX: SMITH
ALPHANUMERIC EX: ACCOUNT NO:--- ABC12342346

GNANA IT SOLUTIONS, SQL MATERIAL


2

MAXIMIU LIMIT IS 4000


MIN LIMIT IS 1
COLUMN_NA DATA_TYPE VALUE_ENTER VSIZ MAXIMU DATA_STORED
ME ED E M CHAR _
(EMP_NAME) IN_THE_COLU
MN
“ VARCHAR2(10) RAJA 4 10 RAJA
“ “ SEKHAR 6 10 SEKHAR
“ “ RAJA SEKHAR WE CAN’T
INSERT
“ “ NULL 0 10 NULL
“ “ A 1 10 A

LONG DATA TYPE:-CHAR DATA TYPE


IT IS BIGGER VERSION OF THE VARCHAR2 SUPPORTS TO REPRESENTS CHARACTERS
WE CAN INSERT ALPHANUMERIC VALUES
MAX SIZE IS 2GB
BUT ONLY ONCE IT CAN BE USED IN TABLE
EX: COLUMNS LIKE : DESCRIPTION LONG, ABOUT_EMP LONG
WE CAN’T DEFINE THE SIZE
CLOB:- SUPPORTS TO REPRESENTS CHARACTERS
MAX SIZE 4GB
WE CAN’T MENTION THE SIZE
SUPPORTS ALPHANUMERIC
SUPPORTS NULL
WE CAN’T DEFINE THE SIZE UPTO 4GB DATA CAN SAVE
BASED ON THE INSERTED VALUE IT WILL OCCUPY SPACE
COLUMN_NAME DATA_TYPE VALUE_ENTERED VSIZE MAXIMUM DATA_STORED_
(EMP_NAME) CHAR IN_THE_COLUMN
“ CLOB RAJA 4 4GB RAJA
“ “ SEKHAR 6 4GB SEKHAR
“ “ RAJA SEKHAR 4GB WE CAN’T INSERT
“ “ NULL 0 4GB NULL
“ “ A 1 4GB A

BINARY FLOAT:-SUPPORTS NUMERIC DATA


1. MAX SIZE :254 DIGITS
2. 1…….126 (MAXIMUM 126 DIGITS ->INTERGER VALUE OR PRECISION )
3. 1….126 + .1…..128 (FLOAT VALUE PRCESION + SCALE=254)
4. WE CAN’T DEFINE THE SIZE ;
5. SAL BINARY_FLOAT (5,2) --WSAL BINARY_FLOAT—RIGHT
BFILE:-IT WILL SUPPORT TO SAVE IMAGES OR VIDEOS
1. POINTER TO BINARY FILE ON DESK
2. MAX SIZE 4GB

GNANA IT SOLUTIONS, SQL MATERIAL


3

3. IT WILL REFER OS OBJECT :(MEANS-IT WON’T SAVE DATA IN DATABASE


TABLE,IT WILL POINT OUT OS OBJECT FOR DISPLAY)
BLOB: BINARY LARGE OBJECT
1. MAX SIZE 4GB
2. IT WILL STORE DATA IN DB TABLE
3. SUPPORTS WORD DOCUMENTS, PDF,PHOTOS,IMAGES…etc
DATE :USED TO REPRESENT DATE & TIME INFORRMATION
1. MEMOREY OCCUPIED BY 7 BYTES
2. STANDAR FORMAT DATE & TIME AS ‘DD-MON-YY HH:MI:SS’
3. EX: 20-NOV-2015 13:40:20 PM
4. FROM : JANUARY 1,4712 BC
5. TO: DECEMBER 31,9999
DDL COMMANDS:(DATA DEFINATION LANGUAGE)----
USED TO DEFINE THE DATABASE OBJECTS.
DATABASE OBJECT: A COMPONENT PERMANENTLY STORED IN SERVER AS SOON AS
IT IS CREATED.UNTIL WE DROP THAT OBJECTS WILL BE EXIST.
EX: TABLE, VIEW, SYNONYM, INDEX….etc.
TABLE :- STANDARD OBJECTS USED TO REPRESENT INFORMATION IN ORACLE
DDL COMMANDS

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)

GNANA IT SOLUTIONS, SQL MATERIAL


4

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:-

USED TO CHANGEE THE EXISTING TABLE STRUCTURE


1)ADD:- USED TO ADD NEW COLUMN
2)MODIFY :- USED TO CHANGE EXISTING COLUMN STRUCTURE
3)DROP :- USED TO REMOVE COLMN
ALTER ADD:- (SYNTAX):- ALTER TABLE <TAB_NAME> ADD <COL_NAME> <DATA_TYP>;
EX: ALTER TABLE EMP GENDER CHAR(1);
ALTER TABLE EMP add MAIL_ID VARCHAR2(50);
ALTER TABLE EMP ADD STATUS VARCHAR2(1) DEFAULT ‘A’ NOT NULL;
ALTER TABLE EMP ADD D_O_JOIN DATE NOT NULL;
ALTER TABLE EMP ADD GENDER DEFAULT ‘F’;
ALTER MODIFY:- (SYNTAX):- ALTER TABLE <TAB_NAME> MODIFY <COL1> <DATA_TYPE>;
EX: ALTER TABLE EMP MODIFY GENDER VARCHAR2(10) ;
ALTER TABLE EMP MODIFY STATUS VARCHAR2(5) NOT NULL;
ALTER TABLE EMP MODIFY JOB VARCHAR2(20) DEFAULT ‘SOFTWARE’;
ALTER DROP:-(SYNTAX):- ALTER TABLE <TAB_NAME> DROP COLUMN <COLUMN_NAME>;
EX: ALTER TABLE EMP DROP COLUMN STATUS;
IQ-1: WE CAN’T DECREASE THE COLUMN SIZE IF COLUMN HAVING A DATA. WE CAN INCREASE
THE COLUMN SIZE.
IQ-2: WE CAN’T DROP THE COLUMN, IF THAT COLUMN IS PARENT KEY COLUMN.
DROP:
DROP:- DROP IS USED DROP THE OBJECT PERMANENTLY FROM THE DATA BASE.
SYNTAX: DROP TABLE <TABLE_NAME>

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;

GNANA IT SOLUTIONS, SQL MATERIAL


5

WHERE CLAUSE: USED TO SPECIFY CONDITIONS WHILE MANIPULATING OR RETRIEVING


DATA FROM TABLES
EX: SELECT * FROM STUDENT_INFO WHERE ROLL_N0= 2;
DML: DATA MANIPULATION LANGUAGE
USED TO MANIPULATE THE INFROMATION IN THE EXISTING DATABASE OBJECTS
DML COMMANDS :- INSERT , UPDATE, DELETE
INSERT :- USED TO FEED NEW RECORDS OR ROWS INTO TABLE
SYNTAX:- INSERT INTO <TABLE_NAME> <COLUMN_LIST> VALUES <LIST_OF_VALUES>;
EX1: INSERT INTO STUDENT_INFO (EMPNO, ENAME,SAL,DEPTNO) VALUES(1,’RAJA’,100,10);
CREATE TABLE STUDENT_INFO (ROLL_NO NUMBER,NAME CHAR(4));
INSERT INTO STUDENT_INFO VALUES (101,’RAJA’);
UPDATE:-USED TO CHANGE OR MODIFY THE EXISTING INFROMATION IN TABLES
SYNTAX:-UPDATE <TABLE_NAME> SET COLUMN1=VALUE, COLUMN2= VALUE…….WHERE
<CONDITION>
UPDATE EMP SET SAL=7000 WHERE EMPNO = 7369;
UPDATE EMP SET SAL= 10000, COMM= 1000 WHERE DEPTNO=7369;
DELETE :- USED TO REMOVE THE ROWS FROM THE TABLE
SYNTAX:-DELETE FROM <TABLE_NAME>; OR DELETE FROM <TABLE_NAME> WHERE
<CONDITION>
EX1: DELETE FROM EMP;
EX2; DELETE EMP WHERE EMPNO = 7369;
EX3: DELETE FROM EMP WHERE EMPNO =7369 AND DEPTNO = 10;
NOTE : ORACLE IS NOT A CASE SENSITIVE BUT DATA IS CASE SENSITIVE

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

INSERT INTO SELECT CLAUSE:-


WE CAN USE A SELECT STATEMENT WITHIN AN INSERT STATEMENT TO INSERT ROWS INTO A
TABLE FROM THE RESULT VALUES OF A SELECT STATEMENT
EX1: INSERT INTO DUM_EMP SELECT * FROM EMP;
EX2: CREATE TABLE EMP_DEPT (EMPNO NUMBER(5), ENAME VARCHAR2(10), DNAME
VARCHAR2(10))
INSERT INTO EMP_DEPT SELECT EMPNO, ENAME, DNAME FROM EMP E, DEPT D WHERE
E.DEPTNO = D.DEPTNO;

AUTO COMMIT;
AFTER DML COMMANDS IF WE USE ANY DDL COMMAND THEN AUTO COMMIT;

GNANA IT SOLUTIONS, SQL MATERIAL


6

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

GNANA IT SOLUTIONS, SQL MATERIAL


7

ORACLE SPECIAL OPERATIORS:-(IN/NOTIN, BETWEEN,LIKE/NOT LIKE,IS NULL/N N)

IN/ NOT IN :->


 PICKS ONE BY ONE VALUE FROM LIST OF VALUES
 SUPPORTS WITH ALL DATA TYPES
 WE CAN USE THIS TO RETRIEVE/MANIPULATE DATA FASTLY
EX:
1. SELECT * FROM EMP WHERE DEPTNO IN (10,20);
2. UPDATE EMP E SET SAL = SAL + (10*SAL)/100 WHERE ENAME IN (‘SMITH’, ‘JAMES’);
3. DELETE FROM EMP WHERE HIREDATE IN (’17-DEC-80’, ’20-FEB-81’);
4. SELECT * FROM EMP WHERE HIREDATE NOT IN (’17-DEC-80’, ’20-FEB-81’);
5. UPDATE EMP SET COMM = SAL *20/100 WHERE DEPTNO NOT IN(10,20)
BETWEEN / NOT BETWEEN:-
 SEARCH FOR THE VALUES WITHIN THE RANGE
 USED WITH NUMBERRS & DATE VALUES ONLY
 WE CAN’T USE THIS FOR CHRACTER DATA TYPE
EX:-
1. SELECT * FROM EMP WHERE EMPNO BETWEEN 7369 AND 7839;
2. UPDATE EMP SET SAL = SAL + (SAL * 10)/100 WHERE HIREDATE BETWEEN ’17-DEC-
1980’ AND ‘4-FEB-1981’;
3. DELETE FROM EMP E WHERE E.DEPTNO NOT BETWEEN 10 AND 30;

LIKE/ NOT LIKE:-


 USED TO SEARCH FOR CHARACTER VALES WITH A PATERN
 VALID FOR CHARACTERS ONLY
 IT USES 2 META CHARACTERS
1) UNDER SCORE : - _ :- REPRESENTS SINGLE CHARACTER
2) PERCENTAGE :- % :- REPRESENTS ZERO OR MORE CHARACTER
EX:-
1) LIST THE EMPLOYEES WHOSE NAME START WITH ‘ J ’;
SELECT * FROM EMP E WHERE ENAME LIKE ‘J%’;
UPDATE EMP SET SAL = 7000 WHERE ENAME LIKE ‘SM%’;
2) LIST OF THE EMPLOYEES WHOSE NAME IS HAVING 5 CHARACTERS
SELECT * FROM EMP E WHERE ENAME LIKE ‘_ _ _ _ _’;
3) LIST THE EMPLOYEE WHO’S NAME SECOND CHARACTER IS ‘M’
SELECT * FROM EMP E WHERE ENAME LIKE ‘_M%’;
SELECT * FROM EMP E WHERE JOB NOT LIKE ‘_ _ _ ES’
UPDATE EMP SET SAL= 6000 WHERE ENAME NOT LIKE ‘S%’

IS NULL / IS NOT NULL :-


 USED TO COMPARE NULL VALUES
 SUPPORTS WITH ALL DATA TYPES
EX :- LIST THE EMPLOYEES WHO DON’T HAVE COMMISION

GNANA IT SOLUTIONS, SQL MATERIAL


8

1) SELECT * FROM EMP WHERE COMM IS NULL;


LIST THE EMPLOYEES WHO HAVING COMMISION
2) SELECT * FROM EMP WHERE COMM IS NOT NULL;
3) UPDATE EMP SET COMM = 3000 WHERE COMM IS NULL AND SAL > 300000;

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

GNANA IT SOLUTIONS, SQL MATERIAL


10

-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

GNANA IT SOLUTIONS, SQL MATERIAL


11

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 TO_CHAR(SYSDATE,’DAY’), TO_CHAR(SYSDATE,’DD’) , TO_CHAR(SYSDATE,’MM’)


FROM DUAL
SELECT TO_CHAR(SYSDATE,’DD/MM/RRRR HH24:MI:SS’) FROM DUAL
TO_NUMBER:-- TO CONVERT THE CHARACTER INTO NUMBER
CHARACTER CONVERTION
D : DAY OF THE WEEK
DD: DAY OF THE MONTH

GNANA IT SOLUTIONS, SQL MATERIAL


12

DDD:DAY OFF THE YEAR


DY  WEN (DAY NAME FIRST 3 CHARACTERS)
DAY WEDNESDAY (DAY FULL NAME)
MM05 (MONTH)
MONAPR (FIRST 3 NAMES OF THE MONTH)
MONTH APRIL (FULL NAME OF THE MONTH)
YY 16 (YEAR LAST TWO DIGITS)
YYYY2016(YEAR)
HH10
HH24 16 (MEANS 4 PM)
HH128
MI MI (MINIT)
SS:SECONDS
Q 4 (QUARTER OF THE YEAR)
CC CENTARY OF THE YEAR
WW 45 WEEK OF THE YEAR
W WEEK OF THE MONTH
SPSPELL OUT
DDSP  20(TODAY’S DATE IS 20TH )
YYYYSP TWO THOUSEND SIXTEEN
MONTHS_BETWEEN(DATE1, DATE2) :-THIS FUNCTION IS USED TO FIND THE NUMBER OF
MONTHS BETWEEN THE GIVEN TWO DATE VALUES
EX: SELECT MONTHS_BETWEEN ( ’01-JAN-2015’, ’01-FEB-2015’) FROM DUAL
SELECT MONTHS_BETWEEN(TO_DATE(‘04/03/2016’,’DD/MM/YYYY’), TO_DATE(‘06/07/2015’
, ‘DD/MM/RRRR’) FROM DUAL
PLEASE FIND ALL THE EMPLOYEES EXPIRENCE IN YEARS?
SELECT MONTHS_BETWEEN(SYSDATE, HIREDATE)/12, EMPNO, ENAME, HIREDATE FROM
EMP;
ADD_MONTHS(DATE, + OR – N):- EX:-ADD_MONTH(SYSDATE,2), ADD_MONTHS (SYSDATE,
-3)
THIS FUNCTION IS USED TO ADD SPECIFIED NUMBER OF MONTHS TO THE GIVEN DATE
SELECT ADD_MONTHS(SYSDATE, 5), ADD_MONTHS(’10-OCT-2015’,-5),
ADD_MONTHS(TO_DATE(‘5/5/16’,’DD/MM/RR’), 7) FROM DUAL
LAST_DAY(DATE) :- EX : LAST_DAY(SYSDATE)
THIS FUNCTION IS USED TO FIND OUT THE LAST DAY OF THE MONTH FOR THE GIVEN DATE
SELECT LAST_DAY (SYSDATE), LAST_DAY(ADD_MONTHS (SYSDATE,4)) FROM DUAL
NEXT_DAY(DATE, DAY) :- EX :- NEXT_DAY(SYSDATE, ‘SUN’)
THIS FUNCTION IS USED TO FIND THE NEXT ‘DAY ‘ DATE, ( CALCULATE NEXT DAY DATE BASED
ON GIVEN DATE)
SELECT NEXT_DAY(SYSDATE, ‘FRI’) /* IT WILL GIVE NEXT FRIDAY DATE */ FROM DUAL
TRUNC:-
EX:-
SELECT TRUNC(SYSDATE,’DD’) /*IT WILL GIVE TODAYS DAY STARTING TIME*/ FROM DUAL

GNANA IT SOLUTIONS, SQL MATERIAL


13

SUPPOSE NOW DATE AND TIME IS 20/NOV/2015 16:45:30 TRUNC(TO_DATE(‘20/11/2015


HH24:MI:SS’, ‘DD/MM/RRRR HH24:MI:SS’), ‘DD’)  AS :20/11/2015 00:00:00
DDTRUNC(SYSDATE,’DD’) : GIVES TODAYS DATE AND TIME IS 00:00:00 AM
MMTRUNC(SYSDATE,’MM’) GIVES FIRST DATE OF THE MONTH AND TIME IS 00:00:00 AM
YYYYTRUNC(SYSDATE,’YYYY’) GIVES FIRST DATE OF THE YEAR AND TIME IS 00:00:00 AM
SELECT TRUNC(TO_DATE(’15/07/2016 10:20:30’, ’DD/MM/RRRR HH24:MI:SS’), ‘DD’),
TRUNC(SYSDATE,’DD’) /*TO DAY IS DEC20 2015 */ FROM DUAL;
AS:- 15/07/2016 00:00:00, 20/12/2015 00:00:00
SELECT TRUNC(SYSDATE,’MM’) /*TODAY IS: 16/NOV/2016 , AS: 1/NOV/2016 */ FROM DUAL
SELECT TRUNC(SYSDATE,’YYYY’) /*TODAY IS :16/NOV/2016, AS: 1/JAN/2016 */ FROM DUAL
SELECT TRUNC(TO_DATE(‘16/12/2015 17:30:30’, ‘DD/MM/RRRR HH24:MI:SS’), ‘MM’) FROM
DUAL
AS:- 1/12/2015 00:00:00
SELECT TRUNC(TO_DATE(‘16/12/2015 17:30:30’, ‘DD/MM/RRRR HH24:MI:SS’), ‘YYYY’) FROM
DUAL
AS:- 1/1/2015

IQ?FIND THE 2017 JANUARY 1ST DATE ‘DAY’ ?


SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE,'YYYY'),12),'DAY') FROM
DUAL

IQ)NEXT MONTH LAST DATE AND LAST DATE DAY?


SELECT TO_CHAR(LAST_DAY(ROUND(SYSDATE,'MM')),'DD-MM-YYYY DAY')
FROM DUAL
IQ)1947 AUGEST 15TH DAY?
SELECT TO_CHAR(TO_DATE('15/08/1947','DD/MM/YYYY'),'DAY') FROM
DUAL
ROUND:-
EX:-
SELECT ROUND(SYSDATE,’DD’) /*IT WILL GIVE TODAYS DATE STARTING TIME IF SYSTEM TIME
IS < 12PM ELSE IT WILL GIVE TOMORROWS DATE STARTING TIME */ FROM DUAL
SUPPOSE NOW DATE AND TIME IS 20/NOV/2015 16:45:30 TRUNC(TO_DATE(‘20/11/2015
HH24:MI:SS’, ‘DD/MM/RRRR HH24:MI:SS’), ‘DD’)  AS :21/11/2015 00:00:00
DDROUND(SYSDATE,’DD’) : GIVES TODAYS/TOMORROW DATE AND DAY STARTING TIME
IS 00:00:00 AM
MMROUND(SYSDATE,’MM’) GIVES FIRST DATE OF (THIS MONTH / NEXT MONTH) AND
TIME IS 00:00:00 AM  IF DATE IS >15 THEN IT WILL GIVE NEXT MONTH FIRST OTHERWISE
CURRENT MONTH FIRST
YYYYROUND(SYSDATE,’YYYY’) GIVES FIRST DATE OF (THIS YEAR /NEXT YEAR) AND TIME
IS 00:00:00 AM IF MONTH IS > 6 THEN IT WILL GIVE NEXT YEAR FIRST DATE OF FIRST
MONTH. OTHERWISE IT WILL GIVE CURRENT YEAR 1ST DAY OF FIRST MONTH
SELECT ROUND(TO_DATE(’15/07/2016 10:20:30’, ’DD/MM/RRRR HH24:MI:SS’), ‘DD’),
TRUNC(SYSDATE,’DD’) /*TO DAY IS DEC20 2015 */ FROM DUAL; EX: SYSDATE-20-7-16 4PM
AS:- 15/07/2016 00:00:00, 21/7/2015 00:00:00

GNANA IT SOLUTIONS, SQL MATERIAL


14

SELECT ROUND(SYSDATE,’MM’) /*TODAY IS: 16/NOV/2016 , AS: 1/DEC/2016 */ FROM DUAL


SELECT ROUND(SYSDATE,’YYYY’) /*TODAY IS :16/NOV/2016, AS: 1/JAN/2017 */ FROM DUAL
SELECT ROUND(TO_DATE(‘16/12/2015 17:30:30’, ‘DD/MM/RRRR HH24:MI:SS’), ‘MM’) FROM
DUAL
AS:- 1/1/2016 00:00:00
SELECT ROUND(TO_DATE(‘16/12/2015 17:30:30’, ‘DD/MM/RRRR HH24:MI:SS’), ‘YYYY’) FROM
DUAL
AS:- 1/1/2017
--NEAREST SUDAY DAY DATE WILL DISPLAY
EX: SELECT ROUND(SYSDATE, ‘DAY’) FROM DUAL
SYSDATE:- PSCUDO COLUMN GIVES DATE FROM SERVER
ALIAS NAMES:-
 USED TO SPECIFY TEMPORARY HEADINGSS FOR COLUMNS OR EXPRESSIONS OR
TABLES
UPDATE EMP E SET E.SAL =7000 WHERE E.EMPNO= 7369;
SELECT E.EMPNO, E.ENAME, E.SAL, E.SAL* (10/100) COMM FROM EMP E;
SELECT E.EMPNO, E.ENAME, E.SAL, E.DEPTNO FROM EMP E WHERE E.DEPTNO = 10;
SELECT EMPNO, ENAME, (SELECT DNAME FROM DEPT D WHERE D.DEPTNO =
E.DEPTNO) DEPTNAME FROM EMP WHERE E.DEPTNO = 10;
DISTINCT CLAUSE:- THIS CLAUSE IS USED TO REMOVE DUPLICATES FROM THE RESULT SET,
THIS CLAUSE CAN ONLY USED WITH SELECT STMT
SELECT DISTINCT ENAME FROM EMP;
SELECT DISTINCT DEPTNO FROM EMP;

GROUP BY CLAUSE AND AGGREGATE FUNCTIONS:


AGGREGATE FUNCTION:
 BY DEFAULT IT CONSIDER WHOLE TABLE AS ONE GROUP
 THESE ARE IGNORE NULL VALUES
1) COUNT :- GI VES NO.OF VALUES IN A GIVEN COLUMN
EX: SELECT COUNT(EMPNO), COUNT(SAL) , COUNT(*) FROM EMP;
2) MIN :- PICKS THE SMALLEST VALUE VALUE FROM GIVEN COLUMN
EX: SELECT MIN(SAL) , MIN(DEPTNO) , MIN(EMPNO) FROM EMP
3) MAX:-PICKS THE LARGEST VALUE FROM GIVEN COLUMN
EX:SELECT MAX(SAL), MIN(SAL), COUNT(*) FROM EMP
4) AVG :- GIVES AVERAGE OF GIVEN COLUMN
EX:SELECT AVG(SAL) , AVG(COMM) FROM EMP WHERE E.DEPTNO = 10;
5) SUM:-GIVES TOTAL OF GIVEN COLUMN
EX:SELECT SUM(SAL), SUM(COMM) FROM EMP
6) STDDEV :- STANDARD DEVIATION OF GIVEN COLUMN
EX:SELECT STDDEV(SAL) FROM EMP
GROUP BY CLAUSE :-
USED TO GROUP THE ROWS BASED ON SPECIFIC COLUMN
IF WE WANT USE NORMAL COLUMN ALONG WITH AGGREGATE FUNCTION THAT
NORMAL COLUMN SHOULD COME AFTER GROUP BY CLAUSE

GNANA IT SOLUTIONS, SQL MATERIAL


15

GROUP BY CLAUSE: EX:


SELECT DEPTNO, MAX(SAL) FROM EMP GROUP BY DEPTNO
SELECT JOB,COUNT(*) FROM EMP GROUP BY JOB
SELECT COURSE_NAME, COUNT(*), SUM(FEES) FROM STUDENT GROUP BY
COURSE_NAME;
HAVING CLAUSE:-
 HAVING CLAUSE USE TO FILTER THE GROUPED RESULT,
 ALWAYS HAVING CLAUSE FOLLOWS GROUP BY CLAUSE
IQ1) FIND THE DUPLICATE EMPLOYEES IN EMP TABLE?
SELECT EMPNO, COUNT(EMPNO) FROM EMP GROUP BY EMPNO HAVING
COUNT(*) > 1;
IQ2) WHICH DEPARTMENT HAVING MORE THEN 5 EMPLOYEES?
SELECT DEPTNO,COUNT(EMPNO) FROM EMP GROUP BY DEPTNO HAVING
COUNT(EMPNO) > 5
IQ3) DEPARTMENT WISE , WHICH DEPARTMENTS AVG(SAL) IS MORE THEN 5000?
SELECT DEPTNO, AVG(SAL) FROM EMP GROUP BY DEPTNO HAVING AVG(SAL) >
5000
ORDER BY CLAUSE:
1) USED TO ARRANGE THE SELECT STATEMENT OUTPUT IN ASSENDING ORR
DESCENDING ORDER.
2) BY DEFAULT ASCENDING ORDER
3) YOU CAN USE ONE OR MORE THAN ONE COLUMN IN THE ORDER BY CLAUSE.
MAKE SURE WHATEVER COLUMN YOU ARE USING TO SORT, THAT COLUMN
SHOULD BE IN COLUMN_LIST.
DESC : DESCENDING ASC: ASCENDING
EX1: SELECT DEPTNO, AVG(SAL) FROM EMP GROUP BY DEPTNO ORDER BY DEPTNO
DESC
: IN THIS CASE :- ORDER BY CLAUSE SHOULD FOLLOW THE GROUP BY CLAUSE
EX2: SELECT EMPNO, ENAME, SAL FROM EMP E ORDER BY ENAME DESC;
OR
SELECT EMPNO, ENAME, SAL FROM EMP E ORDER BY 2 DESC
MEANS 2ND COLUMN ISENAME
EX3: SELECT DEPNO, AVG(SAL) AVG_SAL FROM EMP WHERE DEPTNO IN(10,20,30)
GROUP BY DEPTNO ORDER BY HAVING AVG(SAL) > 5000 ORDER BY 2
--2 MEANS—AVG(SAL)

SELECT CLAUSE:
SELECT <COLUMNS LIST> FROM <TABLE_NAME> [WHERE <CONDITION>
GROUP BY <COLUMNS>
HAVING <CONDITION>
ORDER BY <COLUMNS>]

GNANA IT SOLUTIONS, SQL MATERIAL


16

VSIZE(COLUMN_NAME) :- GIVES MEMORY OCCUPIED BY COLUMN , VALUE IN BYTES


EX: SELECT EMPNO, VSIZE(EMPNO), ENAME, VSIZE(ENAME) FROM EMP;
UID : GIVES USER IDENTIFICATION NUMBER;
USER : GIVES USERNAME
YOU CAN SEE USERID AND USER NAME IN ALL_USERS TABLE (SCHEMAS INFORMATION);
SELECT * FROM ALL_USEERS;
--HOW TO FIND UID AND USERNAME?
SELECT UID, USER FROM DUAL;
NVL FUNCTION:- THE NVL FUNCTION PERMITS YOU TO REPLACE ALL NULL VALUES WITH A
DEFAULT VALUE. IT REQUIRES TWO PARAMETER VALUES FIRST VALUE IS COLUMN NAME
AND SECOND IS ANY DEFAULT VALUE.
IF THE VALUE IN THE FIRST PARAMETER IS NULL THEN THE FUNCTION RETURNS THE
VALUE IN THE SECOND PARAMETER. IF THE FIRST PARAMETER IS ANY VALUE OTHER THAN
NULL, IT RETURNS UNCHANGED VALUE.
EX: SELECT EMPNO, ENAME, NVL(COMM,0) FROM EMP;
LIST THE EMPLOYEES FROM EMP TABLE , WHO ARE HAVING ‘0’ OR NULL COMMISION?
EX2: SELECT * FROM EMP WHERE NVL(COMM,0) = 0; (SAME QUERY WE CAN WRITE LIKE
BELOW)
SELECT * FROM EMP WHERE COMM = 0 OR COMM IS NULL;
EX3: SELECT EMPNO, ENAME, SAL+ NVL(COMM,0) TOTAL_SAL FROM EMP;
(IF YOU DO ANY ARTHMETIC OPERATIONS WITH NULL –RESULT WILL BE NULL , IN THIS CASE
YOU CAN USE NVL FUNCTION)
N VL2 FUNCTION:-
SYNTAX :- NVL2(EXP1, EXP2_IF_EXP1_IS_NOTNULL, EXP3_IF_EXP1_IS_NULL)
 IF EXP1 IS NOT NULL THEN  REPLACE WITH EXP2
 IF EXP1 IS NULL THEN  REPLACE WITH EXP3
DECODE: IT IS A SQL FUNCTION AND IS USED TO PROVIDE IF-THEN-ELSE TYPE OF LOGIC
CASE : CASE IS A STATEMENT AND IS USED TO PROVIDE IF-THEN-ELSE TYPE OF LOGIC
DIFFERENCE BETWEEN CASE AND DECODE?

GNANA IT SOLUTIONS, SQL MATERIAL


17

CASE DECODE

1) CASE IS STATEMENT AND IT IS DECODE IS A FUNCTION AND IT IS USED


USED TO PROVIDE THE IF THEN TO PROVIDE IF THEN ELSE TYPE OF
ELSE TYPE OF LOGIC. LOGIC.

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

3) SUPPORTS OPERATORS LIKE EX: > , < , IT WILL NOT SUPPORT


>=, =<, =,IN, BETWEEN, LIKE, NOT LIKE

4) BY USING CASE WE CAN DIRECTLY WE CAN’T (SELECT STATEMENT IS REQUIRE)


ASSIGN A VALUE TO VARIABLE IN
PL/SQL BLOCK.

5) EASYLY WE CAN UNDERSTAND IT IS COMPLEX TO UNDERSTAND.

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

 IT IS A NOT A STATIC VALUE , IT WILL CHANGE DYNAMICALLY BASED ON THE SELECT


STATEMENT OUT PUT
 SEE THE DIFFERENCE:-(BELOW EXAMPLES)
 IT WON’T SUPPORT ‘>’ OPERATOR IN WHERE CLAUSE
EX: SELECT * FROM EMP WHERE ROWNUM > 6X
 IT WON’T SUPPORT ‘=’ OPERATOR ALSO (‘=’ SUPPORT FOR FIRST RECORD ONLY)
EX: SELECT * FROM EMP WHERE ROWNUM = 3WRONG ---
SELECT * FROM EMP WHERE ROWNUM= 1  RIGHT

GNANA IT SOLUTIONS, SQL MATERIAL


18

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 AND ROWNUM DIFFERENCE?

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 ‘ ‘

SOME MORE DDL COMMANDS/STATEMENTS:


1) RENAME TABLE :
EX: RENAME DEPT TO DEPT_INFO;
EX:RENAME EMP TO EMP_INFO;

GNANA IT SOLUTIONS, SQL MATERIAL


19

2) RENAME COLUMN NAME:


EX: ALTER TABLE EMP RENAME COLUMN ENAME TO EMP_NAME
EX: ALTER TABLE EMP RENAME COLUMN
3) TRUNCATE
USED TO REMOVE ALL THE ROWS FROM A TABLE
TRUNCATE DELETE
1)REMOVES ALL THE ROWS FROM A 1)WE CAN REMOVE ALL THE ROWS OR WE
TABLE CAN DELETE SELECTED ROWS
2)WHERE CLAUSE NOT SUPPORT 2)WHERE CLAUSE SUPPORT
3)AFTER TRUNCATE WE CAN NOT APPLY 3)AFTER DELETE WE CAN APPLY TCL
TCL COMMANDS (MEANS: AUTO COMMANDS
COMMIT),BECAUSE IT IS A DDL (COMMIT/ROLLBACK/SAVAPOINT)
COMMAND ALL DDL COMMANDS ARE
AUTO COMMIT.
4)CLEARS THE MEMORY ALLOCATED TO 4)AFTER DELETE INTERNAL MEMORY STILL
ROWS (INTERNAL MEMORY WILL BE EXIST
CLEAR) (MEANS: HIGH WATER MARK IN SAME
(MEANS: HIGH WATER MARK POSITION POSITION)
WILL BE CHANGE)
TRUNCATE = DELETE + COMMIT

EX1: TRUNCATE TABLE EMP;


EX2: TRUNCATE TABLE DEPT;

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

GNANA IT SOLUTIONS, SQL MATERIAL


20

HALLTICKET_NO STU_NAME STU_CLASS STU_MARKS BRANCH_ID

10001011 SMITH +2 590 101


20023451 ANIL +2 537 102
20023457 ROHAN +2 477 102
10010123 RAKESH +2 390 101
10010125 ROHITH +2 277 101
30078459 SHEETHA +2 582 103
30078470 GEETHA +2 521 103

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?

GNANA IT SOLUTIONS, SQL MATERIAL


21

SELECT SI.STU_NAME, SI.STU_MARKS, GI.GRADE, CI.COLLEGE_NAME,


CI.BRANCH_LOCATION FROM STUDENT_INFO SI, COLLEGE_INFO CI , GRADE_INFO GI
WHERE SI.BRANCH_ID ACI.BRANCH_ID AND SI.STU_MARKS BETWEEN GI.MIN_MARKS
AND GI.MAX_MARKS.
DISPLAY GRADE ‘A’ AND ‘B’ STUDENTS DETAILS?
SELECT SI.STU_NAME, SI.STU_MARKS, GI.GRADE, CI.COLLEGE_NAME,
CI.COLLEGE_NAME FROM STUDENT_INFO SI, COLLEGE_INFO CI , GRADE_INFO GI
WHERE SI.BRANCH_ID CI.BRANCH_ID AND ( SI.STU_MARKS > 450 OR GI.GRADE IN
(‘A’, ‘B’)
CARTESION JOIN:- USED TO RETRIEVE ALL THE POSSIBLE COMBINATIONS FROM
MULTIPLE TABLES
 COMMON COLUMN IS NOT REQUIRED
 NO NEED TO SPECIFY ANY CONDITION
EMP1
-------
empno Ename sal doj
1 A 5000 10/DEC/2015
2 B 6000 05/MAY/2002
3 C 7000 01/01/1991
DEPT1
DEPTNO DNAME LOC
10 CLEARK VIZAG
20 MANAGER HYDERABAD
SELECT * FROM EMP1 , DEPT1
OUTPUT LIKE BELOW
EMPNO ENAME SAL DOJ DEPTNO DNAME LOC

1 A 5000 10/DEC/2015 10 CLEARK VIZAG


1 A 5000 10/DEC/2015 20 MANAGER HYDERABAD
2 B 6000 05/MAY/2002 10 MANAGER VIZAG
2 B 6000 05/MAY/2002 20 CLEARK
HYDERABAD
3 C 7000 01/01/1991 10 MANAGER VIZAG
3 B 7000 01/01/1991 20 CLEARK HYDERABAD

SELF JOIN:
JOINING THE TABLE TO ITSELF

WORKER_TAB
EMPNO ENAME manager
101 A NULL
102 B 101

GNANA IT SOLUTIONS, SQL MATERIAL


22

103 C 102
104 D 101
105 E 102

SELECT WORK.ENAME EMPLOYEE_NAME, MANG.ENAME MANAGER_NAME FROM


WORKER_TAB WORK, WORKER_TAB MANG WHERE WORK.MGR = MANG.EMPNO;

OUTPUT EMPLOYEE_NAME MANAGER_NAME


B A
C B
D A
E B
OUTER JOINS
IT IS SIMILAR TO EQUI JOIN BUT RETRIVE ALL THE ROWS FROM ONE TABLE OR TWO TABLES
EVEN IF JOIN CONDITION IS NOT SATISFIED.
3 TYPES:
1)LEFT OUTER JOIN
IT IS USED TO DISPLAY THE FULL DETAILS OF THE LEFT TABLE AND MATCHED RECORDS OF
THE RIGHT TABLE.
2)RIGHT OUTER JOIN
IT IS USED TO DISPLAY THE FULL DETIALS OF THE RIGHT TABLE AND MATCHED RECORDS OF
THE LEFT TABLE
3)FULL OUTER JOIN
IT IS USED TO DISPLAY THE FULL DETAILS OF THE RIGHT AND LEFT TABLES.

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

SLECT CUST_NAME, CUST_NAME , LOAN_NAME FROM CUSTOMER_TABLE CT,


LOAN_DETAILS_TABLE LD

GNANA IT SOLUTIONS, SQL MATERIAL


23

WHERE CT.LOAN_TYPE = LD.LOAN_TYPE;


LEFT OUTER JOINS:-
SLECT CUST_NAME, CUST_NAME , LOAN_NAME FROM CUSTOMER_TABLE CT,
LOAN_DETAILS_TABLE LD
WHERE CT.LOAN_TYPE = LD.LOAN_TYPE(+);
RIGHT OUTER JOINS:-

SLECT CUST_NAME, CUST_NAME , LOAN_NAME FROM CUSTOMER_TABLE CT,


LOAN_DETAILS_TABLE LD
WHERE CT.LOAN_TYPE(+) = LD.LOAN_TYPE
FULL OUTER JOINS:-
SELECT * FROM EMP E FULL OUTER JOIN DEPT D ON E.DEPTNO=D.DEPTNO

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

GNANA IT SOLUTIONS, SQL MATERIAL


24

SELECT * FROM EMP WHERE DEPTNO =20


MINUS
SELECT * FROM EMP WHERE DEPTNO = 10
INTERSECT:- COMMON ROWS FROM BOTH QUIRIES
(COMMON ROWS FROM FIRST SELECT STATEMENT AND SECOND SELECT STATEMENT)
EX1:- SELECT * FROM EMP E WHERE E.DEPTNO = 10
INTERSECT
SEELECT * FROM EMP E WHERE E.DEPTNO = 20
EX2:- SELECT * FROM EMP E WHERE E.DEPTNO = 10
INTERSECT
SELECT * FROM EMP E WHERE E.DEPTNO = 10
NOTE: WHEN TABLES DON’T HAVE PROPER RELATION IN THAT CASE MOSTLY WE USE SET
OPERATORS
EXAMPLES :- PENDING

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

GNANA IT SOLUTIONS, SQL MATERIAL


25

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

GNANA IT SOLUTIONS, SQL MATERIAL


26

NON KEY PRESERVED TABLES, IF YOU CREATE ANY VIEW ON THESE


TABLES THAT VIEW DOESN’T ALLOW DML OPERATIONS
 SUPPOSE WE ARE JOINING TWO TABLES, IN THAT FIRST TABLE HAVING A
KEY COLUMN THAT TOO IN A VIEW RESULT THAT TABLE KEY COLUMN
DOESN’T CONTAIN THE DUPLICATE VALUES . SECOND TABLE IS A NON
KEY PRESERVED TABLE THEN WE CANNOT APPLY DML OPERATION ON
KEY PRESERVED TABLE COLUMNS AND WE CAN’T APPLY DML
OPERATION ON NON KEY PRESERVED TABLE DATA.
 SUPPOSE WE ARE JOINING TWO TABLES, IN THAT BOTH TABLES HAVING
A KEY COLUMNS BUT IN A VIEW RESULT SECOND TABLE HAVING
DUPLICATE VALUES, IN THIS CASE WE CAN APPLY DML OPERATIONS ON
FIRST TABLE COLUMNS WE CAN’T APPLY DML OPERATIONS ON SECOND
TABLE COLUMNS.
 SUPPOSE WE ARE JOINING TWO TABLES, IN THAT FIRST TABLE COLUMN
HAVE A KEY COLUMN AND SECOND TABLE COLUMN HAVING A KEY
COLUMN (BOTH ARE PARENT CHILD TABLES FT-PARENT, ST-CHIL TABLE)
BUT SECOND TABLE KEY HAVING DUPLICATE VALUES IN A VIEW RESULT,
SO IF YOU CREATE UNIQUE KEY ON FOREIGN KEY COLUMN THEN WE CAN
APPLY DML OPERATIONS
CASE 1:-
EMP TABLE DEPT TABLE
EMPNO—PRIMARY KEY DEPTNO—NOT HAVING PRIMARY KEY
IF YOU CREATE VIEW ON BOTH TABLES, WE CAN’T APPLY DML ON EMP BUT CAN’T ON
DEPT.
CASE 2:-
EMP TABLE DEPT TABLE
EMPNO—PRIMARY KEY DEPTNO—PRIMARY KEY
IF YOU CREATE VIEW ON BOTH TABLES, WE CAN APPLY DML ON EMP CAN’T ON DEPT.
(BECAUSE DEPT TABLE KEY COLUMN HAVING DUPLICATE VALUES IN A VIEW RESULT).
CASE 3:-
EMP TABLE DEPT TABLE
EMPNO—NOT HAVE A PRIMARY KEY DEPTNO—NOT HAVE A PRIMARY KEY
IF YOU CREATE VIEW ON BOTH TABLES, WE CAN’T APPLY DML ON BOTH TABLE
COLUMNS.
(BECAUSE BOTH TABLES ARE NON KEY PRESERVED TABLES).
CASE 4:-
EMP TABLE DEPT TABLE
EMPNO—PRIMARY KEY DEPTNO -- PRIMARY KEY(IT IS FK IN EMP TABLE AND
UK/PK ALSO IN EMP TABLE )
IF YOU CREATE VIEW ON BOTH TABLES, WE CAN APPLY DML ON BOTH TABLE COLUMNS

SYNONYM:
 MAINLY IT IS USED TO HIDE THE ORIGINAL NAME OF THE OBJECT

GNANA IT SOLUTIONS, SQL MATERIAL


27

 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

GRANT ALL ON SYN_PROC1 TO USER2


DROP SYNONYM:
GRANT EXECUTE ON SYN_PROC1 TO USER2, GRANT DEBUJ ON SYN_PROC1 TO USER2;
GNANA IT SOLUTIONS, SQL MATERIAL
28

DROP PUBLIC SYNONYM <SYNONYM_NAME>


SELECT * FROM USER_SYNONYMES;
GRANT PERMISSIONS(SYS SCHEMA)
GRANT CREATE SYNONYM TO <SCHEMA_NAME>
GRANT CREATE PUBLIC SYNONYM TO <SCHEMA_NAME>
IQ1) DIFFERENCE BETWEEN VIEW AND SYNONYM?
SYNONYM VIEW
HIDE THE ORIGINAL NAME OF THE OBJECT. IT IT IS A STORED SELECT STATEMENT
IS ALIAS NAME OF THE OBJECT
ALWAYS WE CAN CREATE SYNONYM ON WE CAN CREATE VIEW ON MULTIPLE OBJECTS
SINGLE OBJECT
WE CAN SEE SYNONYMS LIST ON WE CAN SEE VIEWS LIST ON USER_VIEWS
USER_SYNONYMS
SYNONYM CAN CREATE ON VIEWS, TABLES, WE CAN CREATE VIEW ON TABLES, VIEWS,
PROCEDURES, FUNCTIONS..ETC SYNONYMS
IT WILL NOT HOLD THE DATA PHYSICALLY ON IT WILL NOT HOLD THE DATA PHYSICALLY ON
IT IT

MAKING A COPY OF A TABLE:-


1) CREATE TABLE DUMMY_EMP AS SELECT * FROM EMP;
2) CREATE TABLE EMP_BONUS AS SELECT EMPNO, ENAME, SAL, ( SAL * 10)/100
EMP_BONUS, DEPTNO FROM EMP;
3) CREATE TABLE EMP_DEPT AS SELECT EMPNO, ENAME, SAL, DEPTNO, D.DNAME, D.LOC
FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO
COPYING ONLY STRUCTURE OF THE TABLE
1) CREATE TABLE DUMMY_EMP AS SELECT * FROM EMP E WHERE 1=2
(WHERE 1=2 THIS CONDITION ALWAYS FALSE SO GIVE ONLY STRUCTURE).
COPYING ONLY INFORMATION:- EXAMPLES:
1) INSERT INTO DUM_EMP SELECT * FROM EMP;
2) INSERT INTO DUM_EMP(EMP NO, ENAME, SAL) SELECT EMPNO, ENAME, SAL FROM
EMP;
--NOTE:COLUMN NAMES AND DATA TYPES SHOULD BE SAME IN INSERT AND SELET CLAUSE
3) CREATE TABLE EMP_DEPT (EMPNO NUMBER, ENAME, SAL NUMBER, DEPTNAME
VARCHAR2(30));
INSERT INTO EMP_DEPT SELECT EMPNO, ENAME, SAL, DEPTNAME FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;

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

GNANA IT SOLUTIONS, SQL MATERIAL


29

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

GNANA IT SOLUTIONS, SQL MATERIAL


30

SYNTAX: CREATE SEQUENCE <SEQ_NAME>


START WITH <STARTING_VALUE>
INCREMENT BY 1
MINVALUE <MIN_VALUE>
MAXVALUE <MAX_VALUE>
CYCLE (or nocycle)
NO CACHE (OR CACHE 20);
MINVALUE: INDICATES THE STARTING VALUE IF SEQUENCE IS REUSED
START WITH: INDICATE STARTING VALUENOTE: START WITH SHOULD BE > MINVALUE

EX: CREATE SEQUENCE SEQ_EMPNO START WITH 1 MINVALUE 2 WRONG

EX2:CREATE SEQUENCE SEQ_EMPNO START WITH 2 MINVALUE 1 RIGHT

CYCLE: ALLOWS YOU TO REUSE SEQUENCE (NOCYCLE:-->NOT ALLOW TO REUSE)


CACHE: TEMPORARY BUFFER ALLOCATED TO HOLD GENARATED NUMBERS.
MAXVALUE:- INDICATE MAXIMUM VALUE OF SEQUENCE
NEXTVAL:- IT WILL GIVE THE NEXT VALUE OF THE SEQUENCE
CURRVAL:- IT WILL GIVE THE CURRENT VALUE OF THE SEQUENCE
EX 1:CREATE SEQUENCE SEQ_EMPNO
START WITH 1
MINVALUE 1
MAXVALUE 10000000
NOCYCLE NOCACHE;
EX 2:CREATE SEQUENCE SEQ_DEPTNO;
INSERT INTO DEPT (DEPTNO,DNAME) VALUES (SEQ_DEPTNO.NEXTVAL,’SALES’);
SELECT SEQ_DEPTNO.NEXTVAL, SEQ_DEPTNO.CURRVAL FROM DUAL;
EX3:-
DECLARE
X NUMBER;
Y NUMBER;
BEGIN
X:= SEQ_DEPTNO.NEXTVAL;
Y := SEQ_DEPTNO.CURRVAL;
INSERT INTO EMP (EMPNO, ENAME,SAL) VALUES (X,’RAJA’,9000);
END;

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

GNANA IT SOLUTIONS, SQL MATERIAL


31

 IT WON’T ALLOW DUPLICATE VALUES


 IT WILL ACCEPT ANY NO NULL VALUES
EX1 : CREATE TABLE EMP (EMPNO NUMBER CONSTRAINT UK_EMPNO UNIQUE, ENAME
VARCHAR2(30));
ADD CONSTRAINT
EX: ALTER TABLE EMP ADD CONSTRAINT UK_EMPNO UNIQUE (EMPNO);
DROP CONSTRAINT
EX:ALTER TABLE EMP DROP CONSTRAINT UK_EMPNO;
COMPOSIT UNIQUE:- WE CAN CREATE UNIQUE CONSTRAINT ON MORE THEN ONE COLUMN
AT A TIME, THAT IS CALLED AS A COMPOSIT UNIQUE CONSTRAINT
MAXIMUM 32 COLUMNS ALLOWED
EX: ALTER TABLE EMP1 ADD CONSTRAINT UK_EMPNO_ENAME UNIQUE (EMPNO, ENAME);
INSERT INTO EMP1 VALUES(10,’RAJA’)  ALLOW
INSERT INTO EMP1 VALUES (10,’SEKHAR’)  ALLOW
INSERT INTO EMP1 VALUES (10,’RAJA’ )  NOT ALLOWED
INSERT INTO EMP1 VALUES (20, NULL)  ALLOW
INSERT INTO EMP1 VALUES(20,NULL)  NOT ALLOWED
DROP CONSTRAINT
EX:ALTER TABLE EMP DROP CONSTRAINT UK_EMPNO_ENAME;
PRIMARY KEY:
 AFTER CREATE PRIMARY KEY CONSTRAINT AUTOMATICALLY UNIQUE INDEX WILL BE
CREATE
 IT WON’T ALLOW DUPLICATE VALUES
 IT WON’T ACCEPT NULL VALUES
 WE CAN CREATE MAXIMUM ONE PRIMARY KEY CONSTRAINT ON A TABLE
EX1: ALTER TABLE EMP ADD CONSTRAINT PK_EMPNO PRIMARY KEY (EMPNO);
EX2:CREATE TABLE EMP (EMPNO NUMBER, ENAME VARCHAR2(30) CONSTRAINT PK_ENAME
PRIMARY KEY)
DROP CONSTRAINT:- ALTER TABLE EMP DROP CONSTRAINT PK_ENAME,
COMPOSIT PRIMARY KEY
WE CAN CREATE PRIMARY KEY CONSTRAINT ON MORE THEN ONE COLUMN AT A TIME, THAT
IS CALLED AS A COMPOSIT PRIMARY KEY CONSTRAINT
MAXIMUM 32 COLUMNS ALLOWED
EX1: ALTER TABLE EMP1 ADD CONSTRAINT UK_EMPNO_ENAME PRIMARY KEY (EMPNO,
ENAME);
INSERT INTO EMP1 VALUES(10,’RAJA’)  ALLOW
INSERT INTO EMP1 VALUES (10,’SEKHAR’)  ALLOW
INSERT INTO EMP1 VALUES (10,’RAJA’ )  NOT ALLOWED
INSERT INTO EMP1 VALUES (20, NULL)  ALLOW
INSERT INTO EMP1 VALUES(20,NULL)  NOT ALLOWED
EX2:- ALTER TABLE TRAIN_RESERVATION ADD CONSTRAINT PK_RESERVATION (TRAIN_NO ,
SEAT_NO , COACH_NO,DATE_OF_JURNEY);
DIFFRENCE BETWEEN UNIQUE AND PRIMARY KEY?
UNIQUE PRIMARY KEY

GNANA IT SOLUTIONS, SQL MATERIAL


32

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

SYNTAX: ALTER TABLE <TABLE_NAME> ADD CONSTRAINT <CONSTRAINT_NAME>


FOREGIN KEY (<COLUMN_NAME> ) REFRENCES <TABLE_NAME> <(COLUMN_NAME) >

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);

CREATE TABLE EMP (EMPID NUMBER(8), ENAME VARCHAR2(30), GENDER CHAR(1)


CONSTRAINT CHK_GENDER CHECK (GENDER IN (‘M’, ‘F’)) , DEPTNO NUMBER(8)
CONSTRAINT FK_DEPTNO REFRENCES DEPT(DEPTNO));
PRIMARY KEY FOREIGN KEY
IT WON’T ACCEPT DUPLICATE VALUES AND IT WILL ALLOW DUPLICATE VALUES AND
NULL VALUES NULL VALUES
WE CAN CREATE ONLY ONE PRIMARY KEY WE CAN CREATE ANY NO OF FOREIGN KEY
ON THE TABLE COLUMNS ON THE TABLE
INDEX AUTOMATICALLY CREATE IF NEED, WE HAVE TO CREATE INDEX
WE CAN CREATE PRIMARY KEY ON ANY WE CAN CREATE FOREIGN KEY CONSTRAINT
COLUMN ON ANY COLUMN BUT REFRENCE COLUMN
SHOULD BE PRIMARY OR UNIQUE KEY
COLUMN
ON DELETE CASCADE CLAUSE:- AUTOMATICALLY REMOVES CHILD RECORDS WHEN EVER
PARENT RECORD IS REMOVED (WE CAN GIVE ON DELETE CASCADE ON FOREIGN KEY
COLUMN ONLY)
EX1:- ALTER TABLE EMP ADD CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO)
REFRENCES DEPT(DEPTNO) ON DELETE CASCADE
EX2: (TABLE LEVEL)

GNANA IT SOLUTIONS, SQL MATERIAL


33

CREATE TABLE DEPT (DEPTNO NUMBER(8), DEPTNAME VARCHAR2(30), LOCATION


VARCHAR2(30));
ALTER TABLE DEPT ADD CONSTRAINT PK_DEPTNO PRIMARY KEY DEPTNO;
CREATE TABLE EMP (EMPNO NUMBER(8), ENAME VARCHAR2(30), DEPTNO NUMBER(8)
CONSTRAINT FK_DEPTNO REFERENCES DEPT(DEPTNO) ON DELETE CASCADE );
OR (COLUMN LEVEL)
ALTER TABLE EMP ADD CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFRENCES
DEPT(DEPTNO) ON DELETE CASCADE
ON DELETE SET NULL:-AUTOMATICALLY UPDATE NULL VALUES IN CHILD ROWS WHEN
EVER PARENT RECORD IS REMOVED
ALTER TABLE EMP ADD CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFRENCES
DEPT(DEPTNO) ON DELETE SET NULL.
HOW TO CHECK?
DELETE DEPT DATA AND CHECK IN EMP TABLE.
TABLE LEVEL CONSTRAINTS EXAMPLES:-
CREATE TABLE EMP_1 (EMPNO NUMBER CONSTRAINT PK_EMPNO1 PRIMARY KEY,
ENAME VARCHAR2(30) CONSTRAINT UK_ENAME1 UNIQUE, GENDER CHAR(1)
CONSTRAINT CHK_GENDER1 CHECK (GENDER IN (‘M’,’F’));
CASCADE CONSTRAINTS:-
 ALLOWS TO DROP PARENT TABLE EVEN IF CHILD ROWS EXISTS
 DISTROYED RELATION BETWEEN PARENT AND CHILD
 SYNTAX:-DROP TABLE DEPT CASCADE CONSTRAINTS;

DEFAULT(PROPERTY):- USED TO SPECIFY INITIAL VALUE FOR A COLUMN


EX:ALTER TABLE EMP MODIFY STATUS VARCHAR2(1) DEFAULT ‘Y’;
REMOVING , ADD NOT NULL AND DEFAULT
ALTER TABLE EMP MODIFY ENAME VARCHAR2(40) NULL;
ALTER TABLE EMP MODIFY SAL NUMBER(10,2) NOT NULL;
ALTER TABLE EMP MODIFY SAL NUMBER(10,2) DEFAULT 5000;
HOW TO FIND CONSTRAINTS LIST
 IT IS STORED IN ‘USER_CONSTRAINTS’ , ‘USER_CONS_COLUMNS’ SYSTEM TABLES

SELECT * FROM USER_CONSTRAINTS;


SELECT * FROM USER_CONS_COLUMNS;
USER_CONSTRAINTS—TABLE CONTAIN->(CONSTRAINT_NAME, TABLE_NAME,
CONSTRAINT_TYPE)
USER_CONS_COLUMNS- TABLE CONTAIN->(CONSTRAINT_NAME,
TABLE_NAME,COLUMN_NAME);
IQ1) HOW TO FIND CONSTRAINTS LIST IN A TABLE?
SELECT UCC.COLUMN_NAME, UC.CONSTRAINT_NAME, UC.CONSTRAINT_TYPE FROM
USER_CONSTRAINTS UC, USER_CONS_COLUMNS UCC WHERE UC.CONSTRAINT_NAME =
UCC.CONSTRAINT_NAME AND UC.TABLE_NAME = ‘EMP’;
CONSTRAINT_TYPES:-
P-PRIMARY KEY CONSTRAINT

GNANA IT SOLUTIONS, SQL MATERIAL


34

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)

 IF OUTER QUERY RETURNS N ROWS INNER QUERY WILL BE EXECUTED FOR N


TERMSMORE THEN HIS D
LIST THE EMPLOYEES WHOSE SALARY IS MORE THEN HIS DEPT MIN SALARY?
SELECT * FROM EMP E WHERE E.SALARY > (SELECT AVG(SAL) FROM EMP D WHERE
E.DEPTNO = D.DEPTNO);--PENDING ONE MORE EXAMPLE
SPECIAL OPERATORS IN SUBQUERY:
EXI STS: IT IS A BOOLEAN OPERATOR IT RETURNS TRUE OR FALSE, IT WILL GIVE THE STATUS
OF INNER QUERY. IF INNER QUERY IS SUCCESS IT RETURNS TRUE OTHERWISE FALSE
EX: SELECT * FROM EMP E WHERE E.ENAME = ‘SMITH’ AND EXISTS (SELECT 1 FROM EMP D
WHERE E.EMPNO = D.EMPNO);
EX2: SELECT * FROM EMP E WHERE EXISTS (SELECT 1 FROM EMP EE , DEPT D WHERE
EE.DEPTNO = D.DEPTNO AND E.DEPTNO = EE.DEPTNO AND LOCATION=’CHICAGO’) –PENDING
ANY OR SOME :-PICKS SMALLEST VALUE FROM RESULT OF INNER QUERY
LIST THE ALL EMPLOYEES WHOSE SALARY IS MORE THEN MIN SALARY?
SELECT * FROM EMP WHERE SAL > ANY (SELECT SAL FROM EMP)
SCALAR QUERY:-
SELECT STATEMENT WILL BE PLACED IN PLACE OF COLUMN POSITION

GNANA IT SOLUTIONS, SQL MATERIAL


35

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

 IT IS A POINTER, LOCATES THE PHYSICAL ADDRESS OF THE DATA.


 IT WILL IMPROVE PERFORMENCE WHILE RETRIEVING OR MANUPULATING DATA
 IT IS AUTOMATICALLY ACTIVATED WHEN INDEX COLUMN IS USED IN ‘WHERE’ CLAUSE
 IT IS STORED IN ‘USER_INDEXS’ SYSTEM TABLE
 IT WILL HOLD THE DATA ON IT
INDEX TYPES
B*TREEE INDEX (NORMAL INDEX)—B*TREE
REVERSE KEY B*TREE INDEX --B*TREE
BITMAP INDEX
FUNCTION BASED INDEX
UNIQUE INDEX –B*TREE
CLUSTER INDEX

GNANA IT SOLUTIONS, SQL MATERIAL


36

SIMPLE INDEX:-IF YOU CREATE INDEX ON SINGLE COLUMN THAT IS CALLED AS A


SIMPLE INDEX
SYNTAX:- CREATE INDEX <INDEX_NAME> ON <TABLE_NAME>(<COLUMN NAME>);
EX1:- CREATE INDEX IDX_EMPNO ON EMP(EMPNO);
EX2:- CREATE INDEX IDX_ROLLNO ON STUDENT_INFO (ROLLNO);
COMPLEX INDEX:- IF YOU CREATE INDEX ON MORE THEN ONE COLUMN , THAT IS
CALLED AS A COMPLEX INDEX
SYNTAX:-CREATE INDEX <INDEX_NAME> ON <TABLE_NAME>(<COL1>,<COL2>,…..);
EX1:CREATE INDEX IDX_ROLLNO_ NAME ON STUDENT_INFO (ROLL_NO, NAME);
EX2:CREATE INDEX IDX_EMPNO_STATUS ON EMP (EMPNO, STATUS);
REVERSE KEY INDEX:
CREATE INDEX IDX_REVERSE_EMPNO ON EMP(EMPNO) REVERSE
CREATE INDEX IDX_REVERSE_DEPTNO ON DEPT (DEPTNO)REVERSE;

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

GNANA IT SOLUTIONS, SQL MATERIAL


37

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);

GNANA IT SOLUTIONS, SQL MATERIAL


38

SELECT * FROM EMP E WHERE UPPER(ENAME) = ‘SMITH’


EX 2: CREATE INDEX IDX_COMMISION ON EMP (UPPER(ENAME)) = ‘SMITH’;
SELECT * FROM EMP E WHERE UPPER(ENAME) = ‘SMITH’;
REVERSE KEY INDEX:
SYNTAX:- CREATE INDEX <INDEX_NAME> ON <TABLE_NAME> (<COLUMN>) REVERSE;
EX: CREATE INDEX IDX_REVERSE_EMPNO ON EMP(EMPNO) REVERSE
UNIQUE INDEX:- WHEN EVER WE WILL CREATE PRIMARY KEY OR UNIQUE CONSTRAINT THAT
TIME AUTOMATICALLY UNIQUE INDEX WILL BE CREATE OR WE CAN CREATE UNIQUE INDEX
ALSO
SYNTAX:- CREATE UNIQUE INDEX <INDEX_NAME> ON <TABLE_NAME> (<COLUMN>);
IF YOU CREATE UNIQUE INDEX , IT WON’T ALLOW DUPLICATE VALUES

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

GNANA IT SOLUTIONS, SQL MATERIAL


39

 WE CAN GIVE TABLE SPACE TO MATERAILIZED


 IT WILL WORK LIKE SNAPSHOT (WHEN WE WANT REMOTE SYSTEM DATA)
 Refresh Options
o COMPLETE – totally refreshes the view
 Can be done at any time; can be time consuming
o FAST – incrementally applies data changes
 A materialized view log is required on each detail table
 Data changes are recorded in MV logs or direct loader logs
 Many other requirements must be met for fast refreshes
o FORCE – does a FAST refresh in favor of a COMPLETE
 The default refresh option
 Refresh Modes
o ON COMMIT – refreshes occur whenever a commit is performed on one of the
view’s underlying detail table(s)
 Available only with single table aggregate or join based views
 Keeps view data transactionally accurate
 Need to check alert log for view creation errors
o ON DEMAND – refreshes are initiated manually using one of the procedures in
the DBMS_MVIEW package
 Can be used with all types of materialized views
 Manual Refresh Procedures
 DBMS_MVIEW.REFRESH(<mv_name>, <refresh_option>)
 DBMS_MVIEW.REFRESH_ALL_MVIEWS()

-- AFTER DML ON ORIGINAL TABLE , IMMEDIATE REFRESH MATERIALIZED VIEW


CREATE MATERIALIZED VIEW LOG ON EMP ;
CREATE MATERIALIZED VIEW VW_MV_EMP TABLESPACE TBS_DATA
REFRESH FAST ON COMMIT
AS
SELECT * FROM EMP;

SELECT * FROM VW_MV_EMP;


DELETE FROM EMP WHERE DEPTNO = 10;
SELECT * FROM VW_MV_EMP;
--FORCE REFRESH MATERIALIZED VIEW
CREATE MATERIALIZED VIEW MV_EMP
BUILD IMMEDIATE
AS SELECT * FROM EMP;
--HOW TO REFRESH?
BEGIN
DBMS_MVIEW.REFRESH('MV_EMP', 'FORCE');
END;

GNANA IT SOLUTIONS, SQL MATERIAL


40

---CREATE MATERIALIZED VIEW . REFRESH BASED ON INTERVAL


CREATE MATERIALIZED VIEW MV_DEPT REFRESH COMPLETE START WITH SYSDATE
NEXT (SYSDATE +1/24/60)
AS SELECT * FROM DEPT;

SELECT * FROM MV_DEPT;


DELETE FROM DEPT WHERE DEPTNO = 20
10G AND 11G NEWFEATURES
--VIRTUAL COLUMN
CREATE TABLE TEST_VIR(X NUMBER, Y NUMBER, Z NUMBER AS (X+Y));
INSERT INTO TEST_VIR(X,Y) VALUES (10,20);
SELECT * FROM TEST_VIR;
--DETERMINISTIC FUNCTION IN VIRTUAL COLUMN
CREATE OR REPLACE FUNCTION FN_VIR(P_1 NUMBER, P_2 NUMBER) RETURN NUMBER
DETERMINISTIC AS
X NUMBER;
BEGIN
X := P_1 * P_2 - (P_1 + P_2);
RETURN X;
END;
CREATE TABLE TEST_VIRT2(X NUMBER, Y NUMBER, Z NUMBER AS (FN_VIR(X,Y)));
INSERT INTO TEST_VIRT2(X,Y) VALUES (10,20);
--AS OF TIME STAMP
SELECT * FROM EMP
DELETE FROM EMP;
CREATE TABLE DUM_EMP1 AS
SELECT * FROM EMP AS OF TIMESTAMP SYSDATE - 5/24/60;
---AGGERIGATE FUNCTION IN RETURNIG CLAUSE
DECLARE
X NUMBER;
BEGIN
UPDATE EMP SET SAL = 7899 WHERE DEPTNO = 10 RETURNING SUM(SAL) INTO X;
DBMS_OUTPUT.PUT_LINE( X);
END;
---CONTINUE 11G
BEGIN
FOR I IN 1..10 LOOP
IF I = 5 THEN
CONTINUE;
ELSE
DBMS_OUTPUT.PUT_LINE( I);
END IF;
END LOOP;
END;

GNANA IT SOLUTIONS, SQL MATERIAL


41

--10G PURGE RECYLE BIN


DROP TABLE EMP PURGE;;
FN_G
PURGE RECYCLEBIN;
--REGEXP_SUBSTR 10G
--LISTAGG 11G
SELECT JOB, LISTAGG(ENAME,',') WITHIN GROUP (ORDER BY ENAME) FROM EMP GROUP BY
JOB
--READONLY TABLE
ALTER TABLE TEST_VIR READ ONLY
ALTER TABLE TEST_VIR READ WRITE
--RENAME TABLESPACE
ALTER TABLESPACE <OLD_TABL_SPACE> RENAME TO <NEW_TAB_SPACE>
--DEFAULT VALUE IN TABLE ----> THIS HAS RESOLVED OVERHEAD
--SKIP LOCKED
--TABLESPACE IN GLOBAL TEMP TABLES
--NAMED NOTATION
FN_S_M_SUB(P_NUM2 => 20, P_NUM1 => = 10)

ANALYTIC FUNCTIONS
SELECT empno, deptno, COUNT(*) OVER ( ) CNT
FROM scott.emp
WHERE deptno IN (10, 20);

EMPNO DEPTNO CNT


7369 20 8
7566 20 8
7782 10 8
7788 20 8
7839 10 8
7876 20 8
7902 20 8
7934 10 8

SELECT empno, deptno, sal,


SUM(sal) OVER (PARTITION BY deptno) AS avg_dept_sal
FROM emp;

EMPNO DEPTNO SAL AVG_DEPT_SAL


7782 10 2450.00 8750
7839 10 5000.00 8750
7934 10 1300.00 8750

GNANA IT SOLUTIONS, SQL MATERIAL


42

7566 20 2975.00 10875


7902 20 3000.00 10875
7876 20 1100.00 10875
7369 20 800.00 10875
7788 20 3000.00 10875
7521 30 1250.00 9400
7844 30 1500.00 9400
7499 30 1600.00 9400
7900 30 950.00 9400
7698 30 2850.00 9400
7654 30 1250.00 9400

SELECT empno, deptno, sal,


SUM(sal) OVER (PARTITION BY deptno ORDER BY sal) AS avg_dept_sal
FROM emp;

EMPNO DEPTNO SAL AVG_DEPT_SAL


7934 10 1300.00 1300
7782 10 2450.00 3750
7839 10 5000.00 8750
7369 20 800.00 800
7876 20 1100.00 1900
7566 20 2975.00 4875
7788 20 3000.00 10875 ---- giving same total o/p for
same salary
7902 20 3000.00 10875 ---- giving same total o/p for
same salary
7900 30 950.00 950
7654 30 1250.00 3450 ---- giving same total o/p for
same salary
7521 30 1250.00 3450 ---- giving same total o/p for
same salary
7844 30 1500.00 4950
7499 30 1600.00 6550
7698 30 2850.00 94000

SELECT empno, deptno, sal,


sum(sal) OVER (PARTITION BY deptno ORDER BY SAL
ROWS UNBOUNDED PRECEDING) AS avg_dept_sal
FROM scott.emp;

--- all the avg_dept_sal having different o/p values


EMPNO DEPTNO SAL AVG_DEPT_SA
L
7934 10 1300.0 1300
0

GNANA IT SOLUTIONS, SQL MATERIAL


43

7782 10 2450.0 3750


0
7839 10 5000.0 8750
0
7369 20 800.00 800
7876 20 1100.0 1900
0
7566 20 2975.0 4875
0
7788 20 3000.0 7875
0
7902 20 3000.0 10875
0
7900 30 950.00 950
7654 30 1250.0 2200
0
7521 30 1250.0 3450
0
7844 30 1500.0 4950
0
7499 30 1600.0 6550
0
7698 30 2850.0 9400
0
The ORDER BY clause is used to sort the data. Here the ROWS UNBOUNDED PRECEDING option
specifies that the SUM analytic function should operate on the current row and the pervious
rows processed.

Functions like LEAD, LAG, RANK, DENSE_RANK, ROW_NUMBER, FIRST, FIRST


VALUE, LAST, LAST VALUE depends on order of records.

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.

SELECT empno, deptno, hiredate,

GNANA IT SOLUTIONS, SQL MATERIAL


44

ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY hiredate NULLS LAST) SRLNO


FROM SCOTT.emp
WHERE deptno IN (10, 20)
ORDER BY deptno, SRLNO;

EMPNO DEPTNO HIREDATE SRLNO


7782 10 1981/06/09 1
7839 10 1981/11/17 2
7934 10 1982/01/23 3
7369 20 1980/12/17 1
7566 20 1981/04/02 2
7902 20 1981/12/03 3
7788 20 1987/04/19 4
7876 20 1987/05/23 5

RANK and DENSE_RANK:

SELECT empno, deptno, sal,


RANK() OVER (PARTITION BY deptno ORDER BY sal DESC NULLS LAST)
RANK,
DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal DESC NULLS LAST)
DENSE_RANK
FROM emp
WHERE deptno IN (10, 20)
ORDER BY 2, RANK;

EMPNO DEPTNO SAL RANK DENSE_RANK


7839 10 5000.00 1 1
7782 10 2450.00 2 2
7934 10 1300.00 3 3
7788 20 3000.00 1 1
7902 20 3000.00 1 1
7566 20 2975.00 3 2
7876 20 1100.00 4 3
7369 20 800.00 5 4

LEAD and LAG:


LEAD has the ability to compute an expression on the next rows (rows which are going to come
after the current row) and return the value to the current row. The general syntax of LEAD is

GNANA IT SOLUTIONS, SQL MATERIAL


45

shown below:
LEAD (<sql_expr>, <offset>, <default>) OVER (<analytic_clause>)

SELECT ename, hiredate,


LEAD(hiredate, 2) OVER (ORDER BY hiredate) AS NextHired
FROM scott.emp WHERE deptno = 30;

ENAME HIREDATE NEXTHIRED


ALLEN 1981/02/20 1981/05/01
WARD 1981/02/22 1981/09/08
BLAKE 1981/05/01 1981/09/28
TURNER 1981/09/08 1981/12/03
MARTIN 1981/09/28
JAMES 1981/12/03

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;

ENAME HIREDATE NEXTHIRED


ALLEN 1981/02/20
WARD 1981/02/22
BLAKE 1981/05/01 1981/02/20
TURNER 1981/09/08 1981/02/22
MARTIN 1981/09/28 1981/05/01
JAMES 1981/12/03 1981/09/08

SELECT ename, hiredate,


LEAD(hiredate,2,SYSDATE) OVER (ORDER BY hiredate) AS LEAD_HIREDATE ,
LAG(hiredate,3, SYSDATE) OVER (ORDER BY hiredate) AS LAG_HIREDATE
FROM scott.emp WHERE deptno = 30;

ENAME HIREDATE LEAD_HIREDATE LAG_HIREDATE

GNANA IT SOLUTIONS, SQL MATERIAL


46

ALLEN 1981/02/20 1981/05/01 2012/11/28 06:03:52


nm
WARD 1981/02/22 1981/09/08 2012/11/28 06:03:52
nm
BLAKE 1981/05/01 1981/09/28 2012/11/28 06:03:52
nm
TURNER 1981/09/08 1981/12/03 1981/02/20
MARTIN 1981/09/28 2012/11/28 06:03:52 1981/02/22
nm
JAMES 1981/12/03 2012/11/28 06:03:52 1981/05/01
nm

SQL QUERIES

1. Display the dept information from department table


2. Display the details of all employees
3. Display the ename and job for all employees
4. Display name and salary for all employees
5. Display employee number and total salary for each employee
6. Display employee name and annual salary for all employees
7. Display the names of all employees who are working in department number 10?
8. Display the names of all employees workings as clerks and drawing a salary more than 3000?
9. Display employee number and names for employees who EARN COMMISSION
10. Display name of employees who do not earn any commission.
11. Display the names of employees who are working as clerk,salesman or analyst and drawing a
salary more than 3000.
12. Display the names of employee who are working in the company fast five years
13. Display the list of Employees who have joined the company before 30th june 90 or after 31st dec
90.
14. Display current Date.
15. Display the list of users in your database (using log table)
16. Display the names of all tables from the current user
17. Display the name of current user?
18. Display the names of employees working in department number 10 or 20 or 40 or employees
working as clerks , salesman or analyst?
Display the names of employees whose name starts with alphabet s
19. Display employee names for employees whose name ends with alphabet s
20. Display the names of employees whose names have second alphabet A in their names
21. Display the names of employees whose name is exactly five characters in length
22. display the names of employees who are not working as managers

GNANA IT SOLUTIONS, SQL MATERIAL


47

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.

GNANA IT SOLUTIONS, SQL MATERIAL


48

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.

GNANA IT SOLUTIONS, SQL MATERIAL


49

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.

GNANA IT SOLUTIONS, SQL MATERIAL


50

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.

GNANA IT SOLUTIONS, SQL MATERIAL


51

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.

GNANA IT SOLUTIONS, SQL MATERIAL


52

GNANA IT SOLUTIONS, SQL MATERIAL

You might also like