Project Phase I Phase II Due Monday, April 15 Groups 1.

Slides:



Advertisements
Similar presentations
CS 3630 Database Design and Implementation. Where Clause and Aggregate Functions -- List all rooms whose price is greater than the -- average room price.
Advertisements

CSCI3170 Introduction to Database Systems
Chapter 4 Hotel (hotelno, hotelname, city)
1 Assignment 2 Relational Algebra Which tables? What operations? Common attributes? What result (attributes)? Syntax (Standard Notations and Symbols) –Product:
M ATH IN SQL. 222 A GGREGATION O PERATORS Operators on sets of tuples. Significant extension of relational algebra. SUM ( [DISTINCT] A): the sum of all.
CS 3630 Database Design and Implementation. SQL Query Clause Select and From Select * From booking; select hotel_no, guest_no, room_no from booking; select.
Assignment6-1 Assignment6-2 Due Wednesday, March 13 1.
Information Resources Management February 27, 2001.
Chapter 5 SQL. Agenda Data Manipulation Language (DML) –SELECT –Union compatible operations –Update database.
Chapter 6 SQL Homework.
Chapter 5 SQL Homework.
Chapter 5 SQL. Agenda Data Manipulation Language (DML) –SELECT –Union compatible operations –Update database.
Database Systems Lecture 5 Natasha Alechina
Sorting data and Other selection Techniques Ordering data results Allows us to view our data in a more meaningful way. Rather than just a list of raw.
Chapter 5 SQL. Agenda Data Manipulation Language (DML) –SELECT –Union compatible operations –Update database.
Sundara Ram Matta Apr 01 st, Sundara Ram Matta Apr 01 st, 2015
Project – Phase II Derive Database Schema from E-R Model DBDL.
1 CS 3630 Database Design and Implementation. 2 Sets Foundation of relational database. Basic Operations Power set Mapping.
SQL queries ordering and grouping and joins
Creating Tables and Inserting Records -- Not easy to edit! -- check constraints! Create table test1 ( C1 char(5) primary key, C2 Varchar2(15) not null.
Relational Databases.  In week 1 we looked at the concept of a key, the primary key is a column/attribute that uniquely identifies the rest of the data.
SQL - DML. Data Manipulation Language(DML) Are used for managing data: –SELECT retrieve data from the a database –INSERT insert data into a table –UPDATE.
Oracle Command Spool Spool C:\temp\Lab9.lst Select Hotel_no, room_no, type, price From Room Order by Hotel_no; Spool Off.
5. Simple SQL using Oracle1 Simple SQL using Oracle 5. Working with Tables: Data management and Retrieval 6. Working with Tables: Functions and Grouping.
Chapter 5 SQL: Data Manipulation Thomas Connolly, Carolyn Begg, Database System, A Practical Approach to Design Implementation and Management, 4 th Edition,
CIS 375—Web App Dev II SQL. 2 Introduction SQL (Structured _______ Language) is an ANSI standard language for accessing databases.ANSI SQL can execute.
Intermediate SQL: Aggregated Data, Joins and Set Operators.
Database Fundamental & Design by A.Surasit Samaisut Copyrights : All Rights Reserved.
SQL introduction 2013.
CIS 375—Web App Dev II SQL. 2 Introduction SQL (Structured _______ Language) is an ANSI standard language for accessing databases.ANSI SQL can execute.
Structured Query Language
5. Simple SQL using Oracle1 Simple SQL using Oracle 5. Working with Tables: Data management and Retrieval 6. Working with Tables: Functions and Grouping.
AL-MAAREFA COLLEGE FOR SCIENCE AND TECHNOLOGY INFO 232: DATABASE SYSTEMS CHAPTER 7 (Part II) INTRODUCTION TO STRUCTURED QUERY LANGUAGE (SQL) Instructor.
CS 3630 Database Design and Implementation. Unnormalized Form (UNF) student courses John CS363 CS334 CS323 Multi-Value attribute Common in reports 2.
CS 3630 Database Design and Implementation. Joins -- For each booking, display the booking -- details with the room type and price Select B.*, rtype,
IST 318 – DB Administration Data Retrieval Using SELECT statements.
SqlExam1Review.ppt EXAM - 1. SQL stands for -- Structured Query Language Putting a manual database on a computer ensures? Data is more current Data is.
INF 280 Database Systems SQL:Join
CS 3630 Database Design and Implementation. Null Value The value of an attribute could be NULL NOT known at the moment or NOT Applicable Example Cell.
A Guide to SQL, Eighth Edition Chapter Four Single-Table Queries.
Database: SQL, MySQL, LINQ and Java DB © by Pearson Education, Inc. All Rights Reserved.
Query Processing – Implementing Set Operations and Joins Chap. 19.
Relational Operator Evaluation. overview Projection Two steps –Remove unwanted attributes –Eliminate any duplicate tuples The expensive part is removing.
CS 3630 Database Design and Implementation. Base Table and View Base Table Stored on disk View Virtual table Records are not stored on disk Query is stored.
SQL: 1 SQL Correspondence with Relational Algebra select A from r where B = 1 Assume r(AB) and s(BC). select B from r except select B from s select A as.
CS 3630 Database Design and Implementation. Where Clause and Aggregate Functions -- List all rooms whose price is greater than the -- average room price.
Sorting data and Other selection Techniques Ordering data results Allows us to view our data in a more meaningful way. Rather than just a list of raw.
Assignment 5–2 For each new relation, Use DBDL to specify the relation scheme Give the functional dependencies Give the corresponding relation instance.
Fan Qi Database Lab 1, com1 #01-08 CS3223 Tutorial 5.
1 SQL Chapter 9 – 8 th edition With help from Chapter 2 – 10 th edition.
CS 3630 Database Design and Implementation. Joins -- For each booking, display the booking -- details with the room type and price Select B.*, rtype,
CS 3630 Database Design and Implementation. Joins Retrieve data from two or more tables Join Conditions PK and FK (Natural Join) Other attributes (Theta.
CS 3630 Database Design and Implementation
Assignment 2 Relational Algebra Which tables? What operations?
Prof: Dr. Shu-Ching Chen TA: Hsin-Yu Ha
MySQL: Part II.
CS 3630 Database Design and Implementation
CS 3630 Database Design and Implementation
CS 3630 Database Design and Implementation
The Database Exercises Fall, 2009.
Introduction to MS Access: creating tables, keys, and relationships
Assignment 2.
Theory behind the relational engine
Theory behind the relational engine
CS 3630 Database Design and Implementation
Assignment 5–2 For each table, Give a meaningful name
CS 3630 Database Design and Implementation
CS 3630 Database Design and Implementation
Access: SQL Participation Project
The Relational Algebra
Presentation transcript:

Project Phase I Phase II Due Monday, April 15 Groups 1

Joins Retrieve data from two or more tables Common Attributes PK and FK Other attributes Based on Cartesian Product Implementation Nested loops Optimization 2

Joins List all guests who have at least one booking. (We keep all guests even they don’t have any bookings.) -- Which table(s)? -- Guest (Guest_no, Guest_Name, Address) -- PK: Guest_no -- Booking (HoteL_no, Guest_no,...) -- PK: Hotel_no, Guest_No, Date_From -- FK: Guest_no references Guest Select Guest.* From Guest, Booking Where Guest.Guest_no = Booking.Guest_no; -- Run in Oracle -- Duplicate records 3

Joins List all guests who have at least one booking. Select Guest.* From Guest, Booking Where Guest.Guest_no = Booking.Guest_no; Why duplicate records? For every g in Guest For every b in Booking If g.Guest_no = b.Guest_no Then Select g.* 4

Joins List all guests who have at least one booking. Remove duplicate records! Select Distinct Guest.* From Guest, Booking Where Guest.Guest_no = Booking.Guest_no; -- Could use Unique 5

Joins: New Style Select Distinct Guest.* From Guest Join Booking on Guest.Guest_no = Booking.Guest_no; Select Distinct Guest.* From Guest, Booking Where Guest.Guest_no = Booking.Guest_no; We should use the new style! 6

Using Short Table Names List all guests who have at least one booking. Select Distinct G.* From Guest G Join Booking B on G.Guest_no = B.Guest_no; -- Cannot use the original table name any more Select Distinct Guest.* From Guest G Join Booking B on Guest.Guest_no = B.Guest_no ERROR at line 1: ORA-00904: "GUEST"."GUEST_NO": invalid identifier 7

Joins List all guests who have at least one booking with the details of each booking. -- No need for Distinct -- All columns from both tables Select * From Guest G Join Booking B on G.Guest_no = B.Guest_no; Set linesize 100 Col Guest_name Format a14 Col address format a21 8

Joins What if no common attribute is specified? Select G.* From Guest G, Booking B; -- Where G.Guest_no = B.Guest_no; -- Cartesian product! Select Distinct G.* From Guest G Join Booking B; -- on G.Guest_no = B.Guest_no; ERROR at line 3: ORA-00905: missing keyword 9

Join not on PK/FK List all guests who are in a city where there is also a hotel. Assuming Address is City. Select Distinct G.* From Guest G Join Hotel H on G.Address = H.Address; 10

Joins: Three Tables List Hotel name, guest name and date_from for all bookings, sorted by hotel_no in ascending order and then by guest_no in descending order. Which tables? Hotel Name: Hotel Guest Name: Guest Date_From : Booking Select H.name, G.Guest_name, Date_from From Hotel H Join Booking B on H.Hotel_no = B.Hotel_no Join Guest G on G.Guest_no = B.Guest_no Order By H.Hotel_No, G.Guest_no desc; -- H.Hotel_No, G.Guest_no not selected 11

Joins: Three Tables -- List Hotel name, guest name and date_from -- for all bookings. -- Sort the result Select H.name, G.Guest_name, Date_from From Hotel H Join Booking B on H.Hotel_no = B.Hotel_no Join Guest G on G.Guest_no = B.Guest_no Order By H.name, G.Guest_name, Date_from; -- Sort by name Select H.name, G.Guest_name, Date_from From Hotel H Join Booking B on H.Hotel_no = B.Hotel_no Join Guest G on G.Guest_no = B.Guest_no Order By H.Hotel_No, G.Guest_no; -- Sort by Hotel_No 12

Joins with Group By -- For each hotel, display Hotel name and number of -- bookings of the hotel. -- Tables: -- Hotel, Booking Select name, count(*) From Hotel H Join Booking B on H.Hotel_no = B.Hotel_no Group by H.Hotel_No; -- Will it work? 13

Joins with Group By -- For each hotel, display Hotel name and number of -- bookings of the hotel. -- Tables: -- Hotel, Booking -- Must also Group by name Select name, count(*) From Hotel H Join Booking B on H.Hotel_no = B.Hotel_no Group by H.Hotel_No, name; -- What if group by name? 14

Joins with Group By -- For each hotel, display Hotel name and -- number of bookings of the hotel. Select name, count(*) From Hotel H Join Booking B on H.Hotel_no = B.Hotel_no Group by H.Hotel_No, name; // Missing hotels without bookings // How to display a zero for such hotels? 15

Current Year with Assumption -- For each hotel, display Hotel name and -- number of bookings of the hotel for this year. -- Assume no booking is longer than 1 year. Select name, count(*) From Hotel H Join Booking B on H.Hotel_no = B.Hotel_no and ((to_char(Date_From, 'yyyy') = to_char(SysDate, 'yyyy')) or (to_char(Date_To, 'yyyy') = to_char(SysDate, 'yyyy'))) Group by H.Hotel_No, name; -- could use where after join condition -- they are the same 16

Current Year without Assumption -- For each hotel, display Hotel name and -- number of bookings of the hotel for this year. -- No assumptions. Select name, count(*) From Hotel H Join Booking B on H.Hotel_no = B.Hotel_no and ((to_char(Date_From, 'yyyy') = to_char(SysDate, 'yyyy')) or (to_char(Date_To, 'yyyy') = to_char(SysDate, 'yyyy')) or ((to_char(Date_From, 'yyyy') < to_char(SysDate, 'yyyy')) and (to_char(Date_To, 'yyyy') > to_char(SysDate, 'yyyy')))) Group by H.Hotel_No, name; 17

Current Year without Assumption -- For each hotel, display Hotel name and -- number of bookings of the hotel for this year. -- No assumptions. Select name, count(*) From Hotel H Join Booking B on H.Hotel_no = B.Hotel_no and to_char(Date_From, 'yyyy') <= to_char(SysDate, 'yyyy') and to_char(Date_To, 'yyyy') >= to_char(SysDate, 'yyyy') Group by H.Hotel_No, name; -- How to make it work for the current month? -- use ‘yyyy mm’ instead of ‘yyyy’ 18

Group By and Having -- For each hotel with at least 3 bookings this -- year, display Hotel name and the number of -- bookings of the hotel this year. -- With assumption Select name, count(*) From Hotel H Join Booking B on H.Hotel_no = B.Hotel_no and (to_char(sysDate, 'yyyy') = to_char(date_to, 'yyyy') or to_char(sysDate, 'yyyy') = to_char(date_from,'yyyy')) Group by H.Hotel_No, name Having Count(*) >= 3; 19

Group By and Having -- For each hotel with more than 5 bookings, -- display Hotel name and the number of -- bookings of the hotel. Select name, count(*) From Hotel H Join Booking B on H.Hotel_no = B.Hotel_no Group by H.Hotel_No, name Having Count(*) > 5; 20

Schedule Assignment 9: Join Due Wednesday, April 24 Quiz 3 Friday, April 19 No Join Assignment 7 & 8 21