DBMS Lab Manual
DBMS Lab Manual
DBMS Lab Manual
ENGINEERING
PREPARED BY
Mrs.C.RAMYA
AP/CSE
CS3481 DATABASE MANAGEMENT SYSTEMS LABORATORY
LTPC
0 0 3 1
AIM:
The aim of this laboratory is to inculcate the abilities of applying the principles of the database
management systems. This course aims to prepare the students for projects where a proper
implementation of databases will be required
COURSE OBJECTIVES:
LIST OF EXPERIMENTS:
1. Create a database table, add constraints (primary key, unique, check, Not null), insert rows,
update and delete rows using SQL DDL and DML commands.
2. Create a set of tables, add foreign key constraints and incorporate referential integrity.
3. Query the database tables using different ‘where’ clause conditions and also implement
aggregate functions.
4. Query the database tables and explore sub queries and simple join operations.
5. Query the database tables and explore natural, equi and outer joins.
6. Write user defined functions and stored procedures in SQL.
7. Execute complex transactions and realize DCL and TCL commands.
8. Write SQL Triggers for insert, delete, and update operations in a database table.
9. Create View and index for database tables with a large number of records.
10. Create an XML database and validate it using XML schema.
11. Create Document, column and graph based data using NOSQL database tools.
12. Develop a simple GUI based database application and incorporate all the above-mentioned
features
13. Case Study using any of the real life database applications from the following list
a) Inventory Management for a EMart Grocery Shop
b) Society Financial Management
c) Cop Friendly App – Eseva
d) Property Management – eMall
e) Star Small and Medium Banking and Finance
● Build Entity Model diagram. The diagram should align with the business and functional goals
stated in the application.
● Apply Normalization rules in designing the tables in scope.
● Prepared applicable views, triggers (for auditing purposes), functions for enabling enterprise
grade features.
● Build PL SQL / Stored Procedures for Complex Functionalities, ex EOD Batch Processing for
calculating the EMI for Gold Loan for each eligible Customer.
● Ability to showcase ACID Properties with sample queries with appropriate settings
TOTAL: 45 PERIODS
COURSE OUTCOMES: At the end of this course, the students will be able to:
CO1: Create databases with different types of key constraints.
CO2: Construct simple and complex SQL queries using DML and DCL commands.
CO3: Use advanced features such as stored procedures and triggers and incorporate in GUI
based application development.
CO4: Create an XML database and validate with meta-data (XML schema).
CO5: Create and manipulate data using NOSQL database.
EX.NO: 1 DDL and DML commands
AIM
PROCEDURE
Step 1: Start
Step 3: Create a table with necessary attributes and execute DDL and DML commands.
Step 5: Stop
SQL> CREATE TABLE EMP (EMPNO NUMBER (4), ENAME VARCHAR2 (10),
DESIGNATIN VARCHAR2 (10), SALARY NUMBER (8,2));
Table created.
REMOVE / DROP
SQL> ALTER TABLE EMP DROP COLUMN DOJ;
SQL> DESC EMP;
Name Null? Type
----------------------------------------- -------- -------------
EMPNO NUMBER(7)
ENAME VARCHAR2(12)
DESIGNATIN VARCHAR2(10)
SALARY NUMBER(8,2)
QUALIFICATION VARCHAR2(6)
DOB DATE
Output
UNIQUE Constraint
mysql> CREATE TABLE ShirtBrands(Id INTEGER, BrandName VARCHAR(40) UNIQUE, Si
ze VARCHAR(30));
mysql> INSERT INTO ShirtBrands(Id, BrandName, Size) VALUES(1, 'Pantaloons', 38), (2, 'Ca
ntabil', 40);
mysql> INSERT INTO ShirtBrands(Id, BrandName, Size) VALUES(1, 'Raymond', 38), (2, 'Cant
abil', 40);
Output
CHECK CONSTRAINT
CHECK (expr)
mysql> CREATE TABLE Persons ( ID int NOT NULL,Name varchar(45) NOT NULL, Age in
t CHECK (Age>=18) );
In the below output, we can see that the first INSERT query executes successfully, but the
second statement fails and gives an error that says: CHECK constraint is violated for key Age.
RESULT
AIM
To create a set of tables and add foreign key and referential integrity constraints.
PROCEDURE
Step 1:Start
Step 5: Stop
DEPARTMENT
EMPLOYEES
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constrai
RESULT
AIM
PROCEDURE
Step 1: Start
Step 4:stop
Syntax:
AGGREGATE FUNCTIONS
Output:
Consider our database has a table named employees, having the following data. Now, we are
going to understand this function with various examples:
Output:
MySQL avg() function example
Consider our database has a table named employees, having the following data. Now, we are
going to understand this function with various examples:
Output:
RESULT
AIM:
To execute and verify the SQL commands for Simple JOIN and sub queries.
PROCEDURE
STEP 1: Start
STEP 2: Create the table with its essential attributes.
STEP 3: Insert attribute values into the table
STEP 4: Execute Commands for JOIN operation and extract information from the table.
STEP 5: Execute Commands for Sub queries operation.
STEP 6: Stop
Consider two tables "officers" and "students", having the following data.
Output
MYSQL SUBQUERY
RESULT
AIM
To write a query to perform natural join ,equi join and outer join.
PROCEDURE
Step 1: Start
Step 3: Perform natural join,equi join and outer join operations with queries
Step 4: Stop
Syntax:
SELECT [column_names | *] FROM table_name1 NATURAL JOIN table_name2;
NATURAL JOIN:
mysql> SELECT cust. customer_name, bal.balance FROM customer AS cust NATURAL JOI
N balance AS bal;
MYSQL RIGHT OUTER JOIN
Syntax:
SELECT columns FROM table1 RIGHT [OUTER] JOIN table2 ON table1.column = table2.co
lumn;
Consider two tables "officers" and "students", having the following data.
Output
EQUI JOIN
mysql> SELECT cust. customer_name, bal.balance FROM customer AS cust, balance AS bal
WHERE cust.account = bal.account_num;
RESULT
AIM :
To write a SQL block to display the student name, marks whose average mark is above
60%.
ALGORITHM
STEP 1:Start
STEP 3:Insert the values into the table and Calculate total and average of each student
STEP 4: Execute the procedure function the student who get above 60%.
STEP 6: End
PROGRAM:
Output
Procedure created.
Table created
SQL> insert into student values (101,'priya', 78, 88,77,60,89);
1 row created.
SQL> insert into student values (102,'surya', 99,77,69,81,99);
1 row created.
SQL> insert into student values (103,'suryapriya', 100,90,97,89,91);
1 row created.
SQL> select * from student;
SQL> declare
2 ave number(5,2);
3 tot number(3);
4 cursor c_mark is select*from student where mark1>=40 and mark2>=40 and
5 mark3>=40 and mark4>=40 and mark5>=40;
6 begin
7 dbms_output.put_line('regno name mark1 mark2 mark3 mark4 mark4 mark5 total
8 average');
9 dbms_output.put_line('-------------------------------------------------------------');
10 for student in c_mark
11 loop
12 tot:=student.mark1+student.mark2+student.mark3+student.mark4+student.mark5;
13 ave:=tot/5;
14 dbms_output.put_line(student.regno||rpad(student.name,15)
15 ||rpad(student.mark1,6)||rpad(student.mark2,6)||rpad(student.mark3,6)
16 ||rpad(student.mark4,6)||rpad(student.mark5,6)||rpad(tot,8)||rpad(ave,5));
17 end loop;
18 end;
19 /
OUTPUT
AIM
PROCEDURE
STEP 1: Start
STEP 4: Frame the searching procedure for both positive and negative searching.
STEP 5: Execute the Function for both positive and negative result .
STEP 6: Stop
Table created.
1 row created.
1 row created.
begin
select username||','||doorno ||','||street ||','||place||','||pincode into address from phonebook
where phone_no=phone;
return address;
exception
when no_data_found then return 'address not found';
end;
/
Function created.
SQL>declare
2 address varchar2(100);
3 begin
4 address:=findaddress(20312);
5 dbms_output.put_line(address);
6 end;
7 /
OUTPUT
RESULT
AIM
PROCEDURE
Step 1: Start
Step 5: Stop.
DCL COMMANDS
GRANT
REVOKE
1 row created.
SQL> SELECT * FROM EMP;
ROLL BACK
Rollback complete.
COMMIT
SQL> COMMIT;
Commit complete.
RESULT
PROCEDURE
SYNTAX
create or replace trigger trigger name [before/after] {DML
statements} on [table name] [for each row/statement] begin
-------------------------
-------------------------
exception
end;
PROGRAM
SQL>create table poo(rno number(5),name varchar2(10));
Table created.
SQL>insert into poo values (01.‟kala‟);
1 row created.
SQL>select * from poo;
RNO NAME
------ ----------
1 kala
2 priya
SQL>create or replace trigger pool before insert on poo for each row
2 declare
3 rno poo.rno%type
4 cursor c is select rno from poo;
5 begin
6 open c;
7 loop;
8 fetch c into rno;
9 if:new.rno=rno then
10 raise_application_error(-20005,‟rno already exist‟);
11 end if;
12 exit when c%NOTFOUND
13 end loop;
14 close c;
15 end;
16 /
Trigger created.
OUTPUT
SQL>insert into poo values(01,‟kala‟)
Insert into poo values (01,‟kala‟)
*
ERROR at line1:
ORA-20005:rno already exist
ORA-06512:”SECONDCSEA.POOL”,line 9
ORA-04088:error during execution at trigger “SECONDCSEA.POOL”
RESULT
Thus the PL/SQL blocks are developed for triggers and the results are verified.
PROCEDURE
STEP 1: Start
STEP 5: Execute different Commands and extract information from the View.
STEP 6: Stop
CREATION OF TABLE
Table created.
TABLE DESCRIPTION
-------------------------------
SQL> DESC EMPLOYEE;
CREATION OF VIEW
------------------------------
SQL> CREATE VIEW EMPVIEW AS SELECT
EMPLOYEE_NAME,EMPLOYEE_NO,DEPT_NAME,DEPT_NO,DATE_OF_JOIN FROM
EMPLOYEE;
view created.
DESCRIPTION OF VIEW
--------------------------------
SQL> DESC EMPVIEW;
1 ROW CREATED.
DELETION OF VIEW
DELETE STATEMENT
SQL> DELETE FROM EMPVIEW WHERE EMPLOYEE_NAME='SRI';
UPDATE STATEMENT:
1 ROW UPDATED.
CREATE INDEX
Mysql> CREATE DATABASE indexes;
Query OK, 1 row affected (0.01 sec)
USE indexes;
Database changed
employee_id int,
first_name varchar(50),
last_name varchar(50),
(1, 'John', 'Smith', 'ABC123', 60000), (2, 'Jane', 'Doe', 'DEF456', 65000),
(3, 'Bob', 'Johnson', 'GHI789', 70000), (4, 'Sally', 'Fields', 'JKL012', 75000),
(5, 'Michael', 'Smith', 'MNO345', 80000), (6, 'Emily', 'Jones', 'PQR678', 85000),
(7, 'David', 'Williams', 'STU901', 90000), (8, 'Sarah', 'Johnson', 'VWX234', 95000),
+----+-------------+-----------+------------+------+---------------+--------+---------+-------+------+-------
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered
| 1 | SIMPLE | employees | NULL | ref | salary | salary | 5 | const | 1 | 100.00 |
+----+-------------+-----------+------------+------+---------------+--------+---------+-------+------+-------
RESULT
Algorithm
Step 1: Start
Step 4:Create XML Schema for data values and load values
Step 6:Stop
CREATE TABLE
created TIMESTAMP
);
<list>
<personperson_id="1"fname="Kapek"lname="Sainnouine"/>
<personperson_id="2"fname="Sajon"lname="Rondela"/>
<personperson_id="3"><fname>Likame</fname><lname>Örrtmons</lname></person>
<personperson_id="4"><fname>Slar</fname><lname>Manlanth</lname></person>
<person><fieldname="person_id">5</field><fieldname="fname">Stoma</field>
<fieldname="lname">Milu</field></person>
<person><fieldname="person_id">6</field><fieldname="fname">Nirtam</field>
<fieldname="lname">Sklöd</field></person>
<personperson_id="7"><fname>Sungam</fname><lname>Dulbåd</lname></person>
<personperson_id="8"fname="Sraref"lname="Encmelt"/>
</list>
LOAD XML LOCAL INFILE 'c:/db/person.xml' //this is ths location of the xml data file
OUTPUT
Mysql> SELECT
Result
Algorithm
Step 1:Start
Step 5:Stop
>Connection string:
mongodb://localhost:27017
output:
mydbnew>db.details.insertOne({"website":"mywebsite"})
Output:
Db.details.find()
Output
CREATING CHART USING SAMPLE DATA
PROCEDURE:
Step 1: Log into MongoDB Atlas.
To access the MongoDB Charts application, you must be logged into Atlas
Step 2: Select your desired Atlas project, or create a new project.
If you have an Atlas Project with clusters containing data you wish to visualize,
Step 3:select the project from the Context dropdown in the left navigation pane.
Step 4:Create an Atlas cluster.
The MongoDB Charts application makes it easy to connect collections in your cluster as
data sources. Data sources reference specific collections and charts views that you can
access in the Chart Builder to visualize the data in those collections or charts views.
Step 5:Launch the MongoDB Charts application.
In Atlas, click Charts in the navigation bar.
Step 6:Choose data from clusters
OUTPUT
Result
Algorithm
Step 1: Start
Step 3:Design Login Screen with User Name and Password fields.
Step 5: Stop
PROGRAM
import tkinter as tk
import mysql.connector
from tkinter import *
def submitact():
user = Username.get()
passw = password.get()
logintodb(user, passw)
try:
cursor.execute(savequery)
myresult = cursor.fetchall()
except:
db.rollback()
print("Error occurred")
root = tk.Tk()
root.geometry("300x300")
root.title("DBMS Login Page")
root.mainloop()
Output:
Result
Bank Entity : Attributes of Bank Entity are Bank Name, Code and Address.
Code is Primary Key for Bank Entity.
Customer Entity : Attributes of Customer Entity are Customer_id, Name, Phone
Number and Address.
Customer_id is Primary Key for Customer Entity.
Branch Entity : Attributes of Branch Entity are Branch_id, Name and Address.
Branch_id is Primary Key for Branch Entity.
Account Entity : Attributes of Account Entity are Account_number, Account_Type and
Balance.
Account_number is Primary Key for Account Entity.
Loan Entity : Attributes of Loan Entity are Loan_id, Loan_Type and Amount.
Loan_id is Primary Key for Loan Entity.
This bank ER diagram illustrates key information about bank, including entities such as
branches, customers, accounts, and loans. It allows us to understand the relationships between
entities.
NORMALIZATION PROCESS
Database normalization is a stepwise formal process that allows us to decompose
database tables in such a way that both data dependency and update anomalies are minimized. It
makes use of functional dependency that exists in the table and primary key or candidate key in
analyzing the tables. Normal forms were initially proposed called First Normal Form
(INF), Second Normal Form (2NF), and Third Normal Form (3NF). Subsequently, R, Boyce,
and E. F. Codd introduced a stronger definition of 3NF called Boyce-Codd Normal Form. With
the exception of 1NF, all these normal forms are based on functional dependency among the
attributes of a table. Higher normal forms that go beyond BCNF were introduced later such
as Fourth Normal Form (4NF) and Fifth Normal Form (5NF). However, these later normal forms
deal with situations that are very rare.
TRIGGERS
To ensure the integrity and consistency of data during a transaction (A transaction is a unit of
program that updates various data items, read more about it here), the database system
maintains four properties. These properties are widely known as ACID properties.
Atomicity
This property ensures that either all the operations of a transaction reflect in database or
none. The logic here is simple, transaction is a single unit, it can’t execute partially. Either it
executes completely or it doesn’t, there shouldn’t be a partial execution.
Let’s say first operation passed successfully while second failed, in this case A’s balance would
be 300$ while B would be having 700$ instead of 800$. This is unacceptable in a banking
system. Either the transaction should fail without executing any of the operation or it should
process both the operations. The Atomicity property ensures that.
There are two key operations are involved in a transaction to maintain the atomicity of the
transaction.
Abort: If there is a failure in the transaction, abort the execution and rollback the changes made
by the transaction.
Consistency
Database must be in consistent state before and after the execution of the transaction. This
ensures that there are no errors in the database at any point of time. Application programmer is
responsible for maintaining the consistency of the database.
Example:
A transferring 1000 dollars to B. A’s initial balance is 2000 and B’s initial balance is 5000.
Before the transaction:
Total of A+B = 2000 + 5000 = 7000$
The data is consitendct before and after the execution of the transaction so this example
maintains the consistency property of the database.
Isolation
A transaction shouldn’t interfere with the execution of another transaction. To preserve the
consistency of database, the execution of transaction should take place in isolation (that means
no other transaction should run concurrently when there is a transaction already running).
For example account A is having a balance of 400$ and it is transferring 100$ to account B & C
both. So we have two transactions here. Let’s say these transactions run concurrently and both
the transactions read 400$ balance, in that case the final balance of A would be 300$ instead of
200$. This is wrong.
If the transaction were to run in isolation then the second transaction would have read the correct
balance 300$ (before debiting 100$) once the first transaction went successful.
Durability
Once a transaction completes successfully, the changes it has made into the database should
be permanent even if there is a system failure. The recovery-management component of
database systems ensures the durability of transaction.
STORED PROCEDURE
EXEC bank.GetTransactions
@AccountID = 100000,
@StartDate = '4/1/2007',
@EndDate = '4/30/2007'