dbms lab
dbms lab
Table created.
1 row created.
SQL> /
Enter value for eno: 2
Enter value for ename: muthu
Enter value for sal: 20000
Enter value for dob: 10-may-65
Enter value for dno: 1
old 2: values(&eno, '&ename', &sal, '&dob', &dno)
new 2: values(2, 'muthu', 20000, '10-may-65', 1)
1 row created.
SQL> /
Enter value for eno: 1
Enter value for ename: rajesh
Enter value for sal: 15000
Enter value for dob: 20-jan-1976
Enter value for dno: 2
old 2: values(&eno, '&ename', &sal, '&dob', &dno)
new 2: values(1, 'rajesh', 15000, '20-jan-1976', 2)
insert into employee(eno, ename, sal, dob, dno)
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.PENO) violated
1 row created.
11 rows selected.
1 row updated.
SQL> update employee set sal = 70000, dno = 3 where ename = 'sudha';
1 row updated.
1 row updated.
DNO
---------
1
1
2
3
3
5
4
5
5
6
6
11 rows selected.
DNO
---------
1
2
3
4
5
6
6 rows selected.
Q) DISPLAY EMPLOYEE NUMBER AND NAME FROM EMPLOYEE TABLE
ENAME
--------------------
karthika
muthuvel
sivakumar
Q) LIST EMPLOYEE NAME WHEN SALARY > 30000 OR DOB > 1-1-80
SQL> SELECT ENAME FROM EMPLOYEE WHERE SAL > 30000 OR DOB > '01-JAN-80';
ENAME
--------------------
emanuel
dinesh
sudha
muthuvel
preetha
karthika
celestina
shivkumar
jegan
9 rows selected.
SQL> SELECT ENAME FROM EMPLOYEE WHERE SAL > 7000 AND DNO = 5;
ENAME
--------------------
muthuvel
karthika
SQL> select eno, ename, sal from employee where dno not in(2,4,6);
Q) DISPLAY EMPLOYEE NAME WHEN DOB IS 11TH APRIL 75 OR 10TH JUNE 81.
(USE ANY)
ENAME
--------------------
sivakumar
shivkumar
COUNT(ENO)
----------
3
Q) DISPLAY EMPLOYEE NUMBER, NAME AND SALARY FOR ODD EMPLOYEE NUMBERS.
(USE MOD FUNCTION)
SQL> select eno, ename, sal from employee where eno = 1 or (mod(eno,2) =
1);
6 rows selected.
SQL> select ename from employee where sal between 40000 and 55000;
ENAME
--------------------
muthuvel
preetha
shivkumar
11 rows selected.
DNO SUM(SAL)
--------- ---------
1 30000
2 30000
3 74000
4 42000
5 63888
6 57000
6 rows selected.
6 rows selected.
11 rows created.
11 rows selected.
DELETE COMMAND
11 rows deleted.
7 rows deleted.
11 rows selected.
6 rows selected.
ENO ENAME
--------- --------------------
1 sivakumar
2 pmv chalam
3 emanuel
4 dinesh
5 sudha
6 muthuvel
7 preetha
8 karthika
9 celestina
10 shivkumar
11 jegan
12 swetha
13 manisha
13 rows selected.
SQL> select eno, ename from employee1 union all select eno, ename
from employee;
ENO ENAME
--------- --------------------
1 sivakumar
2 pmv chalam
3 emanuel
7 preetha
12 swetha
13 manisha
1 sivakumar
2 pmv chalam
3 emanuel
4 dinesh
5 sudha
6 muthuvel
7 preetha
8 karthika
9 celestina
10 shivkumar
11 jegan
17 rows selected.
Q) RETRIEVE COMMON EMPLOYEE RECORDS FROM EMPLOYEE AND EMPLOYEE1
SQL> select eno, ename from employee1 intersect select eno, ename
from employee;
ENO ENAME
--------- --------------------
1 sivakumar
2 pmv chalam
3 emanuel
7 preetha
SQL> select eno, ename from employee1 minus select eno, ename from
employee;
ENO ENAME
--------- --------------------
12 swetha
13 manisha
SQL> select max(sal) from employee where sal not in(select max(sal) from
employee);
MAX(SAL)
---------
50000
SQL> select ename from employee where sal not in(select max(sal)
from employee) and dob in (select dob from employee where
dob > '1-jan-82');
ENAME
--------------------
muthuvel
celestina
karthika
Table created.
SQL> desc student;
Name Null? Type
------------------------------- -------- ----
SPRNO NOT NULL NUMBER(3)
NAME NOT NULL VARCHAR2(20)
MARK1 NUMBER(3)
MARK2 NUMBER(3)
MARK3 NUMBER(3)
1 row created.
Table altered.
1 row created.
Table created.
DNO DNAME
--------- --------------------
1 edp
2 accounts
3 marketting
SQL> commit;
Commit complete.
SQL> create table e(eno number(3) primary key, ename varchar2(20) not null,
2 dno number(3) references d(eno), salary number(12,2) check(sal > 0));
dno number(3) references d(dno), salary number(12,2) check(salary > 0))
Table created.
SQL> insert into e values(3, 'gokila', 5, 7888);
insert into e values(3, 'gokila', 5, 7888)
*
ERROR at line 1:
ORA-02291: integrity constraint (SCOTT.SYS_C00611) violated -
parent key not found
Here pno is reference key for pno of pro_det and eno is the reference key
of emp_det
7 rows selected.
Q) Find the names of all employees who do not work in department where
geetha
is working.
SQL> select ename from emp_det where dno not in(select dno from emp_det
2 where ename = 'geetha');
ENAME
-------------------------
saravanakumar
mahendran
rajkumar
elamathi
Q) Find names of employees who are working in the same department with
shirley
SQL> select ename, dno from emp_det where dno = (select dno from emp_det
2 where ename = 'shirley') order by ename;
ENAME DNO
------------------------- ---------
geetha 3
shirley 3
SQL> select ename from emp_det where eno in(select eno from
2 work_in where pno = (select pno from pro_det where pname = 'DBMS'))
3* order by ename
ENAME
-------------------------
mahendran
saravanakumar
SQL> select ename, basic_salary from emp_det where dno = 2 and basic_salary
>
2* (select max(basic_salary) from emp_det where dno = 10) order by ename
ENAME BASIC_SALARY
------------------------- ------------
rajkumar 10000
PNO PNAME
--------- ------------------------------
1 DBMS
2 COMPILER
Q) Find the employee name, project name and job names in projects. The
employees who are not associated with any project will not be considered
JOIN OPERATION
Table created.
DNO DNAME
--------- --------------------
10 cse
20 ece
30 mec
6 rows selected.
EQUI JOIN
ENAME DNAME
-------------------- --------------------
shivkumar cse
niveditha cse
koushika ece
vijay ece
muralikrishnan cse
avelin raja ece
6 rows selected.
ENAME DNAME
-------------------- ------
shivkumar ece
shivkumar mec
niveditha ece
niveditha mec
koushika mec
vijay mec
muralikrishnan ece
muralikrishnan mec
avelin raja mec
9 rows selected.
SELF JOIN
ENAME
--------------------
shivkumar
niveditha
koushika
OUTER JOIN
ENAME DNAME
-------------------- ----------
shivkumar cse
niveditha cse
muralikrishnan cse
koushika ece
vijay ece
avelin raja ece
mec
7 rows selected.
ENAME DNAME
-------------------- --------------------
shivkumar cse
niveditha cse
koushika ece
vijay ece
muralikrishnan cse
avelin raja ece
6 rows selected.
11 rows selected.
Grant succeeded.
11 rows selected.
Grant succeeded.
1 row updated.
SQL> UPDATE SCOTT.EMPLOYEE SET SAL = 60000 WHERE ENO = 2;
UPDATE SCOTT.EMPLOYEE SET SAL = 60000 WHERE ENO = 2
*
ERROR at line 1:
ORA-01031: insufficient privileges
Revoke succeeded.
Revoke succeeded.
Table(s) Locked.
Table(s) Locked.
Table(s) Locked.
Table(s) Locked.
NOTE
1 row updated.
SQL> savepoint a;
Savepoint created.
1 row updated.
SQL> savepoint b;
Savepoint created.
12 rows selected.
Rollback complete.
12 rows selected.
SQL> commit;
Commit complete.
12 rows selected.
Table created.
View created.
NAME MARK1
-------------------- ---------
varshini 89
narmatha 90
manisha 89
preetha 90
thirunavukarasu 89
rajasekar 87
gunasekar 89
7 rows selected.
View created.
SPRNO NAME
--------- --------------------
1 varshini
3 manisha
5 thirunavukarasu
7 gunasekar
7 rows selected.
View created.
SPRNO NAME
--------- --------------------
1 varshini
2 narmatha
3 manisha
4 preetha
5 thirunavukarasu
6 rajasekar
7 gunasekar
7 rows selected.
1 row created.
8 rows selected.
1 row updated.
SPRNO NAME
--------- --------------------
1 varshini
2 narmatha
3 manisha
4 preetha
5 thirunavukarasu
6 rajasekar
7 gunasekar
8 lakshmikandan
8 rows selected.
8 rows selected.
SQL> delete from myview where sprno=8;
1 row deleted.
View created.
ROLLNO PHYSICS
--------- ---------
1 89
2 90
3 89
4 90
5 89
6 87
7 89
rows selected.
Table created.
1 row created.
1 row created.
View created.
NAME
--------------------
varshini
narmatha
Creating Index
Built in functions
D
-
X
Date functions
ADD_MONTH
---------
13-APR-01
SYSDATE
---------
13-FEB-01
SYSDATE LAST_DAY(
--------- ---------
13-FEB-01 28-FEB-01
MONTHS_BETWEEN(TO_DATE('04-MAY-2001','DD-MON-YYYY'),TO_DATE('14-FEB-2001',
--------------------------------------------------------------------------
'DD-MON-YYYY'))
---------------
2.6774194
NEXT_DAY(
---------
18-FEB-01
SQL> SELECT ROUND(SYSDATE, 'YEAR') FROM DUAL;
ROUND(SYS
---------
01-JAN-01
ROUND(SYS
---------
01-FEB-01
ROUND(SYS
---------
11-FEB-01
TRUNC(SYS
---------
01-JAN-01
TRUNC(SYS
---------
01-FEB-01
TRUNC(SYS
---------
11-FEB-01
GREATEST(
---------
11-APR-01
SYSDATE+1
---------
Character functions
UPPER('SU
---------
SURYA
LTRIM('IL
---------
loveIndia
RTRIM
-----
Ilove
TRAN
----
back
TRAN
----
back
REPLACE('JACKA
--------------
black and blue
SUBST
-----
sumaiya
NAME
--------------------
smith
smythe
NAME
--------------------
Imayon
Miscellaneous Functions
UID
---------
20
USER
------------------------------
SCOTT
VSIZE('GANESHMANIKANDAN')
-------------------------
16
COUNT(*)
---------
5
SQL> select * from employee;
1 row created.
8 rows selected.
Group functions
SQL> select count(distinct eno) from employee1;
COUNT(DISTINCTENO)
------------------
7
AVG(SAL)
---------
13999.875
SUM(SAL)
---------
111999
MIN(SAL)
---------
8000
MAX(SAL)
---------
50000
Mathematical functions
ABS(-89)
---------
89
CEIL(6.2)
---------
7
FLOOR(100.7)
------------
100
POWER(2,3)
----------
8
MOD(3,2)
---------
1
SQL> select exp(1) from dual;
EXP(1)
---------
2.7182818
SIN(90)
---------
ROUND(7.235,2)
--------------
7.24
TRUNC(7.235,2)
--------------
7.23
PL/SQL
01. Write a PL/SQL code to find the biggest of three numbers.
declare
n1 number;
n2 number;
n3 number;
begin
n1 := &n1;
n2 := &num2;
n3 := &num3;
if ( n1 > n2 and n1 > n3) then
dbms_output.put_line( n1 || ' is biggest');
elsif (n2 > n3 ) then
dbms_output.put_line( n2 || ' is biggest');
else
dbms_output.put_line( n3 || ' is biggest');
end if;
end;
Output:
SQL> set serverout on;
SQL> @ E:/pl1.sql
Enter value for n1: 8
old 6: n1 := &n1;
new 6: n1 := 8;
Enter value for num2: 10
old 7: n2 := &num2;
new 7: n2 := 10;
Enter value for num3: 100
old 8: n3 := &num3;
new 8: n3 := 100;
100 is biggest
02. Write a PL/SQL code to find whether the given number is odd or even.
declare
n number;
begin
n:=&n;
if(mod(n,2)=0)then
dbms_output.put_line(n||'is even');
else
dbms_output.put_line(n||'is odd');
end if;
end;
Output:
SQL> @ E:/pl2.sql
Enter value for n: 5
old 4: n:=&n;
new 4: n:=5;
5 is odd
PL/SQL procedure successfully completed.
SQL> /
SQL> declare
2 erec employ%rowtype;
3 da employ.bpay%type;
4 cursor c is select * from employ;
5 begin
6 for erec in c
7 loop
8 if(erec.bpay > 20000) then
9 da := 0.05*erec.bpay;
10 elsif (erec.bpay > 10000) then
11 da := 0.10*erec.bpay;
12 else
13 da := 0.15*erec.bpay;
14 end if;
15 dbms_output.put_line(rpad(erec.eno, 5) ||rpad( erec.ename, 30)||
rpad(erec.bpay, 15)||da);
16 end loop;
17 end;
18 /
1 dineshraj 13000 1300
2 aravind 15000 1500
3 shenbagapandian 18000 1800
4 prasanna 17000 1700
5 Balachander 11000 1100
6 Mohankumar 12000 1200
7 Sreekanth 14000 1400
8 Lisiver 16000 1600
9 Yuvaraj 10000 1000
10 Keshav 19000 1900
PL/SQL procedure successfully completed.
04. PL/SQL program to calculate total and average of marks for the
students.
SQL> declare
2 srec studen%rowtype;
3 total studen.dbms%type;
4 average number(12,2);
5 cursor c is select * from studen;
6 begin
7 for srec in c
8 loop
9 total := srec.dbms + srec.os;
10 average := (srec.dbms + srec.os)/2;
11 dbms_output.put_line(rpad(srec.rollno, 7)||rpad(srec.name, 30)||
rpad(srec.dbms, 5)|| rpad(srec.os, 5)||rpad(total, 7)||rpad(average, 10));
12 end loop;
13 end;
14 /
1 ganga 98 89 187 93.5
2 saranya 76 89 165 82.5
3 divya 89 67 156 78
4 vignesh 89 67 156 78
5 micky praveen 89 78 167 83.5
6 rajamohamed 76 89 165 82.5
7 sandru 98 89 187 93.5
PL/SQL procedure successfully completed.
Trigger
01. Create a trigger for employee table (denoted by empl) which
makes the entry in name column in uppercase.
SQL>create or replace trigger uppcase before insert on empl
referencing new as n for each row
begin
:n.ename:=upper(:n.ename);
end;
To compile: @ tr1.sql
Output:
Trigger Created.
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL DEPTNO
------- ------- ------ ----- --------- ----- ----------
1 MUHILAN gffgh 7898 11-jul-06 6789 11
To compile: @ tr2.sql
Output:
Trigger created.
To compile: @ tr3.sql
Output:
Trigger created.
Procedure
01. Create a table employee which has the following columns: eno,
ename, sal and write a procedure to display the employee details
of given employee number.
Procedure: (p11.sql)
Calling function
declare
n1 number;
n2 number;
r number;
begin
dbms_output.put_line('enter number');
n2:=&n1;
r:=factf(n2);
dbms_output.put_line(r);
end;
Output:
Enter value for n1: 4
old 7: n2:=&n1;
new 7: n2:=4;
enter number
24
PL/SQL procedure successfully completed.
Embedded SQL
import java.sql.*;
class Samp1
{
public static void main(String argv[])
{
try
{
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con =
DriverManager.getConnection("jdbc:odbc:cc","scott","tiger");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM emp");
while (rs.next())
{
System.out.println (" Employee Number=" + rs.getInt(1));
System.out.println (" Employee Name=" + rs.getString(2));
System.out.println (" Salary=" + rs.getInt(3));
System.out.print(" \n");
}
stmt.close();
con.close();
}
catch (java.lang.Exception ex)
{
System.out.println("Error :" +ex);
}
}
}
Output:-
Z:\>javac Samp1.java
Z:\>java Samp1
Employee Number=5655
Employee Name=kayalvizhi
Salary=25000
Employee Number=1234
Employee Name=keerthana
Salary=20000
Employee Number=1234
Employee Name=suganya
Salary=20000