Aims:
SELECT, INSERT,
DELETE and UPDATE commands
Nerdland Bird Sanctuary operates a Fund-A-Fowl scheme whereby members of the public can help pay for the birds' upkeep.
| birds | ||
|---|---|---|
| bnum | name | species |
| 1 | Stevie | swan |
| 2 | Mandy | moorhen |
| 3 | Derek | duck |
| 4 | Dervla | duck |
| sponsors | ||
|---|---|---|
| snum | name | address |
| 1 | Hugh Jeegoh | Dublin |
| 2 | Donna Kebab | Cork |
| 3 | Ann O Domini | Dublin |
| donations | ||
|---|---|---|
| snum | bnum | donation |
| 1 | 1 | 256 |
| 1 | 4 | 123 |
| 3 | 2 | 5 |
| 3 | 4 | 562 |
CREATE TABLE birds
(
bnum int AUTO_INCREMENT,
name varchar(30),
species varchar(25),
PRIMARY KEY (bnum)
);
CREATE TABLE sponsors
(
snum int AUTO_INCREMENT,
name varchar(30),
address varchar(25),
PRIMARY KEY (snum)
);
CREATE TABLE donations
(
snum int,
bnum int,
donation int,
PRIMARY KEY(snum, bnum)
);
INSERT INTO sponsors (name, address)
VALUES ('Mary Christmas', 'Galway');
DELETE FROM sponsors
WHERE snum = 4;
UPDATE sponsors
SET address = 'Limerick'
WHERE snum = 2;
UPDATE donations
SET donation = donation + 100
WHERE snum = 3
AND bnum = 4;
SELECT *
FROM sponsors
WHERE address = 'Dublin';
SELECT snum
FROM donations
WHERE donation < 300;
SELECT DISTINCT snum
FROM donations
WHERE donation < 300;
Write SQL queries to retrieve the following:
SELECT bnum, sum(donation)
FROM donations
GROUP BY bnum
HAVING sum(donation) > 300;
SELECT *
FROM sponsors JOIN donations;
SELECT *
FROM sponsors JOIN donations
ON sponsors.snum = donations.snum;
Paraphrase into English the following SQL queries:
SELECT sponsors.snum, name
FROM sponsors JOIN donations
ON sponsors.snum = donations.snum
WHERE bnum = 4;
SELECT sponsors.snum, sponsors.name, birds.bnum, birds.name
FROM sponsors JOIN donations JOIN birds
ON sponsors.snum = donations.snum
AND donations.bnum = birds.bnum;
Write an SQL query to retrieve the following: the identification number, name and address of sponsors who have donated money for swans
Write an SQL query to retrieve the following: the species that Dubliners haven't sponsored
Hint: subquery