Database Concepts
| CustomerID | LastName | FirstName | Address | City | State | ZIP | Phone | EmailAddress | ReferredBy |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Shire | Robert | 6225 Evanston Ave N | Seattle | WA | 98103 | 206-524-2433 | [email protected] | |
| 2 | Goodyear | Katherine | 7335 11th Ave NE | Seattle | WA | 98105 | 206-524-3544 | [email protected] | 1 |
| 3 | Bancroft | Chris | 12605 NE 6th Street | Bellevue | WA | 98005 | 425-635-9788 | [email protected] | |
| 4 | Griffith | John | 335 Aloha Street | Seattle | WA | 98109 | 206-524-4655 | [email protected] | 2 |
| 5 | Tierney | Doris | 14510 NE 4th Street | Bellevue | WA | 98005 | 425-635-8677 | [email protected] | 3 |
| 6 | Anderson | Donna | 1410 Hillcrest Parkway | Mt. Vernon | WA | 98273 | 360-538-7566 | [email protected] | |
| 7 | Svane | Jack | 3211 42nd Street | Seattle | WA | 98115 | 206-524-5766 | [email protected] | 4 |
| 8 | Walsh | Denesha | 6712 24th Avenue NE | Redmond | WA | 98053 | 425-635-7566 | [email protected] | 5 |
| 9 | Enquist | Craig | 534 15th Street | Bellingham | WA | 98225 | 360-538-6455 | [email protected] | 6 |
| 10 | Anderson | Rose | 6823 17th Ave NE | Seattle | WA | 98105 | 206-524-6877 | [email protected] | 7 |
| EmployeeID | LastName | FirstName | Phone | EmailAddress | Supervisor | Training |
|---|---|---|---|---|---|---|
| 1 | Stuart | Anne | 206-527-0010 | [email protected] | Completed | |
| 2 | Stuart | George | 206-527-0011 | [email protected] | 1 | Completed |
| 3 | Stuart | Mary | 206-527-0012 | [email protected] | 1 | Completed |
| 4 | Orange | William | 206-527-0013 | [email protected] | 3 | In process |
| 5 | Griffith | John | 206-527-0014 | [email protected] | 3 | In process |
| ItemID | ItemDescription | PurchaseDate | ItemCost | ItemPrice | VendorID |
|---|---|---|---|---|---|
| 1 | Antique Desk | 11/7/16 | 1800.0 | 3000.0 | 2 |
| 2 | Antique Desk Chair | 11/10/16 | 300.0 | 500.0 | 4 |
| 3 | Dining Table Linens | 11/14/16 | 600.0 | 1000.0 | 1 |
| 4 | Candles | 11/14/16 | 30.0 | 50.0 | 1 |
| 5 | Candles | 11/14/16 | 27.0 | 45.0 | 1 |
| 6 | Desk Lamp | 11/14/16 | 150.0 | 250.0 | 3 |
| 7 | Dining Table Linens | 11/14/16 | 450.0 | 750.0 | 1 |
| 8 | Book Shelf | 11/21/16 | 150.0 | 250.0 | 5 |
| 9 | Antique Chair | 11/21/16 | 750.0 | 1250.0 | 6 |
| 10 | Antique Chair | 11/21/16 | 1050.0 | 1750.0 | 6 |
| 11 | Antique Candle Holders | 11/28/16 | 210.0 | 350.0 | 2 |
| 12 | Antique Desk | 1/5/17 | 1920.0 | 3200.0 | 2 |
| 13 | Antique Desk | 1/5/17 | 2100.0 | 3500.0 | 2 |
| 14 | Antique Desk Chair | 1/6/17 | 285.0 | 475.0 | 9 |
| 15 | Antique Desk Chair | 1/6/17 | 339.0 | 565.0 | 9 |
| 16 | Desk Lamp | 1/6/17 | 150.0 | 250.0 | 10 |
| 17 | Desk Lamp | 1/6/17 | 150.0 | 250.0 | 10 |
| 18 | Desk Lamp | 1/6/17 | 144.0 | 240.0 | 3 |
| 19 | Antique Dining Table | 1/10/17 | 3000.0 | 5000.0 | 7 |
| 20 | Antique Sideboard | 1/11/17 | 2700.0 | 4500.0 | 8 |
| 21 | Dining Table Chairs | 1/11/17 | 5100.0 | 8500.0 | 9 |
| 22 | Dining Table Linens | 1/12/17 | 450.0 | 750.0 | 1 |
| 23 | Dining Table Linens | 1/12/17 | 480.0 | 800.0 | 1 |
| 24 | Candles | 1/17/17 | 30.0 | 50.0 | 1 |
| 25 | Candles | 1/17/17 | 36.0 | 60.0 | 1 |
| VendorID | Phone | PhoneType |
|---|---|---|
| 1 | 206-325-6755 | |
| 1 | 206-329-9675 | Fax |
| 2 | 206-325-7866 | |
| 2 | 206-329-9786 | Fax |
| 3 | 206-325-8977 | |
| 3 | 206-329-9897 | Fax |
| 4 | 425-746-5433 | |
| 5 | 425-746-4322 | |
| 6 | 206-325-9088 | |
| 6 | 206-329-9908 | Fax |
| 7 | 425-635-7566 | |
| 8 | 425-635-9788 | |
| 8 | 425-639-9978 | Fax |
| 9 | 415-422-2121 | |
| 9 | 415-423-5212 | Fax |
| 10 | 415-422-3232 | |
| 10 | 415-429-9323 | Fax |
| SaleID | CustomerID | EmployeeID | SaleDate | SubTotal | Tax | Total |
|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 12/14/16 | 3500.0 | 290.5 | 3790.5 |
| 2 | 2 | 1 | 12/15/16 | 1000.0 | 83.0 | 1083.0 |
| 3 | 3 | 1 | 12/15/16 | 50.0 | 4.15 | 54.15 |
| 4 | 4 | 3 | 12/23/16 | 45.0 | 3.74 | 48.74 |
| 5 | 1 | 5 | 1/5/17 | 250.0 | 20.75 | 270.75 |
| 6 | 5 | 5 | 1/10/17 | 750.0 | 62.25 | 812.25 |
| 7 | 6 | 4 | 1/12/17 | 250.0 | 20.75 | 270.75 |
| 8 | 2 | 1 | 1/15/17 | 3000.0 | 249.0 | 3249.0 |
| 9 | 5 | 5 | 1/25/17 | 350.0 | 29.05 | 379.05 |
| 10 | 7 | 1 | 2/4/17 | 14250.0 | 1182.75 | 15432.75 |
| 11 | 8 | 5 | 2/4/17 | 250.0 | 20.75 | 270.75 |
| 12 | 5 | 4 | 2/7/17 | 50.0 | 4.15 | 54.15 |
| 13 | 9 | 2 | 2/7/17 | 4500.0 | 373.5 | 4873.5 |
| 14 | 10 | 3 | 2/11/17 | 3675.0 | 305.03 | 3980.03 |
| 15 | 2 | 2 | 2/11/17 | 800.0 | 66.4 | 866.4 |
| SaleID | SaleItemID | ItemID | ItemPrice |
|---|---|---|---|
| 1 | 1 | 1 | 3000.0 |
| 1 | 2 | 2 | 500.0 |
| 2 | 1 | 3 | 1000.0 |
| 3 | 1 | 4 | 50.0 |
| 4 | 1 | 5 | 45.0 |
| 5 | 1 | 6 | 250.0 |
| 6 | 1 | 7 | 750.0 |
| 7 | 1 | 8 | 250.0 |
| 8 | 1 | 9 | 1250.0 |
| 8 | 2 | 10 | 1750.0 |
| 9 | 1 | 11 | 350.0 |
| 10 | 1 | 19 | 5000.0 |
| 10 | 2 | 21 | 8500.0 |
| 10 | 3 | 22 | 750.0 |
| 11 | 1 | 17 | 250.0 |
| 12 | 1 | 24 | 50.0 |
| 13 | 1 | 20 | 4500.0 |
| 14 | 1 | 12 | 3200.0 |
| 14 | 2 | 14 | 475.0 |
| 15 | 1 | 23 | 800.0 |
| VendorID | CompanyName | ContactLastName | ContactFirstName | Address | City | State | ZIP | Phone | Fax | EmailAddress |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Lamps and Lighting | Huntington | Anne | 1515 NW Market Street | Seattle | WA | 98107 | 206-325-6755 | 206-329-9675 | [email protected] |
| 2 | European Specialties | Tadema | Ken | 6123 15th Avenue NW | Seattle | WA | 98107 | 206-325-7866 | 206-329-9786 | [email protected] |
| 3 | Lamps and Lighting | Swanson | Sally | 506 Prospect Street | Seattle | WA | 98109 | 206-325-8977 | 206-329-9897 | [email protected] |
| 4 | Lee | Andrew | 1102 3rd Street | Kirkland | WA | 98033 | 425-746-5433 | [email protected] | ||
| 5 | Harrison | Denise | 533 10th Avenue | Kirkland | WA | 98033 | 425-746-4322 | [email protected] | ||
| 6 | New York Brokerage | Smith | Mark | 621 Roy Street | Seattle | WA | 98109 | 206-325-9088 | 206-329-9908 | [email protected] |
| 7 | Walsh | Denesha | 6712 24th Avenue NE | Redmond | WA | 98053 | 425-635-7566 | [email protected] | ||
| 8 | Bancroft | Chris | 12605 NE 6th Street | Bellevue | WA | 98005 | 425-635-9788 | 425-639-9978 | [email protected] | |
| 9 | Specialty Antiques | Nelson | Fred | 2512 Lucky Street | San Francisco | CA | 94110 | 415-422-2121 | 415-423-5212 | [email protected] |
| 10 | General Antiques | Garner | Patty | 2515 Lucky Street | San Francisco | CA | 94110 | 415-422-3232 | 415-429-9323 | [email protected] |
SELECT *
FROM CUSTOMER;
SELECT *
FROM EMPLOYEE;
SELECT *
FROM VENDOR;
SELECT *
FROM ITEM;
SELECT *
FROM SALE_ITEM;
SELECT ItemID, ItemDescription
FROM ITEM
WHERE ItemPrice >= 1000;
SELECT ItemID, ItemDescription
FROM ITEM, VENDOR
WHERE ItemPrice >= 1000
AND CompanyName LIKE 'New*'
AND ITEM.VendorID = VENDOR.VendorID;
SELECT LastName, FirstName, Phone
FROM CUSTOMER
WHERE CustomerID IN
(SELECT CustomerID
FROM SALE
WHERE SaleID = 1);
SELECT LastName, FirstName, Phone
FROM CUSTOMER AS C INNER JOIN SALE AS S ON C.CustomerID = S.CustomerID
WHERE SaleID = 1;
SELECT LastName, FirstName, Phone
FROM CUSTOMER
WHERE CustomerID IN
(SELECT CustomerID
FROM SALE
WHERE SaleID IN (1, 2, 3));
SELECT LastName, FirstName, Phone
FROM CUSTOMER AS C INNER JOIN SALE AS S ON C.CustomerID = S.CustomerID
WHERE SaleID IN (1, 2, 3);
SELECT LastName, FirstName, Phone
FROM CUSTOMER
WHERE CustomerID IN
(SELECT CustomerID
FROM SALE
WHERE SubTotal > 500);
SELECT DISTINCT LastName, FirstName, Phone
FROM CUSTOMER AS C INNER JOIN SALE AS S ON C.CustomerID = S.CustomerID
WHERE SubTotal > 500;
SELECT LastName, FirstName, Phone
FROM CUSTOMER
WHERE CustomerID IN
(SELECT CustomerID
FROM SALE
WHERE SaleID IN
(SELECT SaleID
FROM SALE_ITEM
WHERE ItemPrice > 500));
SELECT DISTINCT LastName, FirstName, Phone
FROM (CUSTOMER AS C INNER JOIN SALE AS S ON C.CustomerID = S.CustomerID) INNER JOIN SALE_ITEM AS SI ON S.SaleID = SI.SaleID
WHERE ItemPrice > 500;
SELECT LastName, FirstName, Phone
FROM CUSTOMER
WHERE CustomerID IN
(SELECT CustomerID
FROM SALE
WHERE SaleID IN
(SELECT SaleID
FROM SALE_ITEM
WHERE ItemID IN
(SELECT ItemID
FROM ITEM
WHERE VendorID IN
(SELECT VendorID
FROM VENDOR
WHERE CompanyName LIKE 'L*'))));
SELECT DISTINCT LastName, FirstName, C.Phone
FROM (((CUSTOMER AS C INNER JOIN SALE AS S ON C.CustomerID = S.CustomerID) INNER JOIN SALE_ITEM AS SI ON S.SaleID = SI.SaleID) INNER JOIN ITEM AS I ON SI.ItemID = I.ItemID) INNER JOIN VENDOR AS V ON I.VendorID = V.VendorID
WHERE CompanyName LIKE 'L*';
SELECT CUSTOMER.CustomerID, LastName, FirstName, Phone, SUM(SubTotal) AS SumOfSubTotal
FROM CUSTOMER INNER JOIN SALE ON CUSTOMER.CustomerID = SALE.CustomerID
GROUP BY CUSTOMER.CustomerID, LastName, FirstName, Phone
ORDER BY CUSTOMER.CustomerID DESC;
SELECT *
FROM VENDOR;
UPDATE VENDOR
SET CompanyName = 'Linens and Other Stuff'
WHERE CompanyName = 'Linens and Things';
SELECT *
FROM VENDOR;
UPDATE VENDOR
SET CompanyName = 'Linens and Things'
WHERE CompanyName = 'Linens and Other Stuff';
SELECT *
FROM VENDOR;
UPDATE VENDOR
SET CompanyName = 'Temp'
WHERE CompanyName = 'Linens and Things';
UPDATE VENDOR
SET CompanyName = 'Linens and Things'
WHERE CompanyName = 'Lamps and Lighting';
UPDATE VENDOR
SET CompanyName = 'Lamps and Lighting'
WHERE CompanyName = 'Temp';
SELECT *
FROM VENDOR;
CREATE TABLE CUSTOMER(
CustomerID Int NOT NULL,
LastName Char(25) NOT NULL,
FirstName Char(25) NOT NULL,
Address Char(35) NULL,
City Char(35) NULL,
State Char(2) NULL,
ZIP Char(10) NULL,
Phone Char(12) NOT NULL,
EmailAddress VarChar(100) NULL,
CONSTRAINT CUSTOMER_PK PRIMARY KEY(CustomerID)
);
CREATE TABLE EMPLOYEE(
EmployeeID Int NOT NULL,
LastName Char(25) NOT NULL,
FirstName Char(25) NOT NULL,
Phone Char(12) NULL,
EmailAddress VarChar(100) NOT NULL UNIQUE,
CONSTRAINT EMPLOYEE_PK PRIMARY KEY(EmployeeID)
);
CREATE TABLE ITEM(
ItemID Int NOT NULL,
ItemDescription VarChar(255) NOT NULL,
PurchaseDate Date NOT NULL,
ItemCost Numeric NOT NULL,
ItemPrice Numeric NOT NULL,
VendorID Int NOT NULL,
CONSTRAINT ITEM_PK PRIMARY KEY (ItemID),
CONSTRAINT ITEM_VENDOR_FK FOREIGN KEY (VendorID)
REFERENCES VENDOR(VendorID)
);
CREATE TABLE SALE(
SaleID Int NOT NULL,
CustomerID Int NOT NULL,
EmployeeID Int NOT NULL,
SaleDate Date NOT NULL,
SubTotal Numeric NULL,
Tax Numeric NULL,
Total Numeric NULL,
CONSTRAINT SALE_PK PRIMARY KEY (SaleID),
CONSTRAINT SALE_CUSTOMER_FK FOREIGN KEY (CustomerID)
REFERENCES Customer(CustomerID) ,
CONSTRAINT SALE_EMPLOYEE_FK FOREIGN KEY(EmployeeID)
REFERENCES Employee(EmployeeID)
);
CREATE TABLE SALE_ITEM(
SaleID Int NOT NULL,
SaleItemID Int NOT NULL,
ItemID Int NOT NULL,
ItemPrice Numeric NOT NULL,
CONSTRAINT SALE_ITEM_PK PRIMARY KEY (SaleID, SaleItemID),
CONSTRAINT SALE_ITEM_SALE_FK FOREIGN KEY (SaleID)
REFERENCES SALE(SaleID) ,
CONSTRAINT SALE_ITEM_ITEM_FK FOREIGN KEY (ItemID)
REFERENCES ITEM(ItemID)
);
CREATE TABLE VENDOR(
VendorID Int NOT NULL,
CompanyName Char(100) NULL,
ContactLastName Char(25) NOT NULL,
ContactFirstName Char(25) NOT NULL,
Address Char(35) NULL,
City Char(35) NULL,
State Char(2) NULL,
ZIP Char(10) NULL,
Phone Char(12) NOT NULL,
Fax Char(12) NULL,
EmailAddress VarChar(100) NULL,
CONSTRAINT VENDOR_PK PRIMARY KEY(VendorID)
);
ALTER TABLE CUSTOMER
ADD ReferredBy Int NULL;
ALTER TABLE CUSTOMER
ADD CONSTRAINT CUST_FK_CUST FOREIGN KEY(ReferredBy) REFERENCES
CUSTOMER (CustomerID);
ALTER TABLE EMPLOYEE
ADD Supervisor Int NULL;
ALTER TABLE EMPLOYEE
ADD CONSTRAINT EMP_EMP_FK FOREIGN KEY (Supervisor)
REFERENCES EMPLOYEE (EmployeeID);
ALTER TABLE EMPLOYEE
ADD Training Varchar(20) NULL;
ALTER TABLE EMPLOYEE
ALTER COLUMN Training Varchar(20) NOT NULL;
CREATE TABLE PHONE_NUMBER (
VendorID INT NOT NULL,
Phone CHAR(12) NOT NULL,
PhoneType CHAR(25) NULL,
CONSTRAINT PHONE_NUMBER_PK PRIMARY KEY (VendorID, Phone),
CONSTRAINT PHONE_NUMBER_VENDOR_FK FOREIGN KEY (VendorID)
REFERENCES VENDOR (VendorID)
);
ALTER TABLE VENDOR
DROP COLUMN Fax;
ALTER TABLE VENDOR
DROP COLUMN Phone;
INSERT INTO PHONE_NUMBER (VendorID, Phone, PhoneType)
SELECT VendorID, Phone, NULL
FROM VENDOR;
INSERT INTO PHONE_NUMBER (VendorID, Phone, PhoneType)
SELECT VendorID, Fax, 'Fax'
FROM VENDOR
WHERE Fax IS NOT NULL;
SELECT CustomerID, LastName, FirstName, Phone, EmailAddress
FROM CUSTOMER;
SELECT S.SaleID, SI.SaleItemID, SI.ItemID, SaleDate, ItemDescription, ItemCost, I.ItemPrice AS ListItemPrice, SI.ItemPrice AS ActualItemPrice
FROM (SALE AS S INNER JOIN SALE_ITEM AS SI ON S.SaleID = SI.SaleID) INNER JOIN ITEM AS I ON SI.ItemID = I.ItemID;