Lektion 34. SQL og SQLite

Forberedelse

  • Læs/genlæs kapitel 21 Hent data med SELECT
  • Installer programmet SQLite. Se vejledningen på https://sqlitebrowser.org/. Bemærk: Du skal downloade programmet, udpakke zip-filen og starte installationen (pc) ved at klikke på filen DB Browser for SQLite.exe.

Formål

  • Arbejde med SQL
  • Kunne arbejde i i databasen SQLite

Fælles gennemgang

Fra sidst

  • Opsummering fra sidst. Brug figuren her til opsummeringen
READ i SQL

Lektien til denne gang

Øvelser

34.1 GROUP BY

Gå ind på https://www.w3schools.com/sql/sql_groupby.asp. Udfør de 2 kodestumper her og forklar, hvad de gør:

Kodestump 1:

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

Kodestump 2:

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;

Når du er færdig med det.

  • Gør det nogen forskel, hvis vi i stedet for COUNT(CustomerID) skriver COUNT(*). Prøv at forklar hvorfor, når du har testet det af
  • Lav en gruppeinddeling på City i stedet for Country og vis antal kunder i faldende orden. Så ser vi, at London er den by med flest kunder i. Svaret er her

34.2 HAVING

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;
  • Ændr koden, så den viser antal kunder større end eller lig med 10. Svaret ser du nedenfor
  • Brug din fantasi og giv 3 eksempler på, hvordan vi kan bruge GROUP BY evt. i kombinationer med HAVING, SUM, AVG eller andet.

34.3 INNER JOIN

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
  • Ændr koden, så vi også får City og Country fra tabellen Customers med. Svaret er her:
  • Ændr igen koden, så vi sorterer efter lande i faldende orden. Svaret er her
  • Find et eksempel hos W3schools på LEFT OUTER JOIN eller RIGHT OUTER JOIN, prøv det i praksis og forklar koden. Hvorfor tror du, at der kommer flere antal poster (Number of Records)
  • Find ligeledes et eksempel hos W3schools på FULL OUTER JOIN, test det af og forklar koden. Igen: Hvorfor mon der kommer så mange poster

34.4 Hils på SQLite

I opgaven her skal du prøve at arbejde i et rigtigt databaseprogram.

  • Installer programmet SQLite. Se vejledningen på https://sqlitebrowser.org/. Bemærk: Du skal downloade programmet, udpakke zip-filen og starte installationen (pc) ved at klikke på filen DB Browser for SQLite.exe.

Se min video her.

  • Gennemfør videoen. Det er bedst, hvis du selv prøver. Du kan hente den omtalte kundedatabase her til indlæsning i SQLite: https://bliv-klogere.ibc.dk/wp-content/uploads/2020/07/Kundedatabase.zip. Når du har gennemført koden, har du lavet følgende kald
    • Vælg alt fra tabellen Kunder
    • Vælg alt fra kunder, hvor postnummeret = 6000
    • Selve opgaven: Gem den kode, du har lavet, så du kan vise den frem
  • Hvad viser UML diagrammet, og hvad tror du, at vi evt. kan bruge det til. Her er lidt hjælp:
    • Entitet = “Helheder”, dvs. en tabel
    • Attribut = Felter i tabellen
    • Relation = Forholdet mellem tabellerne

Vi kommer senere til UML og den slags, men det er fint, at du møder det nu.

34.5 SQL kald i SQLite

Udfør følgende kald:

  • Vælg alle data i kolonnerne Kunde, Postnummer og Gæld. Svar:
  • Find data for Kunde, Postnummer og Gæld for alle kunder med postnummer 7000
  • Find data for Kunde, Postnummer og Gældmed postnummer 6000 og 7000
  • Sørg for, at listen ovenfor står i stigende orden efter postnummer. Svar
  • Få den til at stå i stigende orden først efter postnummer, så efter kunde. Svar:
  • Lav et kald, der finder den maksimale gæld for kunderne
  • Udregn i SQL først summen af gælden, så gennemsnittet. Svarene er hhv. 18200 og 1516.66667
  • Chefen fik marcipanbrøddet galt i halsen, da han fandt ud af, at nogle kunder har gæld til os. Han har bedt dig om en liste over Kunder med telefonnummer og gæld. Lav en liste over kunder, som har gæld til os. Sørg for, at de kunder med den største gæld står øverst. Svar:
  • Vis alle oplysninger fra tabellen Postnummer_by. Svar:
  • Vælg alle oplysninger i begge tabeller. Svar:
  • Til sidst: Vælg alle oplysninger i begge tabeller, men kun for kunder i Aarhus og Aalborg. Tip: Brug postnummer 8000 og 9000 som kriterier for din udvælgelse