DBMS EXPERIMENTS
Name of the Lab: DATABASE MANAGEMENT SYSTEM LAB
Experiment: 1
Aim: Hands on experience on any RDBMS to implement the role of Database Administrator like creating the users, alter user, grant and revoke of rights of user.
THEORY:
SQL: It is structured query language, basically used to pass the query to
retrieve and manipulate the information from database. Depending upon the
nature of query, SQL is divided into
different components:
• DDL (Data Definition Language )
• DML ( Data Manipulation Language )
• DCL (Data Control Language )
DDL: The Data Definition Language (DDL) is used to create the database (i.e. tables,keys,relationships etc), maintain the structure of the database and destroy databases and database objects.
E.g. Create,Drop, Alter, Describe, Truncate
1. CREATE statements: It is used to create the table.
Syntax:
CREATE TABLE table_name(columnName1 datatype(size), columnName2 datatype(size),………);
2. DROP statements: To destroy an existing database, table, index, or view. If a table
is dropped all records held within it are lost and cannot be recovered.
Syntax:
DROP TABLE table_name;
3.ALTER statements: To modify an existing database object.
Adding new columns:
Syntax:
Alter table table_name Add(New_columnName1
datatype(size),
New_columnName2
datatype(size),………);
Dropping a columns from a
table :
Alter table table_name DROP column
columnName:
Modifying Existing
columns:
Syntax:
Alter table table_name Modify (columnName1
Newdatatype(Newsize));
4.Describe statements: To describe the
structure (column and data types) of an existing database, table, index, or
view.
Syntax:
DESC table_name;
5. Truncate statements: To destroy the data
in an existing database, table, index, or view. If a table is truncated all
records held within it are lost and cannot be recovered but the table structure
is maintained.
Syntax :
TRUNCATE TABLE table_name;
Data Control Language (DCL) consists of various commands which are related to data sharing and
security of data in database.
They are:
GRANT
REVOKE
Granting Privileges:
Objects that are created
by a user are owned and controlled by that user. If user wishes to access any
of the objects belonging to another user, the owner of the object will have to
give permissions for such access. This is called Granting of Privileges.
Granting privileges using the GRANT
statements:
The GRANT statements
provide various types of access to database objects such as tables, views.
Syntax:
GRANT {object privileges}
ON object name
TO username;
Object
Privileges: each object privilege that is granted authorizes the grantee to
perform some operation on the object. The user can grant all the privileges or
grant only specific object privileges.
The list of object privileges is as
follows:
• ALTER: allows the grantee to change the table definitions with the ALTER
table command.
• DELETE: allows the grantee to remove the records from the table with the
DELETE command.
• INDEX: allows the grantee to create an index on the table with the CREATE
INDEX command.
• INSERT: allows the grantee to add records to the table with the INSERT
command.
• SELECT: allows the grantee to query the table with SELECT command.
• UPDATE: allows the grantee to modify the records in the table with the
UPDATE command.
Revoking privileges given:
Privileges
once given can be denied to a user using the REVOKE command. The object owner
can revoke privileges granted to another user. A user of an object who is not
owner, but has been granted the GRANT privilege, has the power to REVOKE the
privileges from the grantee.
Revoking permission using the REVOKE statement:
The REVOKE statement is used to deny the
grant given on an object.
Syntax:
REVOKE {object privileges}
ON object name
FROM username;
The REVOKE command is
used to revoke object privileges that the user previously granted to the
Revoke.
The REVOKE command
cannot be used to revoke the privileges granted through operating system.
Conclusion: Implemented various DDL commands. DCL statements are used to provide data sharing of data in database
Experiment: 2
Aim:
Create a Database of employees and departments with
the following details.
Table name Fields name
Emp empno (primary key), ename,
Edetails, ebasic, salary-
Details, e-deptno (foreign key)
Dept deptno (primary key),
dept-name, dept. Details.
Theory:
Syntax For Create A from An Existing Table
With All Fields
SQL> CREATE TABLE <TRAGET TABLE NAME> SELECT * FROM
<SOURCE TABLE NAME>;
SQL> CREATE TABLE EMP1 AS SELECT * FROM EMP;
Table created.
SQL> DESC EMP1
Name Null? |
Type |
-----------------------------------
-------- |
------------------ |
EMPNO NOT |
NUMBER(4)
|
ENAME |
VARCHAR2(10) |
DESIGNATIN |
VARCHAR2(10) |
SALARY |
NUMBER(8,2)
|
DEPTNAME |
VARCHAR2(10) |
Experiment: 3
Aim: Create suitable tables to perform the following relational
operations select project product join restriction union intersection
difference
Theory:
SELECT COMMAND:
TYPE 1:
SQL> select * from sub;
NAME AGE MARK1 MARK2 MARK3
-------- ---------- ---------- --------------- ------------
sachin 12
90
90
90
sachin 22
90 89
78
ranjan 21
89 78 80
gayathri 12
78 89
90
rajini 22
90 87 56
TYPE 2:
SQL>
select name,age from sub;
NAME AGE
-------- ----------
sachin 12
sachin 22
ranjan 21
gayathri 12
rajini 22
TYPE 3:
SQL> select distinct name from
sub;
NAME
-------- Gayathri
Rajini
Ranjan
Sachin
TYPE 4:
SQL> select * from sub where
mark2=90;
NAME AGE MARK1 MARK2 MARK3
-------- ---------- ---------- ---------- -----------
sachin 12 90 90 90
SQL> delete from sub where
name='sachin';2 rows deleted.SQL> select * from sub;
NAME |
AGE |
MARK1
|
|
MARK2
|
MARK3 |
--------
|
----------
|
---------- |
|
---------- - |
--------- |
ranjan
|
21 |
89 |
|
78 |
80 |
gayathri
|
12 |
78 |
|
89 |
90 |
rajini
|
22 |
90 |
|
87 |
56 |
TYPE 5:
SQL> select name from sub order by
name;
NAME
--------
Gayathri
Rajin
Iranjan
TYPE 6:
SQL> select name from sub order by name
desc;
NAME
Ranjan
Rajini
Gayathri
PROJECT COMMAND
CREATE COMMAND:
SQL> create table sub
(name varchar(8),age number(5),mark1 number(4),mark2 number(4),2 mark3
number(4)); Table created.
DESC COMMAND:
SQL> desc sub;
Name
|
Null?
|
Type |
---------- |
------------ |
--------- |
NAME
|
|
VARCHAR2(8) |
AGE
|
|
NUMBER(5) |
MARK1
|
|
NUMBER(4) |
MARK2
|
|
NUMBER(4) |
MARK3
|
|
NUMBER(4) |
ALTER COMMAND:
1)ADD COMMAND:
SQL> alter table sub add(total
number(6));
Table altered.
SQL> desc sub;
Name
|
Null? Type
|
------------ |
---------------- ------------- |
NAME
|
VARCHAR2(8)
|
AGE
|
NUMBER(5)
|
MARK1
|
NUMBER(4)
|
MARK2
|
NUMBER(4)
|
MARK3
|
NUMBER(4)
|
TOTAL
|
NUMBER(6)
|
RENAME COMMAND:
SQL> rename sub to subha;
Table renamed.
SQL> desc subha;
Name Null? Type
--------- ----------
----------
NAME VARCHAR2(8)
AGE NUMBER(5)
MARK1 NUMBER(4)
MODIFY COMMAND:
SQL> alter table sub modify(mark3
number(6)); Table altered.
SQL> desc sub;
Name
|
Null?
|
Type |
||
--------- |
------------- |
---------- |
||
NAME
|
|
|
VARCHAR2(8) |
|
AGE
|
|
|
NUMBER(5) |
|
MARK1
|
|
|
NUMBER(4) |
|
MARK2
|
|
|
NUMBER(4) |
|
MARK3
|
|
|
NUMBER(6) |
|
TOTAL
|
|
|
NUMBER(4) |
|
MARK3
|
|
|
NUMBER(6) |
|
|
TOTAL
|
|
|
NUMBER(6) |
TRUNCATE COMMAND:
SQL> truncate table subha;
Table truncated.
SQL> desc sub;
ERROR:ORA-04043: object sub does not exist
JOINS:
SQL>selectemps1.ename,emps1.eno,customers1.eno,customers1.salary
fromemps1,customers1 where emps1.eno=customers1.eno;
ENAME
|
ENO
|
ENO
|
SALARY |
----------
|
----------
|
----------
|
---------- |
naga
|
101 |
101 |
10000 |
navin
|
111 |
111 |
10500 |
raj |
141 |
141 |
5000
|
NON EQUI JOINS:
SQL>
selectemps1.ename,emps1.eno,customers1.salary,customers1.eno,customers.locationfrom emps1,customers1.eno<>customers1.eno;
ENAME
|
ENO
|
SALARY
|
ENO
|
LOCATION |
||
----------
|
----------
|
----------
|
----------
|
---------- |
||
navin
|
111
|
|
10000
|
101
|
|
CHENNAI |
ram |
121
|
|
10000
|
101
|
|
CHENNAI |
raj |
141
|
|
10000
|
101
|
|
CHENNAI |
naga
|
101
|
|
10500
|
111
|
|
PONDY |
ram |
121
|
|
10500
|
111
|
|
PONDY |
raj |
141
|
|
10500
|
111 |
|
PONDY |
naga
|
101
|
|
8000
|
131 |
|
AVADI |
navin
|
111
|
|
8000
|
131
|
|
AVADI |
ram |
121
|
|
8000
|
131
|
|
AVADI |
raj |
141
|
|
8000
|
131
|
|
AVADI |
naga
|
101
|
|
5000
|
141
|
|
LOCO |
navin
|
111
|
|
5000
|
141
|
|
LOCO |
ram |
121
|
|
5000
|
141
|
|
LOCO |
naga
|
101
|
|
9800
|
151
|
|
CHOOLAI |
navin
|
111
|
|
9800
|
151
|
|
CHOOLAI |
ram |
121
|
|
9800
|
151
|
|
CHOOLAI |
raj |
141
|
|
9800
|
151
|
|
CHOOLAI |
17 rows selected.
LEFT OUTER JOINS:
SQL>select emps1.ename,emps1.eno,customers1.salary,customers1.eno
fromemps1,customers1 where
emps1.eno(+)=customers1.eno;
ENAME |
|
ENO |
SALARY
|
|
ENO |
----------
|
|
----------
|
----------
|
|
---------- |
naga
|
|
101 |
10000
|
|
101 |
navin
|
|
111 |
10500
|
|
1118000 131 |
raj |
|
141 |
5000
|
|
1419800 151 |
RIGHT OUTER JOINS:
SQL> select emps1.ename,emps1.eno,customers1.eno,customers1.salary
fromemps1,customers1 where
emps1.eno=customers1.eno(+);
ENAME
|
|
ENO
|
ENO
|
SALARY |
----------
|
|
----------
|
----------
|
---------- |
naga
|
|
101 |
101 |
10000 |
navin
|
|
111 |
111 |
10500 |
ram |
|
121 |
|
|
raj |
|
141 |
141 |
5000 |
SET OPERATION
SQL> create table root
(name varchar(8),age number(5),mark1 number(4),mark2,number(4),2 mark3
number(5));
Table created.
SQL> insert into root
values('&name','&age','&mark1','&mark2','&mark3');
Enter value for name: Sachin
Enter value for age: 12
Enter value for mark1: 89
Enter value for mark2: 89 Enter value for mark3: 90 old 1: insert
into root values('&name','&age','&mark1','&mark2','&mark3')
new 1: insert into root values('sachin','12','89','89','90')
1 row created.
SQL> /
Enter value for name: kalai
Enter value for age: 20
Enter value for mark1: 90
Enter value for mark2: 90 Enter value for mark3: 78 old 1: insert
into root values('&name','&age','&mark1','&mark2','&mark3')
new 1: insert into root values('kalai','20','90','90','78')
1 row created.
SQL> /
Enter value for name: rani
Enter value for age: 18
Enter value for mark1: 78
Enter value for mark2: 77
Enter value for mark3: 67
old 1: insert into root
values('&name','&age','&mark1','&mark2','&mark3') new 1:
insert into root values('rani','18','78','77','67')
1 row created.
SQL> /
Enter value for name: kalam
Enter value for age: 32
Enter value for mark1: 90
Enter value for mark2: 90 Enter value for mark3: 89 old 1: insert
into root values('&name','&age','&mark1','&mark2','&mark3')
new 1: insert into root values('kalam','32','90','90','89')
1 row created.
SQL> /
Enter value for name: gokul
Enter value for age: 20
Enter value for mark1: 90
Enter value for mark2: 90 Enter value for mark3: 90 old 1: insert
into root values('&name','&age','&mark1','&mark2','&mark3')
new 1: insert into root values('gokul','20','90','90','90')
1 row created.
SQL> select * from root;
ranjan
|
21 |
sachin
|
129 |
rows selected.
UNION ALL COMMAND:
SQL> select name,age from sub union all
select name,age from root;
NAME
|
AGE |
--------
|
-------- |
ranjan
|
21 |
ayathri
|
12 |
rajini
|
22 |
sachin
|
12 |
ram |
21 |
sachin
|
12 |
kalai
|
20 |
rani |
18 |
kalam
|
32 |
gokul
|
20 |
10 rows selected.
INTERSECT:
SQL> select name from sub intersect
select name from root;
NAME
-------- sachin DIFFERENCE or
MINUS:
SQL> select name from sub minus select
name from root;
NAME
-------- Gayathri
Rajini
Ram
ranjan
Experiment: 4
Aim: Perform the
following data manipulation operation on table created in Problem 2
(a) insertion of records
(b) deletion of records
(c) Updating records
Theory:
DML & DCL COMMANDS
SQL> create table sub
(name varchar(8),age number(5),mark1 number(4),mark2 number(4),2 mark3
number(4)); Table created.
INSERT COMMAND:
TYPE 1:
SQL> insert into sub
values('&name','&age','&mark1','&mark2','&mark3');
Enter value for name: Sachin
Enter value for age: 12
Enter value for mark1: 78
Enter value for mark2: 78 Enter value for mark3: 67 old 1: insert
into sub values('&name','&age','&mark1','&mark2','&mark3')
new 1: insert into sub values('sachin','12','78','78','67')
1 row created.SQL> /
Enter value for name: ranjan
Enter value for age: 22
Enter value for mark1: 89
Enter value for mark2: 78 Enter value for mark3: 65 old 1: insert
into sub values('&name','&age','&mark1','&mark2','&mark3')
new 1: insert into sub values('ranjan','22','89','78','65') 1 row created.
SQL> select * from sub;
NAME AGE MARK1 MARK2
MARK3
-------- ---------- ---------- ---------- ------------
sachin 12 78
78 67 ranjan
22 89 78 65
TYPE 2:
SQL> insert into
sub(name,age,mark1,mark2,mark3) values ('ram',20,90,90,98); 1 row created.
SQL> select * from sub;
NAME AGE MARK1 MARK2 |
MARK3 |
sachin 12
78 78 |
67 |
ranjan 22
89 78 |
65 |
ram 20 90
90 TYPE 3: SQL> insert into sub values ('gayathri',13,90,100,98); 1 row
created. SQL> select * from sub; |
98 |
NAME AGE MARK1 MARK2 |
MARK3 |
-------- ---------- ---------- ---------- |
------------ |
sachin 12
78 78 |
67 |
ranjan 22
89 78 |
65 |
ram 20 90
90 |
98 |
gayathri 13
90 100 UPDATE
COMMAND: SQL> update sub set age=13 where name='ranjan'; 1 row updated. SQL> select * from sub; |
98 |
NAME AGE MARK1 MARK2 |
MARK3 |
-------- ---------- ---------- ------------
|
---------- |
sachin 12
78 78 |
67 |
ranjan 13 89 78
|
65 |
ram 20 90
90 |
98 |
gayathri 13
90 100 |
98 |
SQL> alter table
sub add(total number(5)); Table altered.
SQL> select * from sub;
NAME AGE MARK1 MARK2 |
MARK3
|
TOTAL |
-------- ---------- ---------- ---------- |
---------- - |
----------- |
sachin 12
78 78 |
67 |
|
ranjan 13
89 78 |
65 |
|
ram 20 90 90 |
98 |
|
gayathri 13
90 100 SQL>
update sub set total=mark1+mark2+mark3; 4 rows updated. SQL> select * from sub; |
98 |
|
NAME AGE MARK1 MARK2 |
MARK3
|
TOTAL |
-------- ---------- ---------- ---------- |
----------
|
----------- |
sachin 12
78 78 |
67 |
223 |
ranjan 13
89 78 |
65 |
232 |
ram 20 90
90 |
98 |
278 |
gayathri 13
90 100 |
98 |
288 |
SQL> select avg(mark1) from sub;
AVG(MARK1)
----------
86.75
SQL> select count(name) from sub;
COUNT(NAME)
-----------
4
SQL> select sum(mark2) from sub;
SUM(MARK2)
----------
346
DELETE COMMAND:
SQL> delete from
sub where name='ram'; 1 row deleted.
SQL> select * from sub;
NAME AGE MARK1 MARK2 MARK3 TOTAL
-------- ---------- ---------- ----------
-------- -----------
sachin
12 |
78 |
78 |
67 |
223 |
ranjan
13 |
89 |
78 |
65 |
232 |
gayathri 13 |
90 |
100
|
98 |
288 |
SQL> delete from sub; 3 rows deleted. SQL> select * from sub;
no rows selected
Experiment: 5
Aim- Creation and modification of databases through ER diagram,
nornmalisation Creation, updation, insertion and deletion of tables.
THEORY:
• Database :
A Database is a collection of interrelated
data and a Database Management
System is a a software
system that enables users to define, create and maintain the database and which
provides controlled access to the database.
• ER- Diagram :
It is an Entity –Relationship diagram which is used to represent the
relationship between different entities. An entity is an object in the real
world which is distinguishable from other objects. The overall logical
structure of a database can be expressed graphically by an ER diagram, which is
built up from following components.
Rectangles:
represent entity sets.
Ellipses:
represent attributes.
Diamonds:
represent relationships among entity sets.
Lines:
link attribute to entity sets and entity sets to
relationships.
• Mapping Cardinalities :
It expresses the number
of entities to which another entity can be associated via a relationship set.
For a binary relationship set R between entity sets A and B.
The Mapping Cardinalities must be one of
the following.
• One to one
• One to many
• Many to one
• Many to many
Conversion from ER diagram to tables
Step 1: Mapping of Regular Entity Types:
For each
regular(strong) entity type E in the ER schema create a relation R that
includes all the simple attributes of E. Include only the simple component
attributes of a composite ,the set of simple attributes that form it will
together form the primary key of R.
Step 2: Mapping of Weak Entity Types:
For each weak entity type W in the ER
schema with owner entity type E, create a
relation R and include
all the attributes of W and the specific attributes of R. In addition include
the Primary key attribute(s) of the owner entity type. The primary key of R is
the combination of the primary key(s) of the owner(s) and the partial key of
the Weak Entity Type W.
Step 3 : Mapping of Binary 1:1 Relationship Types :
For each binary 1:1
relationship type R in the ER schema, identify the relations S and T that
correspond to the Entity Types participating in R. Choose one of the relations-
S, say – and include as a Foreign key in S the primary key of T. It is better
to choose an entity type with total participation in R in the role of S.
Include all the simple attributes (or simple components of a composite
attributes) of the 1:1 relationship type R as attributes of S.
Step 4: Mapping of Binary 1:N Relationship Types :
For each regular binary
1:N relationship type R, identifying the relation S that represent the
participating Entity Type at the N side of the relationship type. Include as
Foreign key in S the primary key of T that represents the other entity type
participating in R; this is done because each entity instance on the N side is
related to at most one entity instance on the 1-side of the relationship Type.
Include any simple attributes (or simple components of composite attributes) of
the 1:N relationship type as attributes of S.
Step 5: Mapping of Binary M:N Relationship Types :
For each binary M:N
relationship type R, create a new relation S to represent R. Include the
primary key of the participating entity types; their combination will form the
primary key of S. Also include any simple attributes of the M:N relationship
types (or simple components of a composite attributes) as attributes of S.
Step 6: Mapping of Multivalued Attributes:
For each Multivalued Attribute A, create a
new relation R. This relation R will
include an attribute
corresponding to A, plus the primary key attribute K- of the relation that
represents the entity type or relationship type that has A as an attribute. The
primary key of R is the combination of A and K. If the multivalued attribute is
composite, we include its simple components.
Step 7: Mapping of N-ary Relationship Types:
For each N-ary relationship type R, where
N>2, create a new relation S to represent
R. Include the primary
keys of the relations that represent the participating entity types. Also
include any simple attributes of the N-ary relationship types (or simple
components of a composite attributes) as attributes of S.
Conclusion:
Referring to the problem statement the ER diagram was designed and
converted into the tables.
0 Comments
Tell us your queries or more topics which you want