Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 5 SQL. Agenda Data Manipulation Language (DML) –SELECT –Union compatible operations –Update database.

Similar presentations


Presentation on theme: "Chapter 5 SQL. Agenda Data Manipulation Language (DML) –SELECT –Union compatible operations –Update database."— Presentation transcript:

1 Chapter 5 SQL

2 Agenda Data Manipulation Language (DML) –SELECT –Union compatible operations –Update database

3 SQL DML - SELECT SELECT [DISTINCT|ALL] {* | [column expression [AS newname]] [,...]} FROM table-name [alias] [,...] [WHERE condition] [GROUP BY column list] [HAVING condition] [ORDER BY column list]

4 Simple SELECT SELECT attributes (or calculations: +, -, /, *) FROM relation SELECT DISTINCT attributes FROM relation SELECT attributes (or * wild card) FROM relation WHERE condition

5 Example SELECT stuname FROM student; SELECT stuid, stuname, credits FROM student; SELECT stuid, stuname, credits+10 FROM student; SELECT DISTINCT major FROM student;

6 SELECT * FROM student; SELECT stuname, major, credits FROM student WHERE stuid = ‘S114’; SELECT * FROM faculty WHERE dept = ‘MIS’;

7 SELECT - WHERE condition AND OR NOT IN NOT INBETWEEN IS NULLIS NOT NULL SOMEALL NOT BETWEEN LIKE '%' multiple characters LIKE ‘_’ single character Evaluation rule: left to right, brackets, NOT before AND & OR, AND before OR

8 Example SELECT * FROM faculty WHERE dept = ‘MIS’ AND rank = ‘full professor’; SELECT * FROM faculty WHERE dept = ‘MIS’ OR rank = ‘full professor’; SELECT * FROM faculty WHERE dept = ‘MIS’ NOT rank = ‘full professor’;

9 SELECT * FROM class WHERE room LIKE ‘b_s%’; SELECT * FROM class WHERE room NOT LIKE ‘bus%’; SELECT productid, productname FROM inventory WHERE onhand BETWEEN 50 and 100; SELECT customerid, discountrate FROM sales WHERE discountrate LIKE ‘20#%’ ESCAPE ‘#’;

10 SELECT companyid, companyname FROM company WHERE companyname BETWEEN ‘G’ AND ‘K’; SELECT productid, productname FROM inventory WHERE onhand NOT BETWEEN 50 and 100; SELECT companyid, companyname FROM company WHERE companyname NOT BETWEEN ‘G’ AND ‘K’;

11 SELECT facname FROM faculty WHERE dept IN (‘MIS’, ‘ACT’); SELECT facname FROM faculty WHERE rank NOT IN (‘assistant’, ‘lecture’); SELECT customername FROM customer WHERE emailadd IS NOT NULL;

12 SELECT customername FROM customer WHERE creditlimit IS NULL;

13 SELECT - aggregate functions COUNT SUM AVG MIN MAX

14 Example SELECT COUNT(*) FROM student; SELECT COUNT(major) FROM student; SELECT COUNT(DISTINCT major) FROM student;

15 SELECT COUNT(stuid), SUM(credits), AVG(credits), MAX(credits), MIN(credits) FROM student;

16 How many different guests have made bookings for August 2006? Hotel (hotelno, hotelname, city) Room (roomno, hotelno, type, price) Booking (hotelno, guestno, datefrom, dateto, roomno) Guest (guestno, guestname, guestaddress)

17 How many different guests have made bookings for August 2006? SELECT COUNT(DISTINCT guestno) FROM booking WHERE (datefrom <= ‘8/31/06’) AND (dateto >= ‘8/1/06’);

18 SELECT - GROUP GROUP BY HAVING

19 Example SELECT major, AVG(credits) FROM student GROUP BY major; SELECT course#, COUNT(stuid) FROM enrollment GROUP BY course#;

20 Example SELECT major, AVG(credits) FROM student GROUP BY major HAVING COUNT(*) > 2; SELECT course#, COUNT(stuid) FROM enrollment GROUP BY course# HAVING COUNT(*) > 2;

21 SELECT major, AVG(credits) FROM student WHERE major IN (‘mis’, ‘act’) GROUP BY major HAVING COUNT(*) > 2;

22 SELECT - ORDER BY ORDER BY ORDER BY... DESC

23 Example SELECT facname, rank FROM faculty ORDER BY facname; SELECT facname, rank FROM faculty ORDER BY rank DESC, facname;

24 SELECT - JOIN Tables Multiple tables in FROM clause MUST have join conditions!!!

25 Example List stuname and grade SELECT stuname, grade FROM student, enrollment WHERE student.stuid = enrollment.stuid;

26 Example List stuname and grade SELECT stuname, grade FROM student s, enrollment e WHERE s.stuid = e.stuid;

27 List course#, stuname and major for faculty number is equal to f114 SELECT enrollment.course#, stuname, major FROM class, enrollment, student WHERE class.course# =enrollment.course# AND enrollment.stuid = student.stuid AND facid = ‘F114’ ORDER BY enrollment.course#;

28 OUTER JOINS RIGHT JOIN LEFT JOIN FULL JOIN Appending (+) to the optional column (null) in the join condition (Oracle)

29 Example List the faculty member who does not teach any class SELECT f.facid, f.facname FROM class c, faculty f WHERE c.facid (+) = f.facid AND c.course# is null ORDER BY f.facname; (right outer join)

30 List the faculty member who does not teach any class SELECT f.facid, f.facname FROM class c RIGHT JOIN faculty f ON c.facid = f.facid WHERE c.course# is null ORDER BY f.facname; (right outer join)

31 List the student name and major who is not enrolled in any class SELECT s.stuname, major FROM student s, enrollment e WHERE s.stuid = e.stuid (+) AND e.stuid is null ORDER BY s.stuname; (left outer join)

32 List the student name and major who is not enrolled in any class SELECT s.stuname, major FROM student s LEFT JOIN enrollment e ON s.stuid = e.stuid WHERE e.stuid is null ORDER BY s.stuname; (left outer join)

33 List the faculty member who does not teach any class SELECT f.facid, f.facname FROM class c, faculty f WHERE c.facid (+) = f.facid (+) AND c.course# is null ORDER BY f.facname; (full outer join) Use only when the database contains proper records

34 List the faculty member who does not teach any class SELECT f.facid, f.facname FROM class c FULL JOIN faculty f ON c.facid = f.facid WHERE c.course# is null ORDER BY f.facname; (full outer join)

35 Example List the number of room in each hotel in London. Hotel (hotelno, hotelname, city) Room (roomno, hotelno, type, price) Booking (hotelno, guestno, datefrom, dateto, roomno) Guest (guestno, guestname, guestaddress)

36 Example List the number of room in each hotel in London. SELECT r.hotelno, COUNT(roomno) FROM room r, hotel h WHERE r.hotelno=h.hotelno AND city = ‘London' GROUP BY hotelno;

37 Union Compatible Operations UNION MINUS or EXCEPT INTERSECT Union compatible operator [ALL] [CORRESPONDING][BY column,..] (ALL includes duplicated rows in the result) Used between SELECT commands

38 Example List stuid and stuname who attends SAC or CHICO SELECT stuid, stuname FROM sacstudent UNION SELECT stuid, stuname FROM chicostudent; SELECT * FROM sacstudent UNION CORRESPONDING BY stuid, stuname SELECT * FROM chicostudent;

39 List stuid and stuname who attends SAC not CHICO SELECT stuid, stuname FROM sacstudent EXCEPT SELECT stuid, stuname FROM chicostudent; List stuid and stuname who attends SAC and CHICO (SELECT stuid, stuname FROM sacstudent) INTERSECT (SELECT stuid, stuname FROM chicostudent) ORDER BY 2;

40 A renter viewing list (Rno, Fname, Lname) of renters who only look property_for_rent at Sacramento (Select * From Viewing v, Property_for_rent p, Renter r Where v.Pno = p.Pno and r.Rno = v.Rno and City=‘Sacramento’) EXCEPT CORRESPONDING BY Rno, Fname, Lname (Select * From Viewing v, Property_for_rent p, Renter r Where v.Pno = p.Pno and r.Rno = v.Rno and City~=‘Sacramento’)

41 Column Alias SELECT prodid, prodname, (salesprice - goodofcost) profit FROM product ORDER BY prodid; SELECT prodid, prodname, (salesprice - goodofcost) AS profit FROM product ORDER BY prodid;

42 SUBQUERY List stuid, stuname, and credits for the student whose credits are larger than the average student credits SELECT stuid, stuname, credits FROM student WHERE credits > (SELECT AVG(credits) FROM student);

43 List stuid, stuname, and major of those student who is enrolled in a class SELECT stuid, stuname, major FROM student WHERE stuid IN (SELECT stuid FROM enrollment);

44 List stuid, stuname, and major of those student who is not enrolled in a class SELECT stuid, stuname, major FROM student WHERE stuid NOT IN (SELECT stuid FROM enrollment);

45 Example What is the most commonly booked room type for all hotels in London? Hotel (hotelno, hotelname, city) Room (roomno, hotelno, type, price) Booking (hotelno, guestno, datefrom, dateto, roomno) Guest (guestno, guestname, guestaddress)

46 Find the type with its number of rooms of every hotel in London SELECT type, COUNT(type) AS y FROM booking b, hotel h, room r WHERE r.roomno = b.roomno AND r.hotelno = b.hotelno AND b.hotelno = h.hotelno AND city = 'London' GROUP BY type;

47 The most commonly booked room type for all hotels in London SELECT type, MAX(y) FROM (SELECT type, COUNT(type) AS y FROM booking b, hotel h, room r WHERE r.roomno = b.roomno AND r.hotelno = b.hotelno AND b.hotelno = h.hotelno AND city = 'London' GROUP BY type) GROUP BY type;

48 EXIST Find student name and major who is enrolled in a class SELECT s.stuname, major FROM student s WHERE EXIST (SELECT * FROM enrollment e WHERE s.stuid = e.stuid);

49 NOT EXIST Find student name and major who is not enrolled in a class SELECT s.stuname, major FROM student s WHERE NOT EXIST (SELECT * FROM enrollment e WHERE s.stuid = e.stuid);

50 SOME Find stuid, stuname, major, and credits of the student whose credits are greater than some mis students’ credits SELECT stuid, stuname, major, credits FROM student WHERE credits > SOME (SELECT credits FROM student WHERE major=‘mis’);

51 ANY Find stuid, stuname, major, and credits of the student whose credits are greater than any mis student’s credits SELECT stuid, stuname, major, credits FROM student WHERE credits > ANY (SELECT credits FROM student WHERE major=‘mis’);

52 ALL Find stuid, stuname, major, and credits of the student whose credits are greater than every mis student’s credits SELECT stuid, stuname, major, credits FROM student WHERE credits > ALL (SELECT credits FROM student WHERE major=‘mis’);

53 What is the lost income from unoccupied rooms at the Grosvenor Hotel today? Hotel (hotelno, hotelname, city) Room (roomno, hotelno, type, price) Booking (hotelno, guestno, datefrom, dateto, roomno) Guest (guestno, guestname, guestaddress)

54 Find the rooms that are occupied at the Grosvenor Hotel today SELECT roomno FROM booking b, hotel h WHERE b.hotelno = h.hotelno AND (datefrom <= ‘SYSTEM DATE’ AND dateto >= ‘SYSTEM DATE’) AND h.hotelname = 'Grosvenor';

55 Find the total income of all rooms at the Grosvenor Hotel SELECT SUM(price) FROM room r, hotel h WHERE r.hotelno = h.hotelno AND h.hotelname = 'Grosvenor’;

56 The lost income from unoccupied rooms at the Grosvenor Hotel today SELECT SUM(price) FROM room r, hotel h WHERE r.hotelno = h.hotelno AND h.hotelname = 'Grosvenor’ AND r.roomno NOT IN (SELECT roomno FROM booking b, hotel h WHERE b.hotelno = h.hotelno AND (datefrom <= ‘SYSTEM DATE’ AND dateto >= ‘SYSTEM DATE’) AND h.hotelname = 'Grosvenor');

57 What is the lost income from unoccupied rooms at each hotel today? Hotel (hotelno, hotelname, city) Room (roomno, hotelno, type, price) Booking (hotelno, guestno, datefrom, dateto, roomno) Guest (guestno, guestname, guestaddress)

58 What is the lost income from unoccupied rooms at each hotel today? SELECT h.hotelno, SUM(price) FROM room r WHERE NOT EXIST (SELECT * FROM booking b, hotel h, room r WHERE b.hotelno = h.hotelno AND r.roomno = b.roomno AND r.hotelno = b.hotelno AND datefrom <= ‘SYSTEM DATE’ AND dateto >= ‘SYSTEM DATE’ ) GROUP BY hotelno;

59 SQL DML - UPDATE, INSERT, DELETE INSERT INTO table-name [(colm [, colm])] VALUES (const [, const] ) UPDATE table-name SET colm = expr [colm = expr]... [WHERE condition] DELETE FROM table-name [WHERE condition]

60 Example INSERT INTO student (stuid, stuname, major, credits) VALUES (‘S114’, ‘Grace’, ‘MIS’, 60); UPDATE student SET major = ‘Database’, credits = 100 WHERE stuid = ‘S114’; UPDATE student SET major = ‘MIS’;

61 DELETE FROM student WHERE stuid = ‘S114’; DELETE FROM student;

62 Points To Remember Data Manipulation Language (DML) –SELECT –Union compatible operations –Update database

63 Type the problem before your answer for every assigned problem of chapter 5, assignment 5, chapter 6, and assignment 6

64 Assignment Review chapter 5 Read chapter 6 Homework Assignment –Chapter 5.7 – 5.28 (not 5.18) and assignment 5 –Due date:


Download ppt "Chapter 5 SQL. Agenda Data Manipulation Language (DML) –SELECT –Union compatible operations –Update database."

Similar presentations


Ads by Google