Skip to main content

DBMS lab record Degree

 

SQL EXPERIMENTS:-

1. Aim: The marketing company wishes to computerize its operations by using the following tables.

producers:-






1.1. Create Table: `CLIENT_MASTER` and Insert Values

CREATE TABLE CLIENT_MASTER (

    CLIENT_NO VARCHAR2(6) PRIMARY KEY,

    NAME VARCHAR2(20) NOT NULL,

    ADDRESS1 VARCHAR2(30),

    ADDRESSS VARCHAR2(30),

    CITY VARCHAR2(15),

    PINCODE VARCHAR2(8),

    STATE VARCHAR2(15),

    BAL_DUE NUMBER(10,2)

);

INSERT INTO CLIENT_MASTER VALUES ('C001', 'Rajesh', 'Street 1', 'Apartment 10', 'Mumbai', '400001', 'Maharashtra', 1500.50);

INSERT INTO CLIENT_MASTER VALUES ('C002', 'Amit', 'Sector 9', 'Block A', 'Bangalore', '560001', 'Karnataka', 500.00);

INSERT INTO CLIENT_MASTER VALUES ('C003', 'Priya', 'Main Road', 'House 22', 'Chennai', '600001', 'Tamil Nadu', 1200.75);

INSERT INTO CLIENT_MASTER VALUES ('C004', 'Anjali', 'Park Lane', 'Flat 3', 'Mumbai', '400002', 'Maharashtra', 950.00);

INSERT INTO CLIENT_MASTER VALUES ('C005', 'Ravi', 'Cross Road', 'Villa 5', 'Delhi', '110001', 'Delhi', 2000.00);

output:- 1.1 CLIENT_MASTER

CLIENT_NO

 NAME  

 ADDRESS1   

 ADDRESSS   

 CITY      

 PINCODE

 STATE       

 BAL_DUE 

 C001      

 Rajesh

 Street 1   

 Apartment 10

 Mumbai    

 400001 

 Maharashtra 

 1500.50 

 C002      

 Amit  

 Sector 9   

 Block A     

 Bangalore 

 560001 

 Karnataka   

 500.00  

 C003      

 Priya 

 Main Road  

 House 22    

 Chennai   

 600001 

 Tamil Nadu  

 1200.75 

 C004      

 Anjali

 Park Lane  

 Flat 3      

 Mumbai    

 400002 

 Maharashtra 

 950.00  

 C005      

 Ravi  

 Cross Road 

 Villa 5     

 Delhi     

 110001 

 Delhi       

 2000.00 

1.2. Create Table: PRODUCT_MASTER and Insert Values








CREATE TABLE PRODUCT_MASTER (

    PRODUCT_NO VARCHAR2(6) PRIMARY KEY,

    DESCRIPTION VARCHAR2(15) NOT NULL,

    PROFIT_PERCENT NUMBER(4,2) NOT NULL,

    UNIT_MEASUE VARCHAR2(10),

    QTY_ON_HAND NUMBER(8),

    REORDER_LVL NUMBER(8),

    SELL_PRICE NUMBER(8,2) NOT NULL CHECK (SELL_PRICE > 0),

    COST_PRICE NUMBER(8,2) NOT NULL CHECK (COST_PRICE > 0)

);

 

INSERT INTO PRODUCT_MASTER VALUES ('P001', 'Laptop', 10.00, 'Pieces', 50, 10, 50000.00, 45000.00);

INSERT INTO PRODUCT_MASTER VALUES ('P002', 'Mobile', 12.50, 'Pieces', 100, 20, 2500.00, 2000.00);

INSERT INTO PRODUCT_MASTER VALUES ('P003', 'Tablet', 8.00, 'Pieces', 30, 5, 1500.00, 1200.00);

INSERT INTO PRODUCT_MASTER VALUES ('P004', 'Monitor', 15.00, 'Pieces', 40, 10, 8000.00, 7000.00);

INSERT INTO PRODUCT_MASTER VALUES ('P005', 'Keyboard', 7.50, 'Pieces', 150, 30, 500.00, 400.00);

Output:-1.2 table PRODUCT_MASTER

PRODUCT_NO

 DESCRIPTION

 PROFIT_PERCENT

 UNIT_MEASUE

 QTY_ON_HAND

 REORDER_LVL

 SELL_PRICE

 COST_PRICE

 P001      

 Laptop      

 10.00         

 Pieces      

 50         

 10         

 50000.00  

 45000.00  

 P002      

 Mobile      

 12.50         

 Pieces      

 100        

 20         

 2500.00   

 2000.00   

 P003      

 Tablet      

 8.00          

 Pieces      

 30         

 5          

 1500.00   

 1200.00   

 P004      

 Monitor     

 15.00         

 Pieces      

 40         

 10         

 8000.00   

 7000.00   

 P005      

 Keyboard    

 7.50          

 Pieces      

 150        

 30         

 500.00    

 400.00    

 

 

1.3. Create Table: SALESMAN_MASTER and Insert Values










CREATE TABLE SALESMAN_MASTER (

    SALESMAN_NO VARCHAR2(6) PRIMARY KEY,

    SALESMAN_NAME VARCHAR2(20) NOT NULL,

    ADDRESS1 VARCHAR2(30),

    ADDRESS2 VARCHAR2(30),

    CITY VARCHAR2(20),

    PINCODE NUMBER(8),

    STATE VARCHAR2(20),

    SAL_AMT NUMBER(8,2) NOT NULL CHECK (SAL_AMT > 0),

    TGT_TO_GET NUMBER(6,2) NOT NULL CHECK (TGT_TO_GET > 0),

    YTD_SALES NUMBER(6,2) NOT NULL,

    REMARKS VARCHAR2(20)

);

INSERT INTO SALESMAN_MASTER VALUES ('S001', 'Arun', 'Street 2', 'House 8', 'Mumbai', 400001, 'Maharashtra', 3000.00, 50000.00, 20000.00, 'Good');

INSERT INTO SALESMAN_MASTER VALUES ('S002', 'John', 'Sector 10', 'Apartment 1', 'Bangalore', 560002, 'Karnataka', 2500.00, 40000.00, 15000.00, 'Average');

output:- 1.3 SALESMAN_MASTER

SALESMAN_NO

 SALESMAN_NAME

 ADDRESS1    

 ADDRESS2     

 CITY      

 PINCODE

 STATE      

 SAL_AMT 

 TGT_TO_GET

 YTD_SALES

 REMARKS

 S001       

 Arun         

 Street 2    

 House 8      

 Mumbai    

 400001 

 Maharashtra

 3000.00 

 50000.00  

 20000.00 

 Good   

 S002       

 John         

 Sector 10   

 Apartment 1  

 Bangalore 

 560002 

 Karnataka  

 2500.00 

 40000.00  

 15000.00 

 Average

 

1.4. Create Table: SALES_ORDER and Insert Values









CREATE TABLE SALES_ORDER (

    ORDER_NO VARCHAR2(6) PRIMARY KEY,

    CLIENT_NO VARCHAR2(6),

    ORDER_DATE DATE,

    DELY_ADDRESS VARCHAR2(25),

    SALESMAN_NO VARCHAR2(6),

    DELY_TYPE CHAR(1) DEFAULT 'F' CHECK (DELY_TYPE IN ('P', 'F')),

    BILL_YN CHAR(1),

    DELY_DATE DATE CHECK (DELY_DATE >= ORDER_DATE),

    ORDER_STATUS VARCHAR2(10) CHECK (ORDER_STATUS IN ('InProcess', 'Fulfilled', 'Back Order', 'Cancelled')),

    CONSTRAINT FK_CLIENT FOREIGN KEY (CLIENT_NO) REFERENCES CLIENT_MASTER(CLIENT_NO),

    CONSTRAINT FK_SALESMAN FOREIGN KEY (SALESMAN_NO) REFERENCES SALESMAN_MASTER(SALESMAN_NO)

);

 

INSERT INTO SALES_ORDER VALUES ('O001', 'C001', TO_DATE('2023-07-05', 'YYYY-MM-DD'), 'Street 1', 'S001', 'F', 'Y', TO_DATE('2023-07-10', 'YYYY-MM-DD'), 'Fulfilled');

INSERT INTO SALES_ORDER VALUES ('O002', 'C002', TO_DATE('2023-06-15', 'YYYY-MM-DD'), 'Sector 9', 'S002', 'P', 'N', TO_DATE('2023-06-20', 'YYYY-MM-DD'), 'InProcess');

output:- 1.4 SALES_ORDER

ORDER_NO

 CLIENT_NO

 ORDER_DATE

 DELY_ADDRESS

 SALESMAN_NO

 DELY_TYPE

 BILL_YN

 DELY_DATE

 ORDER_STATUS 

 O001    

 C001       

 2023-07-05

 Street 1    

 S001       

 F        

 Y       

 2023-07-10

 Fulfilled    

 O002    

 C002       

 2023-06-15

 Sector 9    

 S002       

 P        

 N       

 2023-06-20

 InProcess    

 

 

1.5. Create Table: SALES_ORDER_DETAILS and Insert Values









CREATE TABLE SALES_ORDER_DETAILS (

    ORDER_NO VARCHAR2(6),

    PRODUCT_NO VARCHAR2(6),

    QTY_ORDERED NUMBER(8),

    QTY_DISP NUMBER(8),

    PRODUCT_RATE NUMBER(10,2),

    PRIMARY KEY (ORDER_NO, PRODUCT_NO),

    CONSTRAINT FK_ORDER FOREIGN KEY (ORDER_NO) REFERENCES SALES_ORDER(ORDER_NO),

    CONSTRAINT FK_PRODUCT FOREIGN KEY (PRODUCT_NO) REFERENCES PRODUCT_MASTER(PRODUCT_NO)

);

INSERT INTO SALES_ORDER_DETAILS VALUES ('O001', 'P001', 2, 2, 50000.00);

INSERT INTO SALES_ORDER_DETAILS VALUES ('O001', 'P003', 1, 1, 1500.00);

INSERT INTO SALES_ORDER_DETAILS VALUES ('O002', 'P002', 3, 2, 2500.00);

output:- 1.5 SALES_ORDER_DETAILS

ORDER_NO

 PRODUCT_NO

 QTY_ORDERED

 QTY_DISP

 PRODUCT_RATE

 O001     

 P001      

 2          

 2       

 50000.00    

 O001     

 P003      

 1          

 1       

 1500.00     

 O002     

 P002      

 3          

 2       

 2500.00     

 

1. Retrieve the list of names, city, and state of all the clients

SELECT NAME, CITY, STATE FROM CLIENT_MASTER;

NAME  

 CITY      

 STATE       

 Rajesh

 Mumbai    

 Maharashtra 

 Amit  

 Bangalore 

 Karnataka   

 Priya 

 Chennai   

 Tamil Nadu  

 Anjali

 Mumbai    

 Maharashtra 

 Ravi  

 Delhi      

 Delhi       

 

2. List all the clients who are located in ‘Mumbai’ or ‘Bangalore’.

SELECT * FROM CLIENT_MASTER WHERE CITY IN ('Mumbai', 'Bangalore');

CLIENT_NO

 NAME  

 ADDRESS1   

 ADDRESSS   

 CITY      

 PINCODE

 STATE       

 BAL_DUE 

 C001      

 Rajesh

 Street 1   

 Apartment 10

 Mumbai    

 400001 

 Maharashtra 

 1500.50 

 C002      

 Amit  

 Sector 9   

 Block A    

 Bangalore 

 560001 

 Karnataka   

 500.00  

 C004      

 Anjali

 Park Lane  

 Flat 3     

 Mumbai     

 400002 

 Maharashtra 

 950.00  

 

3. List the various products available from the `PRODUCT_MASTER` table.

SELECT *FROM PRODUCT_MASTER;

PRODUCT_NO

 DESCRIPTION

 PROFIT_PERCENT

 UNIT_MEASUE

 QTY_ON_HAND

 REORDER_LVL

 SELL_PRICE

 COST_PRICE

 P001      

 Laptop      

 10.00         

 Pieces     

 50         

 10         

 50000.00  

 45000.00  

 P002      

 Mobile      

 12.50         

 Pieces     

 100        

 20         

 2500.00   

 2000.00   

 P003      

 Tablet      

 8.00          

 Pieces     

 30         

 5          

 1500.00   

 1200.00   

 P004      

 Monitor     

 15.00         

 Pieces     

 40         

 10         

 8000.00   

 7000.00   

 P005      

 Keyboard    

 7.50          

 Pieces      

 150        

 30         

 500.00    

 400.00    

 

4. Find the names of salesmen who have a salary equal to Rs.3000

SELECT SALESMAN_NAME FROM SALESMAN_MASTER WHERE SAL_AMT = 3000;

SALESMAN_NAME

 Arun          

 

5. List the names of all clients having ‘a’ as the second letter in their names

SELECT NAME FROM CLIENT_MASTER WHERE NAME LIKE '_a%';

NAME   

 Rajesh 

 Anjali 

 

 

6. List all clients whose `BAL_DUE` is greater than 1000

SELECT *FROM CLIENT_MASTERWHERE BAL_DUE > 1000;

CLIENT_NO

 NAME   

 ADDRESS1   

 ADDRESSS   

 CITY      

 PINCODE

 STATE       

 BAL_DUE 

 C001      

 Rajesh

 Street 1   

 Apartment 10

 Mumbai    

 400001 

 Maharashtra 

 1500.50 

 C003      

 Priya 

 Garden Road

 Villa 12   

 Chennai   

 600001 

 Tamil Nadu  

 2200.00 

 

7. List the clients who stay in a city whose first letter is ‘M’.

SELECT *FROM CLIENT_MASTER WHERE CITY LIKE 'M%';

CLIENT_NO

 NAME  

 ADDRESS1   

 ADDRESSS   

 CITY      

 PINCODE

 STATE       

 BAL_DUE 

 C001      

 Rajesh

 Street 1   

 Apartment 10

 Mumbai    

 400001 

 Maharashtra 

 1500.50 

 C004      

 Anjali

 Park Lane  

 Flat 3     

 Mumbai    

 400002 

 Maharashtra 

 950.00  

 

8. List all information from the `SALES_ORDER` table for orders placed in the month of July

SELECT *FROM SALES_ORDER WHERE TO_CHAR(ORDER_DATE, 'MM') = '07';

ORDER_NO

 CLIENT_NO

 ORDER_DATE

 DELY_ADDRESS

 SALESMAN_NO

 DELY_TYPE

 BILL_YN

 DELY_DATE

 ORDER_STATUS

 O001     

 C001      

 2024-07-05

 Street 1    

 S001       

 F        

 Y      

 2024-07-10

 Fulfilled   

 O003     

 C003      

 2024-07-15

 Garden Road 

 S002       

 P        

 N      

 2024-07-18

 InProcess   

 

9. List the products whose selling price is greater than 1000 and less than or equal to 3000.

SELECT *FROM PRODUCT_MASTER WHERE SELL_PRICE > 1000 AND SELL_PRICE <= 3000;

PRODUCT_NO

 DESCRIPTION

 PROFIT_PERCENT

 UNIT_MEASUE

 QTY_ON_HAND

 REORDER_LVL

 SELL_PRICE

 COST_PRICE

 P002      

 Mobile      

 12.50         

 Pieces     

 100        

 20         

 2500.00   

 2000.00   

 P003      

 Tablet      

 8.00          

 Pieces     

 30         

 5          

 1500.00   

 1200.00   

 

10. Find the products whose selling price is greater than 1000 and also find the new selling price as the original selling price - 0.50.

SELECT PRODUCT_NO, DESCRIPTION, SELL_PRICE, (SELL_PRICE - 0.50) AS NEW_SELLING_PRICE FROM PRODUCT_MASTER WHERE SELL_PRICE > 1000;

PRODUCT_NO

 DESCRIPTION

 SELL_PRICE

 NEW_SELLING_PRICE

 P001       

 Laptop      

 50000.00  

 49999.50          

 P002      

 Mobile      

 2500.00   

 2499.50           

 P003      

 Tablet      

 1500.00   

 1499.50           

 P004      

 Monitor     

 8000.00   

 7999.50           

 

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

02 Aim: A manufacturing company deals with various parts and various suppliers supply these parts. It consists of three tables to record its entire information. Those are as follows. Supplier (Supplier_No, Sname, City, status) Part(Part_no, pname, color, weight, city, cost) Shipment (supplier No, Part_no, city) JX (project_no, project_name, city) SPJX (Supplier no, part_no, project_no,city)

1. Get supplier numbers and status for suppliers in Chennai with status>20.

2. Get project names for projects supplied by supplier ’S’.

3. Get colors of parts supplied by supplier S’ .

4. Get part numbers for parts supplied to any project in Mumbai.

5. Find the id’s of suppliers who supply a red or pink parts.

2.1. Table: Create Supplier table

CREATE TABLE Supplier (

    Supplier_No VARCHAR2(6) PRIMARY KEY,

    Sname VARCHAR2(20),

    City VARCHAR2(15),

    Status NUMBER(3)

);

INSERT INTO Supplier VALUES ('S001', 'Rajesh', 'Chennai', 25);

INSERT INTO Supplier VALUES ('S002', 'Amit', 'Mumbai', 30);

INSERT INTO Supplier VALUES ('S003', 'Sara', 'Delhi', 15);

INSERT INTO Supplier VALUES ('S004', 'John', 'Chennai', 40);

output: 2.1 Supplier table

Supplier_No

 Sname 

 City   

 Status

 S001        

 Rajesh 

 Chennai

 25    

 S002        

 Amit   

 Mumbai 

 30    

 S003        

 Sara   

 Delhi  

 15    

 S004        

 John   

 Chennai

 40    

 

2.2. Table: Create Part table

CREATE TABLE Part (

    Part_No VARCHAR2(6) PRIMARY KEY,

    Pname VARCHAR2(20),

    Color VARCHAR2(10),

    Weight NUMBER(6,2),

    City VARCHAR2(15),

    Cost NUMBER(8,2)   );

INSERT INTO Part VALUES ('P001', 'Bolt', 'Red', 12.5, 'Chennai', 100.00);

INSERT INTO Part VALUES ('P002', 'Nut', 'Blue', 10.0, 'Mumbai', 150.00);

INSERT INTO Part VALUES ('P003', 'Screw', 'Pink', 8.0, 'Delhi', 200.00);

INSERT INTO Part VALUES ('P004', 'Washer', 'Green', 5.0, 'Chennai', 50.00);

output: 2.2 TABLE Part

Part_No

 Pname 

 Color

 Weight

 City   

 Cost  

 P001    

 Bolt  

 Red   

 12.5  

 Chennai

 100.00

 P002    

 Nut   

 Blue  

 10.0  

 Mumbai 

 150.00

 P003    

 Screw 

 Pink  

 8.0   

 Delhi  

 200.00

 P004    

 Washer

 Green 

 5.0   

 Chennai

 50.00 

 

2.3. Table: Create Shipment table

CREATE TABLE Shipment (

    Supplier_No VARCHAR2(6),

    Part_No VARCHAR2(6),

    City VARCHAR2(15),

    FOREIGN KEY (Supplier_No) REFERENCES Supplier(Supplier_No),

    FOREIGN KEY (Part_No) REFERENCES Part(Part_No)

);

 

INSERT INTO Shipment VALUES ('S001', 'P001', 'Chennai');

INSERT INTO Shipment VALUES ('S002', 'P002', 'Mumbai');

INSERT INTO Shipment VALUES ('S003', 'P003', 'Delhi');

INSERT INTO Shipment VALUES ('S004', 'P004', 'Chennai');

output: 2.3. Shipment table

Supplier_No

 Part_No

 City   

 S001        

 P001    

 Chennai

 S002        

 P002    

 Mumbai 

 S003        

 P003    

 Delhi  

 S004        

 P004    

 Chennai

 

2.4. Table: Create JX table

CREATE TABLE JX (

    Project_No VARCHAR2(6) PRIMARY KEY,

    Project_Name VARCHAR2(20),

    City VARCHAR2(15)  );

INSERT INTO JX VALUES ('J001', 'Bridge Project', 'Mumbai');

INSERT INTO JX VALUES ('J002', 'Highway Project', 'Chennai');

INSERT INTO JX VALUES ('J003', 'Metro Project', 'Delhi');

output: 2.4. JX table

Project_No

 Project_Name      

 City   

 J001       

 Bridge Project    

 Mumbai 

 J002       

 Highway Project   

 Chennai

 J003       

 Metro Project     

 Delhi  

 

2.5. Table: Create SPJX table

CREATE TABLE SPJX (

    Supplier_No VARCHAR2(6),

    Part_No VARCHAR2(6),

    Project_No VARCHAR2(6),

    City VARCHAR2(15),

    FOREIGN KEY (Supplier_No) REFERENCES Supplier(Supplier_No),

    FOREIGN KEY (Part_No) REFERENCES Part(Part_No),

    FOREIGN KEY (Project_No) REFERENCES JX(Project_No)

);

 

INSERT INTO SPJX VALUES ('S001', 'P001', 'J002', 'Chennai');

INSERT INTO SPJX VALUES ('S002', 'P002', 'J001', 'Mumbai');

INSERT INTO SPJX VALUES ('S003', 'P003', 'J003', 'Delhi');

INSERT INTO SPJX VALUES ('S004', 'P004', 'J002', 'Chennai');

output: 2.5. SPJX table

Supplier_No

 Part_No

 Project_No

 City   

 S001        

 P001    

 J002      

 Chennai

 S002        

 P002    

 J001      

 Mumbai 

 S003        

 P003    

 J003      

 Delhi  

 S004        

 P004    

 J002      

 Chennai

 

 

 

 

 

 

1: Get supplier numbers and status for suppliers in Chennai with status > 20

Query 1: SELECT Supplier_No, Status FROM Supplier WHERE City = 'Chennai' AND Status > 20;

output: Query 1

Supplier_No

 Status

 S001        

 25    

 S004        

 40    

 

2: Get project names for projects supplied by supplier 'S'.

Query 2: SELECT DISTINCT JX.Project_Name FROM JX JOIN SPJX ON JX.Project_No = SPJX.Project_No WHERE SPJX.Supplier_No = 'S001';

Output: Query 2

 Project_Name     

 Highway Project  

 

3: Get colors of parts supplied by supplier 'S'

Query 3: SELECT DISTINCT Part.Color FROM Part JOIN Shipment ON Part.Part_No = Shipment.Part_No WHERE Shipment.Supplier_No = 'S001';

Output : Query 3

 Color

 Red   

 

4: Get part numbers for parts supplied to any project in Mumbai

Query 4: SELECT DISTINCT SPJX.Part_No FROM SPJX JOIN JX ON SPJX.Project_No = JX.Project_No WHERE JX.City = 'Mumbai';

Output: Query 4:

 Part_No

 P002   

 

5: Find the IDs of suppliers who supply red or pink parts

Query 5: SELECT DISTINCT Shipment.Supplier_No FROM Shipment JOIN Part ON Shipment.Part_No = Part.Part_No WHERE Part.Color IN ('Red', 'Pink');

Output: Query 5

 Supplier_No

 S001       

 S003       

 

 

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

 

03 Aim: An enterprise wishes to maintain a database to automate its operations. Enterprise is divided into certain departments and each department consists of employees. The following two tables describe the automation schemas. Emp(Empno, Ename, Job, Mgr, Hiredate, Sal, Comm, Deptno) Dept(Deptno, Dname, Loc)

1. List the details of employees who have joined before the end of September ’81.

2. List the name of the employee and designation of the employee, who does not report to anybody.

3. List the name,salary and PF amount of all the employees(PF is calculated as10%of salary)

4. List the names of employees who are more than 2 years old in the organization.

5. Determine the number of employees, who are taking commission.

6. Update the employee salary by 20%,whose experience is greater than 12 years.

7. Determine the department does not contain any employees.

8. Create a view, which contains employee name and their manager names working in sales department.

9. Determine the employees, whose total salary is like the minimum salary of any department.

10. List the department numbers and number of employees in each department.

 

3.1. Creating the Dept Table

CREATE TABLE Dept (

    Deptno NUMBER(4) PRIMARY KEY,

    Dname VARCHAR2(20),

    Loc VARCHAR2(20)

);

Inserting values into Dept table

INSERT INTO Dept VALUES (10, 'Accounting', 'New York');

INSERT INTO Dept VALUES (20, 'Sales', 'Chicago');

INSERT INTO Dept VALUES (30, 'Operations', 'Boston');

output :3.1. Dept table

 Deptno

 Dname     

 Loc      

 10      

 Accounting

 New York 

 20      

 Sales     

 Chicago  

 30      

 Operations

 Boston   

 

 

 

 

 

 

3.2. Creating the Emp Table

CREATE TABLE Emp (

    Empno NUMBER(6) PRIMARY KEY,

    Ename VARCHAR2(20),

    Job VARCHAR2(20),

    Mgr NUMBER(6),

    Hiredate DATE,

    Sal NUMBER(10,2),

    Comm NUMBER(10,2),

    Deptno NUMBER(4),

    FOREIGN KEY (Deptno) REFERENCES Dept(Deptno)

);

Inserting values into Emp table

INSERT INTO Emp VALUES (101, 'John', 'Manager', NULL, TO_DATE('10-JUL-1980', 'DD-MON-YYYY'), 5000, NULL, 10);

INSERT INTO Emp VALUES (102, 'Mike', 'Salesman', 101, TO_DATE('15-AUG-1981', 'DD-MON-YYYY'), 3000, 500, 20);

INSERT INTO Emp VALUES (103, 'Sara', 'Clerk', 101, TO_DATE('20-SEP-1982', 'DD-MON-YYYY'), 1500, NULL, 10);

INSERT INTO Emp VALUES (104, 'Raj', 'Salesman', 102, TO_DATE('05-MAY-1983', 'DD-MON-YYYY'), 2800, 300, 20);

INSERT INTO Emp VALUES (105, 'Linda', 'Analyst', 101, TO_DATE('18-DEC-1980', 'DD-MON-YYYY'), 4500, NULL, 30);

output : 3.2. Emp table

 Empno

 Ename

 Job      

 Mgr 

 Hiredate  

 Sal  

 Comm 

 Deptno

 101   

 John  

 Manager   

 NULL 

 10-JUL-1980

 5000.00

 NULL 

 10    

 102   

 Mike  

 Salesman  

 101  

 15-AUG-1981

 3000.00

 500.00

 20   

 103   

 Sara  

 Clerk     

 101  

 20-SEP-1982

 1500.00

 NULL 

 10   

 104   

 Raj   

 Salesman  

 102  

 05-MAY-1983

 2800.00

 300.00

 20   

 105   

 Linda 

 Analyst   

 101  

 18-DEC-1980

 4500.00

 NULL 

 30   

 

 

 

1. List details of employees who joined before the end of September ’81.

SELECT * FROM Emp WHERE Hiredate <= TO_DATE('30-SEP-1981', 'DD-MON-YYYY');

Output: John, Mike

 

2. List name and job of employees who do not report to anybody.

SELECT Ename, Job FROM Emp WHERE Mgr IS NULL;

Output: John (Manager)

 

3. List name, salary, and PF amount (10% of salary).

SELECT Ename, Sal, Sal * 0.10 AS PF FROM Emp;

Output: John (5000, 500), Mike (3000, 300), Sara (1500, 150), Raj (2800, 280), Linda (4500, 450)

 

4. List names of employees who are more than 2 years old in the organization.

SELECT Ename FROM Emp WHERE MONTHS_BETWEEN(SYSDATE, Hiredate) > 24;

Output: John, Mike, Sara, Raj, Linda

 

5. Determine the number of employees who are taking commission.

SELECT COUNT(*) AS Commissioned_Employees FROM Emp WHERE Comm IS NOT NULL;

Output: 2 (Mike, Raj)

 

6. Update the employee salary by 20% for employees with more than 12 years of experience.

UPDATE Emp SET Sal = Sal * 1.20 WHERE MONTHS_BETWEEN(SYSDATE, Hiredate) > 144;

Output: Updated salary for John, Mike, Linda

 

7. Determine the departments without employees.

SELECT Dname FROM Dept WHERE Deptno NOT IN (SELECT DISTINCT Deptno FROM Emp);

Output: None

 

8. Create a view with employee name and manager names in the Sales department.

CREATE VIEW Sales_Managers AS

SELECT E1.Ename AS Employee_Name, E2.Ename AS Manager_Name

FROM Emp E1 LEFT JOIN Emp E2 ON E1.Mgr = E2.Empno

WHERE E1.Deptno = (SELECT Deptno FROM Dept WHERE Dname = 'Sales');

Output: Mike (John), Raj (Mike)

 

 

9. Determine employees whose total salary matches the minimum salary of any department.

SELECT Ename, Sal FROM Emp WHERE Sal = (SELECT MIN(Sal) FROM Emp);

Output: Sara (1500)

 

10. List department numbers and number of employees in each department.

SELECT Deptno, COUNT(*) AS Number_Of_Employees FROM Emp GROUP BY Deptno;

Output: 10 (2 employees), 20 (2 employees), 30 (1 employee)

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

PL/SQL EXPERIMENTS:-

1. Write a PL/SQL program to check the given string is palindrome or not.

code:01

DECLARE

    v_input_string VARCHAR2(100);

    v_reversed_string VARCHAR2(100) := '';

    v_length NUMBER;

    v_is_palindrome VARCHAR2(10);

BEGIN

    -- Input string (You can modify this)

    v_input_string := 'MADAM';

   

    -- Get the length of the input string

    v_length := LENGTH(v_input_string);

 

    -- Reverse the string using a loop

    FOR i IN REVERSE 1..v_length LOOP

        v_reversed_string := v_reversed_string || SUBSTR(v_input_string, i, 1);

    END LOOP;

 

    -- Check if the reversed string is equal to the input string

    IF UPPER(v_input_string) = UPPER(v_reversed_string) THEN

        v_is_palindrome := 'Yes';

    ELSE

        v_is_palindrome := 'No';

    END IF;

 

    -- Display the result

    DBMS_OUTPUT.PUT_LINE('Input String: ' || v_input_string);

    DBMS_OUTPUT.PUT_LINE('Reversed String: ' || v_reversed_string);

    DBMS_OUTPUT.PUT_LINE('Is Palindrome? ' || v_is_palindrome);

END;

/

Output:   01 palindrome or not

 Input String

 Reversed String

 Is Palindrome?

 MADAM         

 MADAM           

 Yes           

 HELLO         

 OLLEH           

 No            

 LEVEL         

 LEVEL           

 Yes           

 WORLD         

 DLROW           

 No            

 

------------------------------------------------------------------xxxxxxxxxxxxxxxxxxx---------------------------------------------------------------------------

02. The HRD manager has decided to raise the employee salary by 15% write a PL/SQL block to accept the employee number and update the salary of that employee. Display appropriate messages based on the existence of the record in the Emp table.

code: 02

DECLARE

    v_empno Emp.Empno%TYPE;

    v_sal Emp.Sal%TYPE;

    v_new_sal Emp.Sal%TYPE;

    v_emp_exists BOOLEAN := FALSE;

BEGIN

    -- Accepting employee number

    v_empno := &Employee_Number;

 

    -- Check if employee exists

    SELECT Sal

    INTO v_sal

    FROM Emp

    WHERE Empno = v_empno;

   

   

v_emp_exists := TRUE;

 

    -- Calculate new salary with 15% hike

    v_new_sal := v_sal * 1.15;

 

    -- Update employee salary

    UPDATE Emp

    SET Sal = v_new_sal

    WHERE Empno = v_empno;

 

    COMMIT;

 

    -- Display success message

    DBMS_OUTPUT.PUT_LINE('Employee ' || v_empno || ' salary updated to ' || v_new_sal);

 

EXCEPTION

    WHEN NO_DATA_FOUND THEN

        DBMS_OUTPUT.PUT_LINE('Employee with Employee Number ' || v_empno || ' not found.');

    WHEN OTHERS THEN

        DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);

END;

Outputs: 02

 

 Employee Number

 Old Salary

 New Salary (15% Hike)

 Output Message                                    

 101             

 5000      

 5750.00              

 Employee 101 salary updated to 5750.00           

 102             

 3000      

 3450.00              

 Employee 102 salary updated to 3450.00           

 105             

 4500      

 5175.00              

 Employee 105 salary updated to 5175.00           

 999             

 N/A       

 N/A                  

 Employee with Employee Number 999 not found.     

 

 

 

--------------------------------------------------------xxxxxxxxxxxxxxxxxxxxxxxx----------------------------------------------------------------------

 

03. Write a PL/SQL program to display the top 10 rows in the Emp table based on their job and salary.

code : 03

DECLARE

    CURSOR top_emp_cursor IS

        SELECT Empno, Ename, Job, Sal

        FROM Emp

        ORDER BY Job, Sal DESC

        FETCH FIRST 10 ROWS ONLY;

   

    v_empno Emp.Empno%TYPE;

    v_ename Emp.Ename%TYPE;

    v_job Emp.Job%TYPE;

    v_sal Emp.Sal%TYPE;

BEGIN

    DBMS_OUTPUT.PUT_LINE('Top 10 Employees Based on Job and Salary:');

    DBMS_OUTPUT.PUT_LINE('------------------------------------------------');

    DBMS_OUTPUT.PUT_LINE('EmpNo   | Ename      | Job         | Salary');

 

    OPEN top_emp_cursor;

    LOOP

        FETCH top_emp_cursor INTO v_empno, v_ename, v_job, v_sal;

        EXIT WHEN top_emp_cursor%NOTFOUND;

 

        DBMS_OUTPUT.PUT_LINE(v_empno || '     | ' || v_ename || '   | ' || v_job || '   | ' || v_sal);

    END LOOP;

   

    CLOSE top_emp_cursor;

EXCEPTION

    WHEN OTHERS THEN

        DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);

END;

/

03: Emp Table

 

 Empno

 Ename 

 Job     

 Sal  

 Deptno

 101    

 John   

 Manager 

 5000 

 10    

 102    

 Mike   

 Salesman

 3000 

 20    

 103    

 Sara   

 Clerk    

 1500 

 10    

 104    

 Raj    

 Salesman

 2800 

 20    

 105    

 Linda  

 Analyst 

 4500 

 30    

 106    

 James  

 Clerk   

 1200 

 30    

 107    

 Steve  

 Manager 

 5200 

 20    

 108    

 Emma   

 Salesman

 3100 

 20    

 109    

 Harry  

 Analyst 

 4800 

 30    

 110    

 Alice  

 Salesman

 3500 

 20    

 

Output : 03. Emp Table

Top 10 Employees Based on Job and Salary:

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

EmpNo  

 Ename     

 Job        

 Salary

101    

 John      

 Manager    

 5000

107    

 Steve     

 Manager    

 5200

108    

 Emma      

 Salesman   

 3100

110    

 Alice     

 Salesman   

 3500

102    

 Mike      

 Salesman   

 3000

104    

 Raj       

 Salesman    

 2800

109    

 Harry     

 Analyst    

 4800

105    

 Linda     

 Analyst    

 4500

103    

 Sara      

 Clerk      

 1500

106

James

Clerk

1200

 

------------------------------------xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--------------------------------------------------------------------

04 Write a PL/SQL program to raise the employee salary by 10% for department number 30 people and also maintain the raised details in the rais table.

Step 1: Create the `Rais` Table 

CREATE TABLE Rais (

    Empno NUMBER(6),

    Old_Sal NUMBER(10,2),

    New_Sal NUMBER(10,2),

    Raise_Date DATE

);

INSERT INTO Rais (Empno, Old_Sal, New_Sal, Raise_Date)

VALUES (105, 4500.00, 4950.00, TO_DATE('20-MAR-2025', 'DD-MON-YYYY'));

 

INSERT INTO Rais (Empno, Old_Sal, New_Sal, Raise_Date)

VALUES (106, 1200.00, 1320.00, TO_DATE('20-MAR-2025', 'DD-MON-YYYY'));

INSERT INTO Rais (Empno, Old_Sal, New_Sal, Raise_Date)

VALUES (109, 4800.00, 5280.00, TO_DATE('20-MAR-2025', 'DD-MON-YYYY'));

Empno

 Old_Sal

 New_Sal

 Raise_Date        

 105   

 4500.00

 4950.00 

 20-MAR-2025        

 106   

 1200.00

 1320.00 

 20-MAR-2025        

 109   

 4800.00

 5280.00 

 20-MAR-2025        

Output : Rais Table

 

 

Step 2: PL/SQL Program to Raise Salary by 10% and Insert into Rais Table

DECLARE

    v_old_sal Emp.Sal%TYPE;

    v_new_sal Emp.Sal%TYPE;

    v_empno Emp.Empno%TYPE;

    CURSOR emp_cursor IS

        SELECT Empno, Sal

        FROM Emp

        WHERE Deptno = 30;

BEGIN

    FOR emp_rec IN emp_cursor LOOP

        v_empno := emp_rec.Empno;

        v_old_sal := emp_rec.Sal;

        v_new_sal := v_old_sal * 1.10;

 

        -- Update the employee's salary

        UPDATE Emp

        SET Sal = v_new_sal

        WHERE Empno = v_empno;

 

        -- Insert details into the Rais table

        INSERT INTO Rais (Empno, Old_Sal, New_Sal, Raise_Date)

        VALUES (v_empno, v_old_sal, v_new_sal, SYSDATE);

 

        DBMS_OUTPUT.PUT_LINE('Salary raised for Empno: ' || v_empno ||

                              ' | Old Salary: ' || v_old_sal ||

                              ' | New Salary: ' || v_new_sal);

    END LOOP;

    COMMIT;

EXCEPTION

    WHEN OTHERS THEN

        DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);

        ROLLBACK;

END;

/

Explanation:-

1. Cursor Declaration: 

    - Selects employee numbers and salaries from Deptno 30 using a cursor.

2. FOR LOOP:

    - Iterates over each employee using `emp_rec`.

3. Salary Calculation:

    - Salary is increased by **10%** using `v_new_sal := v_old_sal * 1.10`.

4. Update Query:

    - Updates the `Emp` table with the new salary.

5. Insert Query: 

    - Inserts the old salary, new salary, and current date into the `Rais` table.

6. COMMIT: 

    - Saves the changes.

7. Exception Handling:

    - Catches any errors using `WHEN OTHERS THEN`.

Emp Table :-                                                                                   

Empno

 Ename 

 Job     

 Sal  

 Deptno

 101    

 John   

 Manager 

 5000 

 10    

 102    

 Mike   

 Salesman

 3000 

 20    

 103    

 Sara   

 Clerk   

 1500 

 10    

 104    

 Raj    

 Salesman

 2800 

 20    

 105    

 Linda  

 Analyst 

 4500 

 30    

 106    

 James  

 Clerk   

 1200 

 30    

 109    

 Harry  

 Analyst 

 4800 

 30    







Output in Emp Table:-

Empno

 Ename 

 Job     

 Sal  

 Deptno

 101    

 John   

 Manager 

 5000 

 10    

 102    

 Mike   

 Salesman

 3000 

 20    

 103    

 Sara   

 Clerk   

 1500 

 10    

 104    

 Raj    

 Salesman

 2800 

 20    

 105    

 Linda  

 Analyst 

 4950 

 30    

 106    

 James  

 Clerk   

 1320 

 30    

 109    

 Harry  

 Analyst 

 5280 

 30    


Comments

Popular posts from this blog

Social Sharing with YouTube

  What is YouTube?   YouTube is a video-sharing platform launched in 2005, now owned by Google. It allows users to upload, share, view, and interact with videos, making it one of the largest content-sharing and social media platforms globally.   Key Features of YouTube 1. Video Content: Wide Variety: Includes vlogs, tutorials, music videos, educational content, gaming streams, and more.   Video Formats: Supports standard videos, Shorts (short-form videos), and live streams.     2. Sharing & Interaction: Comments & Likes: Engage with videos through likes, dislikes, and comments.   Share Options: Easily share videos to other social media platforms, via email, or by embedding on websites.     3. Content Creation & Monetization:   YouTube Channels: Creators can build channels, gain subscribers, and create playlists.   Monetization: Through ads (AdSense), channel memberships, Super Chats, merchandise...

Social Media for Customer Reach

  Using Social Media for Customer Reach:   Social media is a powerful tool to connect with existing and potential customers. By strategically using social platforms, businesses can boost brand visibility, engage audiences, and drive sales.   1. Choosing the Right Platforms:   Top Platforms and Their Strengths:   Facebook: Great for community building, ads, and diverse content types (videos, articles, images).   Instagram: Ideal for visual branding, product showcases, and reaching younger audiences.   Twitter: Effective for real-time updates, customer service, and trending topics.   LinkedIn: Best for B2B, professional networking, and thought leadership.   YouTube: Perfect for in-depth content, tutorials, and boosting search engine visibility.   TikTok: Strong for short, engaging videos and reaching Gen Z audiences.   Pinterest: Good for niche markets, especially lifestyle, fashion, and DIY.     2. S...