Did You Hire Them Dead or Did You Kill Them After You Got Them?
1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12...
-
Upload
chloe-gregory -
Category
Documents
-
view
219 -
download
0
description
Transcript of 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12...
![Page 1: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/1.jpg)
1
Lecture 02: SQL
Friday, September 30, 2005
![Page 2: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/2.jpg)
2
Administrivia
• Homework 1 is out. Due: Wed., Oct. 12
• Did you login on IISQLSRV ?
• Did you change your password ?
• Did you subscribe to CSE444 ?
![Page 3: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/3.jpg)
3
Project: Phase 1 (out of 3)
Domain 1: InventoryDomain 2: BillingDomain 3: Shipping
October 14: Phase 1A due. The Database.October 20: Phase 1B due. The Web Interface
![Page 4: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/4.jpg)
4
Project: Phase 1
Read your domain specification• Phase 1A: Create the Schema,
create the database,import the dataDue: October 14
• Phase 1B: WebpageDue: October 20
![Page 5: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/5.jpg)
5
Today’s Reading Assigment
• Did you read it ?
• What does ACID mean ?A = atomicityC = consistencyI = isolationD = durability
![Page 6: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/6.jpg)
6
Outline
• Data in SQL• Simple Queries in SQL (6.1)• Queries with more than one relation (6.2)
![Page 7: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/7.jpg)
7
SQL IntroductionStandard language for querying and manipulating data
Structured Query Language
Many standards out there: • ANSI SQL, SQL92 (a.k.a. SQL2), SQL99 (a.k.a. SQL3), ….• Vendors support various subsets: watch for fun discussions in class !
![Page 8: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/8.jpg)
8
SQL
• Data Definition Language (DDL)– Create/alter/delete tables and their attributes– Following lectures...
• Data Manipulation Language (DML)– Query one or more tables – discussed next !– Insert/delete/modify tuples in tables
![Page 9: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/9.jpg)
9
Tables in SQL
PName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
Product
Attribute namesTable name
Tuples or rows
![Page 10: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/10.jpg)
10
Tables Explained
• The schema of a table is the table name and its attributes:
Product(PName, Price, Category, Manfacturer)
• A key is an attribute whose values are unique;we underline a key
Product(PName, Price, Category, Manfacturer)
![Page 11: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/11.jpg)
11
Data Types in SQL
• Atomic types:– Characters: CHAR(20), VARCHAR(50)– Numbers: INT, BIGINT, SMALLINT, FLOAT– Others: MONEY, DATETIME, …
• Every attribute must have an atomic type– Hence tables are flat– Why ?
![Page 12: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/12.jpg)
12
Tables Explained
• A tuple = a record– Restriction: all attributes are of atomic type
• A table = a set of tuples– Like a list…– …but it is unorderd:
no first(), no next(), no last().
![Page 13: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/13.jpg)
13
SQL Query
Basic form: (plus many many more bells and whistles)
SELECT <attributes> FROM <one or more relations> WHERE <conditions>
![Page 14: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/14.jpg)
14
Simple SQL QueryPName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
SELECT *FROM ProductWHERE category=‘Gadgets’
Product
PName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks“selection”
![Page 15: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/15.jpg)
15
Simple SQL QueryPName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
SELECT PName, Price, ManufacturerFROM ProductWHERE Price > 100
Product
PName Price Manufacturer
SingleTouch $149.99 Canon
MultiTouch $203.99 Hitachi
“selection” and“projection”
![Page 16: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/16.jpg)
16
Notation
Product(PName, Price, Category, Manfacturer)
Answer(PName, Price, Manfacturer)
Input Schema
Output Schema
SELECT PName, Price, ManufacturerFROM ProductWHERE Price > 100
![Page 17: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/17.jpg)
17
The LIKE operator
• s LIKE p: pattern matching on strings• p may contain two special symbols:
– % = any sequence of characters– _ = any single character
SELECT *FROM ProductsWHERE PName LIKE ‘%gizmo%’
![Page 18: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/18.jpg)
18
Eliminating Duplicates
SELECT DISTINCT categoryFROM Product
Compare to:
SELECT categoryFROM Product
Category
Gadgets
Gadgets
Photography
Household
Category
Gadgets
Photography
Household
![Page 19: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/19.jpg)
19
Ordering the Results
SELECT pname, price, manufacturerFROM ProductWHERE category=‘gizmo’ AND price > 50ORDER BY price, pname
Ties are broken by the second attribute on the ORDER BY list, etc.
Ordering is ascending, unless you specify the DESC keyword.
![Page 20: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/20.jpg)
20
SELECT CategoryFROM ProductORDER BY PName
PName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
?SELECT DISTINCT categoryFROM ProductORDER BY category
SELECT DISTINCT categoryFROM ProductORDER BY PName
??
![Page 21: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/21.jpg)
21
Keys and Foreign Keys
PName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
Product
Company
CName StockPrice Country
GizmoWorks 25 USA
Canon 65 Japan
Hitachi 15 Japan
Key
Foreignkey
![Page 22: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/22.jpg)
22
Joins
Product (pname, price, category, manufacturer)Company (cname, stockPrice, country)
Find all products under $200 manufactured in Japan;return their names and prices.
SELECT PName, PriceFROM Product, CompanyWHERE Manufacturer=CName AND Country=‘Japan’ AND Price <= 200
Joinbetween Product
and Company
![Page 23: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/23.jpg)
23
Joins
PName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
Product Company
Cname StockPrice Country
GizmoWorks 25 USA
Canon 65 Japan
Hitachi 15 Japan
PName Price
SingleTouch $149.99
SELECT PName, PriceFROM Product, CompanyWHERE Manufacturer=CName AND Country=‘Japan’ AND Price <= 200
![Page 24: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/24.jpg)
24
A Join Subtlety
Product (pname, price, category, manufacturer)Company (cname, stockPrice, country)
Find all countries that manufacture some product in the ‘Gadgets’ category.
SELECT CountryFROM Product, CompanyWHERE Manufacturer=CName AND Category=‘Gadgets’
![Page 25: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/25.jpg)
25
A Join Subtlety
Name Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
Product Company
Cname StockPrice Country
GizmoWorks 25 USA
Canon 65 Japan
Hitachi 15 Japan
Country
??
??
What isthe problem ?
What’s thesolution ?
SELECT CountryFROM Product, CompanyWHERE Manufacturer=CName AND Category=‘Gadgets’
![Page 26: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/26.jpg)
26
Tuple Variables
SELECT DISTINCT pname, addressFROM Person, CompanyWHERE worksfor = cname
Whichaddress ?
Person(pname, address, worksfor)Company(cname, address)
SELECT DISTINCT Person.pname, Company.addressFROM Person, CompanyWHERE Person.worksfor = Company.cname
SELECT DISTINCT x.pname, y.addressFROM Person AS x, Company AS yWHERE x.worksfor = y.cname
![Page 27: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/27.jpg)
27
Meaning (Semantics) of SQL Queries
SELECT a1, a2, …, ak
FROM R1 AS x1, R2 AS x2, …, Rn AS xnWHERE Conditions
Answer = {}for x1 in R1 do for x2 in R2 do ….. for xn in Rn do if Conditions then Answer = Answer {(a1,…,ak)}return Answer
![Page 28: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/28.jpg)
28
SELECT DISTINCT R.AFROM R, S, TWHERE R.A=S.A OR R.A=T.A
An Unintuitive Query
Computes R (S T) But what if S = ?
What does it compute ?
![Page 29: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/29.jpg)
29
Subqueries Returning Relations
SELECT Company.city FROM Company WHERE Company.name IN (SELECT Product.maker FROM Purchase , Product WHERE Product.pname=Purchase.product AND Purchase .buyer = ‘Joe Blow‘);
Return cities of companies that manufacture products bought by Joe Blow
Company(name, city)Product(pname, maker)Purchase(id, product, buyer)
![Page 30: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/30.jpg)
30
Subqueries Returning Relations
SELECT Company.city FROM Company, Product, Purchase WHERE Company.name= Product.maker AND Product.pname = Purchase.product AND Purchase.buyer = ‘Joe Blow’
Is it equivalent to this ?
Beware of duplicates !
![Page 31: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/31.jpg)
31
Removing Duplicates
Nowthey are equivalent
SELECT DISTINCT Company.city FROM Company WHERE Company.name IN (SELECT Product.maker FROM Purchase , Product WHERE Product.pname=Purchase.product AND Purchase .buyer = ‘Joe Blow‘);
SELECT DISTINCT Company.city FROM Company, Product, Purchase WHERE Company.name= Product.maker AND Product.pname = Purchase.product AND Purchase.buyer = ‘Joe Blow’
![Page 32: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/32.jpg)
32
Subqueries Returning Relations
SELECT name FROM Product WHERE price > ALL (SELECT price FROM Purchase WHERE maker=‘Gizmo-Works’)
Product ( pname, price, category, maker)Find products that are more expensive than all those producedBy “Gizmo-Works”
You can also use: s > ALL R s > ANY R EXISTS R
![Page 33: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/33.jpg)
33
Question for Database Fansand their Friends
• Can we express this query as a single SELECT-FROM-WHERE query, without subqueries ?
• Hint: show that all SFW queries are monotone (figure out what this means). A query with ALL is not monotone
![Page 34: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/34.jpg)
34
Correlated Queries
SELECT DISTINCT title FROM Movie AS x WHERE year <> ANY (SELECT year FROM Movie WHERE title = x.title);
Movie (title, year, director, length) Find movies whose title appears more than once.
Note (1) scope of variables (2) this can still be expressed as single SFW
correlation
![Page 35: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/35.jpg)
35
Complex Correlated QueryProduct ( pname, price, category, maker, year)• Find products (and their manufacturers) that are more expensive
than all products made by the same manufacturer before 1972
Very powerful ! Also much harder to optimize.
SELECT DISTINCT pname, makerFROM Product AS xWHERE price > ALL (SELECT price FROM Product AS y WHERE x.maker = y.maker AND y.year < 1972);
![Page 36: 1 Lecture 02: SQL Friday, September 30, 2005. 2 Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1afe7f8b9ab059985ad9/html5/thumbnails/36.jpg)
36
Reading Assignment for MondaySQL from the textbook:• Renaming columns: SELECT x.name AS nom• Union, intersection, difference
Chapter 3, “Simple Queries” from SQL for Web Nerds, by Philip Greenspunhttp://philip.greenspun.com/sql/