2014 Batch GR DBMS LAB RECORD
2014 Batch GR DBMS LAB RECORD
Syntax:
CREATE TABLE <table_name>
(
<column_name1><datatype>(<size>)[<constraint1>]
<column_name2><datatype>(<size>)[<constraint1>]
[<constraint-list>]
);
Create a table EMP with the following schema:
Table Created.
Table truncated.
Table altered.
OR
b) ALTER TABLE EMP
ADD (TEMP1 NUMBER(2), TEMP2 NUMBER(4));
Table altered.
Modifying Column Definitions: To change datatype, size, default
value and NOT NULL column constraint of a column definition.
Syntax:alter table <table_name>
modify (<col_name><new_datatype><new_size> );
Ex.
c) ALTER TABLE EMP
MODIFY (TEMP1 NUMBER(4));
Table altered.
Table altered.
g) ALTER TABLE EMP
DROP (TEMP1, TEMP2);
Table altered.
Table created.
Table created.
Table created.
Table created.
Table altered.
SQL> ALTER TABLE STUDENT3
2 DROP CONSTRAINT PK_STUID;
Table altered.
DML COMMANDS: (INSERT, UPDATE, DELETE, SELECT)
a) INSERT COMMAND:
This command is used to create data into the table which is
already defined through DDL commands. The data can be entered
in the form of rows and columns.
Syntax:
INSERT INTO <Table name>
(column1, [column2, ……….,columnN])
values (column1value,column2value,…..,columnNvalue);
OR
INSERT INTO <Table name>
Values (column1value,column2value,…..,columnNvalue);
Data to be created in the EMP table is as follows:
EX: INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK', 7902, '17-DEC-80',800,NULL,20);
1 row inserted.
Syntax:
UPDATE <Table_name>
Set <column1>=<column1value>
[,<column2>=<column2value>,………
,<columnN>=<columnNvalue>]
[where<condition>];
OR
UPDATE DEPT
SET DNAME='IT'
WHERE DEPTNO=10;
1 row updated.
DELETE COMMAND:
This command is used to remove a single row or multiple rows of a
table.
Syntax: DELETE FROM<Table_name>
[where<condition>];
Syntax:
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
NOT
DISPLAY THOSE EMPLOYEES WHOSE COMMISSION (COMM) IS NOT NULL.
QUERY:
OUTPUT:
DISPLAY THOSE EMPLOYEES WHOSE SALARY (SAL) IS NOT BETWEEN 1000 AND
2000.
QUERY:
SELECT * FROM EMP WHERE NOT (SAL BETWEEN 1000 AND 2000);
OUTPUT:
AND
DISPLAY THOSE EMPLOYEES WHOSE JOB IS SALESMAN AND SALARY IS ABOVE
1500.
QUERY:
OUTPUT:
OR
DISPLAY THOSE EMPLOYEES WHOSE JOB IS SALESMAN OR SALARY IS ABOVE
1500.
QUERY:
OUTPUT:
IN
DISPLAY THOSE EMPLOYEES WHO BELONGS TO DEPARTMENT 10 OR 20.
QUERY:
OUTPUT:
QUERIES BASED ON EMP & DEPT TABLES
1) DISPLAY THE EMPLOYEES WHO JOINED THE COMPANY IN THE YEAR 1981.
QUERY:
OUTPUT:
2) DISPLAY THE EMPLOYEES WHOSE SALARY IS BETWEEN 1000 AND 2000 BUT
QUERY:
SELECT * FROM EMP WHERE SAL BETWEEN 1000 AND 2000 AND JOB
IN('CLERK','SALESMAN');
OUTPUT:
3) DISPLAY THE EMPLOYEES WHOSE DEPTNO IS 10 OR 30 WHILE HIS SALARY
QUERY:
SELECT * FROM EMP WHERE DEPTNO IN(10,30) AND SAL<1500 AND JOB NOT
IN('MANAGER');
OUTPUT:
JOB IS ANALYST OR PRESIDENT WHILE THEY JOINED THE COMPANY IN THE YEAR
1981.
QUERY:
OUTPUT:
DECEMBER.
QUERY:
OUTPUT:
6) DISPLAY THOSE EMPLOYEES WHOSE SALARY ENDS WITH 0.
QUERY:
OUTPUT:
QUERY:
DNAME='SALES';
OUTPUT:
8) DISPLAY MANAGER NAME FOR JONES.
QUERY:
OUTPUT:
QUERY:
OUTPUT:
12)DISPLAY ALL THOSE EMPLOYEES WHO ARE NOT MANAGERS.
QUERY:
OUTPUT:
QUERY:
D.DNAME IN('SALES','RESEARCH');
OUTPUT:
14) DISPLAY THOSE EMPLOYEES WHOSE SALARY IS GREATER THAN HIS MANAGER.
QUERY:
OUTPUT:
QUERY:
OUTPUT:
QUERY:
OUTPUT:
17) DISPLAY THOSE EMPLOYEES WHOSE NAME INCLUDES 'A' ANYWHERE.
QUERY:
OUTPUT:
18) DISPLAY THE LAST THREE CHARACTERS OF ALL THE EMPLOYEE NAMES.
QUERY:
OUTPUT:
19) DISPLAY THE LAST DATE OF THE CURRENT MONTH.
QUERY:
OUTPUT:
20) DISPLAY ONLY THE DAY OF THE MONTH OF JOINING OF THE EMPLOYEES
IN THE COMPANY.
QUERY:
EMP;
OUTPUT:
QUERY:
OUTPUT:
Queries using ORDER BY, GROUP BY and HAVING clauses
To write queries using clauses such as GROUP BY, ORDER BY, etc. and
Order by : The order by clause is used to display the results in sorted order.
Group by: The attribute or attributes given in the clauses are used to form groups.
Tuples with the same value on all attributes in the group by clause are placed in
one group.
Having: SQL applies predicates (conditions) in the having clause after groups have
ENAME.
QUERY:
ORDER BY ENAME;
OUTPUT:
2. DISPLAY LIST OF EMPLOYEES FROM EMP TABLE IN DESCENDING ORDER BY
ENAME.
QUERY:
OUTPUT:
QUERY:
GROUP BY JOB;
OUTPUT:
4. DISPLAY JOB CATEGORY WISE TOTAL SALARY WHICH IS ABOVE 5000.
QUERY:
GROUP BY JOB
HAVING SUM(SAL)>5000;
OUTPUT:
QUERY:
GROUP BY JOB
HAVING JOB='SALESMAN';
OUTPUT:
HIM.
QUERY:
OUTPUT:
SUB QUERIES
Simple subquery:
1. DISPLAY THOSE EMPLOYEES WHOSE SALARY IS MORE THAN THE SALARY OF
EMPLOYEE NO 7566.
QUERY:
WHERE EMPNO=7566);
OUTPUT:
Order by:
2. DISPLAY ALL THOSE EMPLOYEES WHO ARE WORKING UNDER KING IN THE
EMP TABLE .
QUERY:
WHERE M.ENAME='KING')
ORDER BY ENAME;
OUTPUT:
Aggregation:
3. DISPLAY THOSE EMPLOYEES WHOSE SALARY IS MORE THAN THE AVERAGE
QUERY:
WHERE DEPTNO=20);
OUTPUT:
Grouping:
4. DISPLAY THOSE EMPLOYEES WHOSE SALARY IS MINIMUM IN THE
DEPARTMENT.
QUERY:
QUERY:
OUTPUT:
NESTED QUERIES or MULTIPLE LEVELS OF NESTING
When the WHERE clause of a subquery has as its object another subquery,
MAXIMUM SALARY.
QUERY:
OUTPUT:
2. DISPLAY ALL THE EMPLOYEES WHO EARN SALARIES BETWEEN MINIMUM AND
QUERY:
EMPLOYEES.
QUERY:
CASE
'HIGH'
ELSE 'LOW'
FROM EMP;
OUTPUT:
4. DISPLAY THOSE EMPLOYEES WHO ARE IN SALES DEPARTMENT AND WORKING
QUERY:
OUTPUT:
CORRELATED SUBQUERIES
OUTPUT:
NUMBER FUNCTIONS
Absolute function: It returns the absolute value of data i.e., a positive value.
Syntax:ABS(data)
Query:-
OUTPUT:-
CEIL function: It returns the largest integer greater than or equal to data.
Syntax: CEIL(data)
Query:-
OUTPUT:-
FLOOR function: It returns the smallest integer less than or equal to data.
Syntax:FLOOR(data)
Query:-
OUTPUT:
POWER function: It returns the data raised to the power of y as given below.
Syntax:POWER(data,y)
Query:-
SQL>SELECT POWER(3,2) FROM DUAL;
OUTPUT:
ROUND function: It rounds up the data to the specified number of decimal places.
Syntax:ROUND(data,n)
Query:-
SQL>SELECT ROUND(123.5,0) FROM DUAL;
OUTPUT:
Query:-
SQL>SELECT ROUND(123.55,1) FROM DUAL;
OUTPUT:
Query:-
SQL>SELECT ROUND(123.55,-1) FROM DUAL;
OUTPUT:
Query:-
SQL>SELECT ROUND(123.55,-2) FROM DUAL;
OUTPUT:
TRUNC function : The TRUNC function can be used with both numbers and
dates. It is mainly used to terminate the column, expression, or value to a
specified number of decimal places. When TRUNC is used, if the number of
decimal places is not specified, then the specified number defaults to zero.
Query:-
SELECT TRUNC (45.926) FROM DUAL;
OUTPUT:
SQRT function: It returns the square root of data.
Syntax:SQRT(data)
Query:-
SQL>SELECT SQRT(81) FROM DUAL;
OUTPUT:
AGGREGATE FUNCTIONS
Query:-
OUTPUT:
Query:-
OUTPUT:
Query:-
OUTPUT:
SUM function: It sums the values and can be used on numeric data
also.
OUTPUT:
COUNT FUNCTIONS
Query:-
OUTPUT:
Query:-
OUTPUT:
CHARACTER FUNCTIONS
Query:-
OUTPUT:
Query:-
OUTPUT:
Query:-
OUTPUT:
DATE FUNCTIONS
example: 02/DEC/2012.
SYSDATE:
To display the current date, use the DUAL table.
Query:-
OUTPUT:
The following query shows how the date functions are used.
Query:-
NEXT_DAY(HIREDATE, 'FRIDAY'),
LAST_DAY(HIREDATE)
FROM EMP
OUTPUT:
CONVERSION FUNCTIONS
The Oracle Server can internally convert VARCHAR2 and CHAR data to
NUMBER and DATE data types. It can convert NUMBER and DATE data back to
CHARACTER datatype as shown below.
Syntax:
Query:-
SELECT SYSDATE,TO_CHAR(SYSDATE,'HH24:MI:SS AM,DD "OF" MONTH,
DDspth Ddspth, ddspth') FROM dual;
OUTPUT:
NUMBER CONVERSION TO CHARACTER DATA:
Syntax:
TO_CHAR(number, 'format model')
Query:-
SELECT SAL,TO_CHAR(SAL,'99,999') FROM EMP;
OUTPUT:
SYNTAX:
SYNTAX:
NULL value means that no entry has been made into the column. It states
avoided to avoid the complexity in select & update queries and also because
columns which have constraints like primary or foreign key constraints cannot
NVL
Syntax:
NVL(expr1,expr2)
This function is often used to check null values. It returns expr2 if the
expr1 is null, otherwise returns expr1.
Example
The following query returns 0 if comm. (commission) is null.
QUERY:-
SELECT ENAME, NVL(COMM,0) FROM EMP;
OUTPUT:
NVL2
Syntax:
NVL2(expr1,expr2,expr3)
NVL2 returns expr2 if expr1 is not null, otherwise return expr3.
QUERY:-
SELECT ENAME, NVL2(COMM,0,1000) FROM EMP;
ASSIGNS COMM=0 IF COMM IS NULL, OTHERWISE COMM=1000.
OUTPUT:
NULLIF
Syntax:
NULLIF(expr1,expr2)
NULLIF compares expr1 with expr2. If they are equal then
returns NULL otherwise return expr1.
Query:-
SELECT ENAME, NULLIF(EMPNO,MGR) FROM EMP
WHERE EMPNO=7499;
OUTPUT:
Query:-
SELECT ENAME, NULLIF(EMPNO,EMPNO) FROM EMP WHERE
EMPNO=7499;
OUTPUT:
VIEWS AND THEIR OPERATIONS
A view is a customized representation of data from one or more tables. The
tables that the view is referencing are known as base tables. A view can be
considered as a stored query or a virtual table. Only the query is stored in the
Oracle data dictionary; the actual data is not copied any-where. This means that
creating views does not take any storage space, other than the space in dictionary.
SYNTAX:
FROM <table_name>;
QUERY:
OUTPUT:
QUERY:
OUTPUT:
VERTICAL VIEW: It restricts a user’s access to only selected columns of a table.
QUERY:
OUTPUT:
QUERY:
OUTPUT:
QUERY:
OUTPUT:
QUERY:
OUTPUT:
Note: The other operations like Insert, Delete and Update can be conducted
prevents NULL values. A table can have only one primary key constraint.
(
<column_name1><datatype>(<size>)[CONSTRAINT
<constraint name1>] PRIMARY KEY,
…. ,
…. ,
<column_nameN><datatype>(<size>)[<constraint1>]
[<constraint-list>]
);
CREATE A TABLE STUDENT IN WHICH STUID SHOULD BE THE
PRIMARY KEY.
QUERY:
QUERY:
QUERY:
INSERT INTO STUDENT VALUES(101,'ADITYA',10,80);
OUTPUT:
(
<column_name1><datatype>(<size>)[<constraint1>] ,
<column_name2><datatype>(<size>)[<constraint1>]
[<constraint-list>] ,
…. ,
…. ,
);
QUERY:
(STUID NUMBER(4),
SNAME VARCHAR2(20),
SUBJCODE NUMBER(2),
MARKS NUMBER(3),
(STUID,SNAME));
OUTPUT:
QUERY:
INSERT INTO TEMP VALUES (1001,'ADITYA',10,90); OUTPUT:
NOTE: When the Primary key is not created along with the table
definition, it can be created by using ALTER TABLE command as
shown below.
QUERY:
ALTER TABLE STUDENT
OUTPUT:
OUTPUT:
<column_name1><datatype>(<size>),
<column_name2><datatype>(<size>)
<table_name>(<column_name>)]
, ……….);
PRIMARY KEY);
OUTPUT:
PRIMARY KEY,
REFERENCES AUTHOR(AUTHORID));
OUTPUT:
VERIFICATION OF FOREIGN KEY:
QUERY:
INSERT INTO CFK_BOOK
VALUES(10,9001);
OUTPUT:
QUERY:
INSERT INTO CFK_BOOK
VALUES(30,9002);
OUTPUT:
NOTE: When the Foreign key is not created along with the table
definition, it can be created by using ALTER TABLE command as
shown below.
QUERY:
ALTER TABLE CFK_BOOK
REFERENCES AUTHOR(AUTHORID);
OUTPUT:
(INVNO,INVDT));
OUTPUT:
QUERY:
CREATE TABLE SALES
(CUSTNO NUMBER(4) CONSTRAINT PK_CUSTNO PRIMARY
KEY, INVNO NUMBER(4), INVDT DATE,
CONSTRAINT FK_INVNO_INVDT FOREIGN KEY(INVNO,INVDT)
REFERENCES INVOICE(INVNO,INVDT));
OUTPUT:
VERIFICATION:
QUERY:
INSERT INTO INVOICE
VALUES(1001,'17-OCT-15');
OUTPUT:
QUERY:
INSERT INTO SALES
VALUES(2001,1001,'17-OCT-15');
OUTPUT:
QUERY:
There can be only on Primary key per table. Whereas, you can
have as many Unique Keys per table as you want.
Primary key does not accept NULL values whereas, unique key
columns can be left blank.
Not Null Constraint: By default all columns in a table can contain null
values. To ensure that a column must always have a value, i.e. it
should not be left blank, then define a NOT NULL constraint on it.
These types of constraints are defined on a single column. By default,
Oracle allows NULL values in any column. A NOT NULL constraint is
defined at the column level; it cannot be defined at the table level.
QUERY:
null);
OUTPUT:
• Cartesian Join
• Outer Join
• Left-outer Join
• Right-outer Join
• Self Join
CARTESIAN JOIN:
SYNTAX:
table2.
QUERY:
OUTPUT:
INNER JOIN OR EQUI JOIN
QUERY:
OUTPUT:
SELF JOIN:
QUERY:
An Outer join retrieves all rows that match the WHERE clause
and also those that have a NULL value in the column used for join.
Assume that TABLE1 and TABLE2 are already created with the
following data.
TABLE1 TABLE2
Left outer join includes all records from the first (left) of two
tables. Mathematically it is represented as A = B (+). The symbol + is
to indicate include null values also.
Right outer join includes all records from the second (right) of
two tables. Mathematically it is represented as A (+) = B. The symbol
+ is to indicate include null values also.
DECLARE
P NUMBER(5);
T NUMBER(5);
R NUMBER(5);
SI NUMBER(5);
BEGIN
P:=&P;
T:=&T;
R:=&R;
SI:=(P*T*R)/100;
DBMS_OUTPUT.PUT_LINE('RESULT='||SI);
END;
OUTPUT:
DECLARE
A NUMBER:=40;
B NUMBER:=12;
C NUMBER:=13;
BEGIN
DBMS_OUTPUT.PUT_LINE('GREATEST='||A);
END IF;
DBMS_OUTPUT.PUT_LINE('RESULT='||B);
END IF;
DBMS_OUTPUT.PUT_LINE('GREATEST='||C);
END IF;
END;
Output:
GREATEST=40
PL/SQL procedure successfully completed.
3. WRITE A PROGRAM TO FIND FACTORIAL OF A NUMBER
DECLARE
N NUMBER;
I NUMBER;
P NUMBER:=1;
BEGIN
N:=&N;
P:=P*I;
END LOOP;
DBMS_OUTPUT.PUT_LINE('FACTORIAL '||N||'='||P);
END;
Output:
Enter value for N=5
old 6: N:=&N;
new 6: N:=5;
FACTORIAL 5=120
DECLARE
X NUMBER;
Y NUMBER;
R NUMBER;
TEMP NUMBER:=0;
BEGIN
X:=&X;
Y:=X;
WHILE(X<>0) LOOP
R:=MOD(X,10);
TEMP:=TEMP+R**3;
X:= TRUNC(X/10);
END LOOP;
IF(TEMP=Y) THEN
DBMS_OUTPUT.PUT_LINE('ARMSTRONG NUMBER');
ELSE
END IF;
END;
OUTPUT:
Enter value for X=153
old 7: X:=&X;
new 7: X:=153;
ARMSTRONG NUMBER
DECLARE
X NUMBER;
R NUMBER;
TEMP NUMBER:=0;
BEGIN
X:=&X;
WHILE(X<>0) LOOP
R:=MOD(X,10);
TEMP:=TEMP+R;
X:=TRUNC(X/10);
END LOOP;
DBMS_OUTPUT.PUT_LINE('SUM OF DIGITS OF A GIVEN NUMBER = '||TEMP);
END;
OUTPUT:
Enter value for X=123
old 6: X:=&X;
new 6: X:=123;
SUM OF DIGITS OF A GIVEN NUMER = 6
DECLARE
N NUMBER(10,0);
REV NUMBER(10,0);
REM NUMBER(10,0);
BEGIN
N:=&N;
REV:=0;
WHILE(N>0)LOOP
REM:=(MOD(N,10));
REV:=(REV*10)+REM;
N:=TRUNC(N/10,0);
END LOOP;
END;
OUTPUT:
Enter value for N=123
old 6: N:=&N;
new 6: N:=123;
N:=&N;
GIVEN:=N;
REV:=0;
WHILE(N>0)LOOP
REM:=(MOD(N,10));
REV:=(REV*10)+REM;
N:=TRUNC(N/10,0);
END LOOP;
IF(REV=GIVEN) THEN
DBMS_OUTPUT.PUT_LINE('THIS IS PALINDROME');
ELSE
END IF;
END;
/
OUTPUT:
Enter value for N=121
old 7: N:=&N;
new 7: N:=153;
THIS IS PALINDROME
SERIES IS TO BE GENERATED’);
N:=&N;
DBMS_OUTPUT.PUT_LINE( A||'');
DBMS_OUTPUT.PUT_LINE(B||'');
X:=A+B;
DBMS_OUTPUT.PUT_LINE(X);
A:=B;
B:=X;
END LOOP;
END;
/
OUTPUT:
ENTER THE POSITION UPTO WHICH SERIES IS TO BE GENERATED
Enter the value for N=10
old 9: N:=&N;
new 9: N:=10;
0
1
1
2
3
5
8
13
21
34
PL/SQL procedure successfully completed.
9. WRITE A PROGRAM TO PRINT THE GIVEN NUMBER IS PRIME NUM
OR NOT
DECLARE
N NUMBER:=0;
FLAG NUMBER:=0;
TEMP NUMBER:=0;
BEGIN
N:=&N;
TEMP:=(MOD(N,I));
IF(MOD(N,I)=0) THEN
FLAG:=1;
END IF;
END LOOP;
IF(FLAG=1) THEN
DBMS_OUTPUT.PUT_LINE('NOT A PRIME');
ELSE
DBMS_OUTPUT.PUT_LINE('PRIME');
END IF;
END;
OUTPUT:
Enter value for N=7
old 6: N:=&N;
new 6: N:=7;
PRIME
PL/SQL procedure successfully completed.
DECLARE
I EMP.EMPNO%TYPE;
J EMP.ENAME%TYPE;
K EMP.DEPTNO%TYPE;
L EMP.SAL%TYPE;
BEGIN
OPEN C;
DBMS_OUTPUT.PUT_LINE('EMPNO,NAME,DEPTNO,SALARY OF
EMPLOYEES ARE:=');
LOOP
END LOOP;
CLOSE C;
END;
/
OUTPUT :-
DECLARE
I EMP.EMPNO%TYPE;
J EMP.ENAME%TYPE;
K EMP.DEPTNO%TYPE;
L EMP.SAL%TYPE;
BEGIN
OPEN C;
DBMS_OUTPUT.PUT_LINE('EMPNO,NAME,DEPTNO,SALARY OF
EMPLOYES ARE:=');
LOOP
END LOOP;
CLOSE C;
END;
OUTPUT :-
DECLARE
A EMP.MGR%TYPE;
B EMP.HIREDATE%TYPE;
D EMP.COMM%TYPE;
BEGIN
OPEN C;
DBMS_OUTPUT.PUT_LINE('MGR,HIREDATE,COMM OF
EMPLOYEES ARE:=');
LOOP
END LOOP;
CLOSE C;
END;
OUTPUT :-
DECLARE
A EMP.ENAME%TYPE;
BEGIN
OPEN C;
DEPTNO 20 :=');
LOOP
FETCH C INTO A;
DBMS_OUTPUT.PUT_LINE(A);
END LOOP;
CLOSE C;
END;
OUTPUT :-
DECLARE
COMM>200;
A EMP.ENAME%TYPE;
B EMP.COMM%TYPE;
BEGIN
OPEN C;
LOOP
'||B);
END LOOP;
CLOSE C;
END;
OUTPUT :-
DECLARE
N NUMBER(4);
BEGIN
N:=&N;
RUN_CEIL(N);
END;
OUTPUT:
Enter value for N=12.3
old 4: N:=&N;
new 4: N:=12.3;
12
SYNTAX:
triggering_statement
[trigger_restriction]
BEGIN
triggered_action;
END;
1. WRITE A TRIGGER ON DEPT TABLE WHICH SHOULD BE EXECUTED
QUERY:
BEGIN
IF(INSERTING)
THEN
END IF;
END;
OUTPUT:
VERIFICATION OF TRIGGER:
QUERY:
VALUES(99,'CSE&IT','SURAMPALEM');
OUTPUT:
2. WRITE A TRIGGER ON DEPT TABLE WHICH SHOULD BE EXECUTED
QUERY:
BEGIN
IF(INSERTING)
THEN
END IF;
IF(DELETING)
THEN
END IF;
IF(UPDATING)
THEN
END IF;
END;
OUTPUT:
VERIFICATION OF TRIGGER:
QUERY:
VALUES(99,'CSE&IT','SURAMPALEM');
OUTPUT:
QUERY:
WHERE DEPTNO=99;
OUTPUT:
QUERY:
UPDATE DEPT
SET LOC='SURAMPALEM'
WHERE LOC='ADITYA';
OUTPUT: