Nu behöver de en databas för att hålla reda på robotarna. Här är ett ER-diagram för databasen:
Tabeller med exempeldata:
|
|
|
SQL-kommandon för att underlätta för provkörningar:
DROP TABLE Robotar CASCADE; DROP TABLE Strider CASCADE; DROP TABLE Deltagare CASCADE; CREATE TABLE Robotar (Nummer INTEGER NOT NULL PRIMARY KEY, Färg VARCHAR(10), Vikt INTEGER); INSERT INTO Robotar (Nummer, Färg, Vikt) VALUES (1, 'Blå', 40); INSERT INTO Robotar (Nummer, Färg, Vikt) VALUES (2, 'Blå', 40); INSERT INTO Robotar (Nummer, Färg, Vikt) VALUES (3, 'Svart', 1000); INSERT INTO Robotar (Nummer, Färg, Vikt) VALUES (4, 'Stålgrå', 800); CREATE TABLE Strider (Nummer INTEGER NOT NULL PRIMARY KEY, Datum DATE); INSERT INTO Strider (Nummer, Datum) VALUES (1, DATE '2022-11-23'); INSERT INTO Strider (Nummer, Datum) VALUES (2, DATE '2022-11-23'); INSERT INTO Strider (Nummer, Datum) VALUES (3, DATE '2022-11-24'); create table Deltagare (Robot INTEGER NOT NULL REFERENCES Robotar(Nummer), Strid INTEGER NOT NULL REFERENCES Strider(Nummer), Resultat VARCHAR(8) CHECK (Resultat IN ('Vinst', 'Förlust', 'Oavgjort')), PRIMARY KEY (Robot, Strid)); INSERT INTO Deltagare (Robot, Strid, Resultat) VALUES (1, 1, 'Oavgjort'); INSERT INTO Deltagare (Robot, Strid, Resultat) VALUES (2, 1, 'Oavgjort'); INSERT INTO Deltagare (Robot, Strid, Resultat) VALUES (2, 2, 'Vinst'); INSERT INTO Deltagare (Robot, Strid, Resultat) VALUES (3, 2, 'Förlust'); INSERT INTO Deltagare (Robot, Strid, Resultat) VALUES (1, 3, 'Oavgjort'); INSERT INTO Deltagare (Robot, Strid, Resultat) VALUES (2, 3, 'Oavgjort'); INSERT INTO Deltagare (Robot, Strid, Resultat) VALUES (3, 3, 'Oavgjort'); SELECT * FROM Robotar ORDER BY Nummer; SELECT * FROM Strider ORDER BY Nummer; SELECT * FROM Deltagare ORDER BY Strid, Robot;
a) Hur många robotar har vi?
b) Hur många blåa robotar har vi?
c) Vad är det högsta numret på en robot?
d) Vilken färg har robot 3?
e) Vilken färg har roboten med det högsta numret?
Tips: Man kan stoppa in frågan från c-uppgiften i where-villkoret i frågan från d-uppgiften!
a) Hur många robotar finns det av varje färg? Tips: group by
b) Skapa en vy av frågan ovan!
c) Använd vyn för att ta reda på vilken färg som är vanligast!
a) Vad är det för skillnad på en explicit join och en implict join?
b) Måste man alltid ange ett join-villkor?
c) Ett annat sätt att slå samman två tabeller är operationen union. Hur skiljer den sig från en join?
Robot | Datum | Resultat |
---|---|---|
1 | 2022-11-23 | Oavgjort |
2 | 2022-11-23 | Oavgjort |
2 | 2022-11-23 | Vinst |
3 | 2022-11-23 | Förlust |
1 | 2022-11-24 | Oavgjort |
2 | 2022-11-24 | Oavgjort |
3 | 2022-11-24 | Oavgjort |
Skriv SQL-frågan både med implicit och explicit join!
Robot | Antal |
---|---|
1 | 2 |
2 | 3 |
3 | 2 |
Tips: Vilka tabeller behöver man hämta data ur för att få det sökta svaret?
Vad är skillnaden på en vänster-yttre join, en höger-yttre join och en full yttre join?
Robot | Antal |
---|---|
1 | 2 |
2 | 3 |
3 | 2 |
4 | 0 |
Samma tips igen: Vilka tabeller behöver man använda för denna sökning?