structured query language (sql). book relation titleauthorpublisheryearisbn...
TRANSCRIPT
Structured Query Language(SQL)
BOOK RELATION
TITLE AUTHOR PUBLISHER YEAR ISBN
JAWS BENCHLEY HARPER 1976 003-02-0045
IT KING RANDOM HOUSE
1989 123-45-6798
HYPERION SIMMONS EOS 1990 443-27-6645
SNOW CRASH STEPHENSON RANDOM HOUSE
1992 553-24-667
CREATE TABLE SYNTAXCREATE TABLE <RELATION NAME> (
<ATTRIBUTE> <TYPE> [NOT NULL],<ATTRIBUTE> <TYPE> [NOT NULL],...CONSTRAINT PRIMARY KEY (<ATTRIBUTE(S)>)[,][FOREIGN KEY (<ATTRIBUTE(S)>)
REFERENCES <RELATION> (<ATTRIBUTE(S)>)][,][FOREIGN KEY (<ATTRIBUTE(S)>)
REFERENCES <RELATION> (<ATTRIBUTE(S)>)]...
)
SUPPLY DATABASE
EMPLOYEE & DEPARTMENT RELATIONS
NAME SSN DNAME
BOB 1123 MAIL
MIKE 1234 MAIL
TIM 3314 SECURITY
EMPLOYEE
DNAME MGRSSN
MAIL 1123
SECURITY 3314
DEPARTMENT
SQL FOR GET NAMES OF DEPARMENT MANAGERS
SELECT NAMEFROM EMPLOYEE, DEPARTMENTWHERE EMPLOYEE.SSN = DEPARTMENT.MGRSSN
NAME SSN DNAME DNAME MGRSSN
BOB 1123 MAIL MAIL 1123
BOB 1123 MAIL SECURITY 3314
MIKE 1234 MAIL MAIL 1123
MIKE 1234 MAIL SECURITY 3314
TIM 3314 SECURITY MAIL 1123
TIM 3314 SECURITY SECURITY 3314
CARTESIAN PRODUCT OF FROM CLAUSE
CARTESIAN PRODUCT FILTERED BY WHERE CLAUSE
NAME SSN DNAME DNAME MGRSSN
BOB 1123 MAIL MAIL 1123
TIM 3314 SECURITY SECURITY 3314
PROJECT DOWN TO ATTRIBUTES IN SELECT CLAUSE
NAME
BOB
TIM
Name Age Spouse Dependents
Bob 39 Becky 0
Becky 32 Bob 0
Mike 38 Carrie 0
Carrie 39 Mike 0
Kathy 34 Mark 2
Mark 34 Kathy 2
Tim 37 Stacy 0
Stacy 37 Tim 0
Pat 34 Deb 0
Deb 32 Pat 0
Jeff 34 --- 0
People
The PEOPLE Relation
Name Age
Bob 39
Carrie 39
Mike 38
Stacy 37
Tim 37
Jeff 34
Pat 34
Becky 32
Deb 32
Result
SELECT Name, AgeFROM PeopleWHERE Dependents = 0ORDER BY Age DESC, Name ASC
Ordering Query Results
Name Age Spouse Dependents
Bob 39 Becky 0
Carrie 39 Mike 0
Becky 32 Bob 0
Deb 32 Pat 0
Kathy 34 Mark 2
Mark 34 Kathy 2
Pat 34 Deb 0
Jeff 34 --- 0
Tim 37 Stacy 0
Stacy 37 Tim 0
Mike 38 Carrie 0
People
The PEOPLE RelationPartitioned Into Groups
SELECT Age, COUNT(*)
FROM People
GROUP BY Age
S# SNAME STATUS CITY S# P# J# QTY
S1 Smith 20 London S1 P1 J1 200
S2 Jones 10 Paris S2 P3 J1 400
S3 Blake 30 Paris S3 P3 J1 200
S4 Clark 20 London --- --- --- ---
S5 Adams 30 Athens --- --- --- ---
Intermediary table for LEFT OUTER JOIN QUERY:
SELECT SNAME, P#FROM S, (SELECT * FROM SPJ WHERE J#=‘J1’) SPJ1WHERE S.S#=SPJ.S# (+)
ActionDate Action Item Quantity QuantityType Cost Total PersonLEDGER
ActionDate Action Item Quantity QuantityType Cost Total PersonLEDGER_AUDIT
TRIGGERS: LEDGER and LEDGER_AUDIT TABLES
create trigger ledger_updatebefore update on LEDGERfor each rowwhen ((new.Amount/old.Amount)>1.1)begininsert into LEDGER_AUDIT values (:old.ActionDate, :old.Action, :old.Item, :old.Quantity, :old.QuantityType, :old.Cost, :old.Total, :old.Person);end;
TRIGGERS: EXAMPLE
TRIGGERS: SYNTAX