Oracle SQL notes
Oracle SQL notes
Database:
Database is a place or medium which is used to store the data in a systematic and
organized manner.
data
Database
On database we can perform some operations called CRUD i.e.,
o create/insert
o read/retrieve
o update/modify
o delete/drop
Example: Gallery, Google Drive.
Database Management System (DBMS):
DBMS is the Software which is used to maintain and manage database.
Data Software
o Security
o Authentication
Query
Database
Language
o Security
o Authentication
Structured
Query
Language
columns/Attributes/Fields
Rows
Tuples
Example:
Employee Properties
EID
ENAME
SALARY
2. According to E.F. CODD we can store data in multiple tables if needed we can
establish a connection between the tables with the help of “Key Attributes”.
Data
Database
3. In RDBMS we can store data in the form, of tables including meta data.
Metadata:
Metadata is details about the data.
Metadata will be stored in meta table.
Meta Tables are auto generated or Auto Created.
Example:
Meta Table
IMG NAME SIZE FORMAT
IMG01 4MB JPEG
4. A Data Entered into the table can be validated with two steps
i. By Assigning “Datatypes”
ii. By Assigning “Constraints”
4. NUMBER:
NUMBER is used to store the numerical values.
Syntax: NUMBER (precision, [scale])
Precision:
Precision determines no of integer values to be store.
The range for precision is 1 to 38.
Scale:
Scale determines no of decimal points to be stored within the given precision.
Scale is optional.
The default value for scale is 0.
Example:
NUMBER (2) NUMBER (5,3)
+- 9 9 +- 9 9.9 9 9
NUMBER (4,2) NUMBER (2,4)
+- 9 9.9 9 +- 0.0 0 9 9
NUMBER (2,2) NUMBER (7,2)
+- 0.9 9 +- 9 9 9 9 9 . 9 9
5. LARGE OBJECTS:
CHARACTER LARGE OBJECT(CLOB):
CLOB is used to store the characters up to 4GB of size.
BINARY LARGE OBJECT(BLOB):
Binary Large Object is used to store the binary values of Images, Videos, Mp3, Mp4,
Documents up to 4GB of size.
Constraints:
Constraints is a Rule Given to the column for Data Validation.
Some of the constraints are
1. UNIQUE
2. NOT NULL
3. CHECK
4. PRIMARY KEY
5. FOREIGN KEY
1. UNIQUE:
UNIQUE Constraint is used to avoid Duplicate or Repeated values into the column.
2. NOT NULL:
NOT NULL Constraint is used to Avoid Null in the Column.
3. CHECK:
CHECK is an extra validation given to the column if the check condition is satisfied
value will be Accepted else Rejected.
Example:
EMP
EMP NO ENAME SALARY
UNIQUE NOT NULL CHECK(SAL>0)
NOT NULL
1 Allen 500
2 Smith 600
3 Miller 1000
4 King 2000
Primary key:
Primary key is a constraint which is used to identify the record uniquely from the
particular table.
Properties of primary key:
In a table primary key is not mandatory but it is highly recommended.
In a table we can have only one primary key.
Primary key will not accept duplicate or repeated values.
Primary key will not accept NULL.
Primary key is always a combination of UNIQUE and NOT NULL
constraints.
Foreign Key:
Foreign Key is used to establish a connection b/w the tables.
Properties of Foreign Key:
In a table we can have more than one foreign key.
Foreign key will accept duplicate or repeated values.
Foreign key will accept NULL.
Foreign key is not a combination of UNIQUE and NOT NULL constraints.
If we want to take any attribute as a foreign key first it as to be a primary key
in its own table.
EMP
EMP No ENAME SAL DEPT
NO DEPT DNAME LOCATION
UNIQUE NOT NULL CHECK FK
NOT (SAL>0)
NULL PK NOT NOT NULL
1 ALLEN 2000 10 NULL
2 SMITH 3000 10 10 D1 L1
3 SCOTT 4000 NULL 20 D2 L2
4 MILLER 5000 20 30 D3 L3
DEPT NO DEPT
PK
Components of SQL:
There are 5 components/languages/statements.
1. Data Query Language (DQL)
2. Data Definition Language (DDL)
3. Data Manipulation Language (DML)
4. Transaction Control Language (TCL)
5. Data Control Language (DCL)
1. Data Query Language (DQL):
Data Query Language is used to extract or retrieve the data from the database.
It had four statements
1. SELECT CLAUSE
2. PROJECTION
3. SELECTION
4. JOINS
1. SELECT CLAUSE:
SELECT CLAUSE is used to select the data and display data.
SELECT CLAUSE is used to prepare result table.
2. PROJECTION:
PROJECTION is a process of retrieving the data by selecting only columns.
Syntax: SELECT */[DISTINCT] column_name/Expression [ALIAS] FROM
Table_name;
Order of Execution:
1-FROM
2-SELECT
Example: Write a Query to display ENAMES.
SELECT ENMAE FROM EMP;
DATABASE
EMP
EMP
EMP NO ENAME SAL ENAME
Result 1 ALLEN 1000 ALLEN Result of
of from 2 SMITH 3000 SMITH select
clause 3 SCOTT 4000 SCOTT clause
4 KING 5000 KING
DISTINCT CLAUSE:
DISTINCT CLAUSE is used to remove the duplicates or repeated values from the
result table.
DISTINCT CLAUSE as to be the first argument to the select clause.
We can pass more than one column to distinct clause.
DISTINCT CLAUSE will remove combination of records.
Example:
i. WAQTD different deptnos?
Select distinct deptno from emp;
ii. WAQTD distinct deptno and
ename?
Select distinct deptno,ename from emp;
O/P
EMP
DEPTNO ENAME
DEPTNO ENAME
10 ALLEN 10 ALLEN
10 SMITH 10 SMITH
10 ALLEN 20 SCOTT
20 SCOTT 30 KING
30 KING
Expression:
Any statement which generates result is known as Expression.
Example:
5 + 5 = 10
Operands:
1.col_name
2.Literals
i. Character literals Case sensitive( ‘ ’)
ii. Date literals
iii. Number literals
ALIAS:
SELECTION:
Selection is a process of retrieving the data by selecting columns as well as rows.
Syntax:
SELECT */[DISTINCT] COLUMN_NAME/EXPRESSION[ALIAS] FROM
TABLE_NAME WHERE <FILTER CONDITION>;
Order of execution:
1-From
2-where
3-select
Example:
WAQTD ENAME WORING IN DEPTNO 20.
3-SELECT ENAME
1-FROM EMP
2-WHERE DEPTNO=20;
EMP
3 SCOTT 4000 20
4 MILLER 1500 10
5 KING 5000 20
ENAME
SCOTT
KING
After 81
Hiredate>’31-DEC-81’
Or
Hiredate >=’01-JAN-82’
Before 81
Hiredate<’01-JAN-81’
Or
Hiredate<=’31-DEC-80’
OPERATORS:
Operators which is used to perform specific operation.
In SQL
1. ARITHMETIC OPERATORS (+,-,*,/)
2. COMPARISION OPERATORS (=,!=,>=,<=)
3. RELATIONAL OPERATORS (>,<,>=,<=)
4. CONCATINATION OPERATORS (||)
5. LOGICAL OPERATORS (AND,OR,NOT)
6. SPECIAL OPERATORS
i. IN
ii. NOT IN
iii. BETWEEN
iv. NOT BETWEEN
v. IS
vi. IS NOT
vii. LIKE
viii. NOT LIKE
7.SUB QUERY OPERATORS
i. ALL
ii. ANY
iii. EXISTS
iv. NOT EXISTS
CONCTINATION OPERATORS:
CONCATINATION OPERATOR IS USED TO JOIN STRINGS.
EX 1: SELECT ‘HI FRIENDS’ || ‘BYE FRIENDS’
O/P: HI FRIENDS BYE FRIENDS
EX 2: SELECT ‘HI’ || ENAME || ‘HOW R U’ FROM EMP;
O/P: HI SCOTT HOW R U
LOGICAL OPERATORS:
IT IS USED TO WRITE MULTIPLE FILTER CONDITIONS.
AND:
A
RESULT
B
TRUTH TABLE:
A B RESULT
T F T
F T T
T T T
F F F
NOT(T) ------F
NOT(F) ------T
EXAMPLES:
1.WAQTD ENAME WORKING AS MANAGER IN DEPTNO 20?
SELECT ENAME
FROM EMP
WHERE JOB=’MANAGER’ AND DEPTNO=20;
2.WAQTD ENAME WORKING IN DEPTNO 10 AND 20?
SELECT ENAME
FROM EMP
WHERE DEPTNO=10 OR DEPTNO=20;
3.WAQTD ENAME NOT WORKING IN DEPTNO 10?
SELECT ENAME
FROM EMP
WHERE NOT(DEPTNO=10); OR DEPTNO!=10;
1.WAQTD DETAILS OF THE EMPLOYEES WORKING AS CLERK AND
EARNING LESS THAN 1500?
SELECT * FROM EMP WHERE JOB='CLERK' AND SAL<1500;
2.WAQTD NAME AND HIREDATE OF THE EMPLOYEES WORKING AS
MANAGER IN DEPT 30?
SELECT ENAME,HIREDATE FROM EMP WHERE JOB='MANAGER' AND
DEPTNO=30;
3. WAQTD DETAILS OF THE EMP ALONG WITH ANNUAL SALARY IF THEY
ARE WORKING IN DEPT 30 AS SALESMAN AND THEIR ANNUAL SALARY
HAS TO BE GREATER THAN 14000 ?
SELECT EMP.*,SAL*12 ANNUAL_SAL FROM EMP WHERE DEPTNO=30 AND
JOB='SALESMAN' AND SAL*12>14000;
4.WAQTD ALL THE DETAILS OF THE EMP WORKING IN DEPT 30 OR AS
ANALYST ?
SELECT * FROM EMP WHERE DEPTNO=30 OR JOB='ANALYST';
5. WAQTD NAMES OF THE EMPMLOYEES WHOS SALARY IS LESS THAN
1100 AND THEIR DESIGNATION IS CLERK?
SELECT ENAME FROM EMP WHERE SAL<1100 AND JOB='CLERK';
6.WAQTDNAME AND SAL, ANNUAL SAL AND DEPTNO IF DEPTNO IS 20
EARNING MORE THAN 1100 AND ANNUAL SALARY EXCEEDS 12000 ?
SELECT ENAME,SAL,DEPTNO,SAL*12 ANNUAL_SAL FROM EMP WHERE
DEPTNO=20 AND SAL>1100 AND SAL*12>12000;
7.WAQTD EMPNO AND NAMES OF THE EMPLOYEES WORKING AS
MANAGER IN DEPT 20?
SELECT ENAME,EMPNO FROM EMP WHERE JOB='MANAGER' AND
DEPTNO=20;
8.WAQTD DETAILS OF EMPLOYEES WORKING IN DEPT 20 OR 30?
SELECT * FROM EMP WHERE DEPTNO=20 OR DEPTNO=30;
9.WAQTD DETAILS OF EMPLOYEES WORKING AS ANALYST IN DEPT 10?
SELECT * FROM EMP WHERE JOB='ANALYST' AND DEPTNO=10;
10.WAQTD DETAILS OF EMPLOYEE WORKING AS PRESIDENT WITH
SALARY OF RUPEES 4000?
SELECT * FROM EMP WHERE JOB='PRESIDENT' AND SAL=4000;
SPECIAL OPERATORS:
SPECIAL OPERATOR IS USED TO REDUCE THE LENGTH OF THE QUERY AND
PERFORM OPERATIONS EASILY.
1.IN:
IT IS A MULTIVALUED OPERATOR WHICH WILL TAKE MULTIPLE VALUES OF
R.H.S.
IN OPERATOR IS REPLACEMENT OF EQUAL TO OPERATOR.
SYNTAX: COL_NAME / EXP IN(V1,V2………….Vn);
EX: WAQTD ENAMES WORING IN DEPTNO 10 OR 20?
SELECT ENAME
ALLEN
FROM EMP
SCOTT
WHERE DEPTNO IN (10,20); KING
ITERATIONS:
EMP
ENAME DEPTNO
ALLEN 10
SMITH 30
SCOTT 20
KING 10
2.NOT IN :
NOT IN IS SIMILAR TO IN OPERATOR INSTEAD OF SELECTING THE RECORDS IT
WILL REJECT RECORDS
SYNTAX: COL_NAME / EXP NOT IN(V1,V2………..Vn);
EMP
ENAME DEPTNO
ALLEN 10
SMITH 20
SCOTT 30
KING 10
EX: WAQTD ENAME NOT WORKING IN DEPTNO 10 AND 20?
SELECT ENAME
SCOTT
FROM EMP
WHERE DEPTNO NOT IN (10,20);
ITERATIONS:
ENAME SAL
ALLEN 2000
SMITH 3000
SCOTT 1000
JAMES 4000
KING 5000
ENAME SAL
ALLEN 2000
SMITH 4000
KING 5000
EX: WAQTD ENAMES NOT EARNING SALARY IN THE RANGE 1000 TO 4000?
SELECT ENAME KING
FROM EMP
WHERE SAL NOT BETWEEN 1000 AND 4000;
5.IS :
THIS OPERATOR IS USED TO COMPARE NULL IN THE COLUMN.
SYNTAX: COL_NAME / EXP IS NULL;
NULL= RHS
EMP
ENAME SAL
ALLEN 2000
SMITH 1000
KING NULL
SCOTT 3500
ENAME SAL
ALLEN 2000
SMITH 1000
KING NULL
SCOTT 3500
EX1: WAQTD ENAMES EARNING SALARY ?
SELECT ENAME
FROM EMP
WHERE SAL IS NOT NULL;
ITERATIONS:
2000 IS NOT NULL ----------------- T
1000 IS NOT NULL ----------------- T
NULL IS NOT NULL ----------------- F
3500 IS NOT NULL ----------------- T
7.LIKE:
THIS OPERATOR IS USED FOR PATTERN MATCING.
SYNTAX: COL_NAME / EXP LIKE ‘PATTERN’;
TO ACHIEVE PATTERN MATCHING WE HAVE TWO SPECIAL
CHARACTERS.
PERCENTILE (‘%’) :
IT DETERMINES ZERO OR ANY NUMBER OF CHARACTERS IT MIGHT BE ANY
CHARACTERS.
UNDERSCORE (‘_’):
IT DETERMINES EXACTLY ONE CHARACTER AT A TIME IT MIGHT BE ANY
CHARACTER.
EX PATTERNS:
‘%S’
‘S%’
‘%S%’
‘%S%S%’
‘%50’
‘S%H’
EX1: WAQTD ENAME HAVING ‘A’ OF THE SECOND CARACTER IN NAME
SELECT ENAME
FROM EMP
WHERE ENAME LIKE ‘_A%’;
EX2: WAQTD ENAME HAVING EXACTLY 4 CHARACTERS.
SELECT ENAME
FROM EMP
WHERE ENAME LIKE ‘____’;
EX3:WAQTD ENAMES OF EMPLOYEES HIRING IN FEBRUARY.
SELECT ENAME
FROM EMP
WHERE HIREDATE LIKE ‘%FEB%;
OR
SELECT ENAME
FROM EMP
WHERE HIREDATE LIKE ‘__-FEB-__;
SELECT ENAME
FROM EMP
WHERE ENAME LIKE ‘%S%S%’;
SELECT ENAME
FROM EMP
WHERE ENAME LIKE ‘%LL%’;
8.NOT LIKE:
IT IS OPPOSITE TO LIKE OPERATOR.
SYNTAX: COL_NAME / EXP NOT LIKE ‘PATTERN’;
EX1: WAQTD ENAME WHICH DOES NOT START WITH CHAR ‘A’?
SELECT ENAME
FROM EMP
WHERE ENAME NOT LIKE ‘A%’;
EX2: WAQTD ENAME & HIREDATE WHOSE NAME DOES NOT END WITH ‘N’?
SELECT ENAME,HIREDATE
FROM EMP
WHERE ENAME NOT LIKE ‘%N’;
1) WAQTD ENAMES WHOSE COMMISSION IS NULL AND WORKING IN
DEPTNO 30?
SELECT ENAME FROM EMP WHERE COMM IS NULL AND DEPTNO IN 30;
2) LIST ALL THE EMPLOYEES WHO DON'T HAVE A REPORTING
MANAGER?
SELECT * FROM EMP WHERE MGR IS NULL;
3) LIST ALL THE SALESMEN IN DEPT 30?
SELECT * FROM EMP WHERE JOB IN ‘SALESMAN’ AND DEPTNO IN 30;
4) LIST ALL THE SALESMEN IN DEPT NUMBER 30 AND HAVING SALARY
GREATER THAN 1500?
SELECT * FROM EMP WHERE JOB IN ‘SALESMAN’ AND DEPTNO IN 30
AND SAL>1500;
5) LIST ALL THE EMPLOYEES WHOSE NAME STARTS WITH 'S' OR 'A'?
SELECT * FROM EMP WHERE ENAME LIKE ‘A%’ OR ENAME LIKE ‘S%’;
6) LIST ALL THE EMPLOYEES EXCEPT THOSE WHO ARE WORKING IN
DEPT 10 & 20?
SELECT * FROM EMP WHERE DEPTNO NOT IN (10,20);
7) LIST THE EMPLOYEES WHOSE NAME DOES NOT START WITH 'S'?
SELECT * FROM EMP WHERE ENAME NOT LIKE ‘S%’;
8) LIST ALL THE EMPLOYEES WHO ARE HAVING REPORTING MANAGERS
IN DEPT 10 9) LIST ALL THE EMPLOYEES WHOSE COMMISSION IS NULL
AND WORKING AS CLERK?
SELECT * FROM EMP WHERE MGR IS NOT NULL AND DEPTNO IN 10;
10) LIST ALL THE EMPLOYEES WHO DON'T HAVE A REPORTING
MANAGER IN DEPTNO 10 OR 30?
SELECT * FROM EMP WHERE MGR IS NULL AND DEPTNO IN (10,30);
11) LIST ALL THE SALESMEN IN DEPT 30 WITH SAL MORE THAN 2450 ?
SELECT * FROM EMP WHERE JOB IN ‘SALESMAN’ AND DEPTNO IN 30
AND SAL>2450;
12) LIST ALL THE ANALYST IN DEPT NUMBER 20 AND HAVING SALARY
GREATER THAN 2500?
SELECT * FROM EMP WHERE JOB IN ‘ANALYST’ AND DEPTNO IN 20 AND
SAL>2500;
13) LIST ALL THE EMPLOYEES WHOSE NAME STARTS WITH 'M' OR 'J'?
SELECT * FROM EMP WHERE ENAME LIKE ‘M%’ OR ENAME LIKE ‘J%’;
14) LIST ALL THE EMPLOYEES WITH ANNUAL SALARY EXCEPT THOSE
WHO ARE WORKING IN DEPT 30?
SELECT EMP.*,SAL*12 ANNUAL_SAL FROM EMP WHERE DEPTNO NOT IN
30;
15) LIST THE EMPLOYEES WHOSE NAME DOES NOT END WITH 'ES' OR 'R'?
SELECT * FROM EMP WHERE ENAME NOT LIKE ‘%ES’ AND ENAME NOT
LIKE ‘%R’;
16) LIST ALL THE EMPLOYEES WHO ARE HAVING REPORTING
MANAGERS IN DEPT 10 ALONG WITH 10% HIKE IN SALARY?
SELECT EMP.* ,SAL+SAL*0.1 “10% HIKE” FROM EMP WHERE MGR IS NOT
NULL AND DEPTNO IN 10;
17) DISPLAY ALL THE EMPLOYEE WHO ARE 'SALESMAN'S HAVING 'E' AS
THE LAST BUT ONE CHARACTER IN ENAME BUT SALARY HAVING
EXACTLY 4 CHARACTERS?
SELECT * FROM EMP WHERE JOB=’SALESMAN’ AND ENAME LIKE ‘%E_’
AND SAL LIKE ‘____’;
18) DISPLAY ALL THE EMPLOYEE WHO ARE JOINED AFTER YEAR 81?
SELECT * FROM EMP WHERE HIREDATE >’31-DEC-81’;
19) DISPLAY ALL THE EMPLOYEE WHO ARE JOINED IN FEB?
SELECT * FROM EMP WHERE HIREDATE LIKE ‘%FEB%’;
20) LIST THE EMPLOYEES WHO ARE NOT WORKING AS MANAGERS AND
CLERKS IN DEPT 10 AND 20 WITH A SALARY IN THE RANGE OF 1000 TO
3000?
SELECT * FROM EMP WHERE JOB NOT IN(‘MANAGER’,’CLERK’) AND DEPTNO IN
(10,20) AND SAL BETWEEN 1000 AND 3000;
21)WAQTD THE COMMISION OF THE EMPLOYEES WHO JOB IS CLERK?
SELECT COMM FROM EMP WHERE JOB=’CLERK’;
22)DISPLAY ALL THE EMPLOYEES WHO ARE MANAGER HAVING ‘R’ AT LAST
BUT ONE CHARACTER ALONG WITH THE HIKE OF 20% IN SALARY?
SELECT EMP.*,SAL+SAL*0.2 HIKE_SAL FROM EMP WHERE JOB=’MANAGER’
AND ENAME LIKE ‘%R_’;
23)WAQTD EMPLOYEE NAME WHOSE NAME LIKE HAVING ‘E’ AND EMPLOYEE
HAVING COMMISION MORE THAN SALARY?
SELECT ENAME FROM EMP WHERE ENAME LIKE ‘%E%’ AND COMM>SAL;
24)WAQTD JOB AND SALARY OF THE EMPLOYEE WHO JOINED AFTER YEAR 81?
SELECT JOB,SAL FROM EMP WHERE HIREDATE>’31-DEC-81’;
25)WAQTD JOB OF THE EMPLOYEE WHOSE SALARY IS GREATERTHAN 2975
AND WORKING AS SALESMAN?
SELECT JOB FROM EMP WHERE SAL>2975 AND JOB=’SALESMAN’;
26)WAQTD EMPLOYEES EARNING MORE THAN 2000 RUPEES PER MONTH AND
JOINED AFTER 81?
SELECT * FROM EMP WHERE SAL>2000 AND HIREDATE>’31-DEC-81’;
27)WAQTD EMP NAME AND JOB OF THE EMPLOYEE WHO ARE JOINED IN ’14-
FEB-86’ AND SAL MORE THAN 2000?
SELECT ENAME,JOB FROM EMP WHERE HIREDATE=’14-FEB-86’ AND SAL>2000;
28)WAQTD TO WHO JOINED AFTER 82 AND SALARY BETWEEN 1000 AND 5000?
SELECT * FROM EMP WHERE HIREDATE>’31-DEC-82’ AND SAL BETWEEN 1000
AND 5000;
29)WAQTD DEPTNO OF THE EMPLOYEES ALONG WITH SALARY WHOSE JOB IS
CLERK AND MANAGER ID IS 7839 AND SALARY LESSER THAN 3500?
SELECT DEPTNO,SAL FROM EMP WHERE JOB IN ‘CLERK’ AND MGR IN 7839 AND
SAL<3500;
30)WAQTD EMPLOYEE NUMBER WHOSE SALARY IS MORE THAN COMMISION
AND JOB IS MANAGER?
SELECT EMPNO FROM EMP WHERE SAL>COMM AND JOB=’MANAGER’;
31)LIST EMPNO AND HIREDATE WHOSE HIREDATE WHOSE HIREDATE DURING
THE YEAR 82 AND 89?
SELECT EMPNO,HIREDATE FROM EMP WHERE HIREDATE BETWEEN ’01-JAN-82’
AND ’31-DEC-89’;
32)LIST EMPLOYEES WHOSE DESIGNATION IS MANAGER AND NAME HAS LAST
SECOND CHARACTER IS ‘L’ WITH SALARY CONSISTING OF 4 DIGITS?
SELECT * FROM EMP WHERE JOB=’MANAGER’ AND ENAME LIKE ‘%L_’ AND
SAL LIKE ‘____’;
33)LIST THE EMPLOYEES NAME AND DEPTNO WHO IS NOT EARNING
COMMISION BUT EARNING SALARY IN THE RANGE OF 1800 AND 3400 IN
DEPTNO 10,20?
SELECT ENAME,DEPTNO FROM EMP WHERE COMM IS NULL AND SAL
BETWEEN 1800 AND 3400 AND DEPTNO IN (10,20);
34)WAQTD EMPNO AND HIREDATE WHOSE EMPNO ENDS WITH ‘9’ HAVING
COMMISION MORE THAN SALARY?
SELECT EMPNO,HIREDATE FROM EMP WHERE EMPNO LIKE ‘%9’ AND
COMM>SAL;
35)WAQTD EMPNAME AND ANNUAL SAL WHO ARE WORKING IN DEPTNO 20
AND 30 AND THEIR MANAGER ARE 7654,7839?
SELECT ENAME,SAL*12 ANNUAL_SAL FROM EMP WHERE DEPTNO IN (20,30)
AND MGR IN (7654,7839);
FUNCTIONS:
A COLLECTION OF PROGRAMS OR SET OF INSTRUCTIONS TO BE PROCESSED
AND EXECUTED TO PERFORM SPECIFIC TASK IS CALLED FUNCTION.
THERE ARE TWO TYPES:
1. USER DEFINED FUNCTIONS
2. BUILT IN FUNCTIONS OR PREDEFINED FUNCTIONS
SINGLE ROW FUNCTIONS
MULTI ROW FUNCTIONS OR AGGREGATE FUNTIONS OR GROUPING
FUNCTIONS
SINGLE ROW FUNCTIONS:
SINGLE ROW FUNCTIONS WILL TAKE ‘n’ NUMBER OF INPUTS THEN PROCESS IT
AND GIVES ‘n’ NUMBER OF OUTPUT
SRF()
I/P O/P
1 1
2 2
. .
N N
EX: 1
2
MAX(): 1 O/P
n MAXIMUM SALARY IN EMPLOYEES TABLE.
WAQTD
SELECT MAX(SAL)
FROM EMP;
EMP MAX(SAL)
I/P
SAL O/P
2000 5000
2500
4000
5000
5 MILLER 4000 20
30
4 JAMES 3500 30
NOTE: A COLUMN USED IN GROUP BY CLAUSE CAN BE WRITTEN IN
SELECT CLAUSE.
RESULT OF FROM CLAUSE RESULT OF GROUP BY CLAUSE RESULT OF SELECT CLAUSE
DATABASE
EMP
10 3>=3
EMP
1 ALLEN 2000 10
EMPNO ENAME SAL DEPTNO 5 KING 5000 10
1 ALLEN 2000 10 6 FORD 3500 10
2 SMITH 3000 20 1 ALLEN 2000 10
3 SCOTT 2500 30 COUNT(*) DEPTNO
20 2>=3 5 KING 5000 10
4 JAMES 1500 20 3 10
6 FORD 3500 10
5 KING 5000 10
6 FORD 3500 10 2 SMITH 2000 20
7 ADAM 4000 30 4 JAMES 1500 20
RESULT OF
RESULT OF FROM CLAUSE 30 2>=3 RESULT OF SELECT
HAVING CLAUSE
3 SCOTT 2500 30
7 ADAM 4000 30 CLAUSE
SUB QUERY:
A QUERY WRITTEN INSIDE ANOTHER QUERY IS CALLED SUBQUERY.
WORKING:
OUTER QUERY
I/P DEPENDENT
TOP
INNER QUERY
OR
SUB QUERY
BOTTOM
EXPLANATION:
LET US CONSIDER TWO QUERIES i.e., OUTER QUERY AND INNER
QUERY OR SUBQUERY.
INNER QUERY STARTS EXECUTION FIRST.
INNER QUERY WILL EXECUTE AND GENERATES AN OUTPUT.
THE OUTPUT GENERATED BY THE INNER QUERY WILL BE
FETCHED AS AN INPUT TO THE OUTER QUERY.
BY TAKING TE RESULT OR OUTPUT OF AN INNER QUERY AS AN
INPUT OUTER QUERY WILL EXECUTE COMPLETELY AND
GENERATES FINAL RESULT.
HENCE, WE CAN STATE THAT OUTER QUERY IS DEPENDENT ON
INNER QUERY OR SUB QUERY.
NOTE:
SUB QUERY WORKS FROM BOTTOM TO TOP APPROACH.
FOR SUBQUERIES BRACKETS ARE MANDATORY.
TO COMPARE OUTER QUERY AND INNER QUERY WE CAN USE
DIFFERENT COLUMNS BUT DATATYPE OF THE COLUMN MUST BE
SAME.
IN SUB QUERY WE CAN PASS ONLY ONE ARGUMENT TO SELECT
CLAUSE.
OUTER QUERY DON’T KNOW OR DON’T CARE WHAT IS THERE IN
INNER QUERY.
OUTER QUERY CONSIDERS ONLY THE RESULT GENERATED BY
THE INNER QUERY OR SUB QUERY.
WHEN/WHY?
CASE1:WHENEVER UNKNOWNS PRESENT IN THE QUESTION OR
INDIRECT QUESTION THEN WE WILL GO WITH SUBQUERY CASE1.
EX: WAQTD ENAME EARNING SALARY MORE THAN SCOTT.
EMP
EMPNO ENAME SAL DEPTNO
1 ALLEN 1500 10
2 SMITH 2000 20
3 SCOTT 3000 30
4 FORD 1800 10
5 KING 5000 10
ITERATIONS:
1500>3000 F
2000>3000 F
3000>3000 F
1800>3000 F
5000>3000 T
NOTE:
WE CANNOT IDENTIFY SUB QUERY RETURNS SINGLE ROW OR MULTI
ROW ,SO ALWAYS USE SPECIAL OPERATORS(IN OR NOT IN).
EX: WAQTD ENAMES EARNING SALARY MORE THAN ANY OF THE EMP’S
OF DEPTNO 10?
SELECT ENAME
FROM EMP
WHERE SAL>ANY(SELECT SAL FROM EMP WHERE DEPTNO=10);
ITERATIONS:
2000>ALL(20 3000>ALL(20 4000>ALL(20 2500>ALL(20 5000>ALL(20
00,4000) 00,4000) 00,4000) 00,4000) 00,4000)
2000>2000 F 3000>2000 T 4000>2000 T 2000>2000 T 2000>2000 T
2000>4000 F 3000>4000 F 4000>4000 F 2000>4000 F 2000>4000 T
F T T T T
ITERATIONS:
2000=5000 F
3000=5000 F
4000=5000 F
2500=5000 F
5000=5000 T
1.WAQTD NAME OF THE EMPLOYEE EARNING MAXIMUM SALARY AND
WORKING AS MANAGER?
SELECT ENAME FROM EMP
WHERE SAL=(SELECT MAX(SAL) FROM EMP);
2.WAQTD NAME OF THE EMPLOYEE EARNING MINIMUM SALARY?
SELECT ENAME FROM EMP
WHERE SAL=(SELECT MIN(SAL) FROM EMP);
3.WAQTD NAME AND HIREDATE OF THE EMPLOYEE HIRED BEFOREALL
THE EMPLOYEES (FIRST EMP) ?
SELECT ENAME,HIREDATE FROM EMP
WHERE HIREDATE =(SELECT MIN(HIREDATE) FROM EMP);
4.WAQTD NAME AND HIREDATE OF THE EMPLOYEES HIRED AT THE
LAST?
SELECT ENAME,HIREDATE FROM EMP
WHERE HIREDATE=(SELECT MAX(HIREDATE) FROM EMP);
5.WAQTD NAME, COMM OF THE EMPLOYEE WHO EARNS MIN
COMISSION ?
SELECT ENAME,COMM FROM EMP
WHERE COMM=(SELECT MIN(COMM) FROM EMP);
6. WAQTD NAME, SAL AND COMM OF THE EMPLOYEE EARNING
MAXIMUM COMISSION? SAL
2000
SELECT ENAME,SAL,COMM FROM EMP
2500
WHERE COMM=(SELECT MAX(COMM) FROM EMP); 1000
4000
7.WAQTD DETAILS OF THE EMPLOYEE WHO HAS GREATEST 5000
EMPNO?
SELECT * FROM EMP
WHERE EMPNO=(SELECT MAX(EMPNO) FROM EMP);
8.WAQTD DETAILS OF THE EMPLOYEES HAVING THE LEAST HIREDATE ?
SELECT * FROM EMP
WHERE HIREDATE=(SELECT MIN(HIREDATE) FROM EMP);
9. WAQTD DETAILS OF THE EMPLOYEES EARNING LEAST ANNUAL
SALARY?
SELECT * FROM EMP
WHERE SAL*12=(SELECT MIN(SAL*12) FROM EMP);
10.WAQTD NAME ANNUAL SALARY OF THE EMPLOYEES IF THEIR
ANNUAL SALARY IS MORE THAN ALL THE SALESMAN?
SELECT ENAME,SAL*12 AS ANNUAL_SAL FROM EMP
WHERE SAL*12>(SELECT MAX(SAL*12) FROM EMP WHERE
JOB=’SALESMAN’);
NESTED SUB QUERY:
A SUB QUERY WRITTEN INSIDE ANOTHER SUB QUERY IS CALLED
NESTED SUB QUERY.
HENCE, WE CAN NEST UPTO 255 SUB QUERIES.
EX: WAQTD 3RD MAXIMUM SALARY? EMP
SELECT MAX(SAL) 2500
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP));
JOINS:
“JOIN IS A PROCESS OF RETRIEVING THE DATA FROM MULTIPLE
TABLES SIMULTANEOUSLY”
THERE ARE 5 TYPES OF JOINS:
1. CARTESIAN JOIN/CROSS JOIN
2. INNER JOIN/EQUI JOIN
3.OUTER JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
4. SELF JOIN
5. NATURAL JOIN
1.CARTESIAN JOIN/CROSS JOIN:
“A RECORD OF TABLE1 WILL BE MERGED WITH ALL THE OTHER
RECORDS OF TABLE2”
EMP
DEPT DEPTNO DNAME LOC
10 D1 L1
20 D2 L2
30 D3 L3
TABLE1
EMPNO ENAME DEPTNO TABLE2
1 ALLEN 10
2 SMITH 20
3 SCOTT 30
EMPNO ENAME DEPTNO DEPTNO DNAME LOC
1 ALLEN 10 10 D1 L1
1 ALLEN 10 20 D2 L2
1 ALLEN 10 30 D3 L3
2 SMITH 20 10 D1 L1
2 SMITH 20 20 D2 L2
2 SMITH 20 30 D3 L3
3 SCOTT 30 10 D1 L1
3 SCOTT 30 20 D2 L2
3 SCOTT 30 30 D3 NO OF
L3
COLUMNS =
NO OF COLUMNS IN TABLE1+ NO OF COLUMNS IN TABLE 2
NO OF COLUMNS =3+3=6 COLUMNS
NO OF ROWS=NO OF ROWS IN TABLE1* NO OF ROWS IN TABLE2
NO OF ROWS=3*3=9 ROWS
SYNTAX:
1.ANSI: SELECT COLUMN_NAME
FROM TABLE_NAME1 CROSS JOIN TABLE_NAME2;
EX: SELECT *
FROM EMP CROSS JOIN DEPT;
2.ORACLE: SELECT COLUMN_NAME
FROM TABLE_NAME1,TABLE_NAME2;
EX: SELECT * FROM EMP,DEPT;
SYNTAX: TABLE_NAME.COL_NAME=TABLE_NAME.COL_NAME
EX: EMP.DEPTNO=DEPT.DEPTNO
ITERATIONS:
10=10 T 20=10 F 30=10 F
10=20 F 20=20 T 30=20 F
10=30 F 20=30 F 30=30 T
SYNTAX:
1.ANSI: SELECT COLUMN_NAME
FROM TABLE_NAME1 INNER JOIN TABLE_NAME2
ON <JOIN_CONDITION>;
EX:SELECT *
FROM EMP INNER JOIN DEPT
ON EMP.DEPTNO=DEPT.DEPTNO;
2.ORACLE: SELECT COLUMN_NAME
FROM TABLE_NAME1,TABLE_NAME2
WHERE <JOIN_CONDITION>;
EX: SELECT * FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO;