sql queries

21
- 1 – CREATE 1. CREATE TABLE CUSTOMER (ID NUMBER(5,0) CONSTRAINT ID_KEY PRIMARY KEY, COMPANYNAME VARCHAR2(50), LASTNAME VARCHAR2(50) NOT NULL, FIRSTNAME VARCHAR2(100) NOT NULL, ADDRESS VARCHAR2(100), CITY VARCHAR2(50), STATE CHAR(2), ZIPCODE VARCHAR2(10), PHONE VARCHAR2(20), FAX VARCHAR2(20), UNIQUE ( LASTNAME,FIRSTNAME), CHECK ( STATE IN ( 'MS','UP','GU','HP','AS','MP') ) ); 2. CREATE TABLE STOCK ( ID NUMBER(5,0) PRIMARY KEY, UNIT PRICE NUMBER(10,2) NOT NULL, ONHAND NUMBER(5,0), REORDER NUMBER(5,0), DES VARCHAR2(200) ); 3. CREATE TABLE ORDERS ( ID NUMBER(5,0) PRIMARY KEY , CUSTID NUMBER(5,0) NOT NULL, SHIPDATE DATE, PADIDATE DATE STATUS CHAR(1), CHECK ( STATUS IN('F','B')), FOREIGN KEY ( CUSTID) REFERENCES CUSTOMER ); 4. CREATE TABLE ITEM ( ID NUMBER(5,0), ORDERID NUMBER(5,0), STOCKID NUMBER(5.0) NOT NULL, QUANTITY NUMBER(5,0) NOT NULL, TOTAL NUMBER(10,2), PRIMARY KEY (ID,ORDERID), FOREIGN KEY (ODERID) REFERENCES ORDERS ON DELETE CASCEDE, FOREIGN KEY (STOCKID) REFERENCES STOCK ); 5. CREATE TABLE XYZ AS ( SELECT ITEM.ID,ITEM.ODERID,ITEM.STOCKID, FROM ITEM); 6. CREATE VIEW ITEM_VIEW AS SELECT ITEM.ID,ITEM.ORDERID FROM ITEM; ALTER 1. ALTER TABLE CUSTOMER MODIFY ( COMPANYNAME VARCHAR2(30) ); 2. ALTER TABLE CUSTOMER MODIFY ( STATE DEFAULT 'MS')

Upload: sharma-divya

Post on 23-Dec-2015

25 views

Category:

Documents


1 download

DESCRIPTION

SQL Project

TRANSCRIPT

Page 1: SQL QUERIES

- 1 –

CREATE

1.CREATE TABLE CUSTOMER(ID NUMBER(5,0) CONSTRAINT ID_KEY PRIMARY KEY,COMPANYNAME VARCHAR2(50),LASTNAME VARCHAR2(50) NOT NULL,FIRSTNAME VARCHAR2(100) NOT NULL,ADDRESS VARCHAR2(100),CITY VARCHAR2(50),STATE CHAR(2),ZIPCODE VARCHAR2(10),PHONE VARCHAR2(20),FAX VARCHAR2(20),UNIQUE ( LASTNAME,FIRSTNAME),CHECK ( STATE IN ( 'MS','UP','GU','HP','AS','MP') ) );

2.CREATE TABLE STOCK( ID NUMBER(5,0) PRIMARY KEY,UNIT PRICE NUMBER(10,2) NOT NULL,ONHAND NUMBER(5,0),REORDER NUMBER(5,0),DES VARCHAR2(200) );

3.CREATE TABLE ORDERS( ID NUMBER(5,0) PRIMARY KEY ,CUSTID NUMBER(5,0) NOT NULL,SHIPDATE DATE,PADIDATE DATESTATUS CHAR(1),CHECK ( STATUS IN('F','B')),FOREIGN KEY ( CUSTID) REFERENCES CUSTOMER );

4.CREATE TABLE ITEM( ID NUMBER(5,0),ORDERID NUMBER(5,0), STOCKID NUMBER(5.0) NOT NULL,QUANTITY NUMBER(5,0) NOT NULL,TOTAL NUMBER(10,2),PRIMARY KEY (ID,ORDERID),FOREIGN KEY (ODERID) REFERENCES ORDERS ON DELETE CASCEDE,FOREIGN KEY (STOCKID) REFERENCES STOCK );

5.CREATE TABLE XYZ AS ( SELECT ITEM.ID,ITEM.ODERID,ITEM.STOCKID, FROM ITEM);

6.CREATE VIEW ITEM_VIEW AS SELECT ITEM.ID,ITEM.ORDERID FROM ITEM;

ALTER1.ALTER TABLE CUSTOMER MODIFY ( COMPANYNAME VARCHAR2(30) );

2.ALTER TABLE CUSTOMER MODIFY ( STATE DEFAULT 'MS')

3.ALTER TABLE CUSTOMER ADD ( BAL NUMBER(9,2));

4. ALTER TABLE CUSTOMER MODIFY STATE CONSTRAINT STS_CON NOT NULL;

5. ALTER TABLE CUSTOMER DROP CONSTRAINT STS_CON;

6.ALTER TABLE ORDERS DISABLE PRIMARY KEY;

Page 2: SQL QUERIES

- 2 –

SELECT STATEMENTS

SELECT JOB FROM EMP

SELECT DISTINCT JOB FROM EMP

1) EQUALITY

SELECT * FROM EMP WHERE SAL =1700;

2) INEQUALITY TEST [ != , <> ]

SELECT * FROM EMP WHERE SAL !=1700;

3) GREATER THAN & LESS THAN

SELECT * FROM EMP WHERE SAL > 1700;

SELECT * FROM EMP WHERE SAL < 1700;

4) GREATER THAN EQUAL TO OR LESS THAN EQUAL TO

SELECT * FROM EMP WHERE SAL >= 1700;

SELECT * FROM EMP WHERE SAL <= 1700;

5) IN, ANY

SELECT * FROM EMP WHERE JOB IN('CLERK','ANALYST');

SELECT * FROM EMP WHERE SAL IN ( SELECT SAL FROM EMP WHEREDEPTNO = 30 );

SELECT LASTNAME, FIRSTNAME, ADDRESS, STATE, ZIPCODE FROM CUSTOMERS WHERE STATE IN ( ‘MS’, ‘AP’);

SELECT * FROM EMP WHERE SAL = ANY ( SELECT SAL FROM EMPWHERE DEPTNO = 30 );

6) NOT IN

SELECT * FROM EMP WHERE SAL NOT IN ( SELECT SAL FROM EMPWHERE DEPTNO = 30 );

SELECT * FROM EMP WHERE JOB NOT IN ('CLERK', 'ANALYST');

SELECT ID, LASTNAME FROM CUSTOMERSWHERE (FIRSTNAME IS NULL) OR (ADDRESS IS NULL);

SELECT ID, LASTNAME FROM CUSTOMERS WHEREID NOT IN ( SELECT CUSTOMERID FROM ORDERS );

7) ALL

SELECT * FROM EMP WHERE SAL >= ALL(1400,3000);

8) BETWEEN

SELECT * FROM EMP WHERE SAL BETWEEN 2000 AND 3000;

9) EXISTS

SELECT DNAME,DEPTNO FROM DEPT WHERE EXISTS ( SELECT * FROMEMP WHERE DEPT.DEPTNO = EMP.DEPTNO);

10 ) NULL

SELECT * FROM EMP WHERE COMM IS NULL;

11) LIKE

Page 3: SQL QUERIES

- 3 –

SELECT SAL FROM EMP WHERE ENAME LIKE'SM%';

SELECT SAL FROM EMP WHERE ENAME LIKE'SMITH_';

12) NOT

SELECT * FROM EMP WHERE NOT ( JOB IS NULL );

SELECT * FROM EMP WHERE NOT( SAL BETWEEN 1000 AND 2000 );

13) AND

SELECT * FROM EMP WHERE JOB = 'CLERK' AND DEPTNO =10 ;

SELECT ID FROM ORDERS WHERE ORDERDATE BETWEEN ‘01-JUN-96’ AND ‘30-JUN-96’;

14) OR

SELECT * FROM EMP WHERE JOB = 'CLERK' OR DEPTNO = 10 ;

INSERT

INSERT INTO EMP VALUES ( ‘ ‘,’ ‘, ‘ ‘);

INSERT INTO EMP (EMPNO, ENAME) VALUES (1000,’IAN SMITH’);

INSERT INTO ORDERHISTORY(SELECT * FROM ORDERS WHERE ORDERDATE < ‘31-MAY-96’);

TWO SEQUENCES INTO ONE RESULT

CREATE TWO TABLES OF ATLEAST ONE FIELD PART:-

ORDER_LIST1 ORDER_LIST2PART PART----- ------SPARKPLUG CRANKSHAFTFUELPUMP TAILPIPEFUELPUMP TAILPIPETAILPIPE

1) UNION[ALL DISTINC ROWS SELECTED BY EITHER QUERIES]

SELECT PART FROM ODER_LIST1UNIONSELECT PART FROM ODER_LIST2;

UNION--------SPARKPLUGFUELPUMPTAILPIPECRANKSHAFT

2) UNION ALL[ ALL ROWS SELECTED BY EITHER QURY INCLUDING ALL DUPLICATES ]

SELECT PART FROM ODER_LIST1UNION ALLSELECT PART FROM ODER_LIST2;

UNION ALL------- 1&2

3) INTERSECT

Page 4: SQL QUERIES

- 4 –

[ ALL DISTINCT ROWS SELECTED BY BOTH QUERIES, COMMON IN BOTH ]

SELECT PART FROM ODER_LIST1INTERSECT SELECT PART FROM ODER_LIST2;

INTERSECT---------TAILPIPE

4) MINUS[ ALL DISTINCT ROWS SELECTED BY FIRST QUERY BUT NOT THE SECOND ]

SELECT PART FROM ODER_LIST1MINUSSELECT PART FROM ODER_LIST2;

MINUS--------SPARKPLUGFUELPUMP

5) GROUP BY

SELECT DEPTNO,MIN(SAL),MAX(SAL) FROM EMP GROUP BY DEPTNO;

SELECT DEPTNO,MIN(SAL),MAX(SAL) FROM EMP WHEREJOB = 'CLERK' GROUP BY DEPTNO;

6) HAVING

SELECT DEPTNO,MIN(SAL),MAX(SAL) FROM EMP WHEREJOB = 'CLERK' GROUP BY DEPTNO HAVING MIN(SAL) < 1000;

7) ORDER

SELECT * FROM EMP WHERE JOB = 'SALESMAN' ORDER BY COMM DESC;

SELECT ENAME,DEPTNO,SAL FROM EMP ORDER BY DEPTNO ASC, SAL DESC;

SELECT ENAME,DEPTNO,SAL FROM EMP ORDER BY 2 ASC, 3 DESC;

SELECT ID, LASTNAME, FIRSTNAME FROM CUSTOMERS ORDER BY LASTNAME, FIRSTNAME

8) JOINS

SELECT ENAME, EMP.DEPTNO,DNAME FROM EMP, DEPT WHEREEMP.DEPTNO=DEPT.DEPTNO;

NUMBER FUNCTIONSTHESE FUNCTIONS ACCEPT NUMERIC VALUES & RETURNS NUMERIC VALUES. ACCURATE UPTO 38 DECIMAL DIGITS.

1)ABS

SELECT ABS(-15) "ABSOLUTE" FROM DUAL;

2) CEIL

SELECT CEIL(15.7) "CEILING" FROM DUAL;

3) FLOOR

SELECT FLOOR(15.7) "FLOOR" FROM DUAL;

4) MOD

SELECT MOD(11,4) " MOD" FROM DUAL;

5) POWER

Page 5: SQL QUERIES

- 5 –

SELECT POWER(3,2) " RAISED" FROM DUAL;

6) ROUND

SELECT ROUND(15.193,1) "ROUND" FROM DUAL;

7) SIGN

SELECT SIGN(-15) "SIGN" FROM DUAL;

8) SQRT

SELECT SQRT(26) "SQARE ROOT" FROM DUAL ;

9) TRUNC

SELECT TRUNC(15.79,+1) "TRUNCATE" FROM DUAL;

10) COUNT

SELECT COUNT(DISTINCT JOB) FROM EMP

SELECT COUNT(*) FROM EMP

11) MAX

SELECT MAX(SAL) FROM EMP;

CHAR FUNCTIONS

1) CHR

SELECT CHR(75) "CHARACTER" FROM DUAL;

2) CONCAT SELECT CONCAT('CHAR1','CHAR2') "CHARACTER" FROM DUAL;

SELECT CONCAT(CONCAT(FIRSTNAME, ‘ ‘), LASTNAME) NAMEFROM CUSTOMERS;

3) INITCAP

SELECT INITCAP ('THE SOAP') "CHARACTER" FROM DUAL;

4)LOWER

SELECT LOWER('MR SAMUEL') "CHARACTER" FROM DUAL;

MR SAMUAEL

5) LPAD

SELECT LPAD('PAGE1',15,'*') "CHARACTER" FROM DUAL;

6)LTRIM

SELECT LTRIM('XYXYXYLAST','XY') "CHARACTER" FROM DUAL;

XYLAST

7)RTRIM

SELECT RTRIM('TURNERXXXY','XY') "CHARACTER" FROM DUAL;

TURNERXX

8)RPAD

SELECT RPAD(ENAME,12,'AB') "NAME" FROM EMP;

TURNERABABA

Page 6: SQL QUERIES

- 6 –

9)REPLACE

SELECT REPLACE('JACK AND JUE','J','BL') "CHARACTER" FROM DUAL;

BLACK AND BLUE

10)SOUNDEX SELECT ENAME FROM EMP WHERE SOUNDEX(ENAME) = SOUNDEX('SMYTHE')

11)SUBSTR

SELECT SUBSTR('ABCDEFG',3,2) "CHARACTER" FROM DUAL;

CD

SUBSTR('ABCDEFG',-3,2)

EF

12)UPPER

SELECT UPPER('LARGE') "CHARACTER" FROM DUAL;

LARGE

CHARACTER FUNCTIONS RETURNING NUMBER VALUES

1)ASCII

SELECT ASCII('Q') "VALUE" FROM DUAL;

81

2)INSTR

SELECT INSTR('CORPORATE FLOOR','OR',3,2) "VALUE" FROM DUAL;

14

INSTR('CORPORATE FLOOR','OR',-3,2)

2

3)LENGTH

SELECT LENGTH('CANDIDI') "VALUE" FROM DUAL;

7

Conversion Functions

1)TO_CHAR - CONVERTS DATES & NUMBERS TO STRINGS

SELECT EMPNO, ENAME, TOCHAR(HIREDATE, ‘MONTH DD, YYYY HH:MIPM’)HDATE, ROUND(HIREDATE, ‘MM’) FROM EMP;

2)TO_NUMBER - CONVERTS DATES & STRINGS TO NUMBERS

3)TO_DATE -CONVERTS CHARACTERS & NUMBERS TO DATES

4)CHARTOROWID -CONVERTS CHARACTERS TO A PSEUDO COLUMN ROWID

5)ROWIDTOCHAR -CONVERTS A ROWID TO A CHARACTERS.

Date Functions

1) ADD_MONTHS - ADD MONTHS TO ONE DATE TO GET ANOTHER.

Page 7: SQL QUERIES

- 7 –

ADD_MONTHS(DATE,VALUE)

SELECT EMPNO, ENAME, HIREDATE, ADD_MONTHS ( HIREDATE, 8) FROM EMP;

2)MONTHS_BETWEEN - NUMBER OF MONTHS BETWEEN 2 DATES

MONTHS_BETWEEN(DATE1,DATE2)

3)LAST_DAY - THE LAST DAY OF DATE'S MONTHS

LAST_DAY(SYSDATE)

4)NEXT_DAY - DATE OF NEXT OCCURRENCE OF A PARTICULAR DAY OF THE WEEK

NEXT_DAY(SYS_DATE,'THURSDAY')

5)NEW_TIME - CONVERSION BETWEEN TIME ZONES

6)TRUNC - DATE WITH TIME ELLMINATED

DESC

DESC TABLE_NAME;DESCRIBES THE SAID TABLE IN TERMS OF FIELDS.

SELECT * FROM TAB WHERE TYPE = ‘TABLE’;THIS WILL LIST ALL THE TABLES STORED.

SELECT * FROM TAB;THIS WILL LIST ALL THE TABLES, SYNOYMNS, VIEWS.

SELECT * FROM USER_TRIGGERS;THIS WILL LIST ALL THE THE TRIGGERS CREATED BY THE USERS.

SELECT TRIGGER_NAME, TRIGGER_BODY FROM USER_TRIGGERS;THIS WILL DISPLAY ALL THE TRIGGERS WITH THE NAME AND THE ACTUAL BODY OF THE TRIGGER.

UPDATE ORDERS SET CUSTOMERID =(SELECT ID FROM CUSTOMERS WHERE LASTNAME = ‘KING’ AND FIRSTNAME = ‘MARTIN’)WHERE ID = 562;

DELETE FROM ORDERHISTORY;

Page 8: SQL QUERIES

- 8 –

DATABASES TRIGGERS

1.

CREATE OR REPLACE TRIGGER USR_CHECKBEFOREUPDATE OR INSERT OR DELETEON DEPT DECLARE USR VARCHAR2(10);BEGIN SELECT USER INTO USR FROM DUAL;IF USR <> 'SCOTT' THEN RAISE_APPLICATION_ERROR(-20000,'INVALID USER');END IF;END;

2.

CREATE OR REPLACE TRIGGER TIME_CHECKBEFOREUPDATE OR INSERT OR DELETEON EMP

BEGIN

IF TO_CHAR(SYSDATE,'DY')='SAT' OR TO_CHAR(SYSDATE,'DY')='SUN' THENRAISE_APPLICATION_ERROR(-20501,’CHANGES NOT MADE DURING WEEKENDS');END IF;IF TO_CHAR(SYSDATE,'HH24') < 8 OR TO_CHAR(SYSDATE,'HH24') >= 18 THENRAISE_APPLICATION_ERROR(-20501,’CHANGES MADE DURING OFFICE HOURS ONLY');END IF;

END;

3. CREATE OR REPLACE TRIGGER SAL_CKECKBEFOREUPDATE OR INSERT OF SAL,JOBON EMPOF EACH ROWDECLARE

V_MINSAL NUMBER;V_MAXSAL NUMBER;

BEGINSELECT MINSAL,MAXSAL INTO V_MINSAL,V_MAXSAL FROM SALGRADE WHERE JOB = :NEW.JOB;

IF :NEW.SAL < V_MINSAL OR :NEW.SAL > V_MAXSAL THENRAISE_APPLICATION_ERROR(-20505,'SAL NOT WITH IN THE RANGE');END IF;

END;

4.CREATE TWO TABLES IF NOT AVAILABLEITEM STOCK**** ******STOCKID IDQTY ITEMDESCTOTAL UNITPRICE

CREATE TABLE ITEM(STOCKID NUMBER(4,0),QTY NUMBER(5,0),

Page 9: SQL QUERIES

- 9 –

TOTAL NUMBER(7,2));

CREATE TABLE STOCK(ID NUMBER (4,0),ITEMDESC VARCHAR2(20),UNITPRICE NUMBER (7,2));

CREATE OR REPLACE TRIGGER LINE_TOTALBEFOREUPDATE OR INSERT OF QTYON ITEMFOR EACH ROWDECLARE

V_ITEMPRICE REAL;BEGIN

SELECT UNITPRICE INTO V_ITEMPRICE FROM STOCK WHERE ID = :NEW.STOCKID;

:NEW.TOTAL := :NEW.QTY * V_ITEMPRICE;END LINE_TOTAL;

5.SERVER PROGRAMMINGSTAT_LOG TABLE**********USR_NAME VARCHAR2(10)STAT VARCHAR(10)

CREATE TABLE STAT_LOG( USR_NAME VARCHAR2(10),STAT VARCHAR(10));

CREATE OR REPLACE TRIGGER STAT_LOGAFTERDELETE OR UPDATE OR INSERT ON DEPTDECLARE

USR VARCHAR2(10);DES VARCHAR2(10);

BEGINSELECT USER INTO USR FROM DUAL;

IF INSERTING THENDES := 'INSERT';

END IF;

IF UPDATING THENDES := 'UPDATE';

END IF;

IF DELETING THENDES := 'DELETE';

END IF;

INSERT INTO STATLOG VALUES(USR,DES);

END ;

6.CREATE TRIGGER reorder /* triggering event */ AFTER UPDATE OF qty_on_hand ON inventory -- table FOR EACH ROW /* trigger constraint */ WHEN (new.reorderable = 'T') BEGIN /* trigger action */ IF :new.qty_on_hand < :new.reorder_point THEN

INSERT INTO pending_orders VALUES (:new.part_no, :new.reorder_qty, SYSDATE);

Page 10: SQL QUERIES

- 10 –

END IF; END;

7.CREATE TRIGGER check_salary BEFORE INSERT OR UPDATE OF sal, job ON emp FOR EACH ROW WHEN (new.job != 'PRESIDENT') DECLARE minsal NUMBER; maxsal NUMBER;

BEGIN /* Get salary range for a given job from table sals. */ SELECT losal, hisal INTO minsal, maxsal FROM sals WHERE job = :new.job; /* If salary is out of range, increase is negative, * * or increase exceeds 10%, raise an exception. */ IF (:new.sal < minsal OR :new.sal > maxsal) THEN raise_application_error(-20225, 'Salary out of range');

ELSIF (:new.sal < :old.sal) THEN raise_application_error(-20230, 'Negative increase'); ELSIF (:new.sal > 1.1 * :old.sal) THEN raise_application_error(-20235, 'Increase exceeds 10%'); END IF; END;

PROCEDURES

1.CREATE PROCEDURE DELETEEMP (ENO IN INTEGER) ASEMPNAME VARCHAR2(20);MGRNO INTEGER;BEGIN

SELECT ENAME,MGR INTO EMPNAME, MGRNOFROM EMP WHERE EMPNO = ENO;INSERT INTO EMP_LOG VALUES(ENO,EMPNAME,MGRNO);DELETE FROM EMP WHERE EMPNO = ENO;

EXCEPTION WHEN NO_DATA_FOUND THENRAISE_APPLICATION_ERROR(-20506,'INVALID EMPLOYEE');

END DELETEEMP;

2.CREATE PROCEDURE DELETECUST( CUSTID IN INTEGER) ASDECLARELAST VARCHAR2(20);FIRST VARCHAR2(20);BEGIN

SELECT LASTNAME,FIRSTNAME INTO LAST,FIRSTFROM CUSTOMER WHERE ID = CUSTID;INSERT INTO CUST_LOG VALUES(CUSTID,LAST,FIRST);DELETE FROM CUSTOMER WHERE ID = CUSTID;

EXCEPTION WHEN NO_DATA_FOUND THENRAISE_APPLICATION_ERROR(-20506,'INVALID CUSTID');

END DELETCUST;

3.CREATE PROCEDURE DELETECUST(CUSTID IN NUMBER) AS

ERRNUM NUMBER := -20000;ERRMESS VARCHAR2(200) := 'STANDARD ERROR';

BEGINDELETE FROM CUSTOMER WHERE ID = CUSTID;IF SQL%NOTFOUND THEN

SELECT ERRORNUMBER,ERRORMESSAGE INTO ERRNUM,ERRMESS FROM USERERRORS

Page 11: SQL QUERIES

- 11 –

WHERE ERRORMESSAGE LIKE('INVALID CUST%');RAISE_APPLICATION_ERROR(ERRNUM,ERRMESS);

END IF;EXCEPTION

WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR(ERRNUM,ERRMESS);END DELETECUST;

FOR ABOVE PROCEDURE HAVE THE FOLLOWING TABLE CREATED.

CREATE TABLE USERERRORS( ERRORNUMBER NUMBER(5,0) PRIMARY KEY, ERRORMESSAGE VARCHAR2(200) );

INSERT FOLLOWING VALUES

INSERT INTO USERERRORS VALUES(-20000,'STANDARD ERROR');INSERT INTO USERERRORS VALUES(-20001,'INVALID CUSTOMER ID');

4.CREATE PROCEDURE raise_salary (emp_id NUMBER, increase NUMBER) AS current_salary NUMBER; BEGIN SELECT sal INTO current_salary FROM emp WHERE empno = emp_id; IF current_salary IS NULL THEN raise_application_error(-20101, 'Salary is missing'); ELSE UPDATE emp SET sal = current_salary + increase WHERE empno = emp_id; END IF; END raise_salary;

5.DECLARE

X NUMBER (5,0);BEGIN

X := 60404;DBMS_OUTPUT.PUTLINE('THE VALUE OF X IS');DBMS_OUTPUT.PUTLINE(X);

END;

CURSORS

1.DECLARE

CUSOR ORDCUSRSOR (ORDNUM NUMBER) ISSELECT ID,CUSTID,ORDDATEFROM ORDERSWHERE ID > ORDNUM;

OPEN ORDCUSRSOR(3)

2.DECLARE

V_CALC_COMM NUMBER(9,2);V_SAL NUMBER(9,2);V_ID INTEGER;

CURSOR EMP_COMM IS SELECT SAL,EMPNO FROM EMP WHERE COMM <= 0 OR COMM IS NULL;

BEGINOPEN EMP_COMM;

LOOP

FETCH EMP_COMM INTO V_SAL, V_ID;EXIT WHEN EMP_COMM%NOTFOUND;V_CALC_COMM := V_SAL * 0.12;

Page 12: SQL QUERIES

- 12 –

UPDATE EMP SET COMM = V_CALC_COMMWHERE EMPNO = V_ID;

END LOOP;CLOSE EMP_COMM;END;

FUNCTIONS1.CREATE FUNCTION FINDCUST(LAST IN VARCHAR2, FIRST IN VARCHAR2) RETURN INTEGER AS

CUSTID INTEGER;BEGIN

SELECT ID INTO CUSTID FROM CUSTOMER WHERE LASTNAME=UPPER(LAST) AND FIRSTNAME=UPPER(FIRST);

RETURN CUSTID;

EXCEPTIONWHEN NO_DATA_FOUND THENRAISE_APPLICATION_ERROR(-20001,'INVALID CUSTOMER NAME');

END FINDCUST;

2.CREATE FUNCTION FINDEMP(NAME IN VARCHAR2) RETURN INTEGER AS

EMPID INTEGER;BEGIN

SELECT EMPNO INTO EMPID FROM EMP WHERE ENAME=UPPER(NAME);

RETURN EMPID;

END FINDEMP;

Page 13: SQL QUERIES

- 13 –

DataBase Management System

A database management system (DBMS) consists of a collection of interrelated data and a set of programs to access that data. The collection of data, usually referred to as the database, contains information about one particular enterprise. The primary goal of a DBMS is to provide an environment that is both convenient and efficient to use in retrieving and storing database information.

The management of data involves both the definition of structures for the storage of information and the provision of mechanisms for the manipulation of information. In addition, the database system must provide for the safety of the information stored, despite system crashes or attempts at unauthorized access. If data is to be shared among several users, the system must avoid possible anomalous results.

The typical file-processing system is supported by a conventional operating system. Permanent records are stored in various files, and a number of different application programs are written to extract records from and add records to the appropriate files. This scheme has major disadvantages

Disadvantages

Data redundancy and inconsistency. Data isolation Standards can not be enforced Security Problem Integrity Problem

Data redundancy and inconsistency.In nondatabase system files and application programs are created by different programmers over a long period of time, the files are likely to have different formats and the programs may be written in several programming languages. The same piece of information may be duplicated in several places (files) Ex:Two files containing Following dataEmp Course admitted------------- --------------------Name NameAddress AddressDept_No Course_noSalary Course_details

If Emp file contains two same entries of one employee. Then two entries will not agree with each other when only one is updated (i’e capable of supplying incorrect or inconsistency data).

Data isolationSince data is scattered in various files and files may be in various formats then it is difficult to write new application programs to retrieve the appropriate data. But in RDBMS new applications can developed on same data.

Standards can not be enforcedDifferent programmer using various formats can not enforce standards. But in RDBMS, DBA can enforce company standards for example : Employee code of 4 digits only will help in migrating data anywhere or Using British & American date standards.

Security ProblemNot every user of the database system should be able to access all the data. For example, in a banking system, payroll personnel need only see that part of the database that has information about the various bank employees. They do not need access to information about customer accounts. But it is difficult to enforce such security constraints.

Integrity ProblemThe data values stored in the database must satisfy certain types of consistency constraints. For example, the balance of a bank account may never fall below a prescribed amount (say, Rs 100). These constraints are enforced in RDBMS by adding validation checks.

Page 14: SQL QUERIES

- 14 –

Data Abstraction Data abstraction is achieved by dividing the database in three different levels

Physical LevelThe lowest level of abstraction describes how the data are actually stored . At the physical level, complex low-level structures are described in detail.

Conceptual LevelThe next-higher-level of abstraction describe what data are actually stored in the database, and the relationships that exist among the data. This level is used by DBA who decide what information is to be kept in database.

View LevelTo simplify the interaction with the system, the view level of abstraction is defined. The system may provide

many views of same database. The highest level of abstraction describes only part of entire database. Object - Based logical models

The entity-relationship model. The object-oriented model. The binary model.

Record - Based logical models Network Model Hierarchical Model Relational Model

Entity Relationships

It consists of a collection of basic objects called entity & relationships among these objects. Rectangles, which represent entity sets. Ellipses, which represent attributes. Diamonds, which represent relationships among entity sets. Lines, which link attributes to entity sets and entity sets to relationships.

Relational ModelThe relational model represents data and relationships among data by collection of tables, each of which has a number of columns with unique names.

Network ModelData in the network model are represented by collections of records and relationships among data are represented by links, which can be viewed as pointers. The records in the database are organized as collections of arbitrary graphs.

Hierarchical ModelIt is same as network model since data and relationships among data are represented by records and links respectively. But records are organized as collections of trees rather than graphs.

Functions of database administrator

Scheme definition. The original database scheme is created by writing a set of definitions which are translated by the DDL compiler to a set of tables that are permanently stored in the data dictionary. Storage structure and access method definition. Appropriate storage structures and access methods are created by writing a set of definitions which are translated by the data storage and definition language compiler. Scheme and physical organization modification.Modifications of database scheme or the description of physical storage are accomplished by writing set of definitions which are used by either the DDL compiler or the data storage and defination language compiler to generate modifications to the appropriate internal system tables. Granting of authorization for data access. Granting of different types of authorization allows the database administrator to regulate which part of database various user can use.

Page 15: SQL QUERIES

- 15 –

System Structure

File manager : It manages allocation of space on disk storage & data structures used to represent information stored on disk Database manager which provides the interface between the low-level data stored and the application programs . Query processor, which translates statements in a query language into low-level instructions that the database manager understands. DML precompiler, which converts DML statements embedded in an application program to normal procedure calls in the host language . DDL compiler, which converts DDL statements to a set of tables containing metadata, or "data about data". Data files, which store the database itself. Data dictionary, which stores metadata about the structure of the database.

Page 16: SQL QUERIES

- 16 –

CODD’s Rules

Rules For DBMS to be RDBMS

RDBMS (Codd’s Rules) (1)

The Information Rule.

All informaion is explicitly and logically represented in exactly one way by data values in tables.

i.e. If an item of data doesn’t reside somewhere in a table in the database then it doesn’t exist.

The information about Table, View & Column names should exist somewhere in table form.

RDBMS (Codd’s Rules) (2)

The Rule of Guranteed Access

ß Every Item of data must be logically by addressable by restoring to a combination of table name, primary key value and column name.

RDBMS (Codd’s Rules) (3)

The systematic Treatment of Null Value

ß It is fundamental to the DBMS that NULL values are supported in the representation of missing and in applicable information. this support of null values must be consistent throughout the DBMS, & independent to data types.

RDBMS (Codd’s Rules) (4)

The Database Description Rule

The description of a database & its contents (tables etc) can be queried on line using some data manipulation language.

RDBMS (Codd’s Rules) (5)

The comprehensive sub-language rule

A RDBMS may support several languages, but at least one of them should allow the user to do all the following :

Define tables, views, query and update data, set integrity constraints and define transactions

Page 17: SQL QUERIES

- 17 –

RDBMS (Codd’s Rules)(6)

The View updating rule.

All views that can be updated in theory, can also be updated by the system

RDBMS (Codd’s Rules)(7)

The insert and update rule

The capability of handling a base relation, or infact a derived relation, as a single operand must hold good for all retrieve, update, delete and insert activity.

This means that the major DML commands, namely SELECT, UPDATE, DELETE and INSERT or their equivalents must be available and operational on sets of rows.

RDBMS (Codd’s Rules)(8)

The physical independence rule

ß User access to the database, via terminal monitors or application programs, must remain logically consistent, whereever changes to the representation, or access methods to the data, are changed.

RDBMS (Codd’s Rules)(9)

The Logical data independence rule

Appliaction programs and termianl activities must remain logically impaired whenever information preserving changes of any kind, that are theoretically permitted, are made to the base table

This rule allows many types of database design changes to be made dynamically, without users being aware of them.

RDBMS (Codd’s Rules) (10)

Integrity independence rule

All integrity constraints defined for a database must be definable in the language referred to in rule 5, and stored in the database as tables.

RDBMS (Codd’s Rules) (10)

Integrity independence rules

No component of a primary key can have missing values - this is the basic rule of entity integrity

Page 18: SQL QUERIES

- 18 –

For each distinct foreign key value there must exist a matching primary key value in the same domain. Conformation to this rule ensures what is called referential integrity

RDBMS (Codd’s Rules)(11)

Distribution Rule

A RDBMS must have distribution independence.

Here the tables can be decomposed into sub-tables, and recombine then using the SQL JOIN, MINUS, UNION and INTERSECT operations.

RDBMS (Codd’s Rules)(12)

ß No Subversion rule

ß If a RDBMS supports a lower language that permits, for example row-at-a-time processing, then this language must not be able to bypass any integrity rules or constraints defined in the higher-level, set-at-time, relational language.