sql queries
DESCRIPTION
SQL ProjectTRANSCRIPT
- 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;
- 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
- 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
- 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
- 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
- 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.
- 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;
- 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),
- 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);
- 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
- 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;
- 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;
- 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.
- 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.
- 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.
- 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
- 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
- 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.