0% found this document useful (0 votes)
73 views

Oracle SQL notes

Uploaded by

soorajbaba14
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
73 views

Oracle SQL notes

Uploaded by

soorajbaba14
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 66

Oracle SQL

Structured Query Language


Data:
Data is a known Fact which Describes the Properties of an object.
Or
Data is a Raw Fact which describes attributes of an Entity.

Student Properties Data


Or
Attributes
ID 420
NAME RAJ
AGE 21
GENDER MALE
Object PHONE NO 1431001080
Or
Entity MAIL ID [email protected]

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

 DBMS provides two features i.e., Security and Authentication.


 DBMS uses query Language to interact with the database.
 In DBMS we store data in the form of files.
 Query means question to the database.
Relational Database Management System (RDBMS):
RDBMS is a Type of DBMS Software which is used to store data in the form of
tables.

o Security
o Authentication

Structured
Query
Language

 RDBMS uses Structured Query Language to Interact with the Database.


 RDBMS provides two features i.e., security, Authorization.
 In RDBMS Restore Data in Tables.

Relational Model:
Relational Model was Designed by E.F. CODD (Edgar Francolin Codd).

DBMS Relational RDBMS


Model

 Any DBMS which Follows Relational Model will Becomes an RDBMS.


Table:
Table is a Logical organization of data consist of Rows and Columns.

columns/Attributes/Fields

Rows

Tuples

Example:

Employee Properties
EID
ENAME
SALARY

EID ENAME SALARY


1 Dinga 25000
2 Dingi 25000
3 Nibba 18000
4 Nibbi 18000
Column:
Column determines property of an object.
Row:
Row determines data in the table.
Cells:
Cell is a single unit present in the Table.
Or
Cell is an intersection of rows and columns.
Rules of E.F. CODD:
1. A data entered into the cell must be a single valued data(atomic).

Bank Data Loss


No Data Loss Account Name Phone Phone
Account Name Phone no no no 2
no no 123 Dinga 420 840
123 Dinga 420,840 210

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:

Employee data properties


Metadata
EID EName Photo Photo
1 Dinga IMG Name IMG01
2 Dingi Size 4MB
Format JPEG

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”

 Datatypes are Mandatory and Constraints are Optional.


Datatypes:
Datatypes determines type of the data to be stored in the particular memory location.
 Some of the datatypes are
1. CHAR
2. VARCHAR/VARCHAR2
3. DATE
4. NUMBER
5. LARGE OBJECTS
 CHARACTER LARGE OBJECT(CLOB)
 BINARY LARGE OBJECT(BLOB)
1. CHAR:
CHAR Datatype is used to store the characters consisting of Alphabet(‘A-Z’,’a-z),
digits (0-9), special characters or special symbols (‘@, #, $’).
Syntax: CHAR(SIZE)
Example: ‘DINGA’
CHAR (10)
D I N G A
1 2 3 4 5 6 7 8 9 10

Used Memory Unused Memory (Memory wastage)

 Whenever we use CHAR Datatype, we must mention size.


 Size means no of characters to be store.
 The maximum no of characters we can store is up to 2000 characters.
 Characters must be enclosed within a pair of single quotes (‘’).
 CHAR datatype follows fixed length memory allocations.
2. VARCHAR:
VARCHAR datatype is used to store the characters consisting of Alphabets, digits
and Special characters.
Syntax: VARCHAR (SIZE)
Example: ‘DINGI’
VARCHAR (10)
D I N G I
1 2 3 4 5 6 7 8 9 10

USED MEMORY Unused memory (Free Memory)

 Whenever we use VARCHAR Datatype, we must mention size.


 Size means no of characters we want to store.
 The maximum no of characters we can store is 2000.
 Characters must be enclosed within the pair of single quotes.
 VARCHAR Datatype, follows, variable length memory Allocation.
VARCHAR2:
VARCHAR2 is similar to VARCHAR but here we can store up to 4000 characters.
Syntax: VARCHAR2(SIZE)
3. DATE:
DATE is used to store DATES.
Syntax: DATE
 in oracle SQL we have 2 date formats
‘DD-MON-YYYY’ or ‘DD-MON-YY’
Example:
DOB YOP
16-jun-2000 15-sep-2021
19-feb-98 10-nov-19
01-jan-22 02-jan-47

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

 From clause starts execution.


 The job of from clause is to go to the database and search for emp table and
put that table under execution.
 After the execution of from clause select clause will be executed.
 To select clause, we can pass 3 arguments.
 Select clause is responsible to generate to generate result table.
 We can write more than one column in select clause by using comma (,)
operator.
 (;) semicolon means end of the query.
 Asterisk (*) is used to select all the details or columns from the table.
1. WRITE A QUERY TO DISPLAY ALL THE DETAILS FROM THE EMPLOYEE
TABLE?
SELECT * FROM EMP;
2. WAQTD NAMES OF ALL THE EMPLOYEES?
SELECT ENAME FROM EMP;
3. WAQTD NAME AND SALARY GIVEN TO ALL THE EMPLOYEES?
SELECT ENAME,SAL FROM EMP;
4. WAQTD NAME AND COMMISSION GIVEN TO ALL THE EMPLOYEES?
SELECT ENAME,COMM FROM EMP;
5. WAQTD EMPLOYEE ID AND DEPARTMENT NUMBER OF ALL THE
EMPLOYEES IN EMP TABLE?
SELECT EMPNO,DEPTNO FROM EMP;
6. WAQTD ENAME AND HIREDATE OF ALL THE EMPLOYEES?
SELECT ENAME,HIREDATE FROM EMP;
7. WAQTD NAME AND DESIGNATION OF ALL THE EMPLOYEES?
SELECT ENAME,JOB FROM EMP;
8. WAQTD NAME,JOB AND SALARY GIVEN ALL THE EMPLOYEES?
SELECT ENAME,JOB,SAL FROM EMP;
9. WAQTD DNAMES PRESENT IN DEPARTMENT TABLE?
SELECT DNAME FROM DEPT;
10. WAQTD DNAME AND LOCATION PRESENT IN DEPARTMENT TABLE?
SELECT DNAME,LOC FROM DEPT;

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

 Operands are values passed by an user.


 Character literals and date literals are case sensitive and should be written a
single quote.
i. WAQTD annual salary of the employee?
Select sal*12 from emp;
ii. WAQTD salary with the hike of 10%?
Select sal+sal*0.1 from emp;
iii. WAQTD salary with the deduction of 20%?
Select sal-sal*0.2 from emp;
iv. WAQTD annual salary wit the hike of 10%?
Select sal*12+sal*12*0.1 from emp;
v. WAQTD to display annual salary with the deduction of 50%?
Select sal*12-sal*12*0.5 from emp;
ALIAS:
ALIAS is an alternative name given to the column or expression.
 ALIAS names can be written along with AS keyword (optional).
 ALIAS names can be written by using ( _ ) underscore or double Quotes (“ “).
Example:
i. WAQTD annual salary of the employee?
Select sal*12 as Annual_sal,sal*12 “Annual sal” from emp;

Annual_sal Annual sal


9600 9600
19200 19200
15000 15000
35700 35700
15000 15000
34200 34200
29400 29400
36000 36000
60000 60000
18000 18000
13200 13200
11400 11400
36000 36000
15600 15600

ALIAS:

1.WAQTD NAME OF THE EMPLOYEE ALONG WITH THEIR ANNUAL


SALARY.
SELECT ENAME,SAL*12 AS ANNUAL_SALARY FROM EMP;
2.WAQTD ENAME AND JOB FOR ALL THE EMPLOYEE WITH THEIR HALF
TERM SALARY.
SELECT ENAME,JOB,SAL*6 AS "HALF TERM SALARY" FROM EMP;
3.WAQTD ALL THE DETAILS OF THE EMPLOYEES ALONG WITH AN
ANNUAL BONUS OF 2000.
SELECT
EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO,SAL+2000 AS
"ANNUAL BONUS" FROM EMP;
OR
SELECT EMP.*,SAL+2000 BONUS FROM EMP;
4.WAQTD NAME SALARY AND SALARY WITH A HIKE OF 10%.
SELECT ENAME,SAL+SAL*0.1 AS "10% HIKE" FROM EMP;
5.WAQTD NAME AND SALARY WITH DEDUCTION OF 25%.
SELECT ENAME,SAL,SAL-SAL*0.25 AS "25% DEDUCTION" FROM EMP;
6.WAQTD NAME AND SALARY WITH MONTHLY HIKE OF 50.
SELECT ENAME,SAL+50 AS "MONTHLY HIKE OF 50" FROM EMP;
7.WAQTD NAME AND ANNUAL SALARY WITH DEDUCTION OF 10%.
SELECT ENAME,SAL*12-SAL*12*0.1 AS "10% DEDUCTION" FROM EMP;
8.WAQTD TOTAL SALARY GIVEN TO EACH EMPLOYEE (SAL+COMM).
SELECT SAL+COMM AS TOTAL_SALARY FROM EMP;
9.WAQTD DETAILS OF ALL THE EMPLOYEES ALONG WITH ANNUAL
SALARY.
SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO,SAL*12
AS ANNUAL_SAL FROM EMP;
OR
SELECT EMP.*,SAL*12 AS ANNUAL_SAL FROM EMP;
10.WAQTD NAME AND DESIGNATION ALONG WITH 100 PENALTY IN
SALARY.
SELECT ENAME,JOB,SAL-100 AS "PENALTY 100" FROM EMP;

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

DATABASE EMPNO ENAME SAL DEPTNO RESULT


EMP OF FROM
1 ALLEN 2000 10
CLAUSE
2 SMITH 3500 30

3 SCOTT 4000 20

4 MILLER 1500 10

5 KING 5000 20

1 ALLEN 2000 10 10=20-F

2 SMITH 3500 30 30=20-F

3 SCOTT 4000 20 20=20-T

4 MILLER 1500 10 10=20-F

5 KING 5000 20 20=20-T

3 SCOTT 4000 20 RESULT OF


5 KING 5000 20 WHERE CLAUSE

ENAME
SCOTT
KING

 From clause starts execution.


 The job of from clause is to go to the database and search for the
employee table and put that table under execution.
 After the execution of from clause where clause will be executed.
 Where clause is used to filter rows or records.
 Where clause executes row by row.
 Where clause gives Boolean result.
 In where clause we can write multiple filter conditions.
 After the execution of where clause select clause will be executed.
 Select clause will execute and generates final result.

After 81
Hiredate>’31-DEC-81’
Or
Hiredate >=’01-JAN-82’
Before 81
Hiredate<’01-JAN-81’
Or
Hiredate<=’31-DEC-80’

1.WAQTD THE ANNUAL SALARY OF EMPLOYEES WHOS NAME IS SMITH?


SELECT SAL*12 ANNUAL_SAL FROM EMP WHERE ENAME=’SMITH’;
2.WAQTD NAME OF THE EMPLOYEES WORKING AS CLERK?
SELECT ENAME FROM EMP WHERE JOB=’CLERK’;
3.WAQTD SALARY OF THE EMPLOYEE WHO ARE WORKING AS
SALESAMAN?
SELECT SAL FROM EMP WHERE JOB=’SALESMAN’;
4.WAQTD DETAILS OF EMP WHO EARNS MORE THAN 2000?
SELECT * FROM EMP WHERE SAL>2000;
5.WAQTD DETAILS OF EMP WHOS NAME IS JONES?
SELECT * FROM EMP WHERE ENAME=’JONES’;
6.WAQTD DETAILS OF EMP WHO WAS HIRED AFTER 01-JAN-81?
SELECT * FROM EMP WHERE HIREDATE>’01-JAN-81’;
7.WAQTD NAME AND SAL ALONG WITH HIS ANNUAL SAL IF ANNUAL
SAL IS MORE THAN 12000?
SELECT ENAME,SAL*12 ANNUAL_SAL FROM EMP WHERE SAL*12>12000;
8.WAQTD EMPNO OF EMPLOYEES WHO ARE WORKING IN DEPTNO 30?
SELECT EMPNO FROM EMP WHERE DEPTNO=30;
9.WAQTD ENAME AND HIREDATE THEY ARE HIRED BEFORE 1981?
SELECT ENAME,HIREDATE FROM EMP WHERE HIREDATE<’01-JAN-81’;
10.WAQTD DETAILS OF EMPLOYEES WORKING AS MANAGER?
SELECT * FROM EMP WHERE JOB=’MANAGER’;
11.WAQTD NAME AND SALARY GIVEN TO AN EMPLOYEE IF EMPLOYEE
EARNS A COMMISSION OF RUPEES 200?
SELECT ENAME,SAL FROM EMP WHERE COMM=200;
12.WAQTD DETAILS OF EMPLOYEES HAVING COMMISSION MORE THAN
SALARY?
SELECT * FROM EMP WHERE COMM>SAL;
13.WAQTD EMPNO OF EMPLOYEES HIRED BEFORE THE YEAR 84?
SELECT EMPNO FROM EMP WHERE HIREDATE<’01-JAN-84’;
14.WAQTD DETAILS OF EMPLOYEES WORKING AS AN PRESIDENT?
SELECT * FROM EMP WHERE JOB=’PRESIDENT’;
15.WAQTD DETAILS OF EMPLOYEES EARNING MORE THAN 3000 RUPEES
PER MONTH?
SELECT * FROM EMP WHERE SAL>3000;

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

 IT IS A BINARY OPERATOR WIC WILL TAKE TWO I/P AND


GIVES ONE O/P.
TRUTH TABLE:
A B RESULT
T F F
F T F
F F F
T T T

 IT RETURNS TRUE ONLY WHEN BOTH CONDITIONS TRUE.


OR:
 IT IS A BINARY OPERATOR WHICH WILL TAKE TWO I/P AND
GIVES ONE O/P.

TRUTH TABLE:

A B RESULT
T F T
F T T
T T T
F F F

 IT RETURNS TRUE IF ANY ONE CONDITION IS TRUE.


NOT:
 IT IS A UARY OPERATOR WHICH WILL TAKE ONE I/P AND
GIVES ONE O/P.
TRUTH TABLE:
A RESULT
T F
F T

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;

11.WAQTD NAMES AND DEPTNO, JOB OF EMPS WORKING AS CLERK IN


DEPT 10 OR 20?
SELECT ENAME,DEPTNO,JOB FROM EMP WHERE JOB=’CLERK’ AND
(DEPTNO=10 OR DEPTNO=20);
12.WAQTD DETAILS OF EMPLOYEES WORKING AS CLERK OR MANAGER
IN DEPT 10?
SELECT * FROM EMP WHERE (JOB=’CLERK’ OR JOB=’MANAGER’) AND
DEPTNO=10;
13.WAQTD NAMES OF EMPLOYEES WORKING IN DEPT 10, 20, 30, 40 14?
SELECT ENAME FROM EMP WHERE DEPTNO=10 OR DEPTNO=20 OR
DEPTNO=30 OR DEPTNO=40;
14.WAQTD DETAILS OF EMPLOYEES WITH EMPNO 7902, 7839?
SELECT * FROM EMP WHERE EMPNO=7902 OR EMPNO=7839;
15.WAQTD DETAILS OF EMPLOYEES WORKING AS MANAGER OR
SALESMAN OR CLERK?
SELECT *FROM EMP WHERE JOB=’MANAGER’ OR JOB=’SALESMAN’ OR
JOB=’CLERK’;
16.WAQTD NAMES OF EMPLOYEES HIRED AFTER 81 AND BEFORE 87?
SELECT ENAME FROM EMP WHERE HIREDATE>’31-DEC-81’ AND
HIREDATE<’01-JAN-87’;
17.WAQTD DETAILS OF EMPLOYEES EARNING MORE THAN 1250 BUT
LESS THAN 3000?
SELECT * FROM EMP WHERE SAL>1250 AND SAL<3000;
18.WAQTD NAMES OF EMPLOYEES HIRED AFTER 81 INTO DEPT 10 OR 30?
SELECT ENAME FROM EMP WHERE HIREDATE>’31-DEC-81’ AND
(DEPTNO=10 OR DEPTNO=20);
19.WAQTD NAMES OF EMPLOYEES ALONG WITH ANNUAL SALARY FOR
THE EMPLOYEES WORKING AS MANAGER OR CLERK INTO DEPT 10 OR
30?
SELECT ENAME,SAL*12 ANNUAL_SALARY FROM EMP WHERE
(JOB=’MANAGER’ OR JOB=’CLERK’) AND (DEPTNO=10 OR DEPTNO=30);
20.WAQTD ALL THE DET ALONG WITH ANNUAL SALARY IF SAL IS
BETWEEN 1000 AND 4000 ANNUAL SALARY MORE THAN 15000?
SELECT EMP.*,SAL*12 ANNUAL_SAL FROM EMP WHERE SAL>=1000 AND
SAL<=4000 AND SAL*12>15000;

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:

10 IN(10,20) 30 IN(10,20) 20 IN(10,20) 10 IN(10,20)


10=10 T 30=10 F 20=10 F 10=10 T
10=20 F 30=20 F 20=20 T 10=20 F
T F T T

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:

10 NOT IN(10,20) 20 NOT IN(10,20) 30 NOT IN(10,20) 10 NOT IN(10,20)


10!=10 T 20!=10 F 30!=10 F 10!=10 T
10!=20 F 20!=20 F 30!=20 T 10!=20 F
F F T F

3.BETWEEN: IT IS USED WHENEVER WE KNOW THE RANGE(LOWER RANGE &


UPPER RANGE).
 BETWEEN OPERATOR INCLUDES RANGE.
 DON’T INTERCANGE RANGE.
SYNTAX: COL_NAME / EXP BETWEEN LOWER RANGE AND UPPER RANGE;
EMP

ENAME SAL
ALLEN 2000
SMITH 3000
SCOTT 1000
JAMES 4000
KING 5000

EX: WAQTD ENAMES EARNING SALARY IN THE RANGE 1000 TO 3000?


SELECT ENAME ALLEN
FROM EMP SMITH
WHERE SAL BETWEEN 1000 AND 3000; SCOTT
4.NOT BETWEEN:
IT IS SIMILA TO BETWEEN OPERATOR INSTEAD OF SELECTING RECORDS IT
WILL REJECT RECORDS.
SYNTAX: COL_NAME / EXP NOT BETWEEN LOWER RANGE AND UPPER RANGE;
EMP

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

EX1: WAQTD ENAMES NOT EARNING SALARY ?


SELECT ENAME
KING
FROM EMP
WHERE SAL IS NULL;
ITERATIONS:
2000 IS NULL ----------------- F
1000 IS NULL ----------------- F
NULL IS NULL ----------------- T
3500 IS NULL ----------------- F
EX2: WAQTD ENAMES NOT EARNING COMMISION?
SELECT ENAME,COMM
FROM EMP
WHERE COMM IS NULL;
6.IS NOT:
IT IS OPPOSITE OF IS OPERATOR.
SYNTAX: COL_NAME / EXP IS NOT NULL;
EMP

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:WAQTD LENGTH OF EMPLOYEE NAMES.


LENGTH():
IT IS USED TO OBTAIN THE NUMBER OF CHARACTERS PRESENT IN GIVEN
ORIGINAL STRING.
SELECT LENGTH(ENAME)
FROM EMP;
EMP LENGTH(ENAME) O/P
I/P
ENAME 5
ALLEN 4
WARD 6
MILLER 4
KING
MULTI ROW FUNCTIONS:
MULTI ROW FUNCTIONS WILL TAKE ‘n’ NUMBER OF INPUTS THEN COMBINE
ALL THE INPUTS IN ONE SHOT THEN PROCESS IT AND GIVES ONLY ONE
OUTPUT.
MRF()

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

THERE ARE 5 MULTIROW FUNCTIONS:


MAX():IT IS USED TO OBTAIN MAXIMUM VALUE PRESENT IN COLUMN.
MIN():IT IS USED TO OBTAIN MINIMUM VALUE PRESENT IN COLUMN.
SUM():IT IS USED TO OBTAIN SUMMATION OF VALUE PRESENT IN THE
COLUMN.
AVG():IT IS USED TO OBTAIN AVERAGE OF VALUES PRESENT IN THE COLUMN.
COUNT():IT IS USED TO OBTAIN NUMBER OF RECORDS OR VALUES PRESENT IN
THE COLUMN OR TABLE.
RULES OF MULTI ROW FUNCTIONS:
1. ALONG WITH MULTI ROW FUNCTIONS WE CANNOT USE COLUMN
NAMES.
2. TO A MULTIROW FUNCTION WE MUST PASS ONLY ONE ARGUMENT.
3. MRF() IGNORES NULL.
4. COUNT() IS THE ONLY MRF() WHCH WILL TAKE STAR OR ASTERICK AS
AN ARGUMENT.
5. WE CANNOT USE MULTIROW FUNCTION IN WHERE CLAUSE.
6. WE CAN USE MORETHAN ONE MRF() IN SELECT CLAUSE.

1. WAQTD NUMBER OF EMPLOYEES GETTING SALARY LESS THAN 2000


IN DEPTNO 10?
SELECT COUNT(*)
FROM EMP
WHERE SAL<2000 AND DEPTNO IN 10;
2.WAQTD TOTAL SALARY NEEDED TO PAY EMPLOYEES WORKING AS
CLERK?
SELECT SUM(SAL)
FROM EMP
WHERE JOB='CLERK';
3. WAQTD AVERAGE SALARY NEEDED TO PAY ALL EMPLOYEES?
SELECT AVG(SAL)
FROM EMP;
4.WAQTD NUMBER OF EMPLOYEES HAVING 'A' AS THEIR FIRST
CHARACTER?
SELECT COUNT(*)
FROM EMP
WHERE ENAME LIKE 'A%';
5.WAQTD NUMBER OF EMPLOYEES WORKING AS CLERK OR MANAGER?
SELECT COUNT(*)
FROM EMP
WHERE JOB IN( 'CLERK' ,'MANAGER');
6.WAQTD TOTAL SALARY NEEDED TO PAY EMPLOYEES HIRED IN FEB?
SELECT SUM(SAL)
FROM EMP
WHERE HIREDATE LIKE '%FEB%';
7. WAQTD NUMBER OF EMPLOYEES REPORTING TO 7839 (MGR)?
SELECT COUNT(*)
FROM EMP
WHERE MGR=7839;
8.WAQTD NUMBER OF EMPLOYEES GETTING COMISSION IN DEPTNO 30?
SELECT COUNT(*)
FROM EMP
WHERE COMM IS NOT NULL AND DEPTNO=30;
9.WAQTD AVG SAL, TOTAL SAL, NUMBER OF EMPS AND MAXIMUM
SALARY GIVEN TO EMPLOYEES WORKING AS PRESIDENT?
SELECT AVG(SAL),SUM(SAL),COUNT(*),MAX(SAL)
FROM EMP
WHERE JOB='PRESIDENT';
10. WAQTD NUMBER OF EMPLOYEES HAVING 'A' IN THEIR NAMES?
SELECT COUNT(*)
FROM EMP
WHERE ENAME LIKE '%A%’;
11. WAQTD NUMBER OF EMPS AND TOTAL SALARY NEEDED TO PAY
THE EMPLOYEES WHO HAVE 2 CONSICUTIVE L's IN THEIR NAMES?
SELECT COUNT(*),SUM(SAL)
FROM EMP
WHERE ENAME LIKE ‘%LL%’;
12. WAQTD NUMBER OF DEPARTMENTS PRESENT IN EMPLOYEE TABLE?
SELECT COUNT(DISTINCT DEPTNO)
FROM EMP;
13. WAQTD NUMBER OF EMPLOYEES HAVING CHARACTER 'R' IN THEIR
NAMES?
SELECT COUNT(*)
FROM EMP
WHERE ENAME LIKE ‘%R%’;
14. WAQTD NUMBER OF EMPLOYEES HAVING ATLEAST 2 'M' IN THEIR
NAMES?
SELECT COUNT(*)
FROM EMP
WHERE ENAME LIKE ‘%M%M%’;
15. WAQTD TOTAL SALARY GIVEN TO EMPLOYEES WORKING AS CLERK
IN DEPT 30?
SELECT SUM(SAL)
FROM EMP
WHERE JOB=’CLERK’ AND DEPTNO IN 30;
16. WAQTD MAXIMUM SALARY GIVEN TO THE EMPLOYEES WORKING
AS ANALYST?

17. WAQTD NUMBER OF DISTINCT SALARIES PRESENT IN EMPLOYEE


TABLE?

18. WAQTD NUMBER OF JOBS PRESENT IN EMPLOYEE TABLE?

19.WATQD AVG SALARY GIVEN TO THE CLERK?

20. WAQTD MINIMUM SALARY GIVEN TO THE EMPLOYEES WHO WORK


IN DEPT 10 AS MANAGER OR A CLERK?
GROUPING AND FILTERING
GROUP BY CLAUSE: IT IS USED TO GROUP THE RECORD.
 GROUP BY CLAUSE EXECUTES ROW BY ROW.
 GROUP BY CLAUSE EXECUTES AFTER THE EXECUTION OF
WHERE CLAUSE IF USED.
 ANY CLAUSE WHICH EXECUTES AFTER THE EXECUTION OF
GROUP BY CLAUSE WILL EXECUTE GROUP-BY-GROUP.
 GROUP BY CLAUSE RETURNS GROUP AS AN OUTPUT.
SYNTAX:
SELECT GROUP-BY-EXPRESSION/GROUP-FUNCTION
FROM TABLE_NAME
[WHERE <FILTER_CONDITION>]
GROUP BY COLUMN_NAME/EXPRESSION;
ORDER OF EXECUTION:
1-FROM
2-WHERE (IF USED) (ROW-BY-ROW)
3-GROUP BY (ROW-BY-ROW)
4-SELECT (GROUP-BY-GROUP)
EX: WAQTD NO OF EMPLOYEES WORKING IN EACH DEPT?
3 SELECT COUNT(*),DEPTNO
1 FROM EMP
2 GROUP BY DEPTNO;

EMPNO ENAME SAL DEPTNO


1 ALLEN 2000 10 DATABSE
2 SMITH 2500 20 EMP 10
3 SCOTT 3000 10
1 ALLEN 2000 10
4 JAMES 3500 30 EMP
5 MILLER 4000 20 3 SCOTT 3000 10
6 KING 5000 10 COUNT(*) DEPTNO
36 10 5000
KING 10
2 20
20 1 30
2 SMITH 2500 20

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

1. WAQTD NUMBER OF EMPLOYEES WORKING IN EACH DEPARTEMENT


EXCEPT PRESIDENT?
SELECT COUNT(*),DEPTNO
FROM EMP
WHERE JOB!=’PRESIDENT’
GROUP BY DEPTNO;
2.WAQTD TOTAL SALARY NEEDED TO PAY ALL THE EMPLOYEES IN
EACH JOB?
SELECT SUM(SAL),JOB
FROM EMP
GROUP BY JOB;
3. WAQTD NUMBER OF EMPLOYEEES WORKING AS MANAGER IN EACH
DEPARTMENT?
SELECT COUNT(*),DEPTNO
FROM EMP
WHERE JOB=’MANAGER’
GROUP BY DEPTNO;
4.WAQTD AVG SALARY NEEDED TO PAY ALL THE EMPLOYEES IN EACH
DEPARTMENT EXCLUDING THE EMPLOYEES OF DEPTNO 20?
SELECT AVG(SAL),DEPTNO
FROM EMP
WHERE DEPTNO!=20
GROUP BY DEPTNO;
5.WAQTD NUMBER OF EMPLOYEES HAVING CHARACTER 'A' IN THEIR
NAMES IN EACH JOB?
SELECT COUNT(*),JOB
FROM EMP
WHERE ENAME LIKE ‘%A%’;
GROUP BY JOB;
6.WAQTD NUMBER OF EMPLOYEES AND AVG SALARY NEEDED TO PAY
THE EMPLOYEES WHO SALARY IS GREATER THAN 2000 IN EACH DEPT?
SELECT COUNT(*),AVG(SAL),DEPTNO
FROM EMP
WHERE SAL>2000
GROUP BY DEPTNO;
7.WAQTD TOTAL SALARY NEEDED TO PAY AND NUMBER OF
SALESMANS IN EACH DEPT?
SELECT SUM(SAL),COUNT(*),DEPTNO
FROM EMP
WHERE JOB=’SALESMAN’
GROUP BY DEPTNO;
8.WAQTD NUMBER OF EMPLOYEES WITH THEIR MAXIMUM SALARIES IN
EACH JOB?
SELECT COUNT(*),MAX(SAL),JOB
FROM EMP
GROUP BY JOB;
9.WAQTD MAXIMUM SALARIES GIVEN TO AN EMPLOYEE WORKING IN
EACH DEPT?
SELECT MAX(SAL),DEPTNO
FROM EMP
GROUP BY DEPTNO;
10. WAQTD NUMBER OF TIMES THE SALARIES HAVE BEEN REPEATED IN
EMPLOYEE TABLE?
SELECT COUNT(*)-1,SAL
FROM EMP
GROUP BY SAL;

HAVING CLAUSE: HAVING CLAUSE IS USED TO FILTER GROUPS.


 HAVING CLAUSE EXECUTES AFTER THE EXECUTION OF GROUP
BY CLAUSE.
 WITHOUT GROUP BY CLAUSE, WE CANNOT USE HAVING CLAUSE.
 HAVING CLAUSE EXECUTES GROUP-BY-GROUP.
 ANY CLAUSE WHICH EXECUTES AFTER GROUP BY CLAUSE WILL
EXECUTE GROUP-BY-GROUP.
 ANY FILTER CONDITION RELATED TO GROUP BY CLAUSE WILL
BE WRITTEN IN HAVING CLAUSE.
 WE CAN WRITE MORE THAN ONE GROUP FILTER CONDITION IN
HAVING CLAUSE.
 WE CAN USE LOGICAL OPERATOR TO WRITE MULTIPLE FILTER
CONDITIONS.
SYNTAX:
SELECT GROUP-BY-EXPRESSION/GROUP-FUNCTION
FROM TABLE_NAME
[WHERE <FILTER_CONDITION>]
[GROUP BY COLUMN_NAME/EXPRESSION]
[HAVING <GROUP_FILTER_CONDITION>]
[ORDER BY COL_NAME/EXP[ASC]/DESC];
ORDER OF EXECUTION:
1-FROM
2-WHERE (IF USED) (ROW-BY-ROW)
3-GROUP BY (ROW-BY-ROW)
4-HAVING (IF USED) (GROUP-BY-GROUP)
5-SELECT (GROUP-BY-GROUP)
6-ORDER BY (ROW-BY-ROW)
EX: WAQTD NO OF EMPS WORKING IN EACH DEPT ATLEAST 3
EMPLOYEES SHOULD BE THERE?
4 SELECT COUNT(*),DEPTNO
1 FROM EMP
2 GROUP BY DEPTNO
3 HAVING COUNT(*)>=3;

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

RESULT OF GROUP BY CLAUSE

1.WAQTD DEPTNO AND NUMBER OF EMP WORKING IN EACH DEPT IF


THERE ARE ATLEAST2 CLERKS IN EACH DEPT ?
SELECT COUNT(*),DEPTNO
FROM EMP
WHERE JOB=’CLERK’
GROUP BY DEPTNO
HAVING COUNT(*)>=2;
2.WAQTD DEPTNO AND TOTAL SAALARYNEEDED TO PAY ALL EMP IN
EACH DEPT IF THERE ARE ATLEAST 4 EMP IN EACH DEPT?
SELECT DEPTNO,SUM(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*)>=4;
3.WAQTD NUMBER OF EMP EARNING SAL MORE THAN 1200 IN EACH
JOB AND THE TOTAL SAL NEEDED TO PAY EMP OF EACH JOB MUST
EXCEES 3800?
SELECT COUNT(*),JOB
FROM EMP
WHERE SAL>1200
GROUP BY JOB
HAVING SUM(SAL)>3800;
4.WAQTD DEPTNG AND NUMBER OF EMP WORKING ONLY IF THERE ARE
2 EMP WORKING IN EACH DEPT AS MANAGER ?
SELECT COUNT(*),DEPTNO
FROM EMP
WHERE JOB=’MANAGER’
GROUP BY DEPTNO
HAVING COUNT(*)=2;
5.WAQTD 308 AND MAX SAL OF EMP IN EACH 308 IF THE MAX SAL
EXCEEDS 2600 ?
SELECT MAX(SAL),JOB
FROM EMP
GROUP BY JOB
HAVING MAX(SAL)>2600;
6.WAQTD THE SALARIES WHICH ARE REPEATED IN EMP TABLE?
SELECT SAL
FROM EMP
GROUP BY SAL
HAVING COUNT(*)>1;
7.WAQTD THE HIREDATE WHICH ARE DUPLICATED IN EMP TABLE?
SELECT HIREDATE
FROM EMP
GROUP BY HIREDATE
HAVING COUNT(*)>1;
8.WAQTD AVG SALARY OF EACH DEPT IF AVG SAL IS LESS THan 3000?
SELECT AVG(SAL),DEPTNO
FROM EMP
GROUP BY DEPTNO
HAVING AVG(SAL)<3000;
9.WAQTD DEPTNO IF THERE ARE ATLEAST 3 EMP IN EACH DEPT WHOS
NAME HAS CHAR 'A' OR 'S'?
SELECT DEPTNO,COUNT(*)
FROM EMP
WHERE ENAME LIKE ‘%A%’ OR ENAME LIKE ‘%S%’
GROUP BY DEPTNO
HAVING COUNT(*)>=3;
10.WAQTD MIN AND MAX SALARIES OF EACH JOB IF MIN SAL IS MORE
THAN 1000 AND MAX SAL IS LESS THAN 5000?
SELECT MIN(SAL),MAX(SAL),JOB
FROM EMP
GROUP BY JOB
HAVING MIN(SAL)>1000 AND MAX(SAL)<5000;

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

SELECT ENAME KING


FROM EMP
WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME=’SCOTT’);

ITERATIONS:
1500>3000 F
2000>3000 F
3000>3000 F
1800>3000 F
5000>3000 T

1.WAQTD SAL OF THE EMPLOYEES EARNING MORE THAN ADAMS?


SELECT SAL
FROM EMP
WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME=’ADAMS’);
2.WAQTD NAME AND SALARY OF THE EMPLOYEES EARNING LESS THAN
KING?
SELECT ENAME,SAL
FROM EMP
WHERE SAL<(SELECT SAL FROM EMP WHERE ENAME=’KING’);
3.WAQTD NAME AND DEPTNO OF THE EMPLOYEES IF THEY ARE
WORKING IN THE SAME DEPT AS JONES?
SELECT ENAME,DEPTNO
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO FROM EMP WHERE ENAME=’JONES’);
4.WAQTD NAME AND JOB OF ALL THE EMPLOYEES WORKING IN THE
SAME DESIGNATION AS JAMES?
SELECT ENAME,JOB
FROM EMP
WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME=’JAMES’);
5.WAQTD EMPNO AND ENAME ALONG WITH ANNUAL SALARY OF ALL
THE EMPLOYEES IF THEIR ANNUAL SALARY IS GREATER THAN WARDS
ANNUAL SALARY?
SELECT EMPNO,ENAME,SAL*12 ANNUAL_SAL
FROM EMP
WHERE SAL*12>(SELECT SAL*12 FROM EMP WHERE ENAME=’WARD’);

6.WAQTD NAME AND HIREDATE OF THE EMPLOYEES IF THEY ARE


HIRED BEFORE SCOTT?
SELECT ENAME,HIREDATE
FROM EMP
WHERE HIREDATE<(SELECT HIREDATE FROM EMP WHERE
ENAME=’SCOTT’);
7.WAQTD NAME AND HIREDATE OF THE EMPLOYEES IF THEY ARE
HIRED AFTER THE PRESIDENT?
SELECT ENAME,HIREDATE
FROM EMP
WHERE HIREDATE>(SELECT HIREDATE FROM EMP WHERE
JOB=’PRESIDENT’);
8.WAQTD NAME AND SAL OF THE EMPLOYEE IF THEY ARE EARNING
SAL LESS THAN THE EMPLOYEE WHOS EMPNO IS 7839?
SELECT ENAME,SAL
FROM EMP
WHERE SAL <(SELECT SAL FROM EMP WHERE EMPNO=7839);
9.WAQTD ALL THE DETAILS OF THE EMPLOYEES IF THE EMPLOYEES
ARE HIRED BEFORE MILLER?
SELECT *
FROM EMP
WHERE HIREDATE<(SELECT HIREDATE FROM EMP WHERE
ENAME=’MILLER’);
10.WAQTD ENAME AND EMPNO OF THE EMPLOYEES IF EMPLOYEES ARE
EARNING MORE THAN ALLEN?
SELECT ENAME,EMPNO
FROM EMP
WHERE SAL<(SELECT SAL FROM EMP WHERE ENAME=’ALLEN’);
11.WAQTD ENAME AND SALARY OF ALL THE EMPLOYEES WHO ARE
EARNING MORE THAN MILLER BUT LESS THAN ALLEN?
SELECT ENAME,SAL
FROM EMP
WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME=’MILLER’)
AND SAL<(SELECT SAL FROM EMP WHERE ENAME=’ALLEN’);
12.WAQTD ALL THE DETAILS OF THE EMPLOYEES WORKING IN DEPT 20
AND WORKING IN THE SAME DESIGNATION AS SMITH?
SELECT *
FROM EMP
WHERE DEPTNO=20 AND JOB=(SELECT JOB FROM EMP WHERE
ENAME=’SMITH’);
13. WAQTD ALL THE DETAILS OF THE EMPLOYEES WORKING AS
MANAGER IN THE SAME DEPT AS TURNER?
SELECT *
FROM EMP
WHERE JOB=’MANAGER’ AND DEPTNO=(SELECT DEPTNO FROM EMP
WHERE ENAME=’TURNER’);
14.WAQTD NAME AND HIREDATE OF THE EMPLOYEES HIRED AFTER
1980 AND BEFORE KING?
SELECT ENAME,HIREDATE
FROM EMP
WHERE HIREDATE>’31-DEC-1980’ AND HIREDATE<(SELECT HIREDATE
FROM EMP WHERE ENAME=’KING’);
15.WAQTD NAME AND SAL ALONG WITH ANNUAL SAL FOR ALL
EMPLOYEES WHOS SAL IS LESS THAN BLAKE AND MORE THAN 3500?
SELECT ENAME,SAL,SAL*12
FROM EMP
WHERE SAL>3500 AND SAL<(SELECT SAL FROM EMP WHERE
ENAME=’BLAKE’);
16.WAQTD ALL THE DETAILS OF EMPLOYEES WHO EARN MORE THAN
SCOTT BUT LESS THAN KING?
SELECT *
FROM EMP
WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME=’SCOTT’)
AND SAL<(SELECT SAL FROM EMP WHERE ENAME=’KING’);

17.WAQTD NAME OF THE EMPLOYEES WHOS NAME STARTS WITH 'A'


AND WORKS IN THE SAME DEPT AS BLAKE?
SELECT ENAME
FROM EMP
WHERE ENAME LIKE ‘A%’ AND DEPTNO=(SELECT DEPTNO FROM EMP
WHERE ENAME=’BLAKE’);
18. WAQTD NAME AND COMM IF EMPLOYEES EARN COMISSION AND
WORK IN THE SAME DESIGNATION AS SMITH?
SELECT ENAME,COMM
FROM EMP
WHERE COMM IS NOT NULL AND JOB=(SELECT JOB FROM EMP WHERE
ENAME=’SMITH’);
19.WAQTD DETAILS OF ALL THE EMPLOYEES WORKING AS CLERK IN
THE SAME DEPT AS TURNER?
SELECT *
FROM EMP
WHERE JOB=’CLERK’ AND DEPTNO=(SELECT DEPTNO FROM EMP
WHERE ENAME=’TURNER’);
20.WAQTD ENAME, SAL AND DESIGNATION OF THE EMPLOYEES WHOS
ANNUAL SALARY IS MORE THAN SMITH AND LESS THAN KING?
SELECT ENAME,JOB,SAL
FROM EMP
WHERE SAL*12>(SELECT SAL*12 FROM EMP WHERE ENAME=’SMITH’)
AND SAL*12<(SELECT SAL*12 FROM EMP WHERE ENAME=’KING’);
CASE 2: A DATA TO BE SELECTED AND CONDITION TO BE EXECUTED
BOTH ARE PRESENT IN DIFFERENT TABLES,THEN WE WILL GO WITH
SUBQUERY CASE 2.
EX2: WAQTD DNAME OF ALLEN?
SELECT DNAME
FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO FROM EMP
WHERE ENAME=’ALLEN’);
10=20 F
20=20 T
30=20 F
EMP
EMPNO ENAME DEPTNO DEPTNO DNAME LOC
1 ALLEN 20 10 D1 L1
2 SMITH 30 20 D2 L2
3 JAMES 10 30 D3 L3
4 KING 20
DEPT

21.WAQTD DNAME OF THE EMPLOYEES WHOS NAME IS SMITH?


SELECT DNAME
FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO FROM EMP
WHERE ENAME=’SMITH’);
22.WAQTD DNAME AND LOC OF THE EMPLOYEE WHOS ENAME IS KING?
SELECT DNAME,LOC
FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO FROM EMP
WHERE ENAME=’KING’);
23.WAQTD LOC OF THE EMP WHOS EMPLOYEE NUMBER IS 7902 AND
LOC ?
SELECT LOC
FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO FROM EMP
WHERE EMPNO=7902);
24.WAQTD DNAME AND LOC ALONG WITH DEPTNO OF THE EMPLOYEE
WHO'S NAME ENDS WITH 'T'?
SELECT DNAME,LOC,DEPTNO
FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO FROM EMP
WHERE ENAME LIKE ‘%T’);
25.WAQTD DNAME OF THE EMPLOYEE WHOS DESIGNATION IS
PRESIDENT ?
SELECT DNAME
FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO FROM EMP
WHERE JOB=’PRESIDENT’);
26.WAQTD NAMES OF THE EMPLOYEES WORKING IN ACCOUNTING
DEPARTMENT?
SELECT ENAME
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO FROM DEPT
WHERE DNAME=’ACCOUNTING’);
27. WAQTD ENAME AND SALARIES OF THE EMPLOYEES WHO ARE
WORKING IN THE LOCATION CHICAGO'?
SELECT ENAME,SAL
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO FROM DEPT
WHERE LOC=’CHICAGO’);
28. WAQTD DETAILS OF THE EMPLOYEES WORKING IN LOCATION
DALLAS?
SELECT *
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO FROM DEPT
WHERE LOC=’DALLAS’);
29.WAQTD DETAILS OF THE EMP ALONG WITH ANNUAL SALARY IF
EMPLOYEES ARE WORKING IN NEW YORK?
SELECT EMP.*,SAL*12 ANNUAL_SAL
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO FROM DEPT
WHERE LOC=’NEW YORK’);
30.WAQTD NAMES OF EMPLOYEES WORKING IN OPERATIONS
DEPARTMENT?
SELECT ENAME
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO FROM DEPT
WHERE DNAME=’OPERATIONS’);
31.WAQTD NAMES OF THE EMPLOYEES EARNING MORE THAN SCOTT IN
ACCOUNTING DEPT?
SELECT ENAME FROM EMP
WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME='SCOTT')
AND DEPTNO=(SELECT DEPTNO FROM DEPT WHERE
DNAME='ACCOUNTING');
32.WAQTD DETAILS OF THE EMPLOYEES WORKING AS MANAGER IN
THE LOCATION CHICAGO?
SELECT *
FROM EMP
WHERE JOB='MANAGER' AND
DEPTNO=(SELECT DEPTNO FROM DEPT WHERE LOC='CHICAGO');
33.WAQTD NAME AND SAL OF THE EMPLOYEES EARNING MORE THAN
KING IN THE DEPT ACCOUNTING?
SELECT ENAME,SAL FROM EMP
WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME='KING')
AND DEPTNO=(SELECT DEPTNO FROM DEPT WHERE
DNAME='ACCOUNTING');
34.WAQTD DETAILS OF THE EMPLOYEES WORKING AS SALESMAN IN
THE DEPARTEMENT SALES?
SELECT * FROM EMP
WHERE JOB='SALESMAN'
AND DEPTNO=(SELECT DEPTNO FROM DEPT WHERE DNAME='SALES');
35.WAQTD NAME SAL,JOB, HIREDATE OF THE EMPLOYEES WORKING IN
OPERATIONS DEPARTMENT AND HIRED BEFORE KING?
SELECT ENAME,SAL,JOB,HIREDATE
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO FROM DEPT WHERE
DNAME='OPERATIONS')
AND HIREDATE<(SELECT HIREDATE FROM EMP WHERE ENAME='KING');
36.DISPLAY ALL THE EMPLOYEES WHOSE DEPARTMET NAMES ENDING
'S'?
SELECT * FROM EMP
WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE ENAME LIKE
‘%S’);
37.WAQTD DNAME OF THE EMPLOYEES WHOS NAMES HAS CHARACTER
'A' IN IT?
SELECT DNAME FROM DEPT
WHERE DEPTNO IN (SELECT DEPTNO FROM EMP WHERE ENAME LIKE
‘%A%’);
38.WAQTD DNAME AND LOC OF THE EMPLOYEES WHOS SALARY IS
RUPEES 800?
SELECT DNAME,LOC FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO FROM EMP WHERE SAL=800);
39.WAQTD DNAME OF THE EMPLOYEES WHO EARN COMISSION ?
SELECT DNAME FROM DEPT
WHERE DEPTNO IN(SELECT DEPTNO FROM EMP WHERE COMM IS NOT
NULL);
40.WAQTD LOC OF THE EMPLOYEES IF THEY EARN COMISSION IN DEPT
40?
SELECT LOC FROM DEPT
WHERE DEPTNO IN(SELECT DEPTNO FROM EMP WHERE COMM IS NOT
NULL AND DEPTNO=40) AND DEPTNO=40;

TYPES OF SUB QUERY:


 SINGLE ROW SUB QUERY
 MULTI ROW SUB QUERY
SINGLE ROW SUB QUERY:
SINGLE ROW SUB QUERY RETURNS EXACTLY ONE VALUE OR ONE
RECORD AS AN OUTPUT.

EMPNO ENAME SAL DEPTNO


1 ALLEN 2000 10
2 SMITH 3000 20
3 SCOTT 4000 10
4 JAMES 2500 30
5 KING 5000 20
EMP

EX: WAQTD ENAMES WORKING IN THE SAME DEPT AS KING?


SELECT ENAME
FROM EMP
WHERE DEPTNO = (SELECT DEPTNO FROM EMP
WHERE ENAME=’KING’);
WHENEVER SUB QUERY IS RETURNING SINGLE VALUE THEN WE CAN
USE NORMAL OPERATOR OR SPECIAL OPERATOR

MULTI ROW SUB QUERY:


IF A SUB QUERY IS RETURNING MORE THAN ONE RECORD OR VALUE
THEN WE CALL IT AS MULTI ROW SUB QUERY.

EMPNO ENAME SAL DEPTNO


1 ALLEN 2000 10
2 SMITH 3000 20
3 SCOTT 4000 10
4 JAMES 2500 30
5 KING 5000 20
EMP

EX: WAQTD ENAMES WORKING IN THE SAME DEPT AS KING AND


SCOTT?
SELECT ENAME
FROM EMP
WHERE DEPTNO = (SELECT DEPTNO FROM EMP
WHERE ENAME IN(’KING’,’SCOTT’));
 WE CANNOT USE NORMAL OPERATORS
 WE MUST USE SPECIAL OPERATORS(IN OR NOT IN)

NOTE:
WE CANNOT IDENTIFY SUB QUERY RETURNS SINGLE ROW OR MULTI
ROW ,SO ALWAYS USE SPECIAL OPERATORS(IN OR NOT IN).

EMPNO ENAME SAL DEPTNO


1 ALLEN 2000 10
2 SMITH 3000 20
3 SCOTT 4000 10
4 JAMES 2500 30
5 KING 5000 20
EMP

EX: WAQTD ENAMES EARNING SALARY MORE THAN THE EMPS OF


DEPTNO 10?
SELECT ENAME
FROM EMP
WHERE SAL > (SELECT SAL FROM EMP
WHERE DEPTNO=10);
 WE CANNOT USE NORMAL OPERATORS
 WE CANNOT USE SPECIAL OPERATORS(IN OR NOT IN)
 WE MUST USE SUB QUERY OPERATORS(ALL & ANY)

SUB QUERY OPERATORS:


ALL: ALL OPERATOR IS USED ANONG WITH RELATIONAL
OPERATORS(>,<,<=,>=).
 ALL OPERATOR RETURNS TRUE ONLY IF ALL THE R.H.S
VALUES ARE SATISFIED.
SYNTAX: COL_NAME RELATIONAL_OPR ALL(V1,V2,V3….Vn);

EMPNO ENAME SAL DEPTNO


1 ALLEN 2000 10
2 SMITH 3000 20
3 SCOTT 4000 10
4 JAMES 2500 30
5 KING 5000 20
EMP

EX: WAQTD ENAMES EARNING SALARY MORE THAN EMP’S OF DEPTNO


10?
SELECT ENAME
FROM EMP
WHERE SAL>ALL(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 F F F T

ANY: ANY OPERATOR IS USED ANONG WITH RELATIONAL


OPERATORS(>,<,<=,>=).
 ANY OPERATOR RETURNS TRUE ONLY IF ANY OF THE R.H.S
VALUES ARE SATISFIED.
SYNTAX: COL_NAME RELATIONAL_OPR ANY(V1,V2,V3….Vn);

EMPNO ENAME SAL DEPTNO


1 ALLEN 2000 10
2 SMITH 3000 20
3 SCOTT 4000 10
4 JAMES 2500 30
5 KING 5000 20
EMP

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

1.WAQTD NAME OF THE EMPLOYEES EARNING SALARY MORE THAN


THE SALESMAN?
SELECT ENAME FROM EMP
WHERE SAL>ALL(SELECT SAL FROM EMP WHERE JOB=’SALESMAN’);
2.WAQTD DETAILS OF THE EMPLOYEES HIRED AFTER ALL THE CLERKS?
SELECT * FROM EMP
WHERE HIREDATE>ALL(SELECT HIREDATE FROM EMP WHERE
JOB=’CLERK’);
3.WAQTD NAME AND SALARY FOR ALL THE EMPLOYEES IF THEY ARE
EARNING LESS THAN ATLEST A MANAGER?
SELECT ENAME,SAL FROM EMP
WHERE SAL<ANY(SELECT SAL FROM EMP WHERE JOB IN ‘MANAGER’);
4.WAQTD NAME AND HIREDATE OF EMPLOYEES HIRED BEFORE ALL
THE MANAGERS?
SELECT ENAME,HIREADATE FROM EMP
WHERE HIREADTE<ALL(SELECT HIREDATE FROM EMP WHERE
JOB=’MANAGER’);
5.WAQTD NAMES OF THE EMPLOYEES HIRED AFTER ALL THE
MANAGERS AND EARNING SALARY MORE THAN ALL THE CLERKS?
SELECT ENAME FROM EMP
WHERE HIREDATE>ALL(SELECT HIREDATE FROM EMP WHERE
JOB=’MANAGER’) AND
SAL>ALL(SELECT SAL FROM EMP WHERE JOB=’CLERK’);
6.WAQTD DETAILS OF THE EMPLOYEES WORKING AS CLERK AND
HIRED BEFORE ATLEST A SALESMAN?
SELECT * FROM EMP
WHERE JOB=’CLERK’ AND
HIREDATE<ANY(SELECT HIREDATE FROM EMP WHERE
JOB=’SALESMAN’);
7.WAQTD DETAILS OF EMPLOYEES WORKING IN ACCOUNTING OR
SALES DEPT?
SELECT * FROM EMP
WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE DNAME
IN(‘SALES’,’ACCOUNTING’);
8.WAQTD DEPARTMENT NAMES OF THE EMPOYEES WITH NAME SMITH
KING AND MILLER?
SELECT DNAME FROM DEPT
WHERE DEPTNO IN (SELECT DEPTNO FROM EMP WHERE ENAME
IN(‘SMITH’,’KING’,’MILLER’));
9.WAQTD DETAILS OF EMPLOYEES WORKING NEWYORK OR CHICAGO?
SELECT * FROM EMP
WHERE DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC IN
(‘CHICAGO’,’NEW YORK’));
10.WAQTD EMP NAMES IF EMPLOYEES ARE HIRED AFTER ALL THE
EMPLOYEES OF DEPT 10?
SELECT ENAME FROM EMP
WHERE HIREDATE>ALL(SELECT HIREDATE FROM EMP WHERE
DEPTNO=10);

MAX & MIN:


EX: WAQTD ENAME EARNING MAXIMUM
SALARY? EMPNO ENAME SAL
KING
SELECT ENAME 1 ALLEN 2000
2 SMITH 3000
FROM EMP 3 SCOTT 4000
5000
WHERE SAL=(SELECT MAX(SAL) FROM EMP); 4 JAMES 2500
5 KING 5000

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

1.WAQTD 4TH MINIMUM SALARY?


SELECT MIN(SAL)
FROM EMP
WHERE SAL>(SELECT MIN(SAL)
FROM EMP
WHERE SAL>(SELECT MIN(SAL)
FROM EMP
WHERE SAL>(SELECT MIN(SAL)
FROM EMP)));
2.WAQTD 5TH MAXIMUM SALARY?
SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP))));
3.WAQTD NAME OF THE EMPLOYEE EARNING 3RD MAXIMUM SALARY?
SELECT ENAME
FROM EMP
WHERE SAL=(SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP)));
4.WAQTD EMPNO OF THE EMPLOYEE EARNING 2D MAXIMUM SALARY?
SELECT EMPNO
FROM EMP
WHERE SAL=(SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP));
5. WAQTD DEPARTMENT NAME OF AN EMPLOYEE GETTING 4TH MAX
SAL?
SELECT DNAME
FROM DEPT
WHERE DEPTNO IN(SELECT DEPTNO
FROM EMP
WHERE SAL=(SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP)))));
6.WAQTD DETAILS OF THE EMPLOYEE WHO WAS HIRED 2nd?
SELECT *
FROM EMP
WHERE HIREDATE=(SELECT MIN(HIREDATE)
FROM EMP
WHERE HIREDATE>(SELECT MIN(HIREDATE)
FROM EMP));
7.WAQTD NAME OF THE EMPLOYEE HIRED BEFORE THE LAST
EMPLOYEE?
SELECT ENAME
FROM EMP
WHERE HIREDATE=(SELECT MAX(HIREDATE)
FROM EMP
WHERE HIREDATE<(SELECT MAX(HIREDATE)
FROM EMP));
8.WAQTD LOC OF THE EMPLOYEE WHO WAS HIRED FIRST ?
SELECT LOC
FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO
FROM EMP
WHERE HIREDATE=(SELECT MIN(HIREDATE)
FROM EMP));
9.WAQTD DETAILS OF THE EMPLOYEE EARNING 7TH MINIMUM
SALARY?
SELECT *
FROM EMP
WHERE SAL=(SELECT MIN(SAL)
FROM EMP
WHERE SAL>(SELECT MIN(SAL)
FROM EMP
WHERE SAL>(SELECT MIN(SAL)
FROM EMP
WHERE SAL>(SELECT MIN(SAL)
FROM EMP
WHERE SAL>(SELECT MIN(SAL)
FROM EMP
WHERE SAL>(SELECT MIN(SAL)
FROM EMP
WHERE SAL>(SELECT MIN(SAL)
FROM EMP)))))));
10. WAQTD DNAME OF EMPLOYEE GETTING 2ND MAXIMUM SALARY?
SELECT DNAME
FROM DEPT
WHERE DEPTNO IN(SELECT DEPTNO
FROM EMP
WHERE SAL=(SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP)));

EMPLOYEE - MANAGER RELATIONSHIP:


CASE1: TO FIND JAMES MANAGER NAME?
EMP
EMPNO ENAME MGR
SELECT ENAME 1 ALLEN 4
2 JAMES 5
FROM EMP 3 SCOTT 1
4 SMITH 3
WHERE EMPNO=(SELECT MGR
5 KING 1
FROM EMP
WHERE ENAME=’JAMES’);
ITERATIONS:
1=5 F
2=5 F
3=5 F
4=5 F
5=5 T

CASE2: TO FIND REPORTING/EMPLOYEE:


EMP
EMPNO ENAME MGR
1 ALLEN 4
2 JAMES 5
3 SCOTT 1
SELECT ENAME 4 SMITH 3
5 KING 1
FROM EMP
WHERE MGR=(SELECT EMPNO
FROM EMP
WHERE ENAME=’ALLEN’);
ITERATIONS:
4=1 F
5=1 F
1=1 T
3=1 F
1=1 T

1.WAQTD SMITHS REPORTING MANAGER'S NAME ?


SELECT ENAME FROM EMP
WHERE EMPNO=(SELECT MGR FROM EMP WHERE ENAME='SMITH');
2.WAQTD ADAMS MANAGER'S MANAGER NAME?
SELECT ENAME FROM EMP
WHERE EMPNO=(SELECT MGR FROM EMP
WHERE EMPNO=(SELECT MGR FROM EMP WHERE ENAME='ADAMS'));
3.WAQTD DNAME OF JONES MANAGER?
SELECT DNAME FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO FROM EMP
WHERE EMPNO=(SELECT MGR FROM EMP WHERE ENAME='JONES'));
4.WAQTD MILLER'S MANAGER'S SALARY ?
SELECT SAL FROM EMP
WHERE EMPNO=(SELECT MGR FROM EMP WHERE ENAME='MILLER');
5.WAQTD LOC OF SMITH'S MANAGER'S MANAGER.?
SELECT LOC FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO FROM EMP WHERE
EMPNO=(SELECT MGR FROM EMP WHERE
EMPNO=(SELECT MGR FROM EMP WHERE ENAME='SMITH')));
6.WAQTD NAME OF THE EMPLOYEES REPORTING TO BLAKE ?
SELECT ENAME FROM EMP
WHERE MGR=(SELECT EMPNO FROM EMP WHERE ENAME='BLAKE');
77.WAQTD NUMBER OF EMPLPOYEES REPORTING TO KING?
SELECT COUNT(*) FROM EMP
WHERE MGR=(SELECT EMPNO FROM EMP WHERE ENAME='KING');
8. WAQTD DETAILS OF THE EMPLOYEES REPORTING TO JONES?
SELECT * FROM EMP
WHERE MGR=(SELECT EMPNO FROM EMP WHERE ENAME='JONES');
9.WAQTD ENAMES OF THE EMPLOYEES REPORTING TO BLAKE'S
MANAGER?
SELECT ENAME FROM EMP
WHERE MGR=(SELECT EMPNO FROM EMP WHERE
EMPNO=(SELECT MGR FROM EMP WHERE ENAME='BLAKE'));
10.WAQTD NUMBER OF EMPLOYEES REPORTING TO FORD'S MANAGER?
SELECT COUNT(*) FROM EMP
WHERE MGR=(SELECT MGR FROM EMP WHERE ENAME='FORD');

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;

2.INNER JOIN/EQUI JOIN:


“IT IS USED TO OBTAIN OR MERGE ONLY MATCHING RECORDS”
TO OBTAIN MATCHING RECORDS WE MUST WRITE JOIN CONDITION.
JOIN CONDITION: IT IS USED TO MERGE ONLY MATCHING RECORDS.
EMP
DEPT DEPTNO DNAME LOC
10 D1 L1
20 D2 L2
30 D3 L3

EMPNO ENAME DEPTNO


1 ALLEN 10 TABLE1
2 SMITH 20
TABLE2
3 SCOTT 30

EMPNO ENAME DEPTNO DEPTNO DNAME LOC


1 ALLEN 10 10 D1 L1
2 SMITH 20 20 D2 L2
3 SCOTT 30 30 D3 L3

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;

You might also like