Lektion 15 — Forberedelse

I lektion 13 bor patientlisten i serverens hukommelse. Det, I POST'er, forsvinder, når programmet stopper. En tabel bor i databasen — et andet program, på en anden maskine — som gemmer den. Forberedelsen er, hvad en tabel er, at du selv har skrevet SELECT, WHERE og INSERT, og at du har en database klar i Neon. I timen samler vi op og skriver i jeres egen PostgreSQL. Routen kalder databasen i lektion 17.

Forberedelsen er ca. 75 minutter.

1. Tabel, SQL og nøgler (~40 min)

En relationel database gemmer rækker i tabeller. SQL er de sætninger, der opretter tabellen og lægger rækker i den.

Relational Databases

Kapitel Relational Databases, modulet SQL and PostgreSQL. Lav disse lectures:

  1. What Are Relational Databases, and How Do They Differ from Non-Relational Databases?
  2. What Is SQL, and How Can You Create a Database with Tables?
  3. What Are the Basic Data Types in SQL?
  4. How Do You Insert and View Data in a Table?
  5. What Are Primary and Foreign Keys in SQL, and How Do They Work?

Fokusér på, at en tabel har kolonner og rækker, og at en række er én patient, ét produkt eller én film. CREATE TABLE navngiver kolonnerne og deres type. INSERT INTO med kolonnenavne lægger en række i. SELECT henter rækker, og WHERE vælger hvilke. En primærnøgle udpeger én række. En fremmednøgle peger på primærnøglen i en anden tabel.

VARCHAR og INTEGER er typer, du skal kunne genkende. SERIAL er PostgreSQL's måde at nummerere primærnøglen på. Den taster du i timen.

Spring lecturen om at installere Postgres over. Spring relationstyper og joins over. Modulet SQL and Bash (normalisering, SQL injection, N+1) og værkstedet Build a Database of Video Game Characters er ikke forberedelse.

2. Skriv SELECT, WHERE og INSERT (~25 min)

SQLBolt

Lav disse lektioner. De kører i browseren. Tabellen hedder movies: én række pr. film, kolonner for titel, år og instruktør. Det er samme form som patientlisten, bare med andre kolonner.

  1. SELECT queries 101
  2. Queries with constraints (Pt. 1)
  3. Inserting rows

Lektion 3 til 12 er filtre, joins og aggregater. Spring dem over via menuen, og gå til lektion 13. Løsningen ligger bag et link, hvis du sidder fast. Brug den først, når du har prøvet selv.

3. Din database i Neon (~10 min)

Neon kører PostgreSQL på en server for dig. Du skriver SQL i en editor i browseren. Databasen kører hos Neon, ikke på din bærbare.

  1. Åbn https://neon.com og vælg Sign up. Neons forside med Log in og Sign up
  2. Vælg GitHub under Create your free account. Create your free account: Google, GitHub eller Microsoft
  3. Godkend at Neon må læse din e-mail fra GitHub: Authorize neondatabase. GitHub spørger om du vil godkende Neon Console
  4. Du lander på Projects i din egen organisation. Den er tom. Tryk Create project. Projects-siden: You currently have no projects, med Create project
  5. På Create project:
    • Project name: lektion15. Billedet viser et andet navn.
    • Region: skift fra AWS US East 2 (Ohio) til AWS Europe Central 1 (Frankfurt). Regionen kan ikke ændres bagefter.
    • Services: lad kun Postgres database være slået til. Resten bruger vi ikke.
    • Tryk Create project nederst til højre. Create project med navn, region Frankfurt og kun Postgres database slået til
  6. Projektet er oprettet. Spring Agent prompt over — I skriver selv forbindelsen til databasen i lektion 17. Tryk Go to project. Your new project was created, med Agent prompt og Go to project
  7. Du lander på Branch overview. Øverst til venstre står projektet og branchen production. Det er jeres database — branches bruger vi ikke. Tryk Postgres database i menuen til venstre. Branch overview for production, med Postgres database i menuen
  8. Menuen folder ud med Tables, SQL Editor, Backup & Restore og Computes. Tryk SQL Editor. Postgres database foldet ud, med SQL Editor under Tables
  9. SQL-editoren åbner med Neons eksempel, der opretter tabellen playing_with_neon. Kør det ikke. Markér alt (Ctrl+A, på Mac Cmd+A), og slet det. Tjek øverst til højre, at databasen er neondb. SQL Editor med eksempelkode, Run-knappen og neondb øverst til højre
  10. Skriv SELECT 1; og tryk Run. Under knappen står Connected, og svaret er en tabel med én række og værdien 1. Sætningen kommer også i History til venstre. SELECT 1 kørt: Connected, 1 row og værdien 1

Det er din egen database til øvelserne. Gruppens fælles database opretter I i timen.

Hvis du sidder fast: Er New project gråt, og står der To create a new project, use the Neon Postgres integration in Vercel, så er du i en organisation, Vercel styrer. Det sker, hvis din Neon-konto er oprettet via Vercel. Klik på organisationsnavnet øverst til højre, vælg Create organization → Free, og opret projektet dér.

Når du er færdig

Du skal kunne forklare:

  • at en tabel er kolonner og rækker, og at én række er én ting (en patient, en film)
  • at SELECT henter rækker, WHERE filtrerer dem, og INSERT INTO lægger en ny række i
  • at en primærnøgle udpeger én række, og at en fremmednøgle peger på en primærnøgle i en anden tabel
  • at listen i server.js stadig bor i serverens hukommelse. Den er endnu ikke en tabel

Og du skal have løst de tre SQLBolt-lektioner og kørt SELECT 1; i Neon.

CREATE TABLE på en patienttabel, UPDATE og DELETE tager vi i timen. At en Express-route kalder databasen, er lektion 17.

Praktisk

  • freeCodeCamp kræver login (gratis), hvis du vil gemme din fremgang.
  • SQLBolt kræver ingen konto.
  • Neon kræver en konto (gratis). Log ind med GitHub. Der skal ikke installeres noget.
  • server.js skal blive stående, som den er fra lektion 13.
  • SQLBolt kører SQLite. SELECT, WHERE og INSERT er de samme sætninger, som du skriver i PostgreSQL.