CHAPTER 4 - SQL

Post on 21-Jan-2016

17 views 0 download

Transcript of CHAPTER 4 - SQL

1

CHAPTER 4

THE RELATIONAL MODEL 3 – ADVANCED TOPICS

2

VIEWS

• MS ACCESS• SAVED QUERIES• SQL• VIEWS• QUERY• ANALYZED – RUN• VIEW• ANALYZED ONCE

3

VIEW

• SNAPSHOT OF DATA• REPORTS, CHARTS, FORMS• QUERIES

4

EXAMPLE – PETER’S WORLD

• ITEM CLASS “HW”• PART NUMBER• PART DESCRIPTION• UNITS ON HAND• UNIT PRICE

• VIEW

5

SQL SYNATX

• CREATE VIEW view name (col1, col2,..)• AS• SELECT STATEMENT;• CREATE VIEW Housewares AS• SELECT PartNum, Description, OnHand, Price• FROM Part• WHERE Class = ‘HW’;

6

Housewares View

7

Premiere Products Sample Data

8

CONCEPTUAL DATABASE VS. USER’S VIEW

• NO TEMPORARY TABLE• WINDOW

9

RUNNING QUERIES ON VIEW

• SELECT * • FROM Housewares• WHERE OnHand > 10;

• SELECT PartNum, Description, OnHand, Price• FROM Part• WHERE Class = ‘HW’ AND OnHand > 10;

10

RENAMING COLUMNS

• CREATE VIEW Housewares • (Pnum, Dsc, OnHd, Price) AS• SELECT PartNum, Description, OnHand,

Price• FROM Part• WHERE Class = ‘HW’;

11

VIEW ON JOINED TABLES

• CREATE VIEW SalesCust• (Cnum, Cname, Snum, Slast, Sfirst )• AS• SELECT CustomerNum, Customer.CustomerName, Rep.RepNum• Rep.LastName, Rep.FirstName• FROM Customer• INNER JOIN Rep• ON Customer.RepNum = Rep.RepNum;

12

Sales Cust View

13

ALL CUSTOMERS REPRESENTED BY SALES

REP 20• SELECT Cnum, Cname• FROM SalesCust• WHERE Snum = ’20’;• SELECT CustomerNumber,

Customer.CustomerName FROM Customer• INNER JOIN Rep• ON Customer.RepNum = Rep.RepNum • WHERE RepNum = ’20’;

14

ADVANTAGES OF USING VIEWS

• 1. SIMPLICITY FOR BUSINESS MANAGERS• COMPLEXITY & SIZE DISGUISED• JOIN TRANSPARENT• 2. SECURITY• OTHER DATA NOT ACCESSIBLE’• 3. USER PERSONALIZATION• 4. DATA INDEPENDENCE• DATABASE STRUCTURE MODIFICATION• EXTRA COLUMNS• RELATIONSHIP

15

INDEX

• FASTER ACCESS TO DATA• EXTRA COLUMN• RECORD NUMBER

16

Customer Table with Record Numbers

17

INDEX

• NATURAL INDEX• PRIMARY KEY

18

Index for Customer Table on Customer Number Column

19

NON PRIMARY KEY INDEX

• CRITERIA• CREDIT LIMIT• SALES REP

20

Indexes for Customer Table onCredit Limit and Sale Rep Number Columns

21

SQL to Create Index

CREATE INDEX CustomerNameON Customer (CustomerName);

22

SQL to Delete Index

DROP INDEX RepBal;

23

INDEX

• MULIPLE COLUMNS• FAST ACCESS ON MULIPLE CRITERIA• AUTOMATIC INDEXES BY DBMS• DISADVANTAGES• SPACE• OVERHEAD PROCESSING

24

WHEN TO USE INDEXES?

• TRADE-OFF• ADD AND DROP AT WILL• MS ACCESS• NO• YES – WITH DUPLICATES• YES – NO DUPLICATES

25

DATA RULES AND INTEGRITY RULES

• DATA INTEGRITY CONSTRAINT• ACCURACY• PRICE > 0• SALARY <= $100,000• DATE-HIRED > COMPANY-FOUNDING-

DATE• CONDITION ENFORCED – OPERTAION• CHANGE IN CONDITION• SET OF PREDEFINED OPTIONS• GENDER – MALE, FEMALE,

UNAVAILABLE• CREDIT LIMIT – 5000, 7500, 10000, 15000

26

DATA INTEGRITY CONSTRAINT

• ALTER TABLE Rep• MODIFY LastName NOT NULL;• ALTER TABLE Customer• ADD CreditLimit CHECK IN (5000, 7500,

10000,15000)’

27

ENTITY INTEGRI TY

• COLUMNS• ALLOW NULL• PRIMARY KEY• NULL NOT ALLOWED• RESTRICTION• ENTITY INTEGRITY RULE• COLUMN• PART OF PRIMARY KEY• NOT NULL

28

REFERENTIAL INTEGRITY

• CONSTRAINT• SALES REP NUMBER – SALES REP TABLE• SALES REP NUMBER – CUSTOMER• MATCHING COLUMN• NOT NECESSARILY – SAME NAME• MECHANISM – CONNECTING TABLES• CORRESPONDING COLUMN• MATCHING VALUE• FOREIGN KEY

29

FOREIGN KEY

• COLUMN(S)• PRIMARY KEY• - ANOTHER TABLE

30

REFERENTIAL INTEGRITY• FOREIGN KEY• CORRESPONDING PRIMARY KEY• IMPLEMENTATION – DBMS• - NO PROVISION• - INTERNALLY• - TRIGGERS• MS ACCESS• - AUTOMATIC• - DEFINE RELATIONSHIP• CONNECTING LINE• CASCADE DELETE• CASCADE UPDATE• CONSISTENCY

31

INTEGRITY IN SQL

• NO PROVISION IN ANSI• INTEGRITY ENHANCEMENT FEATURE

32

Integrity in SQL

• Integrity Enhancement Feature (IEF) provides three types of integrity support:– Legal values. CHECK – Primary keys. PRIMARY KEY – Foreign keys. FOREIGN KEY

33

SQL CODE

• CREATE TABLE Customer• ( CustomerNum CHAR(2),• CustomerName CHAR(15),• Street CHAR(15),• City CHAR(15),• State CHAR(2),• ZipCode CHAR(5),• Balance DECIMAL(7,2),• CreditLimit DECIMAL(3,20)• RepNum CHAR(2))• CHECK (CreditLimit IN (5000, 7500, 10000,15000))• PRIMARY KEY (CustomerNum),• FOREIGN KEY (RepNum) REFERENCES SalesRep);

34

CHANGING THE STRUCTURE OF A

RELATIONAL DATABASE• ALTER TABLE table name

ADD COLUMN column name data type (size)

DELETE / DROP COLUMN column name

CHANGE COLUMN column name data type (size);

• DROP TABLE (table name);

35

FOREIGN KEY CONSTRAINT• ALTER TABLE Customer• ADD FOREIGN KEY (RepNum)

REFERENCES Rep;• ALTER TABLE Parttable• ADD (Allfield DECIMAL (4,0));• ALTER TABLE Partable• MODIFY (Allfield CHAR(2));• ALTER TABLE Part• DROP COLUMN Allfield;

36

EXAMPLES

• ALTER TABLE Customer• ADD CustType CHAR (1)• (DEFAULT = ‘R’)• ALTER TABLE Customer• DELETE CustType;• ALTER TABLE Customer• CHANGE COLUMN CustName• TO CHAR (20)• DROP TABLE Part;

37

ORACLE STATEMENTS

• ALTER TABLE Customer• ADD Cust_Type CHAR(1);

• UPDATE Customer• SET Cust_Type = 'R';