KEMBAR78
Dbms | PDF | Information Retrieval | Sql
0% found this document useful (0 votes)
6 views6 pages

Dbms

Uploaded by

keysjuly2019
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)
6 views6 pages

Dbms

Uploaded by

keysjuly2019
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/ 6

EXP3:

-- Create BranchTable
CREATE TABLE BranchTable (
BranchID INT PRIMARY KEY,
BranchName VARCHAR(100) NOT NULL UNIQUE,
Location VARCHAR(100) NOT NULL
);

-- Create Employee Table


CREATE TABLE Employee (
EmpID INT PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
DOB DATE NOT NULL,
Gender CHAR(1),
HireDate DATE NOT NULL,
BranchID INT,
Email VARCHAR(100) UNIQUE,
PhoneNumber VARCHAR(15) UNIQUE,
FOREIGN KEY (BranchID) REFERENCES BranchTable(BranchID)
);

-- Add CHECK constraint for Gender


ALTER TABLE Employee
ADD CONSTRAINT chk_gender CHECK (Gender IN ('M', 'F', 'O'));

-- Create Salary Table


CREATE TABLE Salary (
SalaryID INT PRIMARY KEY,
EmpID INT UNIQUE,
BasicSalary DECIMAL(10,2) NOT NULL,
Bonus DECIMAL(10,2) DEFAULT 0,
Deductions DECIMAL(10,2) DEFAULT 0,
FOREIGN KEY (EmpID) REFERENCES Employee(EmpID) ON DELETE CASCADE
);

-- Add CHECK constraints for Salary separately


ALTER TABLE Salary
ADD CONSTRAINT chk_basic_salary CHECK (BasicSalary > 0);

ALTER TABLE Salary


ADD CONSTRAINT chk_bonus CHECK (Bonus >= 0);

ALTER TABLE Salary


ADD CONSTRAINT chk_deductions CHECK (Deductions >= 0);
-- Rename a Table
RENAME TABLE Salary TO EmployeeSalary;

-- Rename a Column (Example: Change PhoneNumber to MobileNumber)


ALTER TABLE Employee
CHANGE COLUMN PhoneNumber MobileNumber VARCHAR(15) UNIQUE;
-- Rename a Table
INSERT INTO BranchTable (BranchID, BranchName, Location)
VALUES
(101, 'Head Office', 'New York'),
(102, 'Branch A', 'Los Angeles'),
(103, 'Branch B', 'Chicago');

-- Insert into Employee


INSERT INTO Employee (EmpID, FirstName, LastName, DOB, Gender, HireDate, BranchID,
Email,MobileNumber)
VALUES
(1, 'John', 'Doe', '1998-05-12', 'M', '2024-04-01', 101, 'john.doe@example.com',
'1234567890'),
(2, 'Jane', 'Smith', '1995-07-20', 'F', '2024-04-05', 102,
'jane.smith@example.com', '0987654321');

-- Insert into Salary


INSERT INTO EmployeeSalary (SalaryID, EmpID, BasicSalary, Bonus, Deductions)
VALUES
(1, 1, 50000, 5000, 2000),
(2, 2, 60000, 6000, 3000);

-- Drop a Column
ALTER TABLE Employee
DROP COLUMN Email;

-- Drop a Constraint (Example: Gender Check Constraint)


ALTER TABLE Employee
DROP CONSTRAINT chk_gender;

-- Drop a Table
DROP TABLE EmployeeSalary;
-- Truncate a Table (Delete all rows but keep structure)
TRUNCATE TABLE Employee;
SELECT * FROM BranchTable;

SELECT * FROM Employee;

exp5:
-- Create a temporary table
CREATE TEMPORARY TABLE EmployeeTemp (
EmpID INT,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Department VARCHAR(50),
Salary DECIMAL(10,2),
Email VARCHAR(100)
);

-- Insert sample data


INSERT INTO EmployeeTemp VALUES
(1, 'John', 'Doe', 'Finance', 50000, 'john.doe@example.com'),
(2, 'Jane', 'Smith', 'Marketing', 60000, 'jane.smith@example.com');

SELECT
-- Basic String Joining
CONCAT(FirstName,SPACE(5), LastName) AS FullName,
CONCAT_WS('-', FirstName, LastName, Department) AS JoinedData,

-- Case Changes
UPPER(FirstName) AS FirstNameUpper,
LOWER(Department) AS DepartmentLower,

-- Length Information
LENGTH(Email) AS EmailLength,
CHAR_LENGTH(Email) AS EmailCharLength,
-- Trimming
TRIM(' Hello World ') AS TrimmedExample,
LTRIM(' Hello') AS LeftTrimmed,
RTRIM('Hello ') AS RightTrimmed,

-- Substring Extraction
SUBSTRING(Email, 1, 5) AS EmailStart,
LEFT(FirstName, 2) AS FirstNameLeft,
RIGHT(LastName, 2) AS LastNameRight,
MID(Email, 6, 4) AS MidEmail, -- MID = SUBSTRING

-- Replace / Reverse / Insert


REPLACE(Department, 'Finance', 'Accounts') AS DepartmentReplaced,
REVERSE(FirstName) AS FirstNameReversed,
INSERT(FirstName, 2, 3, 'XYZ') AS InsertExample,

-- Repeating and Spaces


REPEAT('A', 5) AS RepeatedA,
CONCAT('Hi', SPACE(5), 'There') AS SpaceExample,

-- ASCII / ORD
ASCII('A') AS AsciiA,
ORD('A') AS OrdA,

-- Searching / Finding
FIND_IN_SET('Finance', 'HR,Marketing,Finance,IT') AS FindSetExample,
LOCATE('example', Email) AS LocateExample,
POSITION('example' IN Email) AS PositionExample,
INSTR(Email, 'example') AS InstrExample,

-- Number Formatting
FORMAT(Salary, 2) AS FormattedSalary,

-- Padding
LPAD(EmpID, 5, '0') AS EmpIDPaddedLeft,
RPAD(FirstName, 10, '*') AS FirstNamePaddedRight,

-- String Comparison
STRCMP(FirstName, LastName) AS CompareFirstLast

FROM EmployeeTemp;

aggregate :
-- Create a temporary Employee table
CREATE TEMPORARY TABLE EmployeeTemp (
EmpID INT,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Department VARCHAR(50),
Salary DECIMAL(10,2),
Email VARCHAR(100)
);
-- Insert sample data
INSERT INTO EmployeeTemp VALUES
(1, 'John', 'Doe', 'Finance', 50000, 'john.doe@example.com'),
(2, 'Jane', 'Smith', 'Marketing', 60000, 'jane.smith@example.com'),
(3, 'David', 'Clark', 'Finance', 55000, 'david.clark@example.com'),
(4, 'Emily', 'Jones', 'Marketing', 58000, 'emily.jones@example.com'),
(5, 'Michael', 'Brown', 'IT', 62000, 'michael.brown@example.com');

-- Now all aggregate functions in a single query


SELECT
COUNT(*) AS TotalEmployees, -- Count all employees
SUM(Salary) AS TotalSalaryPaid, -- Total of all salaries
AVG(Salary) AS AverageSalary, -- Average salary
MIN(Salary) AS LowestSalary, -- Minimum salary
MAX(Salary) AS HighestSalary -- Maximum salary
FROM EmployeeTemp;

EXP 7:
-- Step 1: Create EmployeeTemp Table
CREATE TEMPORARY TABLE EmployeeTemp (
EmpID INT,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Department VARCHAR(50),
Salary DECIMAL(10,2),
Email VARCHAR(100)
);

-- Step 2: Insert Sample Data


INSERT INTO EmployeeTemp VALUES
(1, 'John', 'Doe', 'Finance', 50000, 'john.doe@example.com'),
(2, 'Jane', 'Smith', 'Marketing', 60000, 'jane.smith@example.com'),
(3, 'David', 'Clark', 'Finance', 55000, 'david.clark@example.com'),
(4, 'Emily', 'Jones', 'Marketing', 58000, 'emily.jones@example.com'),
(5, 'Michael', 'Brown', 'IT', 62000, 'michael.brown@example.com');

-- Step 3: Create a separate temp table for safe subqueries


CREATE TEMPORARY TABLE EmployeeTempCopy AS
SELECT * FROM EmployeeTemp;

-- ✅ 1. Subquery with SELECT (Find employees earning more than average salary)
SELECT *
FROM EmployeeTemp
WHERE Salary > (SELECT AVG(Salary) FROM EmployeeTempCopy);

-- ✅ 2. Subquery with INSERT (Insert highest salary employee into TopEmployee)


CREATE TEMPORARY TABLE TopEmployee AS
SELECT *
FROM EmployeeTemp
WHERE Salary = (SELECT MAX(Salary) FROM EmployeeTempCopy);

-- ✅ 3. Subquery with UPDATE (Increase salary 10% for employees below average
salary)
UPDATE EmployeeTemp
SET Salary = Salary * 1.10
WHERE Salary < (SELECT AVG(Salary) FROM EmployeeTempCopy);
-- ✅ 4. Subquery with DELETE (Delete employees earning less than minimum Marketing
salary)
DELETE FROM EmployeeTemp
WHERE Salary < (
SELECT MIN(Salary)
FROM (SELECT Salary FROM EmployeeTempCopy WHERE Department = 'Marketing') AS
TempMinSalary
);

-- ✅ 5. Complex GROUP BY and HAVING (Departments with total salary > 100000)
SELECT
Department,
COUNT(*) AS NumEmployees,
SUM(Salary) AS TotalSalary
FROM
EmployeeTemp
GROUP BY
Department
HAVING
SUM(Salary) > 100000;

-- ✅ 6. Complex DELETE based on GROUP BY + HAVING


DELETE FROM EmployeeTemp
WHERE Department IN (
SELECT Department
FROM (
SELECT Department
FROM EmployeeTempCopy
GROUP BY Department
HAVING SUM(Salary) < 110000
) AS LowSalaryDepartments
);

-- ✅ 7. Final output: Remaining employees


SELECT * FROM EmployeeTemp;

EXP: 9
-- Step 1: Create Temporary Table for Employees
CREATE TEMPORARY TABLE EmployeeTemp (
EmpID INT,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Department VARCHAR(50),
Salary DECIMAL(10,2),
Email VARCHAR(100)
);

-- Step 2: Insert Sample Data


INSERT INTO EmployeeTemp VALUES
(1, 'John', 'Doe', 'Finance', 50000, 'john.doe@example.com'),
(2, 'Jane', 'Smith', 'Marketing', 60000, 'jane.smith@example.com'),
(3, 'David', 'Clark', 'Finance', 55000, 'david.clark@example.com'),
(4, 'Emily', 'Jones', 'Marketing', 58000, 'emily.jones@example.com'),
(5, 'Michael', 'Brown', 'IT', 62000, 'michael.brown@example.com');

-- Step 3: Create Stored Procedure to Increase Salary


DELIMITER $$
CREATE PROCEDURE IncreaseSalaryByDepartment(
IN DeptName VARCHAR(50),
IN IncreasePercent DECIMAL(5,2)
)
BEGIN
UPDATE EmployeeTemp
SET Salary = Salary * (1 + IncreasePercent / 100)
WHERE Department = DeptName;
END $$

DELIMITER ;

-- Step 4: Create Stored Procedure to Get Average Salary (using OUT parameter)
DELIMITER $$

CREATE PROCEDURE GetAvgSalaryByDepartment(


IN DeptName VARCHAR(50),
OUT AvgSalary DECIMAL(10,2)
)
BEGIN
SELECT AVG(Salary)
INTO AvgSalary
FROM EmployeeTemp
WHERE Department = DeptName;
END $$

DELIMITER ;

-- Step 5: Call Stored Procedure to Increase Salary


CALL IncreaseSalaryByDepartment('Finance', 10); -- Increase Finance salaries by 10%

-- Step 6: Call Stored Procedure to Get Average Salary


-- Declare a session variable to hold output
SET @AvgFinanceSalary = 0;

CALL GetAvgSalaryByDepartment('Finance', @AvgFinanceSalary);

-- Show the Average Salary result


SELECT @AvgFinanceSalary AS Finance_Department_Average_Salary;

-- Step 7: See Final Table After Changes


SELECT * FROM EmployeeTemp;

You might also like