0% found this document useful (0 votes)
9 views24 pages

SQL Training Notes

The document provides a comprehensive overview of SQL query syntax, including the use of SELECT, DISTINCT, WHERE, GROUP BY, HAVING, and ORDER BY clauses. It covers various examples of queries to retrieve employee data from a database, including filtering, grouping, and using subqueries. Additionally, it explains the concepts of single row and multi-row subqueries, as well as nested subqueries.

Uploaded by

Ayush Kashyap
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views24 pages

SQL Training Notes

The document provides a comprehensive overview of SQL query syntax, including the use of SELECT, DISTINCT, WHERE, GROUP BY, HAVING, and ORDER BY clauses. It covers various examples of queries to retrieve employee data from a database, including filtering, grouping, and using subqueries. Additionally, it explains the concepts of single row and multi-row subqueries, as well as nested subqueries.

Uploaded by

Ayush Kashyap
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 24

PROJECTION

SELECT */DISTINCT COL-NAME/EXPRESSION ALIAS


FROM TABLE NAME;

DISTINCT-It is used to remove duplicates values from result table;


-Always use distinct as first argument
Eg- SELECT DISTINCT SAL,DEPT_NO FROM EMP;

Expression- Eg:SELECT SAL*12 FROM EMP;//Annual Salary


Eg:SELECT SAL*12 + SAL*12*0.25 FROM EMP;//Annual Salary with 25%
hike

Alias:To give column name


Eg:SELECT SAL*12 AS ANNUAL FROM EMP;//Annual Salary
SELECT SAL*12 AS ANNUALSAL FROM EMP
//If you have to give space use double quotes(it is the only place we use
double quotes)
SELECT SAL*12 AS "ANNUAL SAL" FROM EMP;

SELECT FIRST_NAME||','||LAST_NAME AS NAME,SALARY*12 FROM EMPLOYEES;


SELECT FIRST_NAME||','||LAST_NAME,JOB_ID,SALARY*6 FROM EMPLOYEES;
SELECT EMPLOYEES.*,SALARY*12+2000 FROM EMPLOYEES;
SELECT FIRST_NAME||','||LAST_NAME AS NAME,SALARY,SALARY*12+SALARY*12*0.1 AS
HIKE_Sal FROM EMPLOYEES;
SELECT FIRST_NAME||','||LAST_NAME AS NAME,SALARY*12-SALARY*12*0.25 AS DEDUCTION
SALARY FROM EMPLOYEES;
SELECT FIRST_NAME||','||LAST_NAME AS NAMEE,SALARY,SALARY+50 AS "HIKE SALARY" FROM
EMPLOYEES;
SELECT NAME,SALARY+COMM FROM EMPLOYEES;
SELECT *,SAL*12 FROM EMPLOYEES;
SELECT NAME,DESIGNATION,SALARY-100 AS Penalty_Sal AS EMPLOYEES;

WHERE

SELECT */DISTINCT COL-NAME/EXPRESSION ALIAS


FROM TABLE NAME;
WHERE <FILTER CONDITION>;

Eg-SELECT * FROM EMP WHERE HIREDATE> '11-JAN-1983';


SELECT * FROM EMP WHERE HIREDATE> '31-DEC-1981';//Employees hiredate after
1981

SELECT SALARY*12 FROM EMPLOYEES WHERE FIRST_NAME='SMITH'|| LAST_NAME='SMITH';


SELECT FIRST_NAME||'.'||LAST_NAME AS NAME FROM EMPLOYEES WHERE JOB_ID='CLERK';
SELECT SALARY AS NAME FROM EMPLOYEES WHERE JOB_ID='SALESMAN';
SELECT * FROM EMPLOYEES WHERE SALARY>2000;
SELECT * FROM EMPLOYEES WHERE FIRST_NAME='JONES'|| LAST_NAME='JONES';
SELECT * FROM EMPLOYEES WHERE HIREDATE> '01-JAN-1981';
SELECT FIRST_NAME||'.'||LAST_NAME AS NAME,SALARY,SALARY*12 AS "ANNUAL SALARY" FROM
EMPLOYEES WHERE "ANNUAL SALARY">2000;
SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE DEPARTMENT_ID=20;
SELECT FIRST_NAME||'.'||LAST_NAME AS NAME,HIREDATE FROM EMPLOYEES WHERE HIREDATE<
'01-JAN-1981';
SELECT * FROM EMPLOYEES WHERE JOB_ID='MANAGER';
SELECT FIRST_NAME||'.'||LAST_NAME AS NAME,SALARY FROM EMPLOYEES WHERE
COMMISION_PCT=1400;
SELECT * FROM EMPLOYEES WHERE COMMISION_PCT>SALARY;
SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE HIREDATE< '01-JAN-1987';
SELECT * FROM EMPLOYEES FROM EMPLOYEES WHERE JOB_ID='ANALYST';
SELECT * FROM EMPLOYEES WHERE SALARY+COMMISION_PCT>2000;

26-03-2025
-----------------
(THEN)
select sal,case
when sal> 3000 then 'woww'
when sal between 1500 and 3000 then 'okok'
when sal< 1500 then 'chiii'
end as Expression (to change the column name)
from emp;

SELECT COMM,CASE
WHEN COMM IS NOT NULL THEN 'GOOD JOB'
ELSE 'ENGINEERS'
END
AS REMARK
FROM EMP;

GROUP BY
-------------------------------- --------------------------------
SELECT GROUP_FUNCTION/GRP_BY_EXP
FROM TAB_NAME
WHERE <FLTR_CNDTN> (OPTIONAL)
GROUP BY COL_NAME/EXP

Q1)WAQTD NO. OF EMP WORKING IN EACH DEPARTMENT?


SELECT COUNT(*)
FROM EMP
GROUP BY DEPTNO;

TO DISPLAY THE DEPT NUMBER WE NEED TO USE GROUP BY EXP SO


SELECT COUNT(*),DEPTNO
FROM EMP
GROUP BY DEPTNO;

Q2) WAQTD NO. OF EMPS EARNING MORE THAN 200 IN EACH DEPARTMENT

SELECT COUNT(*),DEPTNO
FROM EMP
WHERE SAL>2000
GROUP BY DEPTNO;

1) SELECT COUNT(*),DEPTNO
FROM EMP
WHERE JOB !='PRESIDENT'
GROUP BY DEPTNO;

2)SELECT SUM(SAL),JOB
FROM EMP
GROUP BY JOB;

3)SELECT COUNT(*)
FROM EMP
WHERE JOB='MANAGER'
GROUP BY DEPTNO;

4)SELECT AVG(SAL),DEPTNO
FROM EMP
WHERE DEPTNO !=20
GROUP BY DEPTNO;

5)SELECT COUNT(*)
FROM EMP
WHERE ENAME LIKE '%A%'
GROUP BY JOB;

6)SELECT COUNT(*),AVG(SAL),DEPTNO
FROM EMP
WHERE SAL>2000
GROUP BY DEPTNO;

7)SELECT COUNT(*),SUM(SAL)
FROM EMP
GROUP BY DEPTNO;
8)
SELECT COUNT(*),MAX(SAL)
FROM EMP
GROUP BY JOB;
9)
SELECT MAX(SAL)
FROM EMP
GROUP BY DEPTNO;
10)
.....

Q) WAQTD NUMBER OF EMO HIRED ON THE SAME DAY INTO THE SAME DEPT
SELECT COUNT(*),HIREDATE,DEPTNO
FROM EMP
GROUP BY HIREDATE,DEPTNO;

Q)
SELECT COUNT(*)
FROM EMP

HAVING CLAUSE
------------------------------------------------------------------------

It used to filter the groups.


SYNTAX:-
1)SELECT GROUP_FUNCTION/GROUP_BY_EXPRESSION
2)FROM TABLE_NAME
3)WHERE <FILTER_CONDITION>
4)GROUP BY COLUMN_NAME
5)HAVING<GROUP_FILTER_CONDITION>;

ORDER OF EXECUTION:-
FROM
WHERE (ROW BY ROW)
GROUP BY (ROW BY ROW)
HAVING (GROUP BY GROUP)
SELECT (GROUP BY GROUP)
Q1)
WAQTD TO FIND NUMBER OF EMPLOYEE WORKING IN EACH DEPT IF THERE ARE AT LEAST 3
EMPLOYEES IN EACH DEPT.

SELECT COUNT(*),DEPTNO
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*)>=3;

Q2)
WAQTD THE DESIGNATIONS IN WHICH THERE ARE AT LEST 2 EMPLOYEES PRESENT.

SELECT JOB,COUNT(*)
FROM EMP
GROUP BY JOB;

-->SELECT JOB,COUNT(*)
FROM EMP
GROUP BY JOB
HAVING COUNT(*)>=2;

Q3)
--WAQTD THE NAMES THAT ARE REPEATED
SELECT ENAME,COUNT(*)
FROM EMP
GROUP BY ENAME;

-->SELECT ENAME,COUNT(*)
FROM EMP
GROUP BY ENAME
HAVING COUNT(*) >1;

Q4) THE NAME THAT IS REPEATED TWICE.

Q5)
WHQTD DEPTNO AND NUMBER OF CLERKS WORKING IN EACH DEPT IF THERE ARE ATLEAST 2
CLERKS IN EACH DEPT.

SELECT COUNT(*),DEPTNO
FROM EMP
GROUP BY DEPTNO
HAVING COUNT('CLERKS')>=2;

Q6)
WAQTD DEPTNO AND TOTAL SALARY NEEDED TO PAY ALL EMP IN EACH DEPT IF THERE ARE
ATLEAST 4 EMP IN EACH DEPT.

SELECT COUNT(*),SUM(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*)>=4;

Q7)
WAQTD NUMBER OF EMPLOYEE EARNING SAL MORE THAN 1200 IN EACH JOB AND THE TOTAL SAL
NEEDED TO PAY EMP OF EACH JOB MUST EXCEES 3800.
SELECT COUNT(*)
FROM EMP
WHERE SAL>1200
GROUP BY JOB
HAVING SUM(SAL)>3800;

Q8)
WAQTD DEPTNO 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(JOB)=2;

Q9)
WAQTD JOB AND MAX SAL OF EMP IN EACH JOB IF THE MAX SALARY EXCEEDS 2600.

SELECT JOB,MAX(SAL)
FROM EMP
GROUP BY JOB
HAVING MAX(SAL)>2600;

Q10)
WAQTD THE SALARIES WHICH ARE REPEATED IN EACH EMP TABLE.

SELECT COUNT(*) ,
FROM EMP

ORDER BY
---------------------------------------------------------------------------
SYNTAX:-
SELECT */COL_NAME/EXP
FROM TAB_NAME
WHERE <FILTER_CONDITION> (OPTIONAL)
ORDER BY COL_NAME/EXP ASC/DESC;

SELECT GROUP_FUNCTION/GROUP BY EXPRESSION


FROM TABLE_NAME
WHERE <FILTER_CONDITION>
GROUP BY COLUMN_NAME/EXPPRESSION
HAVING<GROUP_FILTER_CONDITION>
ORDER BY COLUMN_NAME/EXPRESSION ASC/DESC;

ORDER OF EXECUTION:-

FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
SELECT *
FROM EMP
ORDER BY DEPTNO DESC;

SELECT SAL,DEPTNO
FROM EMP
ORDER BY SAL,DEPTNO;

SUB-QUERY
--------------------------------------------------------------------------

A QUERY WHICH IS WRITTEN INSIDE ANOTHER QUERY IS KNOWN AS SUB QUERY.

WE'VE TWO QUERY


INNER QUERY WILL TAKE INPUT FROM THE USER.
1)INNER QUERY-------->THIS IS GIVEN AS INPUT TO THE OUTER QUERY.
2)OUTER QUERY----AFTER TAKING THE INPUT FROM THE INNER QUERY THE OUTPUT QUERY WILL
PROVIDE THE OUTPUT.
OUTER QUERY IS COMPLETELY DEPENDENT ON INNER QUERY.

SUBQUERY HAVING TO TWO CASES:-

CASE1:-
WHEN EVER THERE IS AN UNKNOW PRESENT IN THE QUESTION OR IN A QUERY WE USE SUB QUERY
TO FIND OUT THE UNKNOWN.

CASE 2:-
WHENEVER THE DATA TO BE SELECTED AND CONDITION TO BE EXECUTED ARE PRESENT IN
DIFFERENT TABLES WE USE SUB QUERY.

EXAMPLE FOR CASE 1:-

(WHEN EVER THERE IS AN UNKNOW PRESENT IN THE QUESTION OR IN A QUERY WE USE SUB
QUERY TO FIND OUT THE

Q1)
WAQTD NAME AND SALARY OF EMPLOYEES EARNING MORE THAN YOGI.

SELECT ENAME,SAL
FROM EMP
WHERE SAL >4.(200)(3.SELECT SAL
1.FROM EMP
2. WHERE ENAME='YOGI');

Q1)
WAQTD NAME OF THE EMPLOYEES EARNING MORE THAN THE ADAMS

SELECT ENAME
FROM EMP
WHERE SAL>(SELECT SAL
FROM EMP
WHERE ENAME='ADAMS');

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

Q3)
WAQTD NAME AND DEPTNO OF THE EMPLOYEE IF THEY ARE WORKING IN THE SAME DEPT AS
JONES.

SELECT ENAME,DEPTNO
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO
FROM EMP WHERE ENAME ='JONES');

Q4)
WAQTD NAME AND JOB OF ALL THE EMPLOYEES WORKING AS THE SAME DESIGNATION AS JAMES.

SELECT ENAME,JOB
FROM EMP
WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME='JAMES');

Q5)
WAQTD EMPNO AND ENAME ALONG WITH ANNUAL SALARY OF ALL EMPLOYEES IF THEIR ANNUAL
SALARY IS GREATER THAN WARDS ANNUAL SALARY.

SELECT EMPNO,ENAME,SAL*12 AS ANNUALSAL


FROM EMP
WHERE SAL*12>(SELECT SAL*12
FROM EMP
WHERE ENAME='WARD');

Q6)

Q11)
WAQTD ENAME AND SALARY OF ALL THE EMPLOYEES WHO ARE LEARNING MORE THAN MILLER BUT
LESS THAN ALLEN.

11) SELECT ENAME,SAL


FROM EMP
WHERE SAL>(SELECT SAL
FROM EMP
WHERE ENAME='MILLER')
AND
SAL<(SELECT SAL
FROM EMP
WHERE ENAME='ALLEN');

Q12)
WAQTD ALL THE DETAILS OF THE EMPLOYEES WORKING IN DEPT 20 AND WORKING IN THE SAME
DESIGNATION AS SMITH.
SELECT ENAME,EMPNO,DEPTNO,SAL
FROM EMP
WHERE DEPTNO=20 AND JOB=(SELECT JOB
FROM EMP
WHERE ENAME='SMITH');

Q13)
WAQTD ALL THE DETAILS OF THE EMPLOYEES WORKING AS MANAGER IN THE SAME DEPT AS
TURNER.

CASE 2:-
WHENEVER THE DATA TO BE SELECTED AND CONDITION TO BE EXECUTED ARE PRESENT IN
DIFFERENT TABLES WE USE SUB QUERY.

Q1)
WAQTD DNAME OF ANANT.
SELECT DNAME
FROM DEPT
WHERE DEPTNAME =
(
SELECT DEPTNO
FROM EMP
WHERE ENAME ='ANANT');

Q1)
WAQTD DNAME OF THE EMPLOYEES WHOS NAME IS SMITH.
SELECT DNAME
FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO
FROM EMP WHERE ENAME='SMITH');

Q2)
WAQTD DNAME AND LOC OF THE EMP WHOS NAME IS KING.
SELECT DNAME,LOC
FROM DEPT
WHERE DEPTNO=(SELECT DEPTNO
FROM EMP WHERE ENAME='KING' );

TYPES OF SUB QFERY:-

TWO TYPES OF SUB QUERY

1)SINGLE ROW SUB QUERY


2)MULTI ROW SUB QUERY

SINGLE ROW SUB QUERY :-


IF A SUB QUERY RETUENS A SINGLE VALUE OR A RECORD IT IS KNOWN AS SINGLE ROW SUB
QUERY.

Q1)SELECT * FROM EMP


WHERE DEPTNO =(SELECT DEPTNO FROM EMP WHERE ENAME ='SMITH');

FOR A SINGLE ROW SUB QUERY WE CAN USE NORMAL (=)OPERATOR AS WELL AS SPECIAL
OPERATOR(IN).

IF A SUB QUERY RETURNS MORE THAN ONE VALUE OR A RECORD WE CALLED MULTI ROW SUB
QUERY.

Q) WRITE A QUERY TO DISPLAY LOCATION OF SMITH AND ALLEN.


SELECT LOC
FROM DEPT
WHERE DEPTNO IN (SELECT DEPTNO
FROM EMP
WHERE ENAME IN('SMITH','ALLEN'));

FOR A MULTIROW SUB QUERY WE CAN USE ONLY SPECIAL OPERATORS NORMAL OPERATORS CANT
BE USED.

Q) WAQTD ENAME AND SAL OF THE EMP WHO ARE EARNING MORE THAN ALL THE EMPLOYEES OF
DEPTNO 10.

(--------SPECIAL CHARACTER-------------------)(ALL)(SHOULD SATISFY ALL VALUES THEN


ONLY IT WILL EXECUTE)(MULTIPLE ROW GET SINGLE OUTPUT BY USING ALL)
SELECT ENAME,SAL
FROM EMP
WHERE SAL< ALL(SELECT SAL FROM EMP WHERE DEPTNO=10);

ANY(LIKE OR OPERATOR)
----------------------------------------------------------------------------
WAQTD NAME JOB AND SAL OF THE EMPLOYEE IF THE ARE EARNING MORE THAN ATLEAST A
MANAGER.

SELECT ENAME,JOB,SAL
FROM EMP
WHERE SAL>ANY(SELECT SAL
FROM EMP WHERE JOB='MANAGER');

NESTED SUB QUERY


------------------------------------------------------------------------------
A QUARY WHICH IS WRITTEN INSIDE A SUB QUERY IS KNOWN AS A NESTED SUB QUERY. WE CAN
NEST UPTO 255 SUB QUERY.

SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP);

3RD MAXM SALARY


SELECT MAX(SAL)
FROM EMP
WHERE SAL< (SELECT MAX(SAL)
FROM EMP
WHERE SAL<(SELECT MAX(SAL)
FROM EMP));

Q)
5TH MINIUMUM 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
)
)
)
);

Q) WAQTD DEPT
NAME OF EMP WHO ARE EARNING 2ND MAXM 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 RELATION


--------------------------------------------------------------------------------
CASE1)
TO FIND MANAGER
WAQTD MANAGER NAME OF BHOLU

SELECT ENAME
FROM EMP
WHERE EMPNO IN
(SELECT MGR
FROM EMP
WHERE ENAME ='SMITH');

CASE2)
TO FIND EMPS REPORTING TO A MANAGER.

SELECT ENAME
FROM EMP
WHERE MGR IN (SELECT EMPNO
FROM EMP
WHERE ENAME='CHUKTI');

Q)
WAQTD MANAGER'S MANAGER NAME OF SMITH.
SELECT ENAME
FROM EMP
WHERE EMPNO IN(SELECT MGR
FROM EMP
WHERE EMPNO IN(SELECT MGR
FROM EMP
WHERE ENAME ='SMITH'));

Q)
WAQTD NUMBER OF EMPLOYEES WORKING IN THE DEPT WHERE THE PERSON IS EARNING MAXIMUM
SALARY.
SELECT COUNT(*)
FROM EMP
WHERE DEPTNO=(SELECT MAX(SAL)
FROM EMP);

SELECT COUNT(*)
FROM EMP
WHERE DEPTNO = (
SELECT DEPTNO
FROM EMP
WHERE SAL = (SELECT MAX(SAL) FROM EMP)
);

JOINS
-------------------------------------------------------------------------------
IT IS USED TO RETRIVE THE DATA FROM TABLE SIMULTANEOUSLY.

TYPES OF JOINS:-
1)CROSS JOIN OR CARTESIAN JOIN.
IT IS USED TO MERGE THE RECORD OF TABLE1 WITH ALL THE RECORDS OF TABLE 2.

SYNTAX:-
SELECT * COLUMN NAME /EXPRESSION
FROM T1 CROSS JOIN T2;

2)INNER JOIN:
IT IS USED TO OBTAIN ONLY MATCHING RECORDS OR A RECORD WHICH HAS A PAIR.

JOIN CONDITION:-ITS IS A CONDITION ON WHICH THE TWO TABLES ARE MERGED.

SYNTAX:-
TABLE_NAME1.COL_NAME=TABLE_NAME2.COL_NAME

SYNTAX FOR INNER JOIN:-


SELECT COLUMN_NAME/EXPRESSION
FROM T1 INNER JOIN T2 OR FROM T1 JOIN T2
ON <JOIN CONDITION> ;

Q)
WAQTD ENAME AND DENAME
SELECT ENAME,DNAME
FROM EMP INNER JOIN DENAME
ON ENAME.DEPTNO=DEPT.DETNO;

Q)
SELECT ENAME,LOC
FROM EMP JOIN DEPT
ON EMP.DEPTNO=DEPT.DEPTNO
WHERE JOB ='MANAGER';

Q)
WAQTD ENAME,SAL AND DNAME OF THE EMPLOYEE WORKING AS CLERK IN DEPT 20 WITH A SALARY
OF MORE THAN 1800.

SELECT ENAME,SAL,DNAME
FROM EMP E JOIN DEPT D
ON E.DEPTNO = D.DEPTNO
WHERE JOB ='CLERK' AND E.DEPTNO=20 AND SAL>1800;
Q)
WAQTD ENAME DEPTNO,DNAME AND LOC OF THE EMPLOYEE EARNING MORE THAN 2000 IN NEW
YORK.

SELECT ENAME,D.DNAME,LOC,D.DEPTNO
FROM EMP E JOIN DEPT D
ON E.DEPTNO=D.DEPTNO
WHERE SAL>2000 AND LOC ='NEW YORK';

Q)
NAME OF THE EMPLOYEE AND HIS LOC OF ALL THE EMPLOYEES.

SELECT ENAME,LOC
FROM EMP E JOIN DEPT D
ON E.DEPTNO=D.DEPTNO;

Q2)
WAQTD DNAME AND SAL FOR ALL THE EMPLOYEE WORKING IN ACCOUNTING.
SELECT DNAME,SAL
FROM EMP E JOIN DEPT D
ON E.DEPTNO=D.DEPTNO
WHERE D.DNAME='ACCOUNTING';

Q3)
WAQTD DNAME AND ANNUAL SALARY FOR ALL EMPLOYEES WHOS SALARY IS MORE THAN 2340.

SELECT DNAME,SAL*12
FROM EMP E JOIN DEPT D
ON E.DEPTNO=D.DEPTNO
WHERE E.SAL>2340;

Q4)
WAQTD ENAME AND DNAME FOR EMPLOYEES HAVING CHARACTER 'A' IN THEIR DNAME.

SELECT ENAME,D.DNAME
FROM EMP E JOIN DEPT D
ON E.DEPTNO=D.DEPTNO
WHERE D.DNAME LIKE '%A';

Q5)
WAQTD ENAME AND DNAME FOR ALL THE EMPLOYEES WORKING AS SALESMAN.

SELECT ENAME,D.DNAME
FROM EMP E JOIN DEPT D
ON E.DEPTNO=D.DEPTNO
WHERE JOB='SALESMAN';

Q6)
WAQTD DNAME AND JOB FOR ALL THE EMPLOYEES WHOS JOB AND DNAME STARTS WITH CHAR 'S'.

SELECT D.DNAME,JOB
FROM EMP E JOIN DEPT D
ON E.DEPTNO=D.DEPTNO
WHERE D.DNAME='%S' AND JOB='%S';
Q7)
WAQTD DNAME AND MGR NO FOR EMPLOYEES REPORTING TO 7839.
SELECT D.DNAME,MGR
FROM EMP E JOIN DEPT D
ON E.DEPTNO=D.DEPTNO
WHERE EMPNO=7839;

Q8)
WAQTD DNAME AND HIREDATE FOR EMPLOYEES HIRED AFTER 83 INTO ACCOUNTING AND RESEARCH
DEPT.
Q9)
WAQTD ENAME AND DNAME OF THE EMPLOYEES WHO ARE GETTING COMM IN DEPT 10 OR 30.
Q10)
WAQTD DNAME AND EMPNO FOR ALL THE EMPLOYEES WHOS EMPNO ARE (7839,7902) AND ARE
WORKING IN LOC NEY YORK.

OUTER JOIN
--------------------------------------------------------------------------
IT IS USED TO OBTAIN UN-MATCHED RECORDS.

1.LEFT OUTER JOIN


IT IS USED TO OBTAIN UN-MATCHED RECOEDS OF LEFT TABLE ALONG WITH MATCHING RECORDS.

SYNTAX
FOR LEFT OUTER JOIN:-

SELECT */COLUMN_NAME/EXP
FROM T1 LEFT JOIN T2
ON <JOIN CONDITION>;

SELECT ENAME,DNAME
FROM EMP LEFT JOIN DEPT
ON EMP.DEPTNO=DEPT.DEPTNO;

RIGHT OUTER JOIN


-------------------------------------------------------------------------------
IT IS USED TO OBTAIN UN-MATCHED RECORDS OF RIGHT TABLE ALONG WITH MATCHING
RECORDS.

SELECT */COLUMN_NAME/EXP
FROM T1 RIGHT JOIN T2
ON <JOIN CONDITION>;

FULL OUTER JOIN


-------------------------------------------------------------------------------

IF IS USED TO OBTAIN UN-MATCHED RECORDS OF LEFT AND RIGHT TABLE ALONG WITH MATCHING
RECORDS.

SYNTAX:-
SELECT ENAME,DNAME
FROM EMP LEFT JOIN DEPT
ON EMP.DEPTNO =DEPT.DEPTNO
UNION
SELECT ENAME,DNAME
FROM EMP RIGHT JOIN DEPT
ON EMP.DEPTNO=DEPT.DEPTNO;

SELF JOIN
-----------------------------------------------------------------------------------
----------------------------------------------
JOINING A TABLE BY ITSELF IS KNOWN AS SELF JOIN.

WHENEVER THE DATA TO SELECT IS IN THE SAME TABLE BUT PRESENT IN DIFFERENT RECORDS
WE USE SELF JOIN.
SELECT E1.ENAME,E2.ENAME
FROM EMP E1,EMP E2
WHERE E1.MGR=E2.EMPNO;

SELECT E1.ENAME,E2.ENAME
FROM EMP E1 JOIN EMP E2
ON E1.MGR =E2.EMPNO;

SELECT E1.ENAME,E2.ENAME
FROM EMP E1,EMP E2
WHERE E1.MGR =E2.EMPNO;

LEFT OUTER JOIN


-----------------------------------------------------------------------------------
-----------------------------------------------
SELECT ENAME,DNAME
FROM DEPT,EMP
WHERE DEPT.DEPTNO=EMP.DEPTNO(+);

RIGHT OUTER JOIN


-----------------------------------------------------------------------------------
-------------------------------------
SELECT ENAME,DNAME
FROM DEPT,EMP
WHERE DEPT.DEPTNO(+)=EMP.DEPTNO;

NATURAL JOIN
-----------------------------------------------------------------------------------
------------------------------------------------

SELECT *
FROM EMP NATURAL JOIN DEPT;

WHEN THERE IS A RELATION BETWEEN TWO TABLES IT WILL ACT AS INNNER OR EQUI JOIN.

IF THERE IS NO REALATION BETWEEN TWO TABLE IT ACTS AS CROSS JOIN.


(
SELECT *
FROM EMP NATURAL JOIN F;)
Q)
WAQTD EMP NAME , MANAGER NAME AND MANAGER'S MANAGERS NAME.
ORACLE FORM
SELECT E1.ENAME EMPNAME ,E2.ENAME MANAGERNAME,E3.ENAME MANAGERSMANAGERSNAME
FROM EMP E1,EMP E2,EMP E3
WHERE E1.MGR =E2.EMPNO AND E2.MGR=E3.EMPNO;

ANSII FORM
SELECT E1.ENAME,E2.ENAME,E3.ENAME
FROM EMP E1 JOIN EMP E2
ON E1.MGR =E2.EMPNO JOIN EMP E3
ON E2.MGR = E3.EMPNO;

WAQTD EMPLOYEE NAME, EMP DEPT NAME , MANAGER NAME AND LOCATION OF MANAGER.
SELECT
E.ENAME AS EMPLOYEE_NAME,
D.DNAME AS DEPARTMENT_NAME,
M.ENAME AS MANAGER_NAME,
DM.LOC AS MANAGER_LOCATION
FROM EMP E
JOIN DEPT D ON E.DEPTNO = D.DEPTNO
LEFT JOIN EMP M ON E.MGR = M.EMPNO
LEFT JOIN DEPT DM ON M.DEPTNO = DM.DEPTNO;

Q1)
NO OF RECORDS PRESENT IN A TABLE WITHOUT COUNT FUNCTION.
Q2)
WAQTD 2ND MAXM SALARY IN ACCOUNTING DEPARTMENT.
Q3
WAQTD EMP NAME, EMP DEPT NAME, MANAGER NAME,MANAGERS DEPT NAME,MANAGERS MANAGERS
NAME, MANAGERS MANAGERS LOCATION
WHERE EMPLOYEES EMP ARE EARNING MORE THAN 2000 AND MANAGERS ARE EARNING MORE THAN
EMP. MANAGERS MANAGERS LOCATION CONSIST OF CHARACTER A. WHERE EMP ARE

Q4)
NAMES OF EMPLOYEES CONTAINING AND OF THE VOWELS.

CO-RELATED SUB QUERY


-----------------------------------------------------------------------------------
------------------------------------------------
IN THIS QUERY OUTER QUERY EXECUTES FIRST AND IT GIVE SOME PARTIAL OUTPUT NOW IT
WILL GIVEN INPUT TO THE INNER QUERY AND THEN AFTER INNER QUERY WILL ACT AND AFTER
GIVING OUTPUT IT WILL AGAIN GIVE OUTPUT TO THE OUTER QUERY AND IT WILL GIVE THE
FINAL OUTPUT.

BOTH THE QUERIES ARE INTERDEPENDENT.


TO FIND NTH MAXM SALARY
SELECT SAL
FROM EMP E1
WHERE(SELECT COUNT(DISTINCT SAL)
FROM EMP E2
WHERE E2.SAL>=E1.SAL)=2;

Q)
FIND THE 2ND MAXIMUM SALARY FROM EACH DEPT.

SELECT SAL
FROM EMP E1 DEPT D1
GROUP BY DEPT

SELECT DEPTNO, ENAME, SAL


FROM EMP E1
WHERE 2 = (
SELECT COUNT(DISTINCT SAL)
FROM EMP E2
WHERE E2.DEPTNO = E1.DEPTNO
AND E2.SAL >= E1.SAL
);

CREATE TABLE TAB_NAME

CREATE TABLE STUDENT


(
SIT NUMBER(5) PRIMARY KEY,
SNAME VARCHAR(20) NOT NULL,
PHNO NUMBER(10) UNIQUE NOT NULL CHECK(LENGTH(PHNO)=10)CHECK(PHNO>0)
);

CREATE TABLE TRAINER


(
TID NUMBER(5) PRIMARY KEY,
TNAME VARCHAR(20) NOT NULL,
SID NUMBER(5),
CONSTRAINT SID_FK FOREIGN KEY(SID) REFERENCES STUDENT(SID));

RENAME
IT IS USED TO RENAME THE A TABLE.
RENAME EXISTING_TAB_NAME TO NEW_NAME;

ALTER TABLE TRAINER


ALL SAL NUMBER(5) NOT NULL;

CHANGE A COLUMN
-------------------------------------------------------------------
ALTER TABLE TRAINER
RENAME COLUMN SAL TO TANQHA;
DESC TRAINER;

ALTER TABLE_NAME
MODIFY COL_NAME NEW DATATYPE;

ALTER TABLE TAB_NAME


DROP COLUMN COL_NAME;

ALTER TABLE TRAINER


MODIFY TID VARCHAR(10);

ALTER TABLE TAB_NAME


MODIFY COL_NAME EXISTING_DATATYPE NEW_CONTRAINTS;

DROP TABLE TAB_NAME;


FLASHBACK TABLE TAB_NAME TO BEFORE DROP;

PURGE TABLE TAB_NAME; (TO PERMANENTLY DELETE THE TABLE). IT WILL DELETE THE SATA
FROM THE RECYCLE BIN NOT FROM THE DATABASE. SO FIRST WE NEED TO DROP THE TABLE AND
THEN USE PURGE TO DELETE THE TABLE FROM THE RECYCLE BIN FROM IT.

SHOW RECYCLEBIN;

INSERT INTO TAB_NAME VALUES(V1,V2,V3,.........);


INSERT INTO STUD VALUES(1,'AYUSH',1234567890);
INSERT INTO STUD(SID,SNAME,PHNO) VALUES (2,'ARPIT',9875434532);

UPDATE TAB_NAME
SEL COL_NAME = VALUES
WHERE <CONDITION>;

Q)
WAQTD OF EMP DETAILS OF ALL THE EMPLOYEE ALONG WITH ANNUAL BONUS 2000;
SELECT COUNT(*),ENAME,ANNUALBONUS
FROM EMP
WHERE

TRANSACTION CONTROL LANGUAGE


-----------------------------------------------------------------------------------
-----------------
IT IS USED TO

ROLL BACK
-----------------------------------------------------------------------------------
---------------------

IT WILL TAKE YOU TO THE POINT YOU COMMITTED FOR THE LAST TIME.

SAVE POINT:- TO MARK TEMPORARY QUESTION.


SYNTAX:-INSERT INTO EMP2(EMPNO,ENAME) VALUES(&EMPNO,&ENAME);

ROLLBACK TO S3;
DATA CONTROL LANGUAGE
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------
TO CONTROL THE DATA FLOW BETWEEN THE USER .
GRANT :-
GRANT SQL_STMT
ON TAB_NAME
TO USER_NAME ;

REVOKE:-

IT IS USED TO TAKE BACK THE PERMISSION GIVEN TO THE USER

SYNTAX:-
REVOKE SQL_STMT
ON TAB_NAME
FROM USER_NAME;

ALL OPERATOR
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------
IT RETURNS TRUE IF A SUB QUERY USE ANY VALUE.
SELECT DNAME
FROM DEPT
WHERE NOT EXISTS (SELECT 1
FROM EMP
WHERE EMP.DEPTNO=DEPT.DEPTNO)

TYPES OF ATTRIBUTES
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------
1)KEY ATTRIBUTES :-
ATTRIBUTES WHICH IS USED TO IDENTIFIED THE RECORDS UNIQUELY.

2)NO KEY ATTRIBUTES:-


ALL THE ATTRIBUTES OTHER THAN KEY ATTRIBUTES ARE CALLED NON KEY ATTRIBUTES.

3)PRIME KEY ATTRIBUTES:-


AMONG ALL THE KEY ATTRIBUTES IF WE SELECT ANY ONE OF THE KEY ATTRIBUTES TO IDENTIFY
THE RECORDS UNIQUELY THE ITS CALLED PRIMARY KEY.

4)NON PRIME KEY ATTRIBUTE:-


ALL THE ATTRIBUTES OTHER THAN PRIME KEY ATTRIBUTES ARE CALLED NON KEY ATTRIBUTES.

5)COMPOSITE KEY ATTRIBUTE:-


AMONG ALL THE NON KEY ATTRIBUTES IF WE COMBINE TWO OR MORE ATTRIBUTES TO IDENTIFY
THE RECORDS UNIQUELY.

SUPER KEY ATTRIBUTES:-


SET OF ALL KEY ATTRIBUTES IS KNOWN AS A SUPER KEY ATTRIBUTES.

FOREIGN KEY ATTRIBUTES:-

FUNCTIONAL DEPENDENCIES
-----------------------------------------------------------------------------------
-----------------------------------------------
AN ATTRIBUTE IN A RELATION DETERMINE ANOTHER ATTRIBUTE IS KNOWN AS SFUNCTIONAL
DEPENDENCIES.

TOTAL FUNTIONAL DEPENDENCIES:-


ALL THE ATTRIBUTES ON A TABLE DEPENDEND ON A SINGLE ATTRIBUTE.

PARTIAL FUNTIONAL DEPENDENCIES:-


THERE EXIST A DEPENDENCY A PART OF A COMPOSIT KEY ATTRIBUTES DETERMINES ANOTHER NON
KEY ATTRIBUTES.

TRANSITIVE FUNCTIONAL DEPENDENCIES:-


IN A PRESENCE OF A KEY ATTRIBUTE A NON KEY ATTRIBUTE IS DETERMINIENEA ANOTHER NON
KEY ATTRIBITE IS KNOWN AS TRANSITIVE FUNCTIONAL DEPNDENCIES.

CREATE TABLE STUDENT


(
SID NUMBER(5) PRIMARY KEY,
SNAME VARCHAR(20) NOT NULL,
PHNO NUMBER(10) UNIQUE NOT NULL CHECK(LENGTH(PHNO)=10)CHECK(PHNO>0)
);

CREATE TABLE TRAINER


(
TID NUMBER(5) PRIMARY KEY,
TNAME VARCHAR(20) NOT NULL,
SID NUMBER(5),
CONSTRAINT SID_FK FOREIGN KEY(SID) REFERENCES STUDENT(SID));

-------------------------------------------------------------------------------02-
04-
2024-------------------------------------------------------------------------------
--------------

REDUCING LARGER TABLE IN TO SEVERAL SMALLER STABLES IN


ORDER TO REMOVE REDUNDANCIES AND ANOMALIES.
LEVELS OF NORMAL FORMS:-
1NF:(1ST NORMAL FORM):-

A CELL SHOULD NOT CONTAIN MULTI VALUE TABLE,


A CELL SHOULD NOT CONTAIN DUPLICATES RECORDS
2NF:(2ND NORMAL FORM) :-
IT SHOULD BE IN 1ST NORAML FORM
A TABLE SHOULD NOT HAVE PARTIAL FUNCTIONAL DEPENDENCIES.

3NF:(3RD NORMAL FORM)


BCNF(BOYYS COTT NORMAL FORM)

SELECT REVERSE(ENAME)
FROM EMP;

select substr('KALINGA',4,2)
FROM DUAL;

SELECT INSTR('ORIGINAL STRING',STRING,POSITION,[OCCURANCE])


FROM DUAL/EMP;

SELECT INITCAP(ENAME)
FROM EMP;

SELECT INSTR('KALINGA','A',1,2)
FROM DUAL;

SELECT INSTR('KALINGA','A',1,1)
FROM DUAL;

REPLACE('ORIGINAL_STRING',REPLACING WORD, REPLACING WITH)


FROM DUAL;

SELECT REPLACE('APPLE','P','R')
FROM DUAL;

SELECT REPLACE('APPLE','L')
FROM DUAL;

SELECT MONTHS_BETWEEN('02-APR-2024','02-APR-2025')
FROM DUAL;

SELECT MONTHS_BETWEEN('02-APR-2025','02-APR-2024')
FROM DUAL;

ROUND FUNCTION WILL ROUND OFF THE VALUE .5> TO HIGHEST ADNF IF VALUE <.5 IT WILL
TAKE THE FLOOE VALUE OR LEAST VALUR.

IT WILL ROUNF IT OFF TO THE LEAST VALUES


SELECT TRUNC(198.9)
FROM DUAL;

C(198.9)
--------
198
SELECT SYSDATE FROM DUAL;

SELECT SYSTIMESTAMP
FROM DUAL;

IMESTAMP
---------------------------------------
PR-25 11.00.00.006000 AM +05:30

Q)
DISPLAY EXPERIENCE OF ALL THE EMPLOYEES IN MONTHS.
SELECT ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12)
FROM EMP;

------------------------------------------------
ROLLUP---------------------------------------------------------
TO DISPLAY THE GRAND TOTAL OF THE TABLE.
SELECT SUM(SAL),JOB
FROM EMP
GROUP BY ROLLUP(JOB);

SELECT DEPTNO,JOB,SUM(SAL)
FROM EMP
GROUP BY ROLLUP(DEPTNO,JOB)
ORDER BY DEPTNO

SET LINES 100 PAGES 100;


--------------------------------------------------------------
CUBE-------------------------------------------------------------
SELECT DEPTNO,JOB,SUM(SAL)
FROM EMP
GROUP BY CUBE(DEPTNO,JOB); CUBE WILL GIVE THE SUM OF THE SPECIFIC RECORD.

-----------------------------------------------------------------------------------
---------------------TEMPORARY
TABLE--------------------------------------------------------------------
CREATE GLOBAL TEMPORARY TABLE GT1
(
SLNO NUMBER(5) UNIQUE,
NAME VARCHAR(10)
)ON COMMIT DELETE ROWS;

INSERT INTO GT1 VALUES(1,'ANUSHKA');


INSERT INTO GT1 VALUES(2,'KATTAPA');

DATABASE OBJECTS
1)INDEX
2)VIEWS
3)SEQUENCE

1)VIEWS:
CREATE VIEW VIEW_NAME AS
SELECT COL1,COL2.....
FROM EMP;

TO COPY A TABLE ALONG WITH THE DATA.


CREATE TABLE EMP2 AS SELECT * FROM EMP;

UPDATE V

---------------------------SEQUENCE------------------------------
ITS A DATABASE OBJECT WHICH GIVES

CREATE SEQUENCE SEQ` START WITH 1 INCREAMENT BY 1;

You might also like