1.264 Lecture 12 SQL: Basics, SELECT, continued

advertisement
1.264 Lecture 12
SQL: Basics, SELECT, continued
Please download the homework 5 database file before class today.
This class: Upload your .sql file from the exercises after class
Next class: Read Murach chapters 4-6. Exercises due after class
1
Attaching the Homework 5 Database
• Download and unzip homework 5 database from the Web site
• Open Microsoft SQL Server Management Studio
• Create new login using SQL Server authentication.
– Security->New Login. Username/password, default to hwk 5 db if there
• Right click “Databases”->”Attach” from popup menu
• Click "Add" button beneath the "Databases to attach" pane.
• Navigate to the .mdf file you downloaded and click "OK."
– Move .mdf file to Public folder if not visible, or to SQL Svr folder
– In pane below, click “…” button (“Data”) and select file again
– Click “Log” in pane, then click “Remove”
• Click "OK" on the bottom of the popup.
– If you get an error, it’s probably because of folder permissions.
• The homework database should now be visible under the
"Databases" folder. Right click, choose “Refresh” if needed.
– You can now browse this as you do homework 4, if you wish
2
Example tables
OrderNbr
Orders
CustNbr
Customers
SalesReps
OfficeNbr
1
2
57
City
Denver
New York
Dallas
Prod
Bulldozer
Riveter
Crane
Qty
7
2
1
Company
Amt
Disc
$31,000.00
0.2
$4,000.00
0.3
$500,000.00
0.4
CustRep
CreditLimit
211 Connor Co
89
$50,000.00
522 AmaratungaEnterprises
89
$40,000.00
890 Feni Fabricators
53
$1,000,000.00
RepNbr
Offices
Cust
1
211
2
522
3
522
Name
RepOffice
Quota
Sales
53 Bill Smith
1
$100,000.00
$0.00
89 Jen Jones
2
$50,000.00
$130,000.00
State
CO
NY
TX
Region
West
East
West
Target
Sales
$3,000,000.00 $130,000.00
$200,000.00 $300,000.00
$0.00
$0.00
Phone
970.586.3341
212.942.5574
214.781.5342
3
Example data model
Offices
SalesReps
Customers
Orders
OfficeNbr
RepNbr
CustNbr
OrderNbr
City
Region
Target
State
Phone
Name
Quota
Sales
RepOffice
Company
CreditLimit
CustRep
Prod
Qty
Amt
Disc
Cust
Image by MIT OpenCourseWare.
4
Exercise 1: NULLs
• NULL values evaluate to NOT TRUE in all cases.
– Insert ‘NewRep’ with NULL (blank or empty) Quota
– Write this statement yourself
• The following two queries will not give all sales reps:
– SELECT Name FROM SalesReps WHERE Sales > Quota;
– SELECT Name FROM SalesReps WHERE Sales <= Quota;
– A new rep with a NULL quota will not appear in either list
• Check for NULLS by:
– SELECT Name FROM SalesReps WHERE Quota IS NULL;
• Be especially careful:
– SELECT Name FROM SalesReps WHERE Sales <> Quota;
– This does not return NULLs
5
Exercise 2: SELECT Operators
• SELECT * FROM
– Orders WHERE Disc*Amt > 50000;
– SalesReps WHERE Quota BETWEEN 50000 AND 100000;
• Range is inclusive (>=50000 and <=100000)
– Offices WHERE State IN (‘CO’, ‘UT’, ‘TX’);
– SalesReps WHERE RepNbr IS NOT NULL;
– Offices WHERE Phone NOT LIKE ‘21%’;
• SQL standard only has 2 wildcards
• %
• _
any string of zero or more characters
any single character
• Most databases have additional/different wildcards.
SQL Server has:
• [list]
• [^list]
match any single character in list, e.g., [a-f]
match any single character not in list, e.g. [^h-m]
6
Exercise 3: SELECT: COUNT, GROUP BY
PartID
123
234
345
362
2345
3464
4533
Parts
Vendor
A
A
B
A
C
A
C
• Number of parts from vendor A
– SELECT COUNT(*) FROM Parts WHERE Vendor = ‘A’;
– Result: 4
• Number of parts from each vendor
– SELECT Vendor, COUNT(*) AS PartsCount FROM Parts
GROUP BY Vendor HAVING COUNT(*) > 2;
– Result:
Vendor
PartsCount
A
B
C
4
1
2
7
Exercise 4
• What is the average credit limit of customers
whose credit limit is less than $1,000,000?
• How many sales offices are in the West region?
• Increase the price of bulldozers by 30% in all
orders
• Delete any sales rep with a NULL quota
8
Solution 4
• What is the average credit limit of customers
whose credit limit is less than $1,000,000?
– SELECT AVG(CreditLimit) FROM Customers WHERE
CreditLimit < 1000000;
• How many sales offices are in the West region?
– SELECT Count(*) FROM Offices WHERE Region= 'West‘;
• Increase the price of bulldozers by 30% in all
orders
– UPDATE Orders SET Amt= Amt*1.3 WHERE Prod=
'Bulldozer‘;
• Delete any sales rep with a NULL quota
– DELETE FROM SalesReps WHERE Quota IS NULL;
9
MIT OpenCourseWare
http://ocw.mit.edu
1.264J / ESD.264J Database, Internet, and Systems Integration Technologies
Fall 2013
For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.
Download