Dbms Manual
Dbms Manual
INTRODUCTION TO SQL SQL (Structured Query Language) is a database computer language designed for the retrieval and management of data in relational database management systems (RDBMS), database schema creation and modification, and database object access control management. SQL is a programming language for querying and modifying data and managing databases. SQL was standardized first by the ANSI and (later) by the ISO. Most database management systems implement a majority of one of these standards and add their proprietary extensions. SQL allows the retrieval, insertion, updating, and deletion of data.
A database management system also includes management and administrative functions. Most -- if not all -- implementations also include a Command-line Interface (SQL/CLI) that allows for the entry and execution of the language commands, as opposed to only providing an API intended for access from a GUI. The first version of SQL was developed at IBM by Donald D. Chamberlin and Raymond F. Boyce in the early 1970s. This version, initially called SEQUEL, was designed to manipulate and retrieve data stored in IBM's original relational database product, System R. IBM patented their version of SQL in 1985, while the SQL language was not formally standardized until 1986, by the American National Standards Institute (ANSI) as SQL-86. Subsequent versions of the SQL standard have been released by ANSI and as International Organization for Standardization (ISO) standards.
pg. 1
Dept of Computer Science & Engineering
Originally designed as a declarative query and data manipulation language, variations of SQL have been created by SQL database management system (DBMS) vendors that add procedural constructs, control-of-flow statements, user-defined data types, and various other language extensions. With the release of the SQL:1999 standard, many such extensions were formally adopted as part of the SQL language via the SQL Persistent Stored Modules (SQL/PSM) portion of the standard. Common criticisms of SQL include a perceived lack of crossplatform portability between vendors, inappropriate handling of missing data (see Null (SQL)), and unnecessarily complex and occasionally ambiguous language grammar and semantics. FEATURES OF SQL: SQL is both an easy-to-understand language and a comprehensive tool for managing data. Some of the major features of SQL are Vendor independence Portability across computer systems SQL standards IBM endorsement and commitment (DB2) Microsoft commitment (SQL Server , ODBC, and ADO) Relational foundation High-level, English-like structure Interactive, ad hoc queries Programmatic database access Multiple views of data Complete database language Dynamic data definition Client/server architecture Enterprise application support Extensibility and object technology Internet database access pg. 2
Dept of Computer Science & Engineering
SQL COMMANDS SQL Consisting of DDL,DML,DCL,TCL COMMANDS. DDL Data Definition Language (DDL) statements are used to define the database structure or schema. DDL Commands: Create , Alter ,Drop , Rename, Truncate CREATE - to create objects in the database ALTER - alters the structure of the database DROP - delete objects from the database TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed RENAME - rename an object
DML Data Manipulation Language (DML) statements are used for managing data within schema objects DML Commands: Insert ,Update, Delete, Select
INSERT - insert data into a table UPDATE - updates existing data within a table pg. 3
Dept of Computer Science & Engineering
DELETE - deletes all records from a table, the space for the records remain SELECT - retrieve data from the a database
DCL Data Control Language (DCL) statements is used to create roles, permissions, and referential integrity as well it is used to control access to database by securing it.
DCL Commands:
Grant, Revoke
GRANT - gives user's access privileges to database REVOKE - withdraw access privileges given with the GRANT command TCL
Transaction Control (TCL) statements are used to manage the changes made by DML statements. It allows statements to be grouped together into logical transactions. TCL Commands: Commit, Rollback, Save point
COMMIT - save work done SAVEPOINT - identify a point in a transaction to which you can later roll back ROLLBACK - restore database to original since the last COMMIT pg. 4
Dept of Computer Science & Engineering
SYNTAXS OF COMMANDS CREATE TABLE CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, column_name3 data_type, );
....
ALTER A TABLE To add a column in a table ALTER TABLE table_name ADD column_name datatype; To delete a column in a table
ALTER TABLE table_name DROP COLUMN column_name; DROP TABLE DROP TABLE table_name;
TRUNCATE TABLE
pg. 5
Dept of Computer Science & Engineering
INSERT INSERT INTO table_name VALUES (value1, value2, value3,...); ( OR ) INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...); UPDATE UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value;
DELETE DELETE FROM table_name WHERE some_column=some_value; SELECT SELECT column_name(s) FROM table_name; CREATE,INSERT , UPDATE, DELETE, RENAME, TRUNCATE, ON TABLES pg. 6
Dept of Computer Science & Engineering
NUMBER(5),SNAME
INTO
OUTPUT:Enter value for sno: 501 Enter value for sname: ABI Enter value for doj: 12-OCT-07 old 1: INSERT INTO STUDENT100 VALUES(&SNO,'&SNAME','&DOJ') new 1: INSERT INTO STUDENT100 VALUES(501,'ABI','12-OCT-07') 1 row created.
SQL> / Enter value for sno: 502 Enter value for sname: ASHOK Enter value for doj: 03-OCT-07 old 1: INSERT INTO STUDENT100 VALUES(&SNO,'&SNAME','&DOJ') new 1: INSERT INTO STUDENT100 VALUES(502,'ASHOK','03-OCT07') pg. 7
Dept of Computer Science & Engineering
1 row created.
SQL> / Enter value for sno: 503 Enter value for sname: BHAVYA Enter value for doj: 10-OCT-07 old 1: INSERT INTO STUDENT100 VALUES(&SNO,'&SNAME','&DOJ') new 1: INSERT INTO STUDENT100 VALUES(503,'BHAVYA','10OCT-07') 1 row created. SQL> / Enter value for sno: 504 Enter value for sname: AKASH Enter value for doj: 05-OCT-07 old 1: INSERT INTO STUDENT100 VALUES(&SNO,'&SNAME','&DOJ') new 1: INSERT INTO STUDENT100 VALUES(504,'AKASH','05-OCT07') 1 row created. SQL> / Enter value for sno: 505 Enter value for sname: NIKHIL Enter value for doj: 08-OCT-07 old 1: INSERT INTO STUDENT100 VALUES(&SNO,'&SNAME','&DOJ') new 1: INSERT INTO STUDENT100 VALUES(505,'NIKHIL','08-OCT07') pg. 8
Dept of Computer Science & Engineering
SQL>SELECT * FROM CSESTUDENT; OUTPUT:SNO SNAME DOJ ---------- --------------- --------501 ABI 12-OCT-07 502 ASHOK 03-OCT-07 503 BHAVYA 10-OCT-07 504 AKASH 05-OCT-07 505 NIKHIL 08-OCT-07
CSESTUDENT
SET
SNAME='ABILASH'
WHERE
pg. 9
Dept of Computer Science & Engineering
CSESTUDENT
SET
BRANCH='CSE'
WHERE
CSESTUDENT
SET
BRANCH='CSE'
WHERE
CSESTUDENT
SET
BRANCH='CSE'
WHERE
CSESTUDENT
SET
BRANCH='CSE'
WHERE
CSESTUDENT
SET
BRANCH='CSE'
WHERE
SQL> SELECT * FROM CSESTUDENT; SNO SNAME DOJ ---------- --------------- --------- -----BRANCH pg. 10
Dept of Computer Science & Engineering
12-OCT-07 CSE 03-OCT-07 CSE 10-OCT-07 CSE 05-OCT-07 CSE 08-OCT-07 CSE
SQL> DELETE FROM CSESTUDENT WHERE SNO=501; OUTPUT:-1 row deleted. SQL> SELECT * FROM CSESTUDENT; OUTPUT:SNO SNAME DOJ BRANCH ---------- --------------- --------- -----502 ASHOK 03-OCT-07 CSE 503 BHAVYA 10-OCT-07 CSE 504 AKASH 05-OCT-07 CSE 505 NIKHIL 08-OCT-07 CSE 502 ASHOK 03-OCT-07 CSE SQL> DROP TABLE CSESTUDENT; OUTPUT:-Table dropped. CREATING TABLES WITH CONSTRAINTS (NOT NULL) SQL> CREATE TABLE STUD(ROLLNO NUMBER(6) NOT NULL,NAME VARCHAR2(10),BRANCH VARCHAR2(6)); Table created. pg. 11
Dept of Computer Science & Engineering
SQL> DESC STUD; Name Null? Type ----------------------------------------- -------- ---------------------------ROLLNO NOT NULL NUMBER(6) NAME VARCHAR2(10) BRANCH VARCHAR2(6)
SQL> INSERT INTO STUD VALUES(&ROLLNO,'&NAME','&BRANCH'); Enter value for rollno: 501 Enter value for name: ABHILASH Enter value for branch: CSE old 1: INSERT INTO STUD VALUES(&ROLLNO,'&NAME','&BRANCH') new 1: INSERT INTO STUD VALUES(501,'ABHILASH','CSE') 1 row created. SQL> / Enter value for rollno: 502 Enter value for name: ABI Enter value for branch: CSE old 1: INSERT INTO VALUES(&ROLLNO,'&NAME','&BRANCH') new 1: INSERT INTO STUD VALUES(502,'ABI','CSE') 1 row created. SQL> SELECT * FROM STUD; ROLLNO NAME ---------- ---------- -----BRANCH pg. 12
Dept of Computer Science & Engineering
STUD
SQL> INSERT INTO STUD VALUES(&ROLLNO,'&NAME','&BRANCH'); Enter value for rollno: Enter value for name: BHAVYA Enter value for branch: CSE old 1: INSERT INTO STUD VALUES(&ROLLNO,'&NAME','&BRANCH') new 1: INSERT INTO STUD VALUES(,'BHAVYA','CSE') INSERT INTO STUD VALUES(,'BHAVYA','CSE') * ERROR:CANNOT INSERT NULL INTO("SCOTT",'STUD',ROLLNO) (UNIQUE) SQL> CREATE TABLE STUD(ROLLNO NUMBER(6) UNIQUE ,NAME VARCHAR2(10),BRANCH VARCHAR2(6)); Table created. SQL> INSERT INTO VALUES(&ROLLNO,'&NAME','&BRANCH'); Enter value for rollno: 501 Enter value for name: abhilash Enter value for branch: cse old 1: INSERT INTO VALUES(&ROLLNO,'&NAME','&BRANCH') new 1: INSERT INTO STUD VALUES(501,'abhilash','cse') pg. 13
Dept of Computer Science & Engineering
STUD
STUD
1 row created. SQL> / Enter value for rollno: 502 Enter value for name: ABI Enter value for branch: CSE old 1: INSERT INTO VALUES(&ROLLNO,'&NAME','&BRANCH') new 1: INSERT INTO STUD VALUES(502,'ABI','CSE') 1 row created.
STUD
SQL> / Enter value for rollno: 502 Enter value for name: BHAVYA Enter value for branch: CSE old 1: INSERT INTO STUD VALUES(&ROLLNO,'&NAME','&BRANCH') new 1: INSERT INTO STUD VALUES(502,'BHAVYA','CSE') INSERT INTO STUD VALUES(502,'BHAVYA','CSE') * ERROR at line 1: ORA-00001: unique constraint (SCOTT.SYS_C001290) violated (PRIMARY KEY) SQL> CREATE TABLE STUD(ROLLNO NUMBER(6) PRIMARY KEY ,NAME VARCHAR2(10),BRANCH VARCHAR2(6)); Table created.
pg. 14
Dept of Computer Science & Engineering
SQL> INSERT INTO VALUES(&ROLLNO,'&NAME','&BRANCH'); Enter value for rollno: 501 Enter value for name: abhilash Enter value for branch: cse old 1: INSERT INTO VALUES(&ROLLNO,'&NAME','&BRANCH') new 1: INSERT INTO STUD VALUES(501,'abhilash','cse') 1 row created. SQL> / Enter value for rollno: 502 Enter value for name: ABI Enter value for branch: CSE old 1: INSERT INTO VALUES(&ROLLNO,'&NAME','&BRANCH') new 1: INSERT INTO STUD VALUES(502,'ABI','CSE') 1 row created.
STUD
STUD
STUD
SQL> / Enter value for rollno: 502 Enter value for name: BHAVYA Enter value for branch: CSE old 1: INSERT INTO STUD VALUES(&ROLLNO,'&NAME','&BRANCH') new 1: INSERT INTO STUD VALUES(502,'BHAVYA','CSE') INSERT INTO STUD VALUES(502,'BHAVYA','CSE') * ERROR at line 1: ORA-00001: unique constraint (SCOTT.SYS_C001290) violated pg. 15
Dept of Computer Science & Engineering
SQL> INSERT INTO STUD VALUES(&ROLLNO,'&NAME','&BRANCH'); Enter value for rollno: Enter value for name: BHAVYA Enter value for branch: CSE old 1: INSERT INTO STUD VALUES(&ROLLNO,'&NAME','&BRANCH') new 1: INSERT INTO STUD VALUES(,'BHAVYA','CSE') INSERT INTO STUD VALUES(,'BHAVYA','CSE') * ERROR:CANNOT INSERT NULL INTO("SCOTT",'STUD',ROLLNO)
SQL> SELECT * FROM STUD; ROLLNO NAME BRANCH ---------- ---------- -----501 ABHILASH CSE 502 ABI CSE (CHECK) SQL> create table stud(rno number(5),name varchar2(10),sal number(10) constraint no_ck check(sal between 10000 and 30000)); Table created. SQL> insert into stud values(&rno,'&name',&sal); Enter value for rno: 567 pg. 16
Dept of Computer Science & Engineering
Enter value for name: sachin Enter value for sal: 29000 old 1: insert into stud values(&rno,'&name',&sal) new 1: insert into stud values(567,'sachin',29000) 1 row created. SQL> / Enter value for rno: 565 Enter value for name: rohit Enter value for sal: 35000 old 1: insert into stud values(&rno,'&name',&sal) new 1: insert into stud values(565,'rohit',35000) insert into stud values(565,'rohit',35000) * ERROR at line 1: ORA-02290: check constraint (SCOTT.NO_CK) violated
( FOREIGN KEY ) SOL>create table adm(stuid number(6) constraint stuid_pk primary key,sname varchar2(15),per number(5)); Table created. SQL> insert into adm values(&stuid,'&sname',&per); Enter value for stuid: 1 Enter value for sname: abi Enter value for per: 80 old 1: insert into adm values(&stuid,'&sname',&per) new 1: insert into adm values(1,'abi',80) 1 row created. pg. 17
Dept of Computer Science & Engineering
SQL> / Enter value for stuid: 2 Enter value for sname: rohit Enter value for per: 89 old 1: insert into adm values(&stuid,'&sname',&per) new 1: insert into adm values(2,'rohit',89) 1 row created. SQL> / Enter value for stuid: 3 Enter value for sname: sachin Enter value for per: 99 old 1: insert into adm values(&stuid,'&sname',&per) new 1: insert into adm values(3,'sachin',99) 1 row created. SQL> / Enter value for stuid: 4 Enter value for sname: naveen Enter value for per: 70 old 1: insert into adm values(&stuid,'&sname',&per) new 1: insert into adm values(4,'naveen',70) 1 row created. SQL> select * from adm; STUID SNAME PER ---------- --------------- ---------1 abi 80 2 rohit 89 pg. 18
Dept of Computer Science & Engineering
3 sachin 4 naveen
99 70
SQL> create table course(stuid number(6) constraint sid_fk references adm(stuid),branch varchar2(5),sec varchar2(10)); Table created. SQL> insert into course values(&stuid,'&branch','&sec'); Enter value for stuid: 1 Enter value for branch: cse Enter value for sec: a old 1: insert into course values(&stuid,'&branch','&sec') new 1: insert into course values(1,'cse','a') 1 row created. SQL> / Enter value for stuid: 5 Enter value for branch: cse Enter value for sec: b old 1: insert into course values(&stuid,'&branch','&sec') new 1: insert into course values(5,'cse','b') insert into course values(5,'cse','b') * ERROR at line 1: ORA-02291: integrity constraint (SCOTT.SID_FK) violated - parent key not found
ORA-02292: integrity constraint (SCOTT.SID_FK) violated - child record found SQL> delete from course where stuid=1; 1 row deleted. SQL> delete from adm where stuid=1; 1 row deleted.
SQL>select * from adm; STUID SNAME PER ----- --------------- - ---------2 rohit 89 3 sachin 99 4 naveen 70 CREATING AND DROPING OF VIEWS SQL> select * from emp2; OUTPUT:ENAME STREET CITY -------------------- -------------------- -------------------coyote toon hollywood rabbit tunnel carrot ville smith revolver death valley williams sea view sea attle SQL> create view emp22 as select * from emp2; pg. 20
Dept of Computer Science & Engineering
OUTPUT:View created. SQL> select * from emp22; OUTPUT:ENAME STREET CITY -------------------- -------------------- -------------------coyote toon hollywood rabbit tunnel carrot ville smith revolver death valley williams sea view sea attle SQL> update emp22 set city='hyd' where ename='coyote'; OUTPUT:1 row updated. SQL> select * from emp2; OUTPUT:ENAME STREET CITY -------------------- -------------------- -------------------coyote toon hyd rabbit tunnel carrot ville smith revolver death valley williams sea view sea attle SQL> select * from emp22; pg. 21
Dept of Computer Science & Engineering
OUTPUT:ENAME STREET CITY -------------------- -------------------- -------------------coyote toon hyd rabbit tunnel carrot ville smith revolver death valley williams sea view sea attle SQL> drop table emp2; OUTPUT:Table dropped. SQL> select * from emp22; OUTPUT:select * from emp22 * ERROR at line 1: ORA-04063: view "SCOTT.EMP22" has errors
DCL AND TCL COMMANDS CREATING A USER SQL>CONNECT SYSTEM/MANAGER; SQL>CREATE USER "USERNAME" IDENTIFIED BY "PASSWORD" pg. 22
Dept of Computer Science & Engineering
SQL>GRANT DBA TO "USERNAME" SQL>CONNECT "USERNAME"/"PASSWORD"; EXAMPLE CREATING A USER SQL>CONNECT SYSTEM/MANAGER; SQL>CREATE USER CSE2 IDENTIFIED BY CSECSE; SQL>GRANT DBA TO CSE2; SQL>CONNECT CSE2/CSECSE; SQL>REVOKE DBA FROM CSE2; IMPLEMENTING COMMINT, SAVEPOINT, ROLLBACK SQL> select * from emp1; OUTPUT:EID ---------1 2 3 4 5 6 7 8 ENAME ---------scotty wayne david max mark jeff matt steve ESAL EBRANCH -------------------6000 a 10000 b 7000 c 8000 b 7000 a 12000 a 10000 b 7000 c pg. 23
Dept of Computer Science & Engineering
8 rows selected.
SQL> savepoint s1; OUTPUT:Savepoint created. SQL> update emp1 set esal=6500 where ename='scotty'; OUTPUT:1 row updated. SQL> savepoint s2; OUTPUT:Savepoint created. SQL> delete from emp1 where ename='wayne'; OUTPUT:1 row deleted. SQL> savepoint s3; OUTPUT:Savepoint created. SQL> insert into emp1 values(9,'bruce',11000,'c'); OUTPUT:1 row created. pg. 24
Dept of Computer Science & Engineering
SQL> select * from emp1; OUTPUT:EID ---------1 3 4 5 6 7 8 9 ENAME ---------scotty david max mark jeff matt steve bruce ESAL EBRANCH ---------- ---------------6500 a 7000 c 8000 b 7000 a 12000 a 10000 b 7000 c 11000 c
8 rows selected. SQL> rollback to s3; OUTPUT:Rollback complete. SQL> select * from emp1; OUTPUT:EID ENAME ESAL EBRANCH ---------------------------- ---------------1 scotty 6500 a 3 david 7000 c 4 max 8000 b 5 mark 7000 a 6 jeff 12000 a 7 matt 10000 b 8 steve 7000 c pg. 25
Dept of Computer Science & Engineering
SQL> rollback to s2; OUTPUT:Rollback complete. SQL> select * from emp1; OUTPUT:EID ENAME ---------- ---------1 scotty 2 wayne 3 david 4 max 5 mark 6 jeff 7 matt 8 steve
ESAL EBRANCH -------------------6500 a 10000 b 7000 c 8000 b 7000 a 12000 a 10000 b 7000 c
SQL> rollback to s1; OUTPUT:Rollback complete. SQL> select * from emp1; OUTPUT:pg. 26
Dept of Computer Science & Engineering
EID ENAME ---------- ---------1 scotty 2 wayne 3 david 4 max 5 mark 6 jeff 7 matt 8 steve
ESAL EBRANCH -------------------6000 a 10000 b 7000 c 8000 b 7000 a 12000 a 10000 b 7000 c
SQL> savepoint s4; OUTPUT:Savepoint created. SQL> delete from emp1 where eid=1; OUTPUT:1 row deleted.
SQL> select * from emp1; OUTPUT:EID ENAME ---------- ---------2 wayne 3 david
4 max 5 mark 6 jeff 7 matt 8 steve 7 rows selected. SQL> commit; OUTPUT:Commit complete. SQL> rollback to s4;
b a a b c
SQL> select * from emp1; OUTPUT:EID ENAME ---------- ---------2 wayne 3 david 4 max 5 mark 6 jeff 7 matt 8 steve 7 rows selected. ESAL EBRANCH -------------------10000 b 7000 c 8000 b 7000 a 12000 a 10000 b 7000 c pg. 28
Dept of Computer Science & Engineering
DRL-DATA RETRIEVAL LANGUAGE IMPLEMENTING SELECT COMMANDS SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------7369 SMITH CLERK 7902 17-DEC-80 20 SAL
800
SALESMAN
7698 20-FEB-81
1600
SALESMAN
7698 22-FEB-81
1250
MANAGER
7839 02-APR-81
2975
pg. 29
Dept of Computer Science & Engineering
SALESMAN
7698 28-SEP-81
1250
7698 BLAKE 30
MANAGER
7839 01-MAY-81
2850
10
7782 CLARK
MANAGER
7839 09-JUN-81
2450
7788 SCOTT 20
ANALYST
7566 19-APR-87
3000
7839 KING 10
PRESIDENT
17-NOV-81
5000
7844 TURNER 30
SALESMAN
7698 08-SEP-81
1500
7876 ADAMS 20
CLERK
7788 23-MAY-87
1100
7900 JAMES 30
CLERK
7698 03-DEC-81
950
pg. 30
Dept of Computer Science & Engineering
7902 FORD 20
ANALYST
7566 03-DEC-81
3000
7934 MILLER 10
CLERK
7782 23-JAN-82
1300
14 rows selected.
SQL> select empno,ename,sal from emp; EMPNO ENAME ---------- ---------- ---------7369 SMITH 7499 ALLEN 7521 WARD 7566 JONES 7654 MARTIN 7698 BLAKE 7782 CLARK 7788 SCOTT 7839 KING 7844 TURNER 7876 ADAMS EMPNO ENAME ---------- ---------- ---------7900 JAMES 7902 FORD 7934 MILLER SAL 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 SAL 950 3000 1300 pg. 31
Dept of Computer Science & Engineering
14 rows selected. SQL> select empno,ename,sal from emp where sal between 2500 and 5000; EMPNO ENAME ---------- ---------- ---------7566 JONES 7698 BLAKE 7788 SCOTT 7839 KING 7902 FORD SAL 2975 2850 3000 5000 3000 from emp where sal not
ENAME JOB SAL DEPTNO ---------- --------- ---------- ---------SMITH CLERK 800 20 WARD SALESMAN 1250 30 MARTIN SALESMAN 1250 30 ADAMS CLERK 1100 20 JAMES CLERK 950 30 MILLER CLERK 1300 10 6 rows selected.
SQL> select empno,ename,sal from emp where sal in (800,5000); EMPNO ENAME ---------- ---------- ---------7369 SMITH 7839 KING SAL 800 5000 pg. 32
Dept of Computer Science & Engineering
SQL> select empno,ename,sal in(800,1250,3000,5000); EMPNO ENAME ---------- ---------- ---------7499 ALLEN 7566 JONES 7698 BLAKE 7782 CLARK 7844 TURNER 7876 ADAMS 7900 JAMES 7934 MILLER 8 rows selected. SAL 1600 2975 2850 2450 1500 1100 950 1300
from
emp
where
sal
not
SQL> select empno,ename,sal from emp where comm is null; EMPNO ENAME ---------- ---------- ---------7369 SMITH 7566 JONES 7698 BLAKE 7782 CLARK 7788 SCOTT 7839 KING 7876 ADAMS 7900 JAMES 7902 FORD 7934 MILLER SAL 800 2975 2850 2450 3000 5000 1100 950 3000 1300 pg. 33
Dept of Computer Science & Engineering
10 rows selected. SQL> select empno,ename,sal from emp where comm is not null; EMPNO ENAME ---------- ---------- ---------7499 ALLEN 7521 WARD 7654 MARTIN 7844 TURNER SAL 1600 1250 1250 1500
SQL> select empno,ename,job,sal from emp where ename like'S%'; EMPNO ENAME JOB ---------- ---------- --------- ---------7369 SMITH CLERK 7788 SCOTT ANALYST SAL 800 3000
SQL> select empno,ename,job,sal from emp where like'S%'; EMPNO ENAME JOB ---------- ---------- --------- ---------7369 SMITH CLERK 7566 JONES MANAGER 7698 BLAKE MANAGER 7782 CLARK MANAGER 7788 SCOTT ANALYST 7839 KING PRESIDENT 7876 ADAMS CLERK SAL 800 2975 2850 2450 3000 5000 1100 pg. 34
job not
SQL> select ename,job,sal from emp where sal>2500; ENAME JOB ---------- --------- ---------JONES MANAGER BLAKE MANAGER SCOTT ANALYST KING PRESIDENT FORD ANALYST SAL 2975 2850 3000 5000 3000
SQL> select ename,job,sal from emp where sal<2500; ENAME JOB ---------- --------- ---------SMITH CLERK ALLEN SALESMAN WARD SALESMAN MARTIN SALESMAN CLARK MANAGER TURNER SALESMAN ADAMS CLERK JAMES CLERK MILLER CLERK 9 rows selected. pg. 35
Dept of Computer Science & Engineering
SAL 800 1600 1250 1250 2450 1500 1100 950 1300
SQL> select empno,ename,job,sal from emp order by sal; EMPNO ENAME ---------- ---------- --------7369 SMITH 7900 JAMES 7876 ADAMS 7521 WARD 7654 MARTIN 7934 MILLER 7844 TURNER 7499 ALLEN 7782 CLARK 7698 BLAKE 7566 JONES JOB SAL ---------CLERK 800 CLERK 950 CLERK 1100 SALESMAN 1250 SALESMAN 1250 CLERK 1300 SALESMAN 1500 SALESMAN 1600 MANAGER 2450 MANAGER 2850 MANAGER 2975 SAL 3000 3000 5000
EMPNO ENAME JOB ---------- ---------- --------- ---------7788 SCOTT ANALYST 7902 FORD ANALYST 7839 KING PRESIDENT 14 rows selected.
SQL> select empno,ename,job,sal from emp order by sal desc; EMPNO ENAME JOB ---------- ---------- --------- ---------7839 KING PRESIDENT 7788 SCOTT ANALYST 7902 FORD ANALYST 7566 JONES MANAGER 7698 BLAKE MANAGER 7782 CLARK MANAGER SAL 5000 3000 3000 2975 2850 2450 pg. 36
Dept of Computer Science & Engineering
SALESMAN 1600 SALESMAN 1500 CLERK 1300 SALESMAN 1250 SALESMAN 1250 JOB ---------CLERK CLERK CLERK SAL 1100 950 800
EMPNO ENAME ---------- ---------- --------7876 ADAMS 7900 JAMES 7369 SMITH 14 rows selected.
SQL>select * from emp; OUTPUT:EMPNO ENAME JOB SAL COMM DEPTNO --------------------------------------------------7369 SMITH CLERK 800 20 7499 1600 7521 1250 ALLEN SALESMAN 300 30 WARD SALESMAN 500 30 pg. 37
Dept of Computer Science & Engineering
MGR --------7902
HIREDATE ----------
17-DEC-80
7698
20-FEB-81
7698
22-FEB-81
7566 2975 7654 1250 7698 2850 7782 2450 7788 3000 7839 5000 7844 1500 7876 1100 7900 950 7902 3000
MANAGER
7839
02-APR-81
7698
28-SEP-81
7839
01-MAY-81
CLARK 10 SCOTT
7839
09-JUN-81
7566
19-APR-87
KING
17-NOV-81
TURNER 0 ADAMS
7698
08-SEP-81
7788
23-MAY-87
JAMES
7698
03-DEC-81
FORD
7566
03-DEC-81
7782
23-JAN-82
pg. 38
Dept of Computer Science & Engineering
SQL>select * from dept; OUTPUT:DEPTNO DNAME ----------------------10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS LOC -----------NEW YORK DALLAS CHICAGO BOSTON
EMPNO ENAME JOB SAL COMM DEPTNO ------------------------------- ---------------------7788 3000 7839 5000 7902 3000 SCOTT KING FORD ANALYST 20 PRESIDENT 10 ANALYST 20 pg. 39
MGR ----------
HIREDATE -------------
7566
19-APR-87 17-NOV-81
7566
03-DEC-81
SQL> select empno,ename from emp where sal in(select max(sal) from emp); OUTPUT:EMPNO ENAME ------------------7839 KING SQL> select empno,ename from emp where sal in(select max(sal) from emp group by deptno); OUTPUT:EMPNO ENAME ------------------7698 BLAKE 7788 SCOTT 7902 FORD 7839 KING SQL> select empno,ename,job,sal from emp where sal>all(select avg(sal) from emp group by deptno); OUTPUT:EMPNO ENAME ------------------7566 JONES 7788 SCOTT 7839 KING 7902 FORD JOB --------MANAGER ANALYST PRESIDENT ANALYST SAL ---------2975 3000 5000 3000 pg. 40
Dept of Computer Science & Engineering
SQL> select empno,ename,job,sal from emp where sal<all(select avg(sal) from emp group by deptno); OUTPUT:EMPNO ENAME JOB SAL ---------- ---------- -----------------7369 SMITH CLERK 800 7521 WARD SALESMAN 1250 7654 MARTIN SALESMAN 1250 7844 TURNER SALESMAN 1500 7876 ADAMS CLERK 1100 7900 JAMES CLERK 950 7934 MILLER CLERK 1300 7 rows selected. SQL> select ename,job,sal from emp where sal>any(select sal from emp where job='CLERK'); OUTPUT:ENAME JOB ---------- --------ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN BLAKE MANAGER CLARK MANAGER SCOTT ANALYST KING PRESIDENT TURNER SALESMAN ADAMS CLERK
SAL ---------1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 pg. 41
Dept of Computer Science & Engineering
JAMES
CLERK
SQL> select ename,job,sal from emp where sal<any(select sal from emp where job='CLERK'); OUTPUT:ENAME JOB ---------- --------SMITH CLERK WARD SALESMAN MARTIN SALESMAN ADAMS CLERK JAMES CLERK
SQL> select ename,job,sal from emp where sal=any(select sal from emp where job='CLERK'); OUTPUT:ENAME JOB -----------------SMITH CLERK JAMES CLERK ADAMS CLERK MILLER CLERK
pg. 42
Dept of Computer Science & Engineering
SQL> select deptno,dname from dept d where exists(select * from emp e where d.deptno=e.deptno); OUTPUT:DEPTNO DNAME ----------------------10 ACCOUNTING 20 RESEARCH 30 SALES SQL> select deptno,dname from dept d where not exists(select * from emp e where d.deptno=e.deptno); OUTPUT:DEPTNO ---------40 DNAME -------------OPERATIONS
SQL> create table s1(sid number(5),sname varchar2(10),rating number(5),age number(10)); Table created. SQL> insert into s1 values(&sid,'&sname',&rating,&age); Enter value for sid: 22 Enter value for sname: dustin Enter value for rating: 7 Enter value for age: 45 old 1: insert into s1 values(&sid,'&sname',&rating,&age) new 1: insert into s1 values(22,'dustin',7,45) pg. 43
Dept of Computer Science & Engineering
1 row created. SQL> / Enter value for sid: 31 Enter value for sname: lubber Enter value for rating: 8 Enter value for age: 56 old 1: insert into s1 values(&sid,'&sname',&rating,&age) new 1: insert into s1 values(31,'lubber',8,56) 1 row created. SQL> / Enter value for sid: 58 Enter value for sname: rusty Enter value for rating: 10 Enter value for age: 35 old 1: insert into s1 values(&sid,'&sname',&rating,&age) new 1: insert into s1 values(58,'rusty',10,35) 1 row created. SQL> create table s2(sid number(5),sname varchar2(10),rating number(5),age number(10)); Table created. SQL> insert into s2 values(&sid,'&sname',&rating,&age); Enter value for sid: 28 Enter value for sname: yuppy Enter value for rating: 9 Enter value for age: 25 old 1: insert into s2 values(&sid,'&sname',&rating,&age) new 1: insert into s2 values(28,'yuppy',9,25) pg. 44
Dept of Computer Science & Engineering
1 row created. SQL> / Enter value for sid: 31 Enter value for sname: lubber Enter value for rating: 8 Enter value for age: 55 old 1: insert into s2 values(&sid,'&sname',&rating,&age) new 1: insert into s2 values(31,'lubber',8,55) 1 row created. SQL> / Enter value for sid: 44 Enter value for sname: guppy Enter value for rating: 5 Enter value for age: 35 old 1: insert into s2 values(&sid,'&sname',&rating,&age) new 1: insert into s2 values(44,'guppy',5,35) 1 row created. SQL> / Enter value for sid: 58 Enter value for sname: rusty Enter value for rating: 10 Enter value for age: 35 old 1: insert into s2 values(&sid,'&sname',&rating,&age) new 1: insert into s2 values(58,'rusty',10,35) 1 row created. SQL> select * from s2; pg. 45
Dept of Computer Science & Engineering
SID SNAME RATING ---------- ---------- ---------- ---------28 yuppy 9 25 31 lubber 8 55 44 guppy 5 35 58 rusty 10 35
AGE
SQL> select sname from s1 union select sname from s2; SNAME ---------dustin guppy lubber rusty yuppy SQL> select sname from s1 union select sname from s2; SNAME ---------dustin lubber rusty yuppy lubber guppy rusty 7 rows selected. SQL> select sid from s1 intersect select sid from s2; pg. 46
Dept of Computer Science & Engineering
SID ---------31 58 SQL> select age from s1 minus select age from s2; AGE ---------45 56
output:ENO ENAME JOB ---------- ---------- ---------- ---------1001 STEVE SALESMAN 1002 ADAM CLERK 1003 EVE MANAGER 1004 JAMES DIRECTOR SAL 1500 1000 5220 7000
COUNT(*) ---------4
OUTPUT:-
EMPNO ENAME JOB SAL DEPTNO ---------- ---------- --------- ---------- ---------7369 SMITH CLERK 800 20 7499 ALLEN SALESMAN 1600 30 7521 WARD SALESMAN 1250 30 7566 JONES MANAGER 2975 20 7654 MARTIN SALESMAN 1250 30 7698 BLAKE MANAGER 2850 30 7782 CLARK MANAGER 2450 10 7788 SCOTT ANALYST 3000 20 7839 KING PRESIDENT 5000 10 7844 TURNER SALESMAN 1500 30 7876 ADAMS CLERK 1100 20 pg. 49
Dept of Computer Science & Engineering
30 20 10
APPLYING BY GROUP BY --SQL> select deptno,max(sal) from emp group by deptno; OUTPUT:DEPTNO ---------10 20 30 MAX(SAL) ---------5000 3000 2850
SQL> select deptno,min(sal) from emp group by deptno; OUTPUT:DEPTNO ---------10 20 30 MIN(SAL) ---------1300 800 950
SQL> select deptno,max(sal) from emp group by deptno having max(sal)<3000; OUTPUT:pg. 50
Dept of Computer Science & Engineering
DEPTNO ---------30
MAX(SAL) ---------2850
SQL>select deptno,min(sal) from emp group by deptno having min(sal)>1000; OUTPUT:DEPTNO MIN(SAL) ------------------10 1300 SQL> select ename,count(*) from emp group by deptno; OUTPUT:DEPTNO COUNT(*) ------------------10 3 20 5 30 6 3 rows selected.
CONVERSION FUNCTIONS(TO_CHAR) SQL>select to_char(65,'RN')from dual; OUTPUT:LXV SQL>select to_char(65,'rn')from dual; OUTPUT:lxv pg. 51
Dept of Computer Science & Engineering
SQL>select to_char(58,'s9999')from dual; OUTPUT:+58 SQL>select to_char(-100,'s9999')from dual; OUTPUT:-100 SQL> select to_char(41,'XXXX')from dual; OUTPUT:29 SQL> select to_char(10,'XXXX')from dual; OUTPUT:A SQL> select to_char(sysdate,'day')from dual; OUTPUT:MONDAY SQL> SELECT TO_CHAR(SYSDATE,'MONTH')FROM DUAL; OUTPUT:JANUARY SQL> SELECT TO_CHAR(SYSDATE,'YEAR')FROM DUAL; OUTPUT:TWO THOUSAND NINE SQL> select to_char(123456,'9g99g999')from dual; OUTPUT:1,23,456 SQL> select to_char(1234,'l9999')from dual; OUTPUT:$1234 SQL> select to_char(123456,'9g99g999d999')from dual; OUTPUT:1,23,456.000
STRING FUNCTIONS SQL>SELECT CONCAT(ORACLE,CORPORATION)FROM DUAL; OUTPUT:-ORACLECORPORATION SQL>SELECT LPAD(ORACLE,15,*)FROM DUAL; OUTPUT:-*********ORACLE SQL>SELECT RPAD(ORACLE,15,*)FROM DUAL; OUTPUT:-ORACLE********* SQL>SELECT LTRIM(SSMITHSS,S)FROM DUAL; OUTPUT:-MITHSS SQL>SELECT RTRIM(SSMITHSS,S)FROM DUAL; OUTPUT:-SSMITH SQL>SELECT LOWER(DBMS)FROM DUAL; OUTPUT:-dbms SQL>SELECT UPPER(dbms)FROM DUAL; OUTPUT:-DBMS SQL>SELECT INITCAP(ORACLE,CORPORATION)FROM DUAL; pg. 53
Dept of Computer Science & Engineering
OUTPUT:-Oracle Corporation SQL>SELECT LENGTH(DATABASE)FROM DUAL; OUTPUT:-8 SQL>SELECT SUBSTR(ABCDEFGHIJ3,4)FROM DUAL; OUTPUT:-CDEF SQL>SELECT INSTR('CORPORATE FLOOR','OR',3,2)FROM DUAL; OUTPUT:-14 DATE FUNCTIONS SQL>SELECT SYSDATE FROM DUAL; OUTPUT:-29-DEC-08
MONTHS_BETWEEN(SYSDATE,HIREDATE)FROM
NUMBER FUNCTIONS SQL> select round(12.36), round(14.63) from dual; OUTPUT:ROUND(12.36) -----------12 ROUND(14.63) -----------15
SQL> select floor(12.87), floor(11.23) from dual; OUTPUT:FLOOR(12.87) -----------12 FLOOR(11.23) -----------11
CEIL(16.23) ----------17
CEIL(12.78) ----------13
SQL> select trunc(56.63) from dual; OUTPUT:TRUNC(56.63) -----------56 SQL> select mod(11,4) from dual; OUTPUT:MOD(11,4) ---------3 SQL> select power(2,3) from dual; OUTPUT:POWER(2,3) ---------8 SQL> select sign(0),sign(34),sign(-56) from dual; OUTPUT:SIGN(0) ---------SIGN(34) ---------SIGN(-56) ---------pg. 57
Dept of Computer Science & Engineering
-1
SQL> select abs(12),abs(-89) from dual; OUTPUT:ABS(12) ABS(-89) ------------------12 89 SQL> select sqrt(25) from dual; OUTPUT:SQRT(25) -------5 INTRODUCTION TO PL/SQL PL/SQL stands for PROCEDURAL Language Extensions to SQL. PL/SQL extends SQL by adding programming structures and subroutines available in any high level language. PL/SQL can be used for both server-side and Client side Development. PL/SQL has syntax and rules that determine how programming statements work together. PL/SQL is not a stand alone Programming Language. PL/SQL is a part of the ORACLE RDBMS and hence can reside in two environments,the CLIENT and the SERVER. Any MODULE that is developed using PL/SQL can be moved easily between SERVER SIDE and CLIENT SIDE applications. Either in CLIENT/SERVER environments any PL/SQL Block or the PL/SQL Engine processes Subroutine. pg. 58
Dept of Computer Science & Engineering
PL/SQL Engine is a special component that processes and executes any PL/SQL statements and sends any SQL statement to the SQL statement processor. The SQL statement processes are always located on the ORACLE SERVER. As per the necessity the PL/SQL Engine can be located either at SERVER CLIENT When PL/SQL Engine is locted upon the SERVER,the whole PL/SQL block is passed to the PL/SQL Engine on the ORACLE SERVER. When the PL/SQL Engine is located upon the CLIENT,the PL/SQL processing is done on the CLIENT SIDE.All SQL statenents that are embedded within the PL/SQL block,are sent to the ORACLE SERVER for further processing. If the PL/SQL block does not contain any SQL statements,the entire block is executed on the CLIENT SIDE.
PL/SQL BLOCK
DECLARE --Declarations of memory variables,constants,cursors etc.,in PL/SQL BEGIN --SQL executable statements --PL/SQL executable statements EXCEPTION
pg. 59
Dept of Computer Science & Engineering
/*SQL or PL/SQL code to handle errors that may arise during the execution of the code block between BEGIN and EXCEPTION section END;
SYNTAX's of CONTROL STATEMENTS in PL/SQL 1. BRANCHING 2. SELECTION 3. LOOPING BRANCHING STATEMENTS 1.Simple IF 2.ELSIF 3.ELSE IF SIMPLE IF IF condition THEN statement1; statement2; END IF;
IF-THEN-ELSE STATEMENT
ELSIF STATEMENTS IF condition1 THEN statement1; ELSIF condition2 THEN statement2; ELSIF condition3 THEN statement3; ELSE statementn; END IF;
NESTED IF
IF condition THEN statement1; ELSE IF condition THEN statement2; ELSE statement3; END IF; END IF; ELSE statement3; pg. 61
Dept of Computer Science & Engineering
END IF;
SELECTION IN PL/SQL
SIMPLE CASE
CASE SELECTOR WHEN Expr1 THEN statement1; WHEN Expr2 THEN statement2; : : : ELSE statementn; END CASE;
SEARCHED CASE
CASE WHEN searchcondition1 THEN statement1; WHEN searchcondition2 THEN statement2; : : : ELSE pg. 62
Dept of Computer Science & Engineering
ITERATIONS IN PL/SQL
SIMPLE LOOP
LOOP statement1; EXIT [ WHEN Condition]; END LOOP; WHILE LOOP WHILE condition LOOP statement1; statement2; END LOOP;
FOR LOOP FOR counter IN [REVERSE] LowerBound..UpperBound LOOP statement1; statement2; END LOOP; pg. 63
Dept of Computer Science & Engineering
WRITE A PL/SQL PROGRAM TO SWAP TWO NUMBERS WITH OUT TAKING THIRD VARIABLE
declare a number(10); b number(10); begin a:=&a; b:=&b; dbms_output.put_line('THE PREV VALUES OF A AND B WERE'); dbms_output.put_line(a); dbms_output.put_line(b); a:=a+b; b:=a-b; a:=a-b; dbms_output.put_line('THE VALUES OF A AND B ARE'); dbms_output.put_line(a); dbms_output.put_line(b); end;
OUTPUT: SQL> @ SWAPPING.SQL 17 / Enter value for a: 5 old 5: a:=&a; new 5: a:=5; Enter value for b: 3 old 6: b:=&b; new 6: b:=3; THE PREV VALUES OF A AND B WERE pg. 64
Dept of Computer Science & Engineering
declare a number(10); b number(10); c number(10); begin dbms_output.put_line('THE PREV VALUES OF A AND B WERE'); dbms_output.put_line(a); dbms_output.put_line(b); a:=&a; b:=&b; c:=a; a:=b; b:=c; dbms_output.put_line('THE VALUES OF A AND B ARE'); dbms_output.put_line(a); dbms_output.put_line(b); end; pg. 65
Dept of Computer Science & Engineering
OUTPUT: SQL> @ SWAPPING2.SQL 19 / Enter value for a: 5 old 6: a:=&a; new 6: a:=5; Enter value for b: 3 old 7: b:=&b; new 7: b:=3; THE PREV VALUES OF A AND B WERE 5 3 THE VALUES OF A AND B ARE 3 5 PL/SQL procedure successfully completed.
if a=b then dbms_output.put_line('BOTH ARE EQUAL'); elsif a>b then dbms_output.put_line('A IS GREATER'); else dbms_output.put_line('B IS GREATER'); end if; end; OUTPUT: SQL> @ GREATESTOF2.sql 13 / Enter value for a: 5 old 5: a:=&a; new 5: a:=5; Enter value for b: 2 old 6: b:=&b; new 6: b:=2; A IS GREATER PL/SQL procedure successfully completed.
pg. 67
Dept of Computer Science & Engineering
WRITE A PL/SQL PROGRAM TO FIND THE LARGEST OF THREE NUMBERS declare a number; b number; c number; begin a:=&a; b:=&b; c:=&c; if a=b and b=c and c=a then dbms_output.put_line('ALL ARE EQUAL'); elsif a>b and a>c then dbms_output.put_line('A IS GREATER'); elsif b>c then dbms_output.put_line('B IS GREATER'); else dbms_output.put_line('C IS GREATER'); end if; end; OUTPUT: SQL> @ GREATESTOF3.sql 17 / Enter value for a: 8 old 6: a:=&a; new 6: a:=8; Enter value for b: 9 old 7: b:=&b; new 7: b:=9; pg. 68
Dept of Computer Science & Engineering
Enter value for c: 7 old 8: c:=&c; new 8: c:=7; B IS GREATER PL/SQL procedure successfully completed.
WRITE A PL/SQL PROGRAM TO FIND THE TOTAL AND AVERAGE OF 6 SUBJECTS AND DISPLAY THE GRADE
declare java number(10); dbms number(10); co number(10); se number(10); es number(10); ppl number(10); total number(10); avgs number(10); per number(10); begin dbms_output.put_line('ENTER THE MARKS'); java:=&java; dbms:=&dbms; co:=&co; se:=&se; es:=&es; pg. 69
Dept of Computer Science & Engineering
ppl:=&ppl; total:=(java+dbms+co+se+es+ppl); per:=(total/600)*100; if java<40 or dbms<40 or co<40 or se<40 or es<40 or ppl<40 then dbms_output.put_line('FAIL'); if per>75 then dbms_output.put_line('GRADE A'); elsif per>65 and per<75 then dbms_output.put_line('GRADE B'); elsif per>55 and per<65 then dbms_output.put_line('GRADE C'); else dbms_output.put_line('INVALID INPUT'); end if; dbms_output.put_line('PERCENTAGE IS '||per); dbms_output.put_line('TOTAL IS '||total); end;
OUTPUT: SQL> @ GRADE.sql 31 / Enter value for java: 80 old 12: java:=&java; new 12: java:=80; Enter value for dbms: 70 old 13: dbms:=&dbms; new 13: dbms:=70; Enter value for co: 89 old 14: co:=&co; new 14: co:=89; Enter value for se: 72 old 15: se:=&se; pg. 70
Dept of Computer Science & Engineering
new 15: se:=72; Enter value for es: 76 old 16: es:=&es; new 16: es:=76; Enter value for ppl: 71 old 17: ppl:=&ppl; new 17: ppl:=71; GRADE A PERCENTAGE IS 76 TOTAL IS 458 PL/SQL procedure successfully completed.
pg. 71
Dept of Computer Science & Engineering
WRITE A PL/SQL PROGRAM TO CHECK WHETHER THE GIVEN NUMBER IS AN ARMSTRONG NUMBER OR NOT
declare a number; t number; arm number; d number; begin a:=&a; t:=a; arm:=0; while t>0 loop d:=mod(t,10); arm:=arm+power(d,3); t:=trunc(t/10); end loop; if arm=a then dbms_output.put_line('given no is an armstrong no'|| a); else dbms_output.put_line('given no is not an armstrong no'); end if; end; OUTPUT: SQL> @ ARMSTRONGNUM.sql Enter value for a: 407 old 7: a:=&a; new 7: a:=407; given no is an armstrong no407 pg. 72
Dept of Computer Science & Engineering
PL/SQL procedure successfully completed. SQL> / Enter value for a: 406 old 7: a:=&a; new 7: a:=406; given no is not an armstrong no PL/SQL procedure successfully completed.
declare a number; d number:=0; sum1 number:=0; begin a:=&a; while a>0 loop d:=mod(a,10); sum1:=sum1+d; a:=trunc(a/10); end loop; dbms_output.put_line('sum is'|| sum1); end; OUTPUT: SQL> @ SUMOFDIGITS.sql 16 / pg. 73
Dept of Computer Science & Engineering
Enter value for a: 564 old 7: a:=&a; new 7: a:=564; sum is15 PL/SQL procedure successfully completed.
WRITE A PL/SQL PROGRAM TO DISPLAY THE NUMBER IN REVERSE ORDER declare a number; rev number; d number; pg. 74
Dept of Computer Science & Engineering
begin a:=&a; rev:=0; while a>0 loop d:=mod(a,10); rev:=(rev*10)+d; a:=trunc(a/10); end loop; dbms_output.put_line('no is'|| rev); end; OUTPUT: SQL> @ REVERSE2.sql 16 / Enter value for a: 536 old 6: a:=&a; new 6: a:=536; no is635 PL/SQL procedure successfully completed.
pg. 75
Dept of Computer Science & Engineering
WRITE A PL/SQL PROGRAM TO DISPLAY NUMBER IN REVERSE ORDER USING STRING FUNCTION
declare gn varchar2(5):=4567; sl number(2); rv varchar2(5); begin sl:=length(gn); for i in reverse 1..sl loop rv:=rv||substr(gn,i,1); end loop; dbms_output.put_line('given no r is'||gn); dbms_output.put_line('given no in reverse order is'||rv); end;
OUTPUT: SQL> @ REVERSE.sql 14 / given no r is4567 given no in reverse order is7654 pg. 76
Dept of Computer Science & Engineering
WRITE A PL/SQL PROGRAM TO CHECK WHETHER THE GIVEN NUMBER IS PRIME OR NOT
declare a number; c number:=0; i number; begin a:=&a; for i in 1..a loop if mod(a,i)=0 then c:=c+1; end if; end loop; if c=2 then dbms_output.put_line(a ||'is a prime number'); else dbms_output.put_line(a ||'is not a prime number'); end if; end; pg. 77
Dept of Computer Science & Engineering
OUTPUT: SQL> @ PRIME.SQL 19 / Enter value for a: 11 old 6: a:=&a; new 6: a:=11; 11is a prime number PL/SQL procedure successfully completed.
OUTPUT: SQL> @ FACTORIAL.sql 12 / Enter value for n: 5 old 5: n:=&n; new 5: n:=5; the factorial is120 PL/SQL procedure successfully completed.
pg. 79
Dept of Computer Science & Engineering
declare a number; b number; c number; n number; i number; begin n:=&n; a:=0; b:=1; dbms_output.put_line(a); dbms_output.put_line(b); for i in 1..n-2 loop c:=a+b; dbms_output.put_line(c); a:=b; b:=c; end loop; end;
OUTPUT: SQL> @ FIBONACCI.sql 21 / Enter value for n: 5 old 8: n:=&n; new 8: n:=5; 0 pg. 80
Dept of Computer Science & Engineering
WRITE A PL/SQL CODE BLOCK TO CALCULATE THE AREA OF A CIRCLE FOR A VALUE OF RADIUS VARYING FROM 3 TO 7. STORE THE RADIUS AND THE CORRESPONDING VALUES OF CALCULATED AREA IN AN EMPTY TABLE NAMED AREAS ,CONSISTING OF TWO COLUMNS RADIUS & AREA TABLE NAME:AREAS
RADIUS
AREA
SQL> create table areas(radius number(10),area number(6,2)); Table created. --PROGRAM declare pi constant number(4,2):=3.14; radius number(5):=3; pg. 81
Dept of Computer Science & Engineering
area number(6,2); begin while radius<7 loop area:=pi*power(radius,2); insert into areas values(radius,area); radius:=radius+1; end loop; end; OUTPUT: SQL> @ AREAOFCIRCLE.SQL 13 / PL/SQL procedure successfully completed. SQL> SELECT * FROM AREAS; RADIUS AREA ------------------3 28.26 4 50.24 5 78.5 6 113.04 WRITE A PL/SQL CODE BLOCK THAT WILL ACCEPT AN ACCOUNT NUMBER FROM THE USER,CHECK IF THE USERS BALANCE IS LESS THAN MINIMUM BALANCE,ONLY THEN DEDUCT RS.100/FROM THE BALANCE.THIS PROCESS IS FIRED ON THE ACCT TABLE.
SQL> create table acct(name varchar2(10),cur_bal number(10),acctno number(6,2)); SQL> insert into stud values('&sname',&rollno,&marks); pg. 82
Dept of Computer Science & Engineering
SQL> select * from acct; ACCTNO NAME ------------------777 sirius 765 john 855 sam 353 peter --PROGRAM declare mano number(5); mcb number(6,2); minibal constant number(7,2):=1000.00; fine number(6,2):=100.00; begin mano:=&mano; select cur_bal into mcb from acct where acctno=mano; if mcb<minibal then update acct set cur_bal=cur_bal-fine where acctno=mano; end if; end; CUR_BAL ---------10000 1000 500 800
OUTPUT: SQL> @ BANKACC.sql 13 / Enter value for mano: 855 old 7: mano:=&mano; new 7: mano:=855; PL/SQL procedure successfully completed. pg. 83
Dept of Computer Science & Engineering
SQL> select * from acct; ACCTNO ---------777 765 855 353 NAME ---------sirius john sam peter CUR_BAL ---------10000 1000 400 800
pg. 84
Dept of Computer Science & Engineering
PL/SQL PROGRAMS- FUNCTIONS CUBE create or replace function cube(n number) return number as c number; begin c:=n*n*n; return c; end;
output:SQL> @cub / Function created. SQL> select cube(6)from dual; CUBE(6) -----216
pg. 85
Dept of Computer Science & Engineering
FACTORIAL create or replace function fact(n number)return number as fac number:=1; begin for i in 1..n loop fac:=fac*i; end loop; return fac; end; output:pg. 86
Dept of Computer Science & Engineering
SQL> @func.sql; 12 / Function created. SQL> select fact(5) from dual; FACT(5) ---------120
IN- PROCEDURE create or replace procedure inpro(dno number,depname varchar2,city varchar2) as pg. 87
Dept of Computer Science & Engineering
OUTPUT:SQL> select * from dept; DEPTNO DNAME LOC ---------- -------------- ------------10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
SQL> exec inpro(50,'MARKETING','HYDERABAD'); PL/SQL procedure successfully completed. SQL> select * from dept; DEPTNO DNAME LOC ---------- -------------- ------------10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON pg. 88
Dept of Computer Science & Engineering
50 MARKETING
HYDERABAD
OUT-PROCEDURE create or replace procedure outpro(dno number,depname out varchar2,city out varchar2) as begin select dname,loc into depname,city from dept where deptno=dno; end; OUTPUT: SQL> @proc2 / Procedure created. SQL> declare 2 x varchar2(20); 3 y varchar2(30); 4 ch number; 5 begin 6 ch:=&ch; 7 outpro(ch,x,y); 8 dbms_output.put_line(x || ' ' || y); 9 end; 10 / pg. 89
Dept of Computer Science & Engineering
Enter value for ch: 10 old 6: ch:=&ch; new 6: ch:=10; ACCOUNTING NEW YORK PL/SQL procedure successfully completed.
BEFORE TRIGGER create or replace trigger tday before insert or delete or update on emp declare we varchar2(10); begin we:=to_char(sysdate,'dy'); if we='sat' or we='sun' then raise_application_error(-20015,'its a weekend'); end if; end; output:pg. 90
Dept of Computer Science & Engineering
SQL> @trig1 / Trigger created. SQL> delete from emp where empno=7902; ERROR at line 1: ORA-20015: its a weekend ORA-06512: at "SCOTT.TDAY", line 6 ORA-04088: error during execution of trigger 'SCOTT.TDAY'
create or replace trigger ttime after insert or delete or update on emp1 for each row declare tt varchar2(5); begin tt:=to_char(sysdate,'hh24'); if tt not between 10 and 17 then raise_application_error(-20010,'not working hours'); end if; end;
output:SQL> @trig2; 10 / Trigger created. SQL> update emp1 set empno=7777 where empno=7902; * ERROR at line 1: ORA-20010: not working hours ORA-06512: at "SCOTT.TTIME", line 6 ORA-04088: error during execution of trigger 'SCOTT.TTIME'
pg. 92
Dept of Computer Science & Engineering