P.S.
V COLLEGE OF ENGINEERIN AND TECHNOLOGY
KRISHNAGIRI-635108
DEPARTMENT OF INFORMATION TECHNOLOGY
LAB MANUAL
DATABASE MANAGEMENT SYSTEM- LABORATORY
SUBJECT CODE : CS3481
YEAR\SEM : II\IV
REGULATION : 2021
1
Vision:
To facilitate technical education with high quality and ethics
for developing professionals to fit into the competitive
atmosphere in the global market.
Mission:
M1: To provide a learning ambience to enhance innovations,
problem solving skills managerial qualities, team-spirit and
ethical responsibilities.
M2: To provide exposure to latest tools and technologies in the
area of Information Technology M3: To support society by
participating in and encouraging technology transfer
M4: To undertake collaborative learning which offers opportunities
for long term interaction with academia and industry
2
INDEX
EX.NO NAME OF THE EXPRIMENTS
REMARKS
CREATE A DATABASE TABLE, ADD CONSTRAINTS (PRIMARY KEY,
1 UNIQUE, CHECK, NOT NULL), INSERT ROWS,UPDATE AND DELETE
ROWS USING SQL DDL AND DML COMMANDS.
CREATE A SET OF TABLES, ADD FOREIGN KEY CONSTRAINTS AND
2 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
5 QUERY THE DATABASE TABLES AND EXPLORE NATURAL EQUI AND
OUTER JOIN
6 WRITE USER DEFINED FUNCTIONS AND STORED PROCEDURES IN SQL.
7 EXECUTE COMPLEX TRANSACTIONS AND REALIZE DCL AND
TCL COMMANDS.
WRITE SQL TRIGGERS FOR INSERT, DELETE, AND UPDATE
8 OPERATIONS IN A DATABASE TABLE
9 CREATE VIEW AND INDEX FOR DATABASE TABLES WITH A
LARGE NUMBER OF RECORDS.
3
EX.NO : 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.
AIM:
To create a database and write SQL queries to retrieve information from the database.
ALOGRITHM:
STEP 1: Start
STEP 2: Create the table with its essential attributes.
STEP 3: Execute different Commands and extract information from the table.
STEP 4: Stop
QUERY: 01
Q1. Query to create a table employee with empno, ename, designation, and salary.
Syntax for creating a table:
SQL: CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE),
COLUMN NAME.1 <DATATYPE> (SIZE) ……………………………);
QUERY:
SQL>CREATE TABLE EMP (EMPNO NUMBER (4),ENAME VARCHAR2 (10),DESIGNATIN
VARCHAR2 (10),SALARY NUMBER (8));
Table created.
QUERY: 02
Q2. Query to display the column name and data type of the table employee.
4
Syntax for describe the table:
SQL: DESC <TABLE NAME>;
SQL> DESC EMP;
Name Null? Type
----------------------------------------- -------- -------------
EMPNO NUMBER(4)
ENAME VARCHAR2(10)
DESIGNATIN VARCHAR2(10)
SALARY NUMBER(8,2)
QUERY: 03
Q3. Query for create a from an existing table with all the fields
Syntax For Create A from An Existing Table With All Fields
SQL> CREATE TABLE <TRAGET TABLE NAME> SELECT * FROM <SOURCE TABLE
NAME>;
QUERY:
SQL> CREATE TABLE EMP1 AS SELECT * FROM EMP;
Table created.
SQL> DESC EMP1
Name Null? Type
----------------------------------------- -------- ------------------
EMPNO NUMBER(4)
ENAME VARCHAR2(10)
DESIGNATIN VARCHAR2(10)
SALARY NUMBER(8,2)
QUERY: 04
Q4. Query for create a from an existing table with selected fields
Syntax For Create A from An Existing Table With Selected Fields
5
SQL> CREATE TABLE <TRAGET TABLE NAME> SELECT EMPNO, ENAME FROM
<SOURCE TABLE NAME>;
QUERY:
SQL> CREATE TABLE EMP2 AS SELECT EMPNO, ENAME FROM EMP;
Table created.
SQL> DESC EMP2
Name Null? Type
----------------------------------------- -------- ----------------------
EMPNO NUMBER (4)
ENAME VARCHAR2 (10)
ALTER & MODIFICATION ON TABLE
QUERY: 01
Q1. Query to Alter the column EMPNO NUMBER (4) TO EMPNO NUMBER (6).
Syntax for Alter & Modify on a Single Column:
SQL > ALTER <TABLE NAME> MODIFY <COLUMN NAME> <DATATYPE> (SIZE);
QUERY:
SQL>ALTER TABLE EMP MODIFY EMPNO NUMBER (6);
Table altered.
SQL> DESC EMP;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NUMBER(6)
ENAME VARCHAR2(10)
6
DESIGNATIN VARCHAR2(10)
SALARY NUMBER(8,2)
QUERY: 02
Q2. Query to Alter the table employee with multiple columns (EMPNO, ENAME.)
Syntax for alter table with multiple column:
SQL > ALTER <TABLE NAME> MODIFY <COLUMN NAME1> <DATATYPE> (SIZE),
MODIFY <COLUMN NAME2> <DATATYPE> (SIZE)………………………………………….;
QUERY:
SQL>ALTER TABLE EMP MODIFY (EMPNO NUMBER (7), ENAME VARCHAR2(12));
Table altered.
SQL> DESC EMP;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NUMBER(7)
ENAME VARCHAR2(12)
DESIGNATIN VARCHAR2(10)
SALARY NUMBER(8,2);
QUERY: 03
Q3. Query to add a new column in to employee
Syntax for add a new column:
SQL> ALTER TABLE <TABLE NAME> ADD (<COLUMN NAME> <DATA TYPE> <SIZE>);
QUERY:
SQL> ALTER TABLE EMP ADD QUALIFICATION VARCHAR2(6);
Table altered.
7
SQL> DESC EMP;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NUMBER(7)
ENAME VARCHAR2(12)
DESIGNATIN VARCHAR2(10)
SALARY NUMBER(8,2)
QUALIFICATION VARCHAR2(6)
QUERY: 4
Q4. Query to add multiple columns in to employee
Syntax for add a new column:
SQL> ALTER TABLE <TABLE NAME> ADD (<COLUMN NAME1> <DATA TYPE> <SIZE>,
(<COLUMN NAME2> <DATA TYPE> <SIZE>,………………………………);
QUERY:
SQL>ALTER TABLE EMP ADD (DOB DATE, DOJ DATE);
Table altered.
SQL> DESC EMP;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NUMBER(7)
ENAME VARCHAR2(12)
DESIGNATIN VARCHAR2(10)
SALARY NUMBER(8,2)
QUALIFICATION VARCHAR2(6)
DOB DATE
DOJ DATE
REMOVE / DROP
8
QUERY: 5
Q5. Query to drop a column from an existing table employee
Syntax for add a new column:
SQL> ALTER TABLE <TABLE NAME> DROP COLUMN <COLUMN NAME>;
QUERY:
SQL> ALTER TABLE EMP DROP COLUMN DOJ;
Table altered.
SQL> DESC EMP;
Name Null? Type
----------------------------------------- -------- -------------
EMPNO NUMBER(7)
ENAME VARCHAR2(12)
DESIGNATIN VARCHAR2(10)
SALARY NUMBER(8,2)
QUALIFICATION VARCHAR2(6)
DOB DATE
QUERY: 6
Q6. Query to drop multiple columns from employee
Syntax for add a new column:
SQL> ALTER TABLE <TABLE NAME> DROP <COLUMN NAME1>,<COLUMN NAME2>,
…………………………….. ;
QUERY:
SQL> ALTER TABLE EMP DROP (DOB, QUALIFICATION);
Table altered.
SQL> DESC EMP;
Name Null? Type
9
----------------------------------------- -------- --------------
EMPNO NUMBER(7)
ENAME VARCHAR2(12)
DESIGNATIN VARCHAR2(10)
SALARY NUMBER(8,2)
REMOVE
QUERY: 7
Q7. Query to rename table emp to employee
Syntax for add a new column:
SQL> ALTER TABLE RENAME <OLD NAME> TO <NEW NAME>
QUERY:
SQL> ALTER TABLE EMP RENAME EMP TO EMPLOYEE;
SQL> DESC EMPLOYEE;
Name Null? Type
----------------------------------------- --------- -------------
EMPNO NUMBER(7)
ENAME VARCHAR2(12)
DESIGNATIN VARCHAR2(10)
SALARY NUMBER(8,2)
TYPES OF CONSTRAINTS:
Primary key
Foreign key/references
Check
Unique
Not null
Null
Default
CONSTRAINTS CAN BE CREATED IN THREE WAYS:
10
Column level constraints
Table level constraints
Using DDL statements-alter table command
OPERATION ON CONSTRAINT:
ENABLE
DISABLE
DROP
Column level constraints Using Primary key
Q1. Query to create primary constraints with column level
PRIMARY KEY
Syntax for Column level constraints Using Primary key:
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 DATATYPE> (SIZE)<TYPE OF
CONSTRAINTS> , COLUMN NAME.1 <DATATYPE> (SIZE) ……………………………);
QUERY:1
SQL>CREATE TABLE EMPLOYEE(EMPNO NUMBER(4) PRIMARY KEY,ENAME
VARCHAR2(10),JOB VARCHAR2(6),SAL NUMBER(5),DEPTNO NUMBER(7));
Column level constraints Using Primary key with naming convention
Q2. Query to create primary constraints with column level with naming convention
Syntax for Column level constraints Using Primary key:
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE>
(SIZE)CONSTRAINTS <NAME OF THE CONSTRAINTS> <TYPE OF THE CONSTRAINTS> ,
COLUMN NAME.1 <DATATYPE> (SIZE) ……………………………);
QUERY:2
11
SQL>CREATE TABLE EMPLOYEE(EMPNO NUMBER(4) CONSTRAINT EMP_EMPNO_PK
PRIMARY KEY,ENAME VARCHAR2(10), JOB VARCHAR2(6),SAL NUMBER(5), DEPTNO
NUMBER(7));
Table Level Primary Key Constraints
Q3. Query to create primary constraints with table level with naming convention
Syntax for Table level constraints Using Primary key:
SQL: >CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE) ,
COLUMN NAME.1 <DATATYPE> (SIZE), CONSTRAINTS <NAME OF THE CONSTRAINTS>
<TYPE OF THE CONSTRAINTS>);
QUERY: 3
SQL>CREATE TABLE EMPLOYEE (EMPNO NUMBER(6),ENAME VARCHAR2(20),JOB
VARCHAR2(6),SAL NUMBER(7), DEPTNO NUMBER(5),CONSTRAINT EMP_EMPNO_PK
PRIMARY KEY(EMPNO));
Table level constraint with alter command (primary key):
Q4. Query to create primary constraints with alter command
Syntax for Column level constraints Using Primary key:
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE),
COLUMN NAME.1 <DATATYPE> (SIZE) );
SQL> ALTER TABLE <TABLE NAME> ADD CONSTRAINTS <NAME OF THE CONSTRAINTS>
<TYPE OF THE CONSTRAINTS> <COLUMN NAME>);
QUERY: 4
SQL>CREATE TABLE EMPLOYEE (EMPNO NUMBER(5), ENAME VARCHAR2(6),JOB
VARCHAR2(6),SAL NUMBER(6), DEPTNO NUMBER(6));
12
SQL>ALTER TABLE EMP3 ADD CONSTRAINT EMP3_EMPNO_PK PRIMARY KEY
(EMPNO);
CHECK CONSTRAINT
Column Level Check Constraint
Q.10. Query to create Check constraints with column level
Syntax for clumn level constraints using Check:
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE)
CONSTRAINT <CONSTRAINTS NAME> <TYPE OF CONSTRAINTS> (CONSTRAITNS
CRITERIA) , COLUMN NAME2 <DATATYPE> (SIZE));
QUERY:10
SQL>CREATE TABLE EMP7(EMPNO NUMBER(3),ENAME VARCHAR2(20), DESIGN
VARCHAR2(15),SAL NUMBER(5)CONSTRAINT EMP7_SAL_CK CHECK(SAL>500 AND
SAL<10001),DEPTNO NUMBER(2));
Table Level Check Constraint:
Q.11. Query to create Check constraints with table level
Syntax for Table level constraints using Check:
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE),
(COLUMN NAME2 <DATATYPE> (SIZE), CONSTRAINT <CONSTRAINTS NAME> <TYPE OF
CONSTRAINTS> (CONSTRAITNS CRITERIA)) ;
QUERY:11
SQL>CREATE TABLE EMP8(EMPNO NUMBER(3),ENAME VARCHAR2(20), DESIGN
VARCHAR2(15),SAL NUMBER(5),DEPTNO NUMBER(2), CONSTRAINTS EMP8_SAL_CK
CHECK(SAL>500 AND SAL<10001));
Check Constraint with Alter Command
13
Q.12. Query to create Check constraints with table level using alter command.
Syntax for Table level constraints using Check:
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE),
(COLUMN NAME2 <DATATYPE> (SIZE), CONSTRAINT <CONSTRAINTS NAME> <TYPE OF
CONSTRAINTS> (CONSTRAITNS CRITERIA)) ;
QUERY:12
SQL>CREATE TABLE EMP9(EMPNO NUMBER,ENAME VARCHAR2(20), DESIGN
VARCHAR2(15),SAL NUMBER(5));
SQL>ALTER TABLE EMP9 ADD CONSTRAINTS EMP9_SAL_CK CHECK (SAL>500 AND
SAL<10001);
UNIQUE CONSTRAINT
Column Level Constraint
Q.13. Query to create unique constraints with column level
Syntax for Column level constraints with Unique:
SQL> CREATE <OBJ.TYPE> <OBJ.NAME> (<COLUMN NAME.1> <DATATYPE> (SIZE)
CONSTRAINT <NAME OF CONSTRAINTS> <CONSTRAINT TYPE>, (COLUMN NAME2
<DATATYPE> (SIZE)) ;
QUERY:13
SQL>CREATE TABLE EMP10(EMPNO NUMBER(3), ENAME VARCHAR2(20), DESGIN
VARCHAR2(15)CONSTRAINT EMP10_DESIGN_UK UNIQUE, SAL NUMBER(5));
Table Level Constraint
Q.14. Query to create unique constraints with table level
14
Syntax for Table level constraints with Unique:
SQL> CREATE <OBJ.TYPE> <OBJ.NAME> (<COLUMN NAME.1> <DATATYPE> (SIZE),
(COLUMN NAME2 <DATATYPE> (SIZE), CONSTRAINT <NAME OF CONSTRAINTS>
<CONSTRAINT TYPE>(COLUMN NAME);)
QUERY:14
SQL>CREATE TABLE EMP11(EMPNO NUMBER(3),ENAME ARCHAR2(20), DESIGN
VARCHAR2(15), SAL NUMBER(5),CONSTRAINT EMP11_DESIGN_UK UNIGUE(DESIGN));
Table Level Constraint Alter Command
Q.15. Query to create unique constraints with table level
Syntax for Table level constraints with Check Using Alter
SQL :> CREATE <OBJ.TYPE> <OBJ.NAME> (<COLUMN NAME.1> <DATATYPE> (SIZE),
(COLUMN NAME2 <DATATYPE> (SIZE)) ;
SQL> ALTER TABLE ADD <CONSTRAINTS> <CONSTRAINTS NAME> <CONSTRAINTS
TYPE>(COLUMN NAME);
QUERY:15
SQL>CREATE TABLE EMP12 (EMPNO NUMBER(3),ENAMEVARCHAR2(20), DESIGN
VARCHAR2(15), SAL NUMBER(5));
SQL>ALTER TABLE EMP12 ADD CONSTRAINT EMP12_DESIGN_UK UNIQUE(DESING);
NOT NULL
Column Level Constraint
Q.16. Query to create Not Null constraints with column level
Syntax for Column level constraints with Not Null:
15
SQL :> CREATE <OBJ.TYPE> <OBJ.NAME> (<COLUMN NAME.1> <DATATYPE> (SIZE)
CONSTRAINT <NAME OF CONSTRAINTS> <CONSTRAINT TYPE>, (COLUMN NAME2
<DATATYPE> (SIZE)) ;
QUERY: 16
SQL>CREATE TABLE EMP13 (EMPNO NUMBER(4),ENAME VARCHAR2(20) CONSTRAINT
EMP13_ENAME_NN NOT NULL,DESIGN VARCHAR2(20),SAL NUMBER(3));
NULL
Column Level Constraint
Q.17. Query to create Null constraints with column level
Syntax for Column level constraints with Null:
SQL :> CREATE <OBJ.TYPE> <OBJ.NAME> (<COLUMN NAME.1> <DATATYPE> (SIZE)
CONSTRAINT <NAME OF CONSTRAINTS> <CONSTRAINT TYPE>, (COLUMN NAME2
<DATATYPE> (SIZE)) ;
QUERY:17
SQL>CREATE TABLE EMP13(EMPNO NUMBER(4),ENAME VARCHAR2(20) CONSTRAINT
EMP13_ENAME_NN NULL, DESIGN VARCHAR2(20),SAL NUMBER(3));
16
EX.NO : 2
CREATE A SET OF TABLES, ADD FOREIGN KEY CONSTRAINTS
AND INCORPORATE REFERENTIAL INTEGRITY.
AIM:
To create a database and write SQL queries to retrieve information from the database.
ALOGRITHM:
STEP 1: Start
STEP 2: Create the table with its essential attributes.
STEP 3: Execute different Commands and extract information from the table.
STEP 4: Stop
REFERENCE /FOREIGN KEY CONSTRAINT
Column level foreign key constraint:
Q.5 Query to create foreign key constraints with column level
Parent Table:
Syntax for Column level constraints Using Primary key:
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE)<TYPE OF
CONSTRAINTS> , COLUMN NAME.1 <DATATYPE> (SIZE) ……………………………);
Child Table:
Syntax for Column level constraints Using foreign key:
17
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE),
COLUMN NAME2 <DATATYPE> (SIZE) REFERENCES <TABLE NAME> (COLUMN NAME>
……………………………);
QUERY: 5
SQL>CREATE TABLE DEPT(DEPTNO NUMBER(2) PRIMARY KEY, DNAME VARCHAR2(20),
LOCATION VARCHAR2(15));
SQL>CREATE TABLE EMP4 (EMPNO NUMBER(3),DEPTNO NUMBER(2) REFERENCES
DEPT(DEPTNO), DESIGN VARCHAR2(10));
Column level foreign key constraint with naming conversions:
Parent Table:
Syntax for Column level constraints Using Primary key:
Q.6. Query to create foreign key constraints with column level
SQL:>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE)<TYPE
OF CONSTRAINTS> , COLUMN NAME.1 <DATATYPE> (SIZE) ……………………………);
Child Table:
Syntax for Column level constraints using foreign key:
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE), COLUMN
NAME2 <DATATYPE> (SIZE) CONSTRAINT <CONST. NAME> REFERENCES <TABLE
NAME> (COLUMN NAME> ……………………………);
QUERY:6
SQL>CREATE TABLE DEPT(DEPTNO NUMBER(2) PRIMARY KEY, DNAME VARCHAR2(20),
LOCATION VARCHAR2(15));
SQL>CREATE TABLE EMP4A(EMPNO NUMBER(3),DEPTNO NUMBER(2)CONSTRAINT
EMP4A_DEPTNO_FK REFERENCES DEPT(DEPTNO), DESIGN VARCHAR2(10));
18
Table Level Foreign Key Constraints
Q.7. Query to create foreign key constraints with Table level
Parent Table:
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE)<TYPE OF
CONSTRAINTS> , COLUMN NAME.1 <DATATYPE> (SIZE) ……………………………);
Child Table:
Syntax for Table level constraints using foreign key:
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE),
COLUMN NAME2 <DATATYPE> (SIZE), CONSTRAINT <CONST. NAME> REFERENCES
<TABLE NAME> (COLUMN NAME> );
QUERY: 7
SQL>CREATE TABLE DEPT (DEPTNO NUMBER(2) PRIMARY KEY, DNAME VARCHAR2(20),
LOCATION VARCHAR2(15));
SQL>CREATE TABLE EMP5(EMPNO NUMBER(3),DEPTNO NUMBER(2), DESIGN
VARCHAR2(10)CONSTRAINT ENP2_DEPTNO_FK FOREIGN KEY(DEPT
NO)REFERENCESDEPT(DEPTNO));
Table Level Foreign Key Constraints with Alter command
Q.8. Query to create foreign key constraints with Table level with alter command.
Parent Table:
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE)<TYPE OF
CONSTRAINTS> , COLUMN NAME.1 <DATATYPE> (SIZE) ……………………………);
Child Table:
Syntax for Table level constraints using foreign key:
19
SQL>CREATE <OBJ.TYPE> <OBJ.NAME> (COLUMN NAME.1 <DATATYPE> (SIZE) ,
COLUMN NAME2 <DATATYPE> (SIZE));
SQL> ALTER TABLE <TABLE NAME> ADD CONSTRAINT <CONST. NAME> REFERENCES
<TABLE NAME> (COLUMN NAME>);
QUERY:9
SQL>CREATE TABLE DEPT (DEPTNO NUMBER(2) PRIMARY KEY, DNAME VARCHAR2(20),
LOCATION VARCHAR2(15));
SQL>CREATE TABLE EMP5 (EMPNO NUMBER(3), DEPTNO NUMBER(2), DESIGN
VARCHAR2(10));
SQL>ALTER TABLE EMP6 ADD CONSTRAINT EMP6_DEPTNO_FK FOREIGN KEY(DEPTNO)
REFERENCES DEPT(DEPTNO);
20
EX.NO : 3 .QUERY THE DATABASE TABLES USING DIFFERENT ‘WHERE’
CLAUSE CONDITIONS AND ALSO IMPLEMENT AGGREGATE
FUNCTIONS
AIM:
To create a database tables using different ‘where’ clause conditions and also implement
aggregate functions.
ALOGRITHM:
STEP 1: Start
STEP 2: Create the table with its essential attributes.
STEP 3: Execute different Commands and extract information from the table.
STEP 4: Stop
Where Clause Conditon
SQL>create table book(isbn number(10),title varchar(15),pubyear number(10),unitprice number(6),
Authorname varchar(10),pubname varchar(10));
SQL>select title from book where pubyear=’2004’;
SQL> select title from book where unitprice between 300 and 400;
Aggregate functions
Average : avg
Minimum: min
Maximum: max
Total:sum
Count:count
SQL>select avg(unitprice) “avergage price” from book;
21
avergage price
359.8
SQL>select min(unitprice) “minimum”from book;
Minimum
250
SQL>select max(unitprice) “maximum”from book;
Maximum
450
SQL>select sum(unitprice) “total”from book;
Total
450
SQL>select count(title) “no of books” f rom book;
no of books
22
EX.NO : 4
. QUERY THE DATABASE TABLES AND EXPLORE SUB QUERIES
AIM:
To create a database tables and explore sub queries.
ALOGRITHM:
STEP 1: Start
STEP 2: Create the table with its essential attributes.
STEP 3: Execute different Commands and extract information from the table.
STEP 4: Stop
SQL uses in and not in contructs for set membership tests.
SQL>SELECT TITLE,AUTHORNAME,PUBLISHERNAME,PUBYEAR FROM BOOK WHERE
PUBYEAR IN (‘2000’,’2002’,’2004’);
SQL>SELECT TITLE,AUTHORNAME,PUBLISHERNAME,PUBYEAR FROM BOOK WHERE
PUBYEAR IN (‘2002’,’2004’,’2005’);
SQL>SELECT TITLE FROM BOOK WHERE AUTHORNAME NOT IN (SELECT
AUTHORNAME FROM AUTHOR WHERE COUNTRY=’INDIA’);
23
EX.NO : 5
. QUERY THE DATABASE TABLES AND EXPLORE NATURAL
EQUI AND OUTER JOIN
AIM:
To create a database tables and explore natural equi and outerjoin
ALOGRITHM:
STEP 1: Start
STEP 2: Create the table with its essential attributes.
STEP 3: Execute different Commands and extract information from the table.
STEP 4: Stop
JOIN
INNER JOIN
OUTER JOIN
NATURAL JOIN
INNER JOIN
i)Employee (Empname,city)
ii) Employeesalary (Empname,Department,Salary)
SQL>SELECT EMPLOYEE.EMPNAME,EMPLOYEEASALARY.SALARY FROM EMPLOYEE
INNER JOIN EMPLOYEE SALARY ON EMPLOYEE.EMPNAME = EMPLOYEEASALARY.
EMPNAME;
24
SQL> SELECT * FROM EMPLOYEE INNER JOIN EMPLOYEESALARY ON
EMPLOYEE.EMPNAME = EMPLOYEEASALARY. EMPNAME;
OUTER JOIN
SQL> SELECT EMPLOYEE.EMPNAME, SALARY FROM EMPLOYEE LEFT OUTER JOIN
EMPLOYEESALARY ON EMPLOYEE.EMPNAME = EMPLOYEEASALARY. EMPNAME;
SQL> SELECT EMPLOYEE.EMPNAME, CITY,SALARY FROM EMPLOYEE RIGHT OUTER
JOIN EMPLOYEESALARY ON EMPLOYEE.EMPNAME = EMPLOYEEASALARY.
EMPNAME;
25
EX.NO : 6
. WRITE USER DEFINED FUNCTIONS AND STORED PROCEDURES IN SQL.
AIM:
To study of PL/SQL block.
PL/SQL:
PL/SQL stands for Procedural Language extension of SQL.PL/SQL is a combination of
SQL along with the procedural features of programming languages. It was developed by Oracle
Corporation in the early 90’s to enhance the capabilities of SQL.
THE PL/SQL ENGINE:
Oracle uses a PL/SQL engine to processes the PL/SQL statements. A PL/SQL code can be
stored in the client system (client-side) or in the database (server-side).
ADVANTAGES OF PL/SQL:
These are the Advantages of PL/SQL
Block Structures: PL SQL consists of blocks of code, which can be nested within each
other. Each block forms a unit of a task or a logical module. PL/SQL Blocks can be stored in
the database and reused.
Procedural Language Capability: PL SQL consists of procedural language constructs such
as conditional statements (if else statements) and loops like (FOR loops).
Better Performance: PL SQL engine processes multiple SQL statements simultaneously as
a single block, thereby reducing network traffic.
26
PL/SQL PLACEHOLDERS:
Placeholders are temporary storage area. Placeholders can be any of Variables, Constants
and Records. Oracle defines placeholders to store data temporarily, which are used to manipulate
data during the execution of a PL SQL block.
Depending on the kind of data you want to store, you can define placeholders with a name and a
datatype. Few of the datatypes used to define placeholders are as given below.
Number (n,m) , Char (n) , Varchar2 (n) , Date , Long , Long raw, Raw, Blob, Clob, Nclob, Bfile.
PL/SQL VARIABLES:
These are placeholders that store the values that can change through the PL/SQL Block.
CONDITIONAL STATEMENTS IN PL/SQL
As the name implies, PL/SQL supports programming language features like conditional
statements, iterative statements.
The programming constructs are similar to how you use in programming languages like Java
and C++.
ITERATIVE STATEMENTS IN PL/SQL
Iterative control Statements are used when we want to repeat the execution of one or more
statements for specified number of times.
There are three types of loops in PL/SQL:
• Simple Loop
• While Loop
• For Loop
What are Cursors?
A cursor is a temporary work area created in the system memory when a SQL statement is
executed. A cursor contains information on a select statement and the rows of data accessed by it.
27
This temporary work area is used to store the data retrieved from the database, and
manipulate this data. A cursor can hold more than one row, but can process only one row at a time.
The set of rows the cursor holds is called the active set.
There are two types of cursors in PL/SQL:
Explicit Cursors
Implicit Cursors
STORED PROCEDURES
What is a Stored Procedure?
A stored procedure or in simple a proc is a named PL/SQL block which performs one or
more specific task. This is similar to a procedure in other programming languages.
A procedure has a header and a body. The header consists of the name of the procedure and
the parameters or variables passed to the procedure. The body consists or declaration section,
execution section and exception section similar to a general PL/SQL Block.
A procedure is similar to an anonymous PL/SQL Block but it is named for repeated usage.
We can pass parameters to procedures in three ways.
1) IN-parameters
2) OUT-parameters
3) IN OUT-parameters
A procedure may or may not return any value.
28
PL/SQL FUNCTIONS
What is a Function in PL/SQL?
A function is a named PL/SQL Block which is similar to a procedure. The major difference
between a procedure and a function is, a function must always return a value, but a procedure may
or may not return a value.
General Syntax to create a function is
CREATE [OR REPLACE] FUNCTION function_name [parameters]
RETURN return_datatype;
IS
Declaration_section
BEGIN
Execution_section
Return return_variable;
EXCEPTION
exception section
Return return_variable;
END;
1) Return Type: The header section defines the return type of the function. The return datatype can
be any of the oracle datatype like varchar, number etc.
2) The execution and exception section both should return a value which is of the datatype defined
in the header section.
PARAMETERS IN PROCEDURE AND FUNCTIONS
How to pass parameters to Procedures and Functions in PL/SQL?
In PL/SQL, we can pass parameters to procedures and functions in three ways.
29
1) IN type parameter: These types of parameters are used to send values to stored procedures.
2) OUT type parameter: These types of parameters are used to get values from stored procedures.
This is similar to a return type in functions.
3) IN OUT parameter: These types of parameters are used to send values and get values from
stored procedures.
EXCEPTION HANDLING
In this section we will discuss about the following,
1) What is Exception Handling.
2) Structure of Exception Handling.
3) Types of Exception Handling.
1) What is Exception Handling?
PL/SQL provides a feature to handle the Exceptions which occur in a PL/SQL Block known as
exception Handling. Using Exception Handling we can test the code and avoid it from exiting
abruptly.
When an exception occurs a messages which explains its cause is recieved.
PL/SQL Exception message consists of three parts.
1) Type of Exception
2) An Error Code
3) A message
What is a Trigger?
A trigger is a pl/sql block structure which is fired when a DML statements like Insert, Delete,
Update is executed on a database table. A trigger is triggered automatically when an associated DML
statement is executed.
Syntax of Triggers
Syntax for Creating a Trigger
CREATE [OR REPLACE ] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF }
30
{INSERT [OR] | UPDATE [OR] | DELETE}
[OF col_name]
ON table_name
[REFERENCING OLD AS o NEW AS n]
[FOR EACH ROW]
WHEN (condition)
BEGIN
--- sql statements
END;
PL/ SQL GENERAL SYNTAX FOR IF CONDITION:
SQL> DECLARE
<VARIABLE DECLARATION>;
BEGIN
IF(CONDITION)THEN
<EXECUTABLE STATEMENT >;
END;
Program for If Statement:
DECLARE
b number;
c number;
BEGIN
B:=10;
C:=20;
if(C>B) THEN
dbms_output.put_line('C is maximum');
31
end if;
end;
OUTPUT:
C is maximum
PL/ SQL GENERAL SYNTAX FOR IF AND ELSECONDITION:
SQL> DECLARE
<VARIABLE DECLARATION>;
BEGIN
IF (TEST CONDITION) THEN
<STATEMENTS>;
ELSE
<STATEMENTS>;
ENDIF;
END;
******************Less then or Greater Using IF ELSE ****************
SQL> declare
n number;
begin
dbms_output. put_line('enter a number');
n:=&number;
if n<5 then
dbms_output.put_line('entered number is less than 5');
else
dbms_output.put_line('entered number is greater than 5');
end if;
32
end;
Input
Enter value for number: 2
old 5: n:=&number;
new 5: n:=2;
Output:
entered number is less than 5
PL/SQL ALOGRITHM successfully completed.
PL/ SQL GENERAL SYNTAX FOR NESTED IF:
SQL> DECLARE
<VARIABLE DECLARATION>;
BEGIN
IF (TEST CONDITION) THEN
<STATEMENTS>;
ELSEIF (TEST CONDITION) THEN
<STATEMENTS>;
ELSE
<STATEMENTS>;
ENDIF;
END;
********** GREATEST OF THREE NUMBERS USING IF ***********
SQL> declare
a number;
b number;
33
c number;
d number;
begin
a:=&a;
b:=&b;
c:=&b;
if(a>b)and(a>c) then
dbms_output.put_line('A is maximum');
elsif(b>a)and(b>c)then
dbms_output.put_line('B is maximum');
else
dbms_output.put_line('C is maximum');
end if;
end;
INPUT:
Enter value for a: 21
old 7: a:=&a;
new 7: a:=21;
Enter value for b: 12
old 8: b:=&b;
new 8: b:=12;
Enter value for b: 45
old 9: c:=&b;
new 9: c:=45;
OUTPUT:
34
C is maximum
PL/SQL ALOGRITHM successfully completed.
SETTING SERVEROUTPUT ON:
SQL> SET SERVEROUTPUT ON
I) PROGRAM:
ALOGRITHM USING POSITIONAL PARAMETERS:
SQL> SET SERVEROUTPUT ON
SQL> CREATE OR REPLACE PROCEDURE PROC1 AS
2 BEGIN
3 DBMS_OUTPUT.PUT_LINE('Hello from PRODCURE...');
4 END;
5 /
OUTPUT:
ALOGRITHM created.
SQL> EXECUTE PROC1
Hello from PROCEDURE
PL/SQL PROCEDURE successfully completed.
II) PROGRAM:
PROCEDURE USING NOTATIONAL PARAMETERS:
SQL> CREATE OR REPLACE PROCEDURE PROC2
2 (N1 IN NUMBER,N2 IN NUMBER,TOT OUT NUMBER) IS
3 BEGIN
4 TOT := N1 + N2;
35
5 END;
6 /
OUTPUT:
PROCEDURE created.
SQL> VARIABLE T NUMBER
SQL> EXEC PROC2(33,66,:T)
PL/SQL PROCEDURE successfully completed.
SQL> PRINT T
----------
99
IMPLEMENTATION OF FACTORIAL USING FUNCTION
I) PROGRAM:
SQL>create function fnfact(n number)
return number is
b number;
begin
b:=1;
for i in 1..n
loop
b:=b*i;
end loop;
return b;
end;
36
/SQL>Declare
n number:=&n;
y number;
begin
y:=fnfact(n);
dbms_output.put_line(y);
end;
Function created.
Enter value for n: 5
old 2: n number:=&n;
new 2: n number:=5;
120
PL/SQL ALOGRITHM successfully completed.
II) PROGRAM
SQL> create table phonebook (phone_no number (6) primary key,username varchar2(30),doorno
varchar2(10), street varchar2(30),place varchar2(30),pincode char(6));
Table created.
SQL> insert into phonebook values(20312,'vijay','120/5D','bharathi street','NGO colony','629002');
1 row created.
SQL> insert into phonebook values(29467,'vasanth','39D4','RK bhavan','sarakkal vilai','629002');
1 row created.
SQL> select * from phonebook;
37
PHONE_NO USERNAME DOORNO STREET PLACE PINCODE
------------------------------- ------------- ---------------- --------------------
20312 vijay 120/5D bharathi street NGO colony 629002
29467 vasanth 39D4 RK bhavan sarakkal vilai 629002
[
SQL> create or replace function findAddress(phone in number) return varchar2 as address
varchar2(100);
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 1:
Vijay,120/5D,bharathi street,NGO colony,629002
PL/SQL ALOGRITHM successfully completed.
38
SQL> declare
2 address varchar2(100);
3 begin
4 address:=findaddress(23556);
5 dbms_output.put_line(address);
6 end;
7 /
OUTPUT2:
Address not found
PL/SQL ALOGRITHM successfully completed.
EX.NO : 7 EXECUTE COMPLEX TRANSACTIONS AND REALIZE DCL
39
AND TCL COMMANDS.
AIM:
To satisfy some conditions by accepting the input from the user
ALOGRITHM
STEP 1: Start
STEP 2: Initialize the necessary variables.
STEP 3: invoke the if condition.
STEP 4: Execute the statements.
STEP 5: Stop
DATA CONTROL STATEMENT(DCL)
1.GRANT-Used to allow specified users to perform specified tasks
GRANT SELECT,UPDATE ON employee TO user1,user2
GRANT ALL PRIVILEGES ON employee TO user1,user2
2.REVOKE-Used to cancel previously granted or denied permission
REVOKE ALL ON TABLE employee FROM user1
REVOKE UPDATE,INSERT ON TABLE employee FROM user1
TRANSACTION CONTROL LANGUAGE
40
1.COMMIT command
The commit command saves all transaction to all database since the last COMMIT or ROLLBACK
command
SQL>delete from emp where empage>60;
SQL>commit work;
2.ROLLBACK
The transaction control command used to undo transactions that have not already been saved to the
database.
SQL>rollback work;
41
EX.NO : 8 WRITE SQL TRIGGERS FOR INSERT, DELETE, AND UPDATE
OPERATIONS IN A DATABASE TABLE
AIM:
To develop and execute a Trigger for Before and After update, Delete, Insert operations on a table.
ALOGRITHM:
STEP 1: Start
STEP 2: Initialize the trigger with specific table id.
STEP 3:Specify the operations (update, delete, insert) for which the trigger has to be executed.
STEP 4: Execute the Trigger ALOGRITHM for both Before and After sequences
STEP 5: Carryout the operation on the table to check for Trigger execution.
STEP 6: Stop
EXECUTION
1. Create a Trigger to pop-up the DML operations
SQL> create table empa(id number(3),name varchar2(10),income number(4),expence number(3),
savings number(3));
Table created.
SQL> insert into empa values(2,'kumar',2500,150,650);
1 row created.
SQL> insert into empa values(3,'venky',5000,900,950);
1 row created.
SQL> insert into empa values(4,'anish',9999,999,999);
1 row created.
SQL> select * from empa;
42
ID NAME INCOME EXPENCE SAVINGS
---------- ---------- ---------- ---------- ---------------------------------------
2 kumar 2500 150 650
3 venky 5000 900 950
4 anish 9999 999 999
TYPE 1- TRIGGER AFTER UPDATE
------------------------------------------------
SQL> CREATE OR REPLACE TRIGGER VIJAY
AFTER UPDATE OR INSERT OR DELETE ON EMP
FOR EACH ROW
BEGIN
IF UPDATING THEN
DBMS_OUTPUT.PUT_LINE('TABLE IS UPDATED');
ELSIF INSERTING THEN
DBMS_OUTPUT.PUT_LINE('TABLE IS INSERTED');
ELSIF DELETING THEN
DBMS_OUTPUT.PUT_LINE('TABLE IS DELETED');
END IF;
END;
/
Trigger created.
SQL> update emp set income =900 where empname='kumar';
TABLE IS UPDATED
1 row updated.
SQL> insert into emp values ( 4,'Chandru',700,250,80);
TABLE IS INSERTED
1 row created.
SQL> DELETE FROM EMP WHERE EMPID = 4;
TABLE IS DELETED
1 row deleted.
43
SQL> select * from emp;
EMPID EMPNAME INCOME EXPENSE SAVINGS
--------- --------------- ------------ ------------- -------------
2 vivek 830 150 100
3 kumar 5000 550 50
9 vasanth 987 6554 644
TYPE 2 - TRIGGER BEFORE UPDATE
------------------------------------------------------
SQL> CREATE OR REPLACE TRIGGER VASANTH
BEFORE UPDATE OR INSERT OR DELETE ON EMPLOYEE
FOR EACH ROW
BEGIN
IF UPDATING THEN
DBMS_OUTPUT.PUT_LINE('TABLE IS UPDATED');
ELSIF INSERTING THEN
DBMS_OUTPUT.PUT_LINE('TABLE IS INSERTED');
ELSIF DELETING THEN
DBMS_OUTPUT.PUT_LINE('TABLE IS DELETED');
END IF;
END;
/
Trigger created.
SQL> INSERT INTO EMP VALUES (4,'SANKAR',700,98,564);
TABLE IS INSERTED
1 row created.
SQL> UPDATE EMP SET EMPID = 5 WHERE EMPNAME = 'SANKAR';
TABLE IS UPDATED
1 row updated.
SQL> DELETE EMP WHERE EMPNAME='SANKAR';
TABLE IS DELETED
1 row deleted.
44
1. Create a Trigger to check the age valid or not Using Message Alert
SQL> CREATE TABLE TRIG(NAME CHAR(10),AGE NUMBER(3));
SQL> DESC TRIG;
Table created.
Name Null? Type
-------------------------------------------- -------- -------------------------
NAME CHAR(10)
AGE NUMBER(3)
PROGRAM:
SQL> SET SERVEROUTPUT ON;
SQL> CREATE TRIGGER TRIGNEW
AFTER INSERT OR UPDATE OF AGE ON TRIG
FOR EACH ROW
BEGIN
IF(:NEW.AGE<0) THEN
DBMS_OUTPUT.PUT_LINE('INVALID AGE');
ELSE
DBMS_OUTPUT.PUT_LINE('VALID AGE');
END IF;
END;
/
Trigger created.
SQL> insert into trig values('abc',15);
Valid age
1 row created.
SQL> insert into trig values('xyz',-12);
Invalid age
1 row created.
NAME AGE
---------- ----------
abc 15
xyz -12
45
2. Trigger to check the age valid and Raise appropriate error code and error message.
SQL> create table data(name char(10),age number(3));
Table created.
SQL> desc data;
Name Null? Type
----------------------------------------- -------- ------------------------
NAME CHAR(10)
AGE NUMBER(3)
SQL> CREATE TRIGGER DATACHECK
AFTER INSERT OR UPDATE OF AGE ON DATA
FOR EACH ROW
BEGIN
IF(:NEW.AGE<0) THEN
RAISE_APPLICATION_ERROR(-20000,'NO NEGATIVE AGE ALLOWED');
END IF;
END;
/
Trigger created.
SQL> INSERT INTO DATA VALUES('ABC',10);
1 ROW CREATED.
SQL> INSERT INTO DATA VALUES ('DEF',-15)
*
ERROR at line 1:
ORA-20000: No negative age allowed
ORA-06512: at "4039.DATACHECK", line 3
ORA-04088: error during execution of trigger '4039.DATACHECK'
NAME AGE
---------- ----------
abc 10
46
3. Trigger for EMP table it will update another table SALARY while inserting values.
SQL> CREATE TABLE SRM_EMP2(INAME VARCHAR2(10),
IID NUMBER(5),
SALARY NUMBER(10));
Table created.
SQL> CREATE TABLE SRM_SAL2(INAME VARCHAR2(10),
TOTALEMP NUMBER(5),
TOTALSAL NUMBER(10));
Table created.
SQL> CREATE OR REPLACE TRIGGER EMPTRIGR22 AFTER INSERT ON SRM_EMP2
FOR EACH ROW
DECLARE
A VARCHAR2(10);
BEGIN
A:=:NEW.INAME;
UPDATE SRM_SAL2 SET
TOTALSAL=TOTALSAL+:NEW.SALARY,TOTALEMP=TOTALEMP+1 WHERE INAME=A;
END;
/
Trigger created.
SQL> INSERT INTO SRM_SAL2 VALUES('VEC',0,0);
1 row created.
[[
SQL> INSERT INTO SRM_SAL2 VALUES('SRM',0,0);
1 row created.
SQL> INSERT INTO SRM_EMP2 VALUES('VEC',100,1000);
1 row created.
SQL> SELECT * FROM SRM_SAL2;
INAME TOTALEMP TOTALSAL
---------- ---------- ---------
VEC 1 1000
SRM 0 0
47
SQL> INSERT INTO SRM_EMP2 VALUES('SRM',200,3000);
1 row created.
SQL> SELECT * FROM SRM_SAL2;
INAME TOTALEMP TOTALSAL
---------- ---------- ----------
VEC 1 1000
SRM
[[[[[
1 3000
SQL> INSERT INTO SRM_EMP2 VALUES('VEC',100,5000);
1 row created.
SQL> SELECT * FROM SRM_SAL2;
INAME TOTALEMP TOTALSAL
---------- ---------- ----------
VEC 2 6000
SRM 1 3000
SQL> INSERT INTO SRM_EMP2 VALUES('VEC',100,2000);
1 row created.
SQL> SELECT * FROM SRM_SAL2;
INAME TOTALEMP TOTALSAL
---------- ---------- ----------
VEC 3 8000
SRM 1 3000
SQL> INSERT INTO SRM_EMP2 VALUES('SRM',200,8000);
1 row created.
SQL> SELECT * FROM SRM_SAL2;
INAME TOTALEMP TOTALSAL
---------- ---------- ----------
VEC 3 8000
SRM 2 11000
RESULT:
48
EX.NO :9
CREATE VIEW AND INDEX FOR DATABASE TABLES WITH A LARGE
NUMBER OF RECORDS.
AIM:
To create views, synonyms, sequence, indexes and Save point.
OBJECTIVE:
Views Helps to encapsulate complex query and make it reusable.
Provides user security on each view - it depends on your data policy security.
Using view to convert units - if you have a financial data in US currency, you can create
view to convert them into Euro for viewing in Euro currency.
ALOGRITHM
STEP 1: Start
STEP 2: Create the table with its essential attributes.
STEP 3: Insert attribute values into the table.
STEP 4: Create the view from the above created table.
STEP 5: Execute different Commands and extract information from the View.
STEP 6: Stop
49
COMMANDS EXECUTION
CREATION OF TABLE
--------------------------------
SQL> CREATE TABLE EMPLOYEE ( EMPLOYEE_NAMEVARCHAR2(10),
EMPLOYEE_NONUMBER(8),DEPT_NAME VARCHAR2(10),
DEPT_NO NUMBER (5),DATE_OF_JOIN DATE);
Table created.
TABLE DESCRIPTION
SQL> DESC EMPLOYEE;
NAME NULL? TYPE
------------------------------- ---------- ------------------------
EMPLOYEE_NAME VARCHAR2(10)
EMPLOYEE_NO NUMBER(8)
DEPT_NAME VARCHAR2(10)
DEPT_NO NUMBER(5)
DATE_OF_JOIN DATE
SYNTAX FOR CREATION OF VIEW
--------------------------------------------------
SQL> CREATE <VIEW> <VIEW NAME> AS SELECT <COLUMN_NAME_1>,
<COLUMN_NAME_2> FROM <TABLE NAME>;
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;
50
NAME NULL? TYPE
----------------------------------------- ---------- ----------------------------
EMPLOYEE_NAME VARCHAR2(10)
EMPLOYEE_NO NUMBER(8)
DEPT_NAME VARCHAR2(10)
DEPT_NO NUMBER(5)
DISPLAY VIEW:
SQL> SELECT * FROM EMPVIEW;
EMPLOYEE_NAME EMPLOYEE_NO DEPT_NAME DEPT_NO
---------- ----------- ---------- ----------
KARTHIK 124 ECE 89
VIJAY 345 CSE 21
RAJ 98 IT 22
GIRI 100 CSE 67
INSERTION INTO VIEW
INSERT STATEMENT:
SYNTAX:
SQL> INSERT INTO <VIEW_NAME> (COLUMN NAME1,………) VALUES(VALUE1,….);
SQL> INSERT INTO EMPVIEW VALUES ('SRI', 120,'CSE', 67,'16-NOV-1981');
1 ROW CREATED.
SQL> SELECT * FROM EMPVIEW;
EMPLOYEE_NAME EMPLOYEE_NO DEPT_NAME DEPT_NO
---------- ----------- ---------- ----------
RAVI 124 ECE 89
VIJAY 345 CSE 21
RAJ 98 IT 22
GIRI 100 CSE 67
SRI 120 CSE 67
SQL> SELECT * FROM EMPLOYEE;
EMPLOYEE_NAME EMPLOYEE_NO DEPT_NAME DEPT_NO DATE_OF_J
---------- ----------- ---------- ---------- ---------
51
RAVI 124 ECE 89 15-JUN-05
VIJAY 345 CSE 21 21-JUN-06
RAJ 98 IT 22 30-SEP-06
GIRI 100 CSE 67 14-NOV-81
SRI 120 CSE 67 16-NOV-81
DELETION OF VIEW:
DELETE STATEMENT:
SYNTAX:
SQL> DELETE <VIEW_NMAE>WHERE <COLUMN NMAE> =’VALUE’;
SQL> DELETE FROM EMPVIEW WHERE EMPLOYEE_NAME='SRI';
1 ROW DELETED.
SQL> SELECT * FROM EMPVIEW;
EMPLOYEE_N EMPLOYEE_NO DEPT_NAME DEPT_NO
---------- ----------- ---------- ----------
RAVI 124 ECE 89
VIJAY 345 CSE 21
RAJ 98 IT 22
GIRI 100 CSE 67
UPDATE STATEMENT:
SYNTAX:
AQL>UPDATE <VIEW_NAME> SET< COLUMN NAME> = <COLUMN NAME> +<VIEW>
WHERE <COLUMNNAME>=VALUE;
SQL> UPDATE EMPKAVIVIEW SET EMPLOYEE_NAME='KAVI' WHERE
EMPLOYEE_NAME='RAVI';
1 ROW UPDATED.
SQL> SELECT * FROM EMPKAVIVIEW;
52
EMPLOYEE_N EMPLOYEE_NO DEPT_NAME DEPT_NO
---------- ----------- ---------- ----------
KAVI 124 ECE 89
VIJAY 345 CSE 21
RAJ 98 IT 22
GIRI 100 CSE 67
DROP A VIEW:
SYNTAX:
SQL> DROP VIEW <VIEW_NAME>
EXAMPLE
SQL>DROP VIEW EMPVIEW;
VIEW DROPED
53
CREATE A VIEW WITH SELECTED FIELDS:
SYNTAX:
SQL>CREATE [OR REPLACE] VIEW <VIEW NAME>AS SELECT <COLUMN
NAME1>…..FROM <TABLE ANME>;
CHANGING THE COLUMN(S) NAME OF THE VIEW DURING AS SELECT
STATEMENT
TYPE-1:
SQL> CREATE OR REPLACE VIEW EMP_TOTSAL(EID,NAME,SAL) AS SELECT
EMPNO,ENAME,SALARY FROM EMPL;
View created.
EMPNO ENAME SALARY
---------- -------------------- ----------
7369 SMITH 1000
7499 MARK 1050
7565 WILL 1500
7678 JOHN 1800
7578 TOM 1500
7548 TURNER 1500
6 rows selected.
View created.
EMPNO ENAME SALARY MGRNO DEPTNO
---------- -------------------- ---------- ---------- ----------------------------
7578 TOM 1500 7298 10
7548 TURNER 1500 7298 10
View created.
SQL> SELECT * FROM EMP_TOTSAL;
TYPE-2:
54
SQL> CREATE OR REPLACE VIEW EMP_TOTSAL AS SELECT EMPNO "EID",ENAME
"NAME",SALARY "SAL" FROM EMPL;
SQL> SELECT * FROM EMP_TOTSAL;
TYPE-3:
SQL> CREATE OR REPLACE VIEW DEPT_EMP AS SELECT A.EMPNO "EID",A.ENAME
"EMPNAME",A.DEPTNO "DNO",B.DNAM
E "D_NAME",B.LOC "D_LOC" FROM EMPL A,DEPMT B WHERE A.DEPTNO=B.DEPTNO;
SQL> SELECT * FROM DEPT_EMP;
EID NAME SAL
---------- -------------------- ---------- ----------
7369 SMITH 1000
7499 MARK 1050
7565 WILL 1500
7678 JOHN 1800
7578 TOM 1500
7548 TURNER 1500
6 rows selected.
View created.
EID NAME SAL
---------- -------------------- ---------- ----------
7369 SMITH 1000
7499 MARK 1050
7565 WILL 1500
7678 JOHN 1800
7578 TOM 1500
7548 TURNER 1500
6 rows selected.
View created.
EID EMPNAME DNO D_NAME D_LOC
---------- -------------------- ---------- ---------- ------------------------
7578 TOM 10 ACCOUNT NEW YORK
55
7548 TURNER 10 ACCOUNT NEW YORK
7369 SMITH 20 SALES CHICAGO
7678 JOHN 20 SALES CHICAGO
7499 MARK 30 RESEARCH ZURICH
7565 WILL 30 RESEARCH ZURICH
JOIN VIEW:
SQL> CREATE OR REPLACE VIEW DEPT_EMP_VIEW AS SELECT A.EMPNO, A.ENAME,
A.DEPTNO, B.DNAME, B.LOC FROM EMPL A,DEPMT B WHERE A.DEPTNO=B.DEPTNO;
SQL> SELECT * FROM DEPT_EMP_VIEW;
View created.
EMPNO ENAME SALARY DEPTNO
---------- -------------------- ---------- ----------
7578 TOM 1500 10
7548 TURNER 1500 10
View created.
EMPNO ENAME DEPTNO DNAME LOC
------------------------------ -------------------- ---------- --------------------
7578 TOM 10 ACCOUNT NEW YORK
7548 TURNER 10 ACCOUNT NEW YORK
7369 SMITH 20 SALES CHICAGO
7678 JOHN 20 SALES CHICAGO
7499 MARK 30 RESEARCH ZURICH
7565 WILL 30 RESEARCH ZURICH
6 rows selected.
FORCE VIEW
SQL> CREATE OR REPLACE FORCE VIEW MYVIEW AS SELECT * FROM XYZ;
SQL> SELECT * FROM MYVIEW;
SQL> CREATE TABLE XYZ AS SELECT EMPNO,ENAME,SALARY,DEPTNO FROM EMPL;
SQL> SELECT * FROM XYZ;
56
SQL> CREATE OR REPLACE FORCE VIEW MYVIEW AS SELECT * FROM XYZ;
SQL> SELECT * FROM MYVIEW;
Warning: View created with compilation errors.
SELECT * FROM MYVIEW
*
ERROR at line 1:
ORA-04063: view "4039.MYVIEW" has errors
Table created.
EMPNO ENAME SALARY DEPTNO
------------ ------------------ ------------ -------------
7369 SMITH 1000 20
7499 MARK 1050 30
7565 WILL 1500 30
7678 JOHN 1800 20
7578 TOM 1500 10
7548 TURNER 1500 10
6 rows selected.
View created.
EMPNO ENAME SALARY DEPTNO
------------ ------------------ ------------ -------------
7369 SMITH 1000 20
7499 MARK 1050 30
7565 WILL 1500 30
7678 JOHN 1800 20
7578 TOM 1500 10
7548 TURNER 1500 10
6 rows selected
SYNONYM
SYNTAX:
CREATE [OR REPLACE] [PUBLIC] SYNONYM [schema .] synonym_name
57
FOR [schema .] object_name [@ dblink];
CREATE:
1. CREATE PUBLIC SYNONYM suppliers FOR app.suppliers;
2. SELECT * FROM suppliers;
3. CREATE OR REPLACE PUBLIC SYNONYM suppliers FOR app.suppliers;
DROP:
1. DROP [PUBLIC] SYNONYM [schema .] synonym_name [force];
2. DROP PUBLIC SYNONYM suppliers;
SEQUENCE
SYNTAX
CREATE SEQUENCE [schema_name . ] sequence_name
[ AS [ built_in_integer_type | user-defined_integer_type ] ]
[ START WITH <constant> ]
[ INCREMENT BY <constant> ]
[ { MINVALUE [ <constant> ] } | { NO MINVALUE } ]
[ { MAXVALUE [ <constant> ] } | { NO MAXVALUE } ]
[ CYCLE | { NO CYCLE } ]
[ { CACHE [ <constant> ] } | { NO CACHE } ]
[;]
-- CREATE SCHEMA Test ;
GO
58
A. Creating a sequence that increases by 1
CREATE SEQUENCE Test.CountBy1
START WITH 1
INCREMENT BY 1 ;
GO
B. Creating a sequence that decreases by 1
CREATE SEQUENCE Test.CountByNeg1
START WITH 0
INCREMENT BY -1 ;
GO
C. Creating a sequence that increases by 5
CREATE SEQUENCE Test.CountBy1
START WITH 5
INCREMENT BY 5 ;
GO
D. Creating a sequence that starts with a designated number
CREATE SEQUENCE Test.ID_Seq
START WITH 24329
INCREMENT BY 1 ;
GO
59
E. Creating a sequence using default values
CREATE SEQUENCE Test.TestSequence ;
F. Creating a sequence with a specific data type
CREATE SEQUENCE SmallSeq
AS smallint ;
G. Creating a sequence using all arguments
CREATE SEQUENCE Test.DecSeq
AS decimal(3,0)
START WITH 125
INCREMENT BY 25
MINVALUE 100
MAXVALUE 200
CYCLE
CACHE 3
INDEX
SYNTAX:
CREATE INDEX index_name ON table_name (column_name)
SQL CREATE UNIQUE INDEX SYNTAX:
CREATE UNIQUE INDEX index_name ON table_name (column_name)
EXAMPLE:
60
CREATE INDEX PIndex
ON Persons (LastName)
CREATE INDEX PIndex
ON Persons (LastName, FirstName)
DROP INDEX
DROP INDEX index_name ON table_name
61