more sql statements to modify tables. library database books isbn bktitle bkprice pubid publishers...

Post on 19-Jan-2016

221 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

More SQL Statements More SQL Statements To Modify TablesTo Modify Tables

Library Database

Books ISBN bkTitle bkPrice pubID

Publishers pubID pubName pubPhone

Authors auID auName auPone

Books/Authors ISBN auID

INNER JOIN Simplified in SELECT Query

SELECT bkTitle, pubNameFROM Books INNER JOIN PublishersON Books.pubID = Publishers.pubIDWHERE Books.bkPrice <= 50;

SELECT bkTitle, pubNameFROM Books, PublishersWHERE Books.pubID = Publishers.pubIDAND Books.bkPrice <= 50;

is equivalent to

INNER JOIN Simplified in SELECT Query (2)SELECT bkTitle, auNameFROM Books INNER JOIN BooksAuthors INNER JOIN Authors ON BooksAuthors.auID = Authors.auIDON Books.ISBN = BooksAuthors.ISBN WHERE Books.bkPrice <= 50;

SELECT bkTitle, auNameFROM Books, BooksAuthors, AuthorsWHERE Books.ISBN = BooksAuthors.ISBNAND (BooksAuthors.auID = Authors.auIDAND (Books.bkPrice <= 50) );

is equivalent to

UPDATE More Than One Column

Change the price of “Iliad” to $50 and pubID to 3.

UPDATE Books SET bkPrice = 50, pubID = 3WHERE title= ‘Iliad’;

What will result from the following statement? UPDATE Books SET bkPrice = 50;

UPDATE Statement with Subquery

Raise the price of all books from publisher “Big House” by 10 %

Required Tables:Books (ISBN, bkTitle, bkPrice, pubID)Publishers (pubID, pubName, pubPhone)

UPDATE Statement with Subquery

Raise the price of all books from publisher “Big House” by 10 %

UPDATE BooksSET bkPrice = bkPrice * 1.1WHERE pubID in Subquery

Note: subquery

SELECT pubIDFROM PublishersWHERE pubName = “Big House”

Raise the price of all books from publisher “Big House” by 10 %

UPDATE BooksSET bkPrice = bkPrice * 1.1WHERE Books.pubID in (SELECT Publishers.pubID FROM Publishers WEHRE pubName = “Big House”)

Alternately…

UPDATE Books INNER JOIN Publishers ON Books.pubID = Publishers.pubIDSET Books.bkPrice = Books.bkPrice * 1.1WHERE Publishers.pubName=”Big House";

UPDATE with Data from Another Table

Update price column in Books table, with new prices from table NewPrices (ISBN, price).

NewPrices ISBN price

Books ISBN bkTitle bkPrice pubID

UPDATE with Data from Another Table

Update price column in Books table, with new prices from table NewPrices (ISBN, price).

UPDATE Books INNER JOIN NewPricesON Books.ISBN = NewPrices.ISBNSET Books.bkPrice = NewPrices.priceWHERE Books.bkPrice <> NewPrices.price

Previewing Update

To check which records will be modified by the UPDATE statement…

SELECT Books.* FROM Books INNER JOIN NewPrices ON Books.ISBN = NewPrices.ISBNWHERE BOOKS.bkPrice<>NewPrices.price;

Your Turn

Change author “Shakespeare’s” telephone number to “123-4568”.

Reduce the price of all books from publisher “Small House” by 10%.

Raise the price of all books by author “Shakespeare” by 10%.

Change author Shakespear's phone number to "123-4568“.

UPDATE Authors SET auPhone = "123-4568“WHERE auName = "Shakespeare";

Reduce the price of all books published by "Small House" by 10%.

UPDATE Books SET Books.bkPrice = Books.bkPrice * 0.90WHERE Books.pubID IN (SELECT Publishers.pubID FROM Publishers WHERE Publishers.pubName="Small House");

Difference Between “IN” and “=“

WHERE Books.pubID = (single value)

But,SELECT Publishers.pubIDFROM PublishersWHERE Publishers.pubName = “XXX”OR Publishers.pubName = “YYY”

may return multiple values.

WHERE Books.pubID IN (No1, No2)same as Books.pubID = No1 OR Books.pubID = No2

Raise by 10% the price of all books authored by Shakespeare.

BooksISBNbkPrice

BooksAuthosISBNauID

AuthorsauIDauName

SELECT BooksAuthors.ISBNFROM BooksAuthorsWHERE BooksAuthors.auID =

UPDATE BooksSET bkPrice = bkPrice * 1.10WHERE ISBN IN

SELECT auIDFROM AuthorsWHERE auName = “Shakespeare”

Raise by 10% the price of all books authored by "Shakespeare”.

UPDATE Books SET Books.bkPrice = Books.bkPrice * 1.10WHERE Books.ISBN IN (SELECT BooksAuthors.ISBN FROM BooksAuthors WHERE BooksAuthors.auID = (SELECT Authors.auID FROM Authors WHERE Authors.auName = "Shakespeare“ ) );

Raise the price by 5% of all books by Author Shakespeare.

UPDATE BooksSET bkPrice = bkPrice * 1.05FROM Books INNER JOIN BooksAuthors INNER JOIN Authors ON BooksAuthors.auID = Authors.auIDON Books.ISBN = BooksAuthors.ISBNWHERE Authors.auName = “Shakespeare”;

Adding New RecordsINSERT INTO Statement

INSERT INTO TableNameVALUES (“value-1”, “value-2”, “value-3”)

INSERT INTO TableName (field-2, field-3)VALUES (“value-2”, “value-3”)

Adding New RecordsINSERT INTO Statement

INSERT INTO BooksVALUES (“1-1111-1111-1”, “SQL Is Fun”, 1, 25.00)

INSERT INTO Books (ISBN, Title)VALUES (“2-2222-2222-2”, “Born to Code”)

Your Turn

Add the following record to Books• ISBN: 1-2345-6789-0• title: SQL for Dummies• pubID: 3• price: $35.50

Add the following record to Authors• auID: 14• auName: Brando

Inserting from Another Table

Create a new table called NewAuthors with same fields as Authors.

Add to NewAuthors a field called new (boolean)

Add 3 new authors in NewAuthors.

Inserting from Another Table

To copy data from NewAuthors to Authors

INSERT into Authors (auName, auPhone) SELECT NewAuthors,auName, NewAuthors.auPhone FROM NewAuthors WHERE NewAuthors.new = true;

Removing RecordsDELETE Statement

SyntaxDELETE

FROM TableName

WHERE Criteria

Deletes whole records (rows)

Criteria chooses the rows to be deleted

Can delete whole table data, but not structure

Delete Statement (cont)

Delete the book whose ISBN is 0-12-345678-9

DELETE FROM BooksWHERE ISBN=“0-12-345678-9”

Delete Statement (cont)

Delete all books published by “Small House”

DELETE FROM Books WHERE Books.pubID = (Subquery to return pubID for “Small House” from Publishers table)

Delete Statement (cont)

Delete all books published by “Small House”

DELETE FROM Books WHERE Books.pubID = (SELECT Publishers.pubID FROM Publishers WHERE Publishers.pubName="Small House“ );

Your Turn

1. Delete a book titled “Born in Maui”

2. Delete all books priced $50 or above

3. Delete all books published by “Small House”

4. Delete all books written by Shakespeare

User
User
1. DELETE FROM Books WHERE title="Born in Maui"2. DELETE FROM Books WHERE price>=503. DELETE FROM Books WHERE Books.pubID in SELECT pubID FROM Publishers WHERE pubName="Small House"4. DELETE FROM Books WHERE Books.bkID in SLECT bkID FROM BooksAuthors INNER JOIN Authors ON BooksAuthors.auID=Authors.auID WHERE auName="Shakespeare'

Delete all books priced $50 or above.

DELETE FROM BooksWHERE bkPrice >= 50.00;

Delete all books published by “Small House”

DELETEFROM BooksWHERE Books.pubID IN (SELECT Publishers.pubID FROM Publishres WHERE Publishers.pubName=“Small House” );

Delete all books written by Shakespeare

DELETEFROM BooksWHERE Books.ISBN IN (SELECT BooksAuthors.ISBN FROM BooksAuthors WHERE BooksAuthors.auID = (SELECT Authors.auID FROM Authors WHERE Authors.auName = "Shakespeare“ ) );

Used-Car Dealership DB(available from Resources/320/ on the server)

Your Turn (dealership DB)SELECT1. List all cars that were made in 2000 or later.

2. Who was the salesperson that took care of Customer “John Wayne”?

3. Who was the salesperson that sold “Ford” “Edsel” in carlot at “Windward Cars”?

Update1. Reduce price of all Honda cars by 30%.

2. Reduce the price of all non-Honda cars by 50%.

3. Mark as sold all cars which are located at “Windward Cars”

Your TurnDelete

1. Remove from Salespeople table an employee named “Linda” “Gingle”.

2. Remove from Cars table all cars which are located at “Windward Cars”.

Insert

1. Add a customer whose name is “Zeke” “Zorro” with a phone number of “808-123-4567”.

2. Add to Cars table the cars from the Newcars table.

SolutionsSELECT1. List all cars that were made in 2000 or later.

SELECT *FROM carsWHERE year >= 2000;

2. Who was the salesperson that took care of Customer “John Wayne”?SELECT salespeople.firstName, salespeople.lastNameFROM salespeople, transactions, customersWHERE salespeople.salesID = transactions.salesIDAND transactions.custID = customers.custIDAND customers.nameFirst = “John”AND customers.nameLast = “Wayne”;

SolutionsSELECT3. Who was the salesperson that sold “Ford” “Edsel”

in carlot at “Windward Cars”?SELECT salespeople.firstName, salespeople.lastNameFROM salespeople, transactions, carsWHERE salespeople.salesID = transactions.salesIDAND transactions.carID = cars.carIDAND cars.make = “Ford”AND cars.model = “Edsel”;

SolutionsUpdate1. Reduce price of all Honda cars by 30%.

UPDATE cars

SET carListPrice = carListPrice * 0.7

WHERE carMake = 'Honda';

2. Reduce the price of all non-Honda cars by 50%.UPDATE Cars

SET carListPrice = carListPrice * 0.5

WHERE carMake <> 'Honda';

SolutionsUpdate3. Mark as sold all cars which are located at

“Windward Cars”

UPDATE cars

SET carSold = true

WHERE cars.lotID IN

(SELECT carlots.lotID

FROM cars, carlots

WHERE cars.lotID = carLots.lotID

AND carlots.lotName = 'Windward Cars');

SolutionsDelete1. Remove from Salespeople table an employee

named “Elmo” “Jones”.DELETE FROM salePeople

WHERE salNameFirst = 'Elmo'

AND salNameLast = 'Jones';

2. Remove from Cars table all cars which are located at “Lemons Are Us”.DELETEFROM CarsWHERE Cars.lotID = (SELECT Carlots.lotID FROM Carlots WHERE Carlots.lotName = 'Lemons Are Us');

SolutionsInsert1. Add a customer whose name is “Zeke” “Zorro”

with a phone number of “808-123-4567”.INSERT INTO Customers (nameFirst, nameLast, phoneNumber)VALUES (“Zeke”, “Zorro”, “808-123-457”);

Add to Cars table the cars from the Newcars table.INSERT INTO Cars (carMake, carModel, carYear, carDoors, carListPrice,lotID) (SELECT make, model, year, doors, listPrice, lotID FROM newcars );

SQL Statements

SELECT field1, field2FROM TableWHERE someCondtion;

SELECT Table1.field1, Table2.field1FROM Table1, Table2WHERE Table1.prKey = forKeyAND someCondtion;

SQL Statements

UPDATE TableSET field1 = value1, field2 = value2WHERE someCondition

UPDATE TableSET field1 = value1WHERE (subquery)

SQL Statements

INSERT INTO Table(field1, field2)VALUES (value1, value2);

SQL Statements

DELETE FROM TableWHERE someCondition;

Functions

Aggregate Functions—perform on set of data

Value Functions—perform on individual values

Aggregate Functions

COUNT – returns count of rowsSELECT COUNT(auName)

FROM Authors

AVG – returns average value of columnSELECT AVG(bkPrice)

FROM BOOKS

MAX

MIN

SUM

VALUE FUNCTIONS

String Value Functions

Numeric Value Functions

Datetime Value Functions

String Value Functions

SUBSTRING(sourceString FROM start [FOR length])

sourceString=“Ala Moana”SUBSTRING(sourceString FROM 5 FOR 3) -- “Moa”

UPPER(sourceString) -- “ALA MOANA”

Numeric Value Function

POSITION (subString IN sourceString)

sourceString = “Ala Moana”POSITION (“Moana” in sourceString) -- 5

CHARACTER_LENGTH(sourceString)

CHARACTER_LENGTH(“Ala Moana”) -- 9

top related