0% found this document useful (0 votes)
38 views58 pages

RDBMS Ai

The document outlines the implementation of a database using SQL, including the creation of tables with constraints, views, and data manipulation operations such as insert, update, delete, and select. It also covers the use of PL/SQL for stored procedures, functions, and triggers, as well as normalization techniques for database design. Additionally, it includes examples of querying an object-relational database using Object Query Language.

Uploaded by

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

RDBMS Ai

The document outlines the implementation of a database using SQL, including the creation of tables with constraints, views, and data manipulation operations such as insert, update, delete, and select. It also covers the use of PL/SQL for stored procedures, functions, and triggers, as well as normalization techniques for database design. Additionally, it includes examples of querying an object-relational database using Object Query Language.

Uploaded by

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

3.

Implement Database using SQL data definition


Constraints and Views

1.Creating table with constraints:


CREATE TABLE customer1(cust_id NUMBER(6)PRIMARY
KEY,cust_nameVARCHAR2(50)NOTNULL,mobile_noNUMBER(10)UNIQUECHECK(L
ENGTH(mobile_no)=10)ageNUMBER(2)CHECK(age>=18,city_id
NUMBER(3)REFERENCES city(city_id));

INSERT INTO customer_1VALUES(1000,'mohan',9042982079,20,10);

INSERT INTO customer_1VALUES(2000,'vijay',1234567890,23,20);

INSERT INTO customer_1VALUES(3000,'ganesh',8825462254,25,30);


select*from customer_1;

Create the table for city:

CREATE TABLE city (City_id INTEGER PRIMARY KEY,City_name TEXT);


INSERT INTO city VALUES(10,'chennai');

INSERT INTO city VALUES(20,'mumbai');

INSERT INTO city VALUES(30,'delhi');


select*
from city;

2.Creating the view:

create or replace view customer_1_v as select cust_id,cust_name,mobile_no,city_id


from customer_1;
select*from customer_;

4.Query the database using SQL Manipulation:


Data manipulation language is insert, update, delete, select.

1.Creating database using SQL Manipulation:

CREATE TABLE customer_2(cust_id


NUMBER(6),cust_nameVARCHAR2(50),mobile_no NUMBER(10),dob
DATE,city_name VARCHAR2(20),email_id VARCHAR2(50));

2.Insert record:

INSERTINTOcustomer(cust_id,cust_name,mobile_no,city_name,dob,email_id)VAL
UES(123456,'mohan',9874561230,'santhur',TO_DATE('12/16/2024','mm/dd/
yyyy'),'[email protected]');

INSERTINTOcustomer_2(cust_id,cust_name,mobile_no,city_name,dobemail_id)V
ALUES(222,'null',9874561230,'santhur',TO_DATE('12/16/2024','mm/dd/
yyyy'),'[email protected]');
3.Update record:

UPDATE customer_2SET cust_name='Tamil'WHERE cust_id=222;


4.Select statement: Select *from customer_2:

5.Delete statement:Delete from customer_2;


5. Querying/Managing the database using SQL Programming -
Stored Procedures/Functions -Constraints and security using
Triggers:
Creating Table:
CREATE TABLE employee_records (

emp_id NUMBER,

emp_name VARCHAR2(100),

emp_position VARCHAR2(100),

salary NUMBER);

Stored Procedure:

CREATE OR REPLACE PROCEDURE insert_emp_records (emp_id IN


NUMBER,emp_name IN VARCHAR2, VARCHAR to VARCHAR2
emp_position IN VARCHAR2, salary IN NUMBER) IS

BEGIN
INSERT INTO employee_records (emp_id, emp_name, emp_position, salary)
VALUES (emp_id, emp_name, emp_position, salary);END;

/BEGIN

insert_emp_records(3, 'Tamil', 'employee', 5000);

END;
Function:

CREATE OR REPLACE FUNCTION salary_hike_fun(salary NUMBER)RETURN


NUMBER IS

BEGIN RETURN salary * 2; END;/

SELECT emp_name, salary, salary_hike_fun(salary) AS new_salary

FROM employee_records;
Contraint:

ADD CONSTRAINT pk_emp_id PRIMARY KEY(emp_id);

ALTER TABLE employee_records

Trigger:

CREATE TABLE employee_records_bkp_trigger (

emp_id NUMBER,

emp_name VARCHAR2(100),

emp_position VARCHAR2(100),

salary NUMBER,

deleted_date DATE,

deleted_by VARCHAR2(50));
CREATE OR REPLACE TRIGGER after_delete_trig

AFTER DELETE ON employee_records

FOR EACH ROW

BEGIN

INSERT INTO employee_records_bkp_trigger

VALUES(:old.emp_id, :old.emp_name, :old.emp_position, :old.salary,


SYSDATE, USER);

END;

/
Delete the record:

DELETE FROM employee_records WHERE emp_id = 1;


8.Create a table for Employee details with Employee Number as
primary key and following fields: Name, Designation, Gender,
Age, Date of Joining and Salary. Insert at least ten rows and
perform various queries using any one Comparison, Logical, Set,
Sorting and Grouping operators.
1.Creating Table:

create table Employee_details(emp_number number PRIMARY KEY,emp_name


VARCHAR(50) NOT NULL,designation VARCHAR(50),gender
VARCHAR(10),age number,date_of_joining DATE,salary DECIMAL(10,2));

INSERT INTO Employee_details (emp_number, emp_name, designation, gender,


age, date_of_joining, salary)VALUES(1,'John','manager','Male',45,
(TO_DATE('12/16/201','mm/dd/yyyy')),75000.00);

INSERT INTO Employee_details (emp_number, emp_name, designation, gender,


age, date_of_joining, salary) VALUES
(2,'Smith','Developer','Female',30,(TO_DATE('12/16/2022','mm/dd/yyyy')),
60000.00);

INSERT INTO Employee_details (emp_number, emp_name, designation, gender,


age, date_of_joining, salary) VALUES(3, 'Johnson', 'Designer','Female',28,
(TO_DATE('12/16/2023','mm/dd/yyyy')),55000);

INSERT INTO Employee_details (emp_number, emp_name, designation, gender,


age, date_of_joining, salary) VALUES

(4,'Bob', 'Tester', 'Male', 35,(TO_DATE('12/16/2024','mm/dd/yyyy')), 50000.00);

INSERT INTO Employee_details (emp_number, emp_name, designation, gender,


age, date_of_joining, salary) VALUES

(5,'Charlie','HR', 'Male', 40,(TO_DATE('12/16/2025','mm/dd/yyyy')), 58000.00);

INSERT INTO Employee_details (emp_number, emp_name,


designation,gender,age,date_of_joining,salary)
VALUES(6,'Diana','Developer','Female',32,(TO_DATE('12/16/2026','mm/dd/
yyyy')), 62000.00);

INSERT INTO Employee_details (emp_number, emp_name,


designation,gender,age,date_of_joining,salary)
VALUES(7,'Ethan','Manager','Male',50,(TO_DATE('12/16/2027','mm/dd/yyy)),
80000.00);
select* from Employee_details;
2.Comparison Operator:

SELECT * FROM Employee_details WHERE salary > 60000;


3.Logical Operator:

SELECT * FROM Employee_details WHERE gender = 'Male' AND age > 40;

4.Set Operator:

SELECT * FROM Employee_details WHERE date_of_joining <


(TO_DATE('12/16/2023','mm/dd/yyyy'))

UNION

SELECT * FROM Employee_details WHERE date_of_joining >


(TO_DATE('12/16/2028','mm/dd/yyyy'));
5.Sorting:

SELECT * FROM Employee_details ORDER BY salary DESC;


6.Grouping:

SELECT designation, AVG(salary) AS average_salary

FROM Employee_details GROUP BY designation;


9.Write a PL/SQL to update the rate field by 20% more than the
current rate in inventory table which has the following fields:
Prono, ProName and Rate. After updating the table a new field
(Alter) called for Number of item and place for values for the
new field without using PL/SQL block.

Creating Table:

CREATE TABLE customer_dts ( name VARCHAR2(500),proname


VARCHAR2(500), salary NUMBER,job VARCHAR2(500));

INSERT INTO customer_dts (name, proname, salary, job) VALUES ('Arivu', 'K',
2500, 'Saluman');

INSERT INTO customer_dts (name, proname, salary, job) VALUES ('Krish', 'M',
3000, 'Manager');
PL/SQL block:

CREATE OR REPLACE PROCEDURE update_salary (

p_name IN VARCHAR2,

p_proname IN VARCHAR2,

p_percent IN NUMBER)

AS v_salary NUMBER;

v_rate NUMBER;

BEGIN

SELECT salary INTO v_salary

FROM customer_dts

WHERE name = p_name AND

proname = p_proname;

v_rate:=v_salary*p_percent/100; DBMS_OUTPUT.PUT_LINE('Increase Amount:


' || v_rate); UPDATE customer_dts SET salary = salary + v_rate

WHERE name=p_name AND

proname = p_proname;

DBMS_OUTPUT.PUT_LINE('Salary Updated Successfully');

EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error!


Check the code: '||SQLERRM);

END;/
Update the Salary:

BEGIN

update_salary('Arivu', 'K', 20);

END;

/
SELECT * FROM customer_dts;
SELECT 500 * 20 / 100 FROM dual;

SELECT * FROM all_objects WHERE object_type = 'TABLE';


6.Database design using Normalization –bottom-up approach:

CREATE TABLE EmployeeData (emp_id INT,emp_name


VARCHAR(50),emp_addressVARCHAR(100),emp_departmentVARCHAR(50),em
p_salaryDECIMAL(10,2),emp_manager VARCHAR(50));

insert into EmployeeData

values(1, 'John Doe', '123 Main St', 'IT', 70000, 'Alice Smith');

insert into EmployeeData

values (2, 'Jane Doe', '456 Elm St', 'HR', 65000, 'Bob Johnson');
Apply First Normal Form (1NF):

CREATE TABLE Employee (

emp_id INT PRIMARY KEY,

emp_name VARCHAR(50),

street VARCHAR(50),
city VARCHAR(50),state VARCHAR(50),zip_code VARCHAR(10));

INSERT INTO Employee (emp_id, emp_name, street, city, state, zip_code)

VALUES

(1, 'John Doe', '123 Main St', 'Springfield', 'IL', '62701'),

INSERT INTO Employee (emp_id, emp_name, street, city, state, zip_code)

VALUES

(2, 'Jane Doe', '456 Elm St', 'Chicago', 'IL', '60601');


select* from Employee;
Apply Second Normal Form (2NF):

CREATE TABLE Department (

dept_id INT PRIMARY KEY,

dept_name VARCHAR(50));
INSERT INTO Department (dept_id, dept_name) VALUES (1, 'IT');

CREATE TABLE Manager (

manager_id INT PRIMARY KEY,

manager_name VARCHAR(50));
INSERT INTO Manager (manager_id, manager_name)VALUES (1, 'Alice
Smith');

CREATE TABLE EmployeeDepartment (

emp_id INT,

dept_id INT,

PRIMARY KEY (emp_id, dept_id),

FOREIGN KEY (emp_id) REFERENCES Employee(emp_id),

FOREIGN KEY (dept_id) REFERENCES Department(dept_id)

);
INSERT INTO EmployeeDepartment (emp_id, dept_id)

VALUES (1, 1);


select*from EmployeeDepartment;

Apply Third Normal Form (3NF):

CREATE TABLE EmployeeManager

( emp_id INT, manager_id INT,

PRIMARY KEY (emp_id, manager_id),

FOREIGN KEY (emp_id) REFERENCES Employee(emp_id),

FOREIGNKEY (manager_id) REFERENCES Manager(manager_id));


INSERT INTO EmployeeManager (emp_id, manager_id)

VALUES (1, 1);


Final Database Design After Normalization:

SELECT e.emp_name, d.dept_name

FROM Employee e

JOIN EmployeeDepartment ed ON e.emp_id = ed.emp_id

JOIN Department d ON ed.dept_id = d.dept_id;


7.Develop database applications

PL/SQL BLOCK:

CREATE OR REPLACE PACKAGE


XXTTC_NURSERY_MANAGEMENT_PKG AS PROCEDURE ITEM_MASTER (

p_item_code IN VARCHAR2,

p_item_description IN VARCHAR2,

p_item_type IN VARCHAR2,

p_unit_of_measure IN VARCHAR2,

p_inventory_item_flag IN VARCHAR2,

p_facility_code IN VARCHAR2,

p_creation_date IN DATE,

p_created_by IN VARCHAR2,

p_last_update_date IN DATE,

p_last_update_by IN VARCHAR2);

END XXTTC_NURSERY_MANAGEMENT_PKG;/
CREATE OR REPLACE PACKAGE BODY
XXTTC_NURSERY_MANAGEMENT_PKG AS

PROCEDURE ITEM_MASTER (

p_item_code IN VARCHAR2,

p_item_description IN VARCHAR2,

p_item_type IN VARCHAR2,

p_unit_of_measure IN VARCHAR2,

p_inventory_item_flag IN VARCHAR2,

p_facility_code IN VARCHAR2,

p_creation_date IN DATE,

p_created_by IN VARCHAR2,
p_last_update_date IN DATE,

p_last_update_by IN VARCHAR2) AS

v_item_count NUMBER;

p_item_id NUMBER;

v_facility_id VARCHAR2(50);

BEGIN

SELECT facility_id

INTO v_facility_id

FROM XXTTC_FACLITY_DETAILS

WHERE facility_code = p_facility_code;

SELECT item_id.NEXTVAL

INTO p_item_id

FROM dual;

SELECT COUNT(*)

INTO v_item_count

FROM XXTTC_ITEM_MASTER

WHERE item_code = p_item_code;

IF v_item_count > 0 THEN

DBMS_OUTPUT.PUT_LINE('Inserted data already exists.');

ELSE

INSERT INTO XXTTC_ITEM_MASTER (

item_id, item_code, item_description, item_type, unit_of_measure,

inventory_item_flag, facility_id, creation_date, created_by,


last_update_date, last_update_by)

VALUES (p_item_id, p_item_code, p_item_description, p_item_type,


p_unit_of_measure,

p_inventory_item_flag, v_facility_id, p_creation_date, p_created_by,

p_last_update_date, p_last_update_by);

DBMS_OUTPUT.PUT_LINE('Data inserted successfully.');

END IF;COMMIT;

EXCEPTION

WHEN OTHERS THEN

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

END ITEM_MASTER;

END XXTTC_NURSERY_MANAGEMENT_PKG;

BEGIN

XXTTC_NURSERY_MANAGEMENT_PKG.ITEM_MASTER(

'W0000016', 'Senthura sedi', 'sedi', 'EACH', 'Y', 'SAN',

SYSDATE, 'Mohan Ganesh', SYSDATE, 'Mohan Ganesh'

);

END

;/

SELECT * FROM USER_ERRORS WHERE NAME =


'XXTTC_NURSERY_MANAGEMENT_PKG';

CREATE SEQUENCE item_id START WITH 1 INCREMENT BY 1;


10. Querying the Object-relational database using
Object Query language

Creating Table and Inserting Values:


Author table:
CREATE TABLE Author (

AuthorID NUMBER PRIMARY KEY,

Name VARCHAR2(100) NOT NULL

);

INSERT INTO Author (AuthorID, Name) VALUES (1, 'J.K. Rowling');

INSERT INTO Author (AuthorID, Name) VALUES (2, 'George Orwell');


Select*fromAuthor;

Publisher table:

CREATE TABLE Publisher (

PublisherID NUMBER PRIMARY KEY,

Name VARCHAR2(100) NOT NULL);


INSERT INTO Publisher (PublisherID, Name) VALUES (1, 'Penguin Books');

INSERT INTO Publisher (PublisherID, Name) VALUES (1, 'Penguin Books');

Select*from Publisher;
Book table:
CREATE TABLE Book (

BookID NUMBER PRIMARY KEY,

Title VARCHAR2(200) NOT NULL,

Author NUMBER REFERENCES Author(AuthorID),

Publisher NUMBER REFERENCES Publisher(PublisherID),

Price NUMBER(10,2)

);
INSERT INTO Book (BookID, Title, Author, Publisher, Price)

VALUES (1, ‘Harry Potter;, 1, 1, 25.50);

INSERT INTO Book (BookID, Title, Author, Publisher, Price)

VALUES (2, ‘1984’, 2, 2, 15.99);


Select*from Book;

CREATE TABLE Ebook (

EbookID NUMBER PRIMARY KEY,

Title VARCHAR2(200) NOT NULL,

FileFormat VARCHAR2(10) NOT NULL);


INSERT INTO Ebook (EbookID, Title, FileFormat)

VALUES (1, ‘Digital Fortress’, ‘PDF’);


1. Get Book Titles and Author Names
SELECT b.Title, a.Name

FROM Book b

INNER JOIN Author a ON b.Author = a.AuthorID;

2. Get Books Published by “Penguin Books”


SELECT b.Title, p.Name

FROM Book b

INNER JOIN Publisher p ON b.Publisher = p.PublisherID

WHERE p.Name = ‘Penguin Books’;


3. Get Books Where Price > 20
SELECT b.Title, b.Price

FROM Book b

WHERE b.Price > 20;


4. Get Ebooks in PDF Format
SELECT e.Title, e.FileFormat

FROM Ebook e

WHERE e.FileFormat = ‘PDF’;

5. Get Books and Publisher Names, Ordered by Title


SELECT b.Title, p.Name

FROM Book b

INNER JOIN Publisher p ON b.Publisher = p.PublisherID

ORDER BY b.Title;
6. Get Count of Books by Each Author
SELECT a.Name, COUNT(b.BookID) AS BookCount

FROM Author a

LEFT JOIN Book b ON b.Author = a.AuthorID

GROUP BY a.Name;
7. Get Books with Author and Publisher Names
SELECT b.Title, a.Name AS AuthorName, p.Name AS PublisherName

FROM Book b

INNER JOIN Author a ON b.Author = a.AuthorID

INNER JOIN Publisher p ON b.Publisher = p.PublisherID;

You might also like